启动代码与bootloader的区别

启动代码与bootloader的区别

ID:34453506

大小:33.29 KB

页数:6页

时间:2019-03-06

启动代码与bootloader的区别_第1页
启动代码与bootloader的区别_第2页
启动代码与bootloader的区别_第3页
启动代码与bootloader的区别_第4页
启动代码与bootloader的区别_第5页
资源描述:

《启动代码与bootloader的区别》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、我主要遇到了这样一个问题,启动代码和Bootloader的区别以及它们在ARM上运行操作系统和不运行操作系统(只有用户程序)的关系。启动代码是Bootloader,但不能说Bootloader是启动代码。当然这也不是绝对的,只在某些情况下可以这么说。启动代码是指CPU复位后到main函数之前需要执行的汇编代码。需要这段代码是为了给C语言程序准备好堆栈空间,中断入口和外部数据等。而且这段汇编代码可以直接对硬件进行操作,效率很高。Bootloader就是在操作系统内核运行之前的一小段程序,通过这段小程序,可以初始化硬件设备

2、、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为调用操作系统内核、运行用户应用程序准备好正确的环境。嵌入式系统建立一个通用、标准的Bootloader是非常困难的。Bootloader也依赖于具体的嵌入式板级设备的配置,这也就是说,对于两块不同的嵌入式主板而言,即使它们是基于同一 CPU 而构建,要想让运行在一块板子上的 Bootloader 程序也能运行在另一块板子上,通常都需要修改 Bootloader 的源程序。 启动代码内容流程:1. 启动代码的第一步是设置中断和异常向量。    2. 

3、完成系统启动所必须的最小配置,某些处理器芯片包含一个或几个全局寄存器,这些寄存器必须在系统启动的最初进行配置。    3. 设置看门狗,用户设计的部分外围电路如果必须在系统启动时初始化,就可以放在这一步。    4. 配置系统所使用的存储器,包括Flash,SRAM和DRAM等,并为他们分配地址空间。如果系统使用了DRAM或其它外设,就需要设置相关的寄存器,以确定其刷新频率,数据总线宽度等信息,初始化存储器系统。有些芯片可通过寄存器编程初始化存储器系统,而对于较复杂系统通常集成有MMU来管理内存空间。    5. 为处

4、理器的每个工作模式设置栈指针,ARM处理器有多种工作模式,每种工作模式都需要设置单独的栈空间。    6. 变量初始化,这里的变量指的是在软件中定义的已经赋好初值的全局变量,启动过程中需要将这部分变量从只读区域,也就是Flash拷贝到读写区域中,因为这部分变量的值在软件运行时有可能重新赋值。还有一种变量不需要处理,就是已经赋好初值的静态全局变量,这部分变量在软件运行过程中不会改变,因此可以直接固化在只读的Flash或EEPROM中。    7. 数据区准备,对于软件中所有未赋初值的全局变量,启动过程中需要将这部分变量所

5、在区域全部清零。    8. 最后一步是调用高级语言入口函数,比如main函数等。摘要:本文总结了基于S3C44B0X芯片的Bootloader代码设计的一般流程,具体说明了Bootloader完成的主要任务,实现方法和地址重映射的概念;给出了S3C44B0X在基于uCLinux操作系统的嵌入式应用中,Bootloader的引导过程及关键技术和代码,有着很好的借鉴价值。 关键词:嵌入式系统  Bootloader代码  地址重映射  S3C44B0X  uCLinux  1引言近年来,ARM在嵌入式设备中的应用越来越广

6、泛。S3C44B0X就是Samsung公司生产的基于ARM7架构的微处理器。uCLinux是专门为无MMU处理器设计的嵌入式操作系统,支持ARM、Motorola等处理器。采用ARM+uCLinux作为嵌入式开发平台,吸取了两者优点,是一种比较流行的开发方式。在ARM程序设计中,启动代码是至关重要的,它不仅初始化硬件系统本身,而且最终引导进入操作系统,所以启动代码的设计直接影响整个开发的正常进行。本文结合S3C44B0X的特点详细给出了Bootloader设计和启动过程。2BootLoader代码  Bootloade

7、r代码是芯片复位后进入操作系统之前执行的一段代码,主要是为操作系统提供基本的运行环境,由它最终将操作系统启动起来并将控制权交给操作系统内核。Bootloader代码由汇编代码和C代码两部分组成。由于资源有限,Bootloader、uCLinux内核映象、文件系统(Ramdisk压缩映象)通常都是固化在Flash中的。在S3C44B0X架构的嵌入式系统中,为了保证上电或复位时正常运行,Bootloader必须存放在Flash(0x0-0x400000,4M)中的0x0处,则在硬件设计中把Flash接在CPU的nGCS0处

8、[1]。上电后Bootloader首先完成存储器、堆栈、寄存器、全局变量和基本硬件模块的初始化,这由汇编代码完成,然后将操作系统内核与文件系统调入SDRAM(0x0c000000-0x0c800000,8M)中,并将PC指针指向操作系统内核的入口处,为操作系统的运行作好准备,这由C代码完成。3BootLoader代码设计流程  A

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。