- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
stage2:两个问题 stage2是用C语言编写,但是在编译和链接时,不能使用glibc库中的任何函数。 从哪里跳转到main()。 弹簧床:编写一段汇编小程序trampoline,从其中跳转到main,main返回时返回到trampoline中。也即用trampoline小程序对main()函数做了一个外部的包装。 stage2:典型的trampoline .text .global _trampoline _trampoline: bl main /*if main() return, we just call it again. */ b _trampoline * 参考赖晓晨版5.2 * 俞建新 9.4 直接把main作为stage2的入口:无法通过main()函数传递函数参数、无法处理main()返回。 直接把main作为stage2的入口:无法通过main()函数传递函数参数、无法处理main()返回。 直接把main作为stage2的入口:无法通过main()函数传递函数参数、无法处理main()返回。 直接把main作为stage2的入口:无法通过main()函数传递函数参数、无法处理main()返回。 直接把main作为stage2的入口:无法通过main()函数传递函数参数、无法处理main()返回。 直接把main作为stage2的入口:无法通过main()函数传递函数参数、无法处理main()返回。 直接把main作为stage2的入口:无法通过main()函数传递函数参数、无法处理main()返回。 嵌入式系统原理与应用第11讲 BootLoader BootLoader概述 BootLoader框架 BootLoader代码分析 一、BootLoader概述 BootLoader功能 BootLoader特点 常见BootLoader 1. BootLoader功能 嵌入式系统的软件体系结构: BootLoader功能(续) 系统引导程序通常称为Boot Loader,是在系统复位后执行的第一段代码,相当于PC上的BIOS以及商业实时操作系统中的板级支持包BSP。 Boot Loader首先完成系统硬件的初始化,包括时钟的设置、存储区的映射等,设置堆栈指针等;然后把操作系统内核从flash区拷贝到ram区,并跳转到内核的入口,将系统控制权交给操作系统,在此之后系统的运行和Boot Loader 再无任何关系。 BootLoader功能(续) 典型Flash存储空间分配结构,从地址0x0开始,依次存放BootLoader、BootLoader参数、操作系统内核以及文件系统,如下图所示: 2. BootLoader特点 Boot Loader独立于操作系统,必须由用户自己设计,uClinux的发行包中不包含Boot Loader,但用户可以直接使用或参考一些开源的Boot Loader软件工程来编制自己的Boot Loader。 BootLoader的实现高度依赖于硬件,包括处理器的体系结构、具体型号、硬件电路板的设计。 BootLoader特点(续) Boot Loader与主机通信最常用的方式是通过串口,使用的协议通常是xmodem/ymodem/ zmodem等协议的一种。 借助TFTP协议使用以太网连接速度更快,但此时主机必须提供TFTP服务。 BootLoader特点(续) Boot Loader分为单阶段和多阶段两类 多阶段的Boot Loader能提供更为复杂的功能,以及更好的移植性。从固态存储器上启动的Boot Loader大多是两阶段的启动过程。具体分为stage1和stage2。 BootLoader特点(续) 大多Boot Loader都有两个操作模式: 启动加载:即Boot Loader从目标机上的某个固态存储器上将操作系统加载到ram中运行,整个过程没有用户的介入。这是Boot Loader的正常工作模式。 下载模式:目标机上的Boot Loader将通过串口或网络连接从主机(host)上下载文件,例如内核映象和根文件系统等。下载的文件首先放在ram中,然后被Boot Loader写到固态存储器中。 Boot Loader的这种模式通常在第一次安装内核与根文件系统时使用。 Bootloader系统架构用例分析 3. 常见BootLoader LILO:Linux Loader简称,是Linux 诞生之日起一直使用的Boot Loader,现在由John Coffman维护,有详细的文档。在可以获得最新版本。 GRUB:GRand Unified BootLoader,是GNU计划的主要Boot Loader。 常见BootLoader(续) Blob:LART硬件
您可能关注的文档
最近下载
- 作业设计研讨活动记录.doc
- 2025国家电投校园招聘笔试备考题库及答案解析.docx
- 2021-2022学年五年级上学期综合实践活动(劳动教育)第6课巧做糖画教案.docx
- 创业意识与创业技巧:了解企业登记注册流程.pptx
- 山东省淄博市2023年高一上学期《英语》期中试卷与参考答案.pdf
- 大学生职业规划大赛成长赛道 (修订).pptx
- 2018重庆市建设工程混凝土与砂浆配合比表.pdf
- WhyNothingWorks.doc VIP
- 住院医师规范化培训基地标准(2022年版)--皮肤科专业基地细则.docx
- JB∕T 2436.2-2020 导线用铜压接端头 第2部分:10mm2~300mm2导线用铜压接端头.pdf
文档评论(0)