当前位置:网站首页>启动嵌入式间:资源有限的系统启动
启动嵌入式间:资源有限的系统启动
2022-07-06 12:55:00 【全栈程序员站长】
大家好,又见面了,我是全栈君。
启动一个程序,它是在芯片上电复位,以执行,块独立于操作系统而在。由于操作系统须要通过启动这个模块来载入和引导的。所以启动的英文术语是boot loader。我对boot loader的定义包含两部分:1.载入os 2. 为了让os可以正常执行所要做的硬件和软件初始化工作。
我们经常看到boot loader这个词语用于arm引导linux,X86引导windows等等。可见一般意义上。能用上boot loader都是一些计算能力强并外挂SDRAM的SOC方案。
那我们咱们去理解内存资源有限型的嵌入式系统的启动呢?就以51为例。
51体系SOC一般都是内置K字节级别的nor flash用于执行代码,并内置一块K级别较小的ram用于数据读写。
非常明显这样的系统跑不了linux这样的高大上的系统,那51的启动都干嘛呢?我们从程序开发流程说起:
1)编敲代码。编译。链接成可运行文件。
一般在keil集成环境中。
2)keil的二进制工具(类似gcc的objcopy)解释1)中的可执行文件。抽取code和data数据,生成带有载入地址的.HEX格式文件。记住是载入地址,而不是执行地址。
3)烧写.HEX文件数据到nor flash。其依据的是文件里的载入地址。一般来说。代码段的载入地址和执行地址是一样的。这样才干在nor flash中跑起来。但是data是要放在内置ram区域才干可读写的。但是ram掉电会消失啊。所以data是先载入到nor flash的。即data的执行地址在ram区域。而载入地址在flash区域。
4)上电复位后。启动代码会进行硬件初始化,比如时钟,看门狗,串口等等
5)准备好栈。然后把data从载入的地方copy到ram的执行区域(链接地址)
6)初始化好bss,然后就jump到主程序開始跑啦。
简单的嵌入式系统一般没有os。就是上面的流程。
这样的系统的代码量一般比較小,所有放到内置的nor flash中。没有外挂的nand flash或者card。
它能够支持读写卡。可是代码仅仅放到内置的nor flash,而没有放到外置的卡中。
其实51也能够像arm那样引导操作系统的,当然操作系统不仅对内存有要求,对CPU计算能力也有要求,所以51是不能胜任跑linux的。
可是51也能引导并跑简单的操作系统的。比如UCOS等等。仅仅有ram足够大就能够。
所以基于51的SOC系统也能够长得像S5PV210这样的SOC的系统,代码是放在外置的nand flash或者card中,那启动就要成为一个独立的模块和U启动COS、应用程序放在外置的nand中。上电的时候先通过irom来载入启动的代码到iram中,然后跑启动代码。并在启动代码中引导os。详细待见下一篇博文。
版权声明:本文博主原创文章,博客,未经同意不得转载。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117098.html原文链接:https://javaforall.cn
边栏推荐
- for循环中break与continue的区别——break-完全结束循环 & continue-终止本次循环
- Is this the feeling of being spoiled by bytes?
- 代理和反向代理
- Pycharm remote execution
- Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
- Reflection operation exercise
- It's almost the new year, and my heart is lazy
- 拼多多败诉,砍价始终差0.9%一案宣判;微信内测同一手机号可注册两个账号功能;2022年度菲尔兹奖公布|极客头条
- SAP Fiori应用索引大全工具和 SAP Fiori Tools 的使用介绍
- Laravel notes - add the function of locking accounts after 5 login failures in user-defined login (improve system security)
猜你喜欢
Reinforcement learning - learning notes 5 | alphago
3D人脸重建:从基础知识到识别/重建方法!
面试官:Redis中有序集合的内部实现方式是什么?
967- letter combination of telephone number
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
【OpenCV 例程200篇】220.对图像进行马赛克处理
15 millions d'employés sont faciles à gérer et la base de données native du cloud gaussdb rend le Bureau des RH plus efficace
[asp.net core] set the format of Web API response data -- formatfilter feature
爱可可AI前沿推介(7.6)
Deployment of external server area and dual machine hot standby of firewall Foundation
随机推荐
Reference frame generation based on deep learning
OSPF multi zone configuration
15million employees are easy to manage, and the cloud native database gaussdb makes HR office more efficient
use. Net analysis Net talent challenge participation
C language operators
OAI 5g nr+usrp b210 installation and construction
15 millions d'employés sont faciles à gérer et la base de données native du cloud gaussdb rend le Bureau des RH plus efficace
面试官:Redis中有序集合的内部实现方式是什么?
Select data Column subset in table R [duplicate] - select subset of columns in data table R [duplicate]
Distributed ID
It's almost the new year, and my heart is lazy
Pat 1078 hashing (25 points) ⼆ times ⽅ exploration method
Reviewer dis's whole research direction is not just reviewing my manuscript. What should I do?
Word bag model and TF-IDF
【深度学习】PyTorch 1.12发布,正式支持苹果M1芯片GPU加速,修复众多Bug
Yyds dry inventory run kubeedge official example_ Counter demo counter
Data Lake (VIII): Iceberg data storage format
Nodejs教程之Expressjs一篇文章快速入门
Performance test process and plan
什么是RDB和AOF