当前位置:网站首页>Start the embedded room: system startup with limited resources
Start the embedded room: system startup with limited resources
2022-07-06 21:13:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm the king of the whole stack .
Start a program , It is electrically reset on the chip , To carry out , The block is independent of the operating system . Because the operating system needs to be loaded and booted by starting this module . So the English term of startup is boot loader. I am right. boot loader The definition of consists of two parts :1. load os 2. In order to make os It can perform the hardware and software initialization work normally .
We often see boot loader This word is used for arm guide linux,X86 guide windows wait . It can be seen that in a general sense . Can be used boot loader Are some strong computing power and plug-ins SDRAM Of SOC programme .
Let's understand the startup of embedded systems with limited memory resources ? So 51 For example .
51 system SOC Generally, it is built-in K Byte level nor flash Used to execute code , And built in a piece K Lower level ram For data reading and writing .
Obviously, such a system cannot run linux Such a tall system , that 51 What are you doing when you start ? Let's start with the program development process :
1) Code . compile . Link to a runnable file .
Generally in keil In the integrated environment .
2)keil Binary tools for ( similar gcc Of objcopy) explain 1) The executable in . extract code and data data , Generate with load address .HEX Format file . Remember the loading address , Not the execution address .
3) burning .HEX File data to nor flash. It is based on the loading address in the file . Generally speaking . The loading address and execution address of the code segment are the same . Only in this way can we nor flash Run up . however data It should be placed in the built-in ram The area can be read and written . however ram Power will disappear . therefore data Is to load into nor flash Of . namely data The execution address of is ram Area . The loading address is flash Area .
4) After power on reset . The boot code initializes the hardware , Like the clock , watchdog , Serial port and so on
5) Ready stack . And then put data From where it was loaded copy To ram Execution area of ( Link address )
6) Initialize well bss, And then jump The main program starts running .
Simple embedded systems generally do not os. It's the above process .
The amount of code of such a system is generally small , Put all in the built-in nor flash in . There is no plug-in nand flash perhaps card.
It can support read-write cards . But the code is only put into the built-in nor flash, Instead of putting it into an external card .
Actually 51 Can also be like arm Boot the operating system like that , Of course, the operating system not only requires memory , Yes CPU Computing power is also required , therefore 51 Is not competent to run linux Of .
But 51 It can also guide and run a simple operating system . such as UCOS wait . Only ram Big enough to .
So based on the 51 Of SOC The system can also look like S5PV210 In this way SOC The system of , The code is placed externally nand flash perhaps card in , Then the startup should become an independent module and U start-up COS、 The application is placed outside nand in . When powered on, first pass irom To load the startup code to iram in , Then run the startup code . And boot in the startup code os. See the next blog post for details .
Copyright notice : This article is the original article of the blogger , Blog , Do not reprint without permission .
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/117098.html Link to the original text :https://javaforall.cn
边栏推荐
- 【Redis设计与实现】第一部分 :Redis数据结构和对象 总结
- 3D人脸重建:从基础知识到识别/重建方法!
- None of the strongest kings in the monitoring industry!
- @GetMapping、@PostMapping 和 @RequestMapping详细区别附实战代码(全)
- JS traversal array and string
- @Detailed differences among getmapping, @postmapping and @requestmapping, with actual combat code (all)
- 3D人脸重建:从基础知识到识别/重建方法!
- 全网最全的知识库管理工具综合评测和推荐:FlowUs、Baklib、简道云、ONES Wiki 、PingCode、Seed、MeBox、亿方云、智米云、搜阅云、天翎
- The most comprehensive new database in the whole network, multidimensional table platform inventory note, flowus, airtable, seatable, Vig table Vika, flying Book Multidimensional table, heipayun, Zhix
- KDD 2022 | realize unified conversational recommendation through knowledge enhanced prompt learning
猜你喜欢

Pinduoduo lost the lawsuit, and the case of bargain price difference of 0.9% was sentenced; Wechat internal test, the same mobile phone number can register two account functions; 2022 fields Awards an

1500万员工轻松管理,云原生数据库GaussDB让HR办公更高效

Spark SQL chasing Wife Series (initial understanding)

性能测试过程和计划

HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅

The difference between break and continue in the for loop -- break completely end the loop & continue terminate this loop

Interviewer: what is the internal implementation of ordered collection in redis?

for循环中break与continue的区别——break-完全结束循环 & continue-终止本次循环

监控界的最强王者,没有之一!

This year, Jianzhi Tencent
随机推荐
Performance test process and plan
Data Lake (VIII): Iceberg data storage format
In JS, string and array are converted to each other (I) -- the method of converting string into array
【OpenCV 例程200篇】220.对图像进行马赛克处理
el-table表格——sortable排序 & 出现小数、%时排序错乱
[asp.net core] set the format of Web API response data -- formatfilter feature
This year, Jianzhi Tencent
启动嵌入式间:资源有限的系统启动
Manifest of SAP ui5 framework json
Introduction to the use of SAP Fiori application index tool and SAP Fiori tools
1_ Introduction to go language
R語言可視化兩個以上的分類(類別)變量之間的關系、使用vcd包中的Mosaic函數創建馬賽克圖( Mosaic plots)、分別可視化兩個、三個、四個分類變量的關系的馬賽克圖
愛可可AI前沿推介(7.6)
KDD 2022 | 通过知识增强的提示学习实现统一的对话式推荐
Three schemes of SVM to realize multi classification
SAP Fiori应用索引大全工具和 SAP Fiori Tools 的使用介绍
3D face reconstruction: from basic knowledge to recognition / reconstruction methods!
Why do job hopping take more than promotion?
document. Usage of write () - write text - modify style and position control
OSPF多区域配置