ARMBootloader详解:C与汇编混合编程实现

需积分: 10 1 下载量 89 浏览量 更新于2024-11-19 收藏 121KB PDF 举报
"ARM Bootloader的实现与C和ASM混合编程" ARM Bootloader是嵌入式系统中的关键组件,它是设备启动过程的第一部分,负责初始化硬件环境并加载操作系统或更高级别的引导程序。在给定的描述中,我们关注的是针对Cirrus Logic的CLPS7111和Ep9312系列ARM核心处理器的Bootloader实现。这些CPU内置了128字节的Boot程序,简化了操作系统的部署和更新。 Bootloader的主要功能包括: 1. 设置串行通信参数:Bootloader会将串行口配置为9600波特率、8位数据、无奇偶校验、1个停止位的配置,以进行后续的数据传输。 2. 发送特定字符:启动后,它会发送一个识别字符,通知主机准备接收数据。 3. 接收Bootloader程序:Bootloader会通过串行口接收大约2K字节的程序代码。 4. 发送确认字符:接收完毕后,发送另一个字符,如'>',表明已准备好执行接收到的程序。 5. 跳转执行:Bootloader将控制权转交给接收的2K字节程序,通常是VxWorks这样的操作系统映像。 烧写操作系统的步骤包括: 1. 连接ARM目标板和PC的串行接口,确保RX和TX线交叉连接,GND对应连接。 2. 引导ARM目标板执行内置的Boot程序。 3. 在Windows NT 4.0的控制台中,设置串行口参数为9600波特率,8位数据,无奇偶校验,1个停止位。 4. 使用`copy /b`命令将Bootloader二进制文件发送到串行口。 5. 更改串行口参数为115200波特率,以匹配Bootloader接收VxWorks映像时的速度。 6. 再次使用`copy /b`命令将VxWorks映像发送到串行口。 7. 关断ARM目标板,设置其从Flash启动。 8. 重新启动,系统将加载VxWorks操作系统。 通常,Bootloader的职责不仅限于上述内容,还可能包括硬件初始化,如设置内存控制器、时钟源、中断控制器等。尽管Bootloader的传统实现多采用汇编语言,以保证执行效率和对硬件的直接控制,但现代Bootloader也常使用C语言或C与汇编的混合编程,以提高代码的可读性和维护性。C语言可以提供更好的抽象和模块化,使得复杂逻辑的实现更为简洁。 在ARM Bootloader的开发中,C和ASM混合编程允许开发者利用C语言的高级特性编写复杂的逻辑部分,同时使用汇编语言优化关键性能敏感的代码段。这种混合方法结合了两者的优点,既能保证代码的效率,又提高了可维护性。例如,Bootloader的初始化阶段可能会使用汇编来直接访问硬件寄存器,而数据传输和错误处理等逻辑则可以使用C语言编写。 ARM Bootloader是嵌入式系统设计的重要一环,它涉及硬件初始化、数据传输和与主机的通信等多个方面。通过C和ASM的混合编程,开发者可以创建既高效又能适应各种硬件平台的引导程序。