"ARM Bootloader的实现.pdf"
本文档主要探讨了ARM架构下Bootloader的实现,特别是针对Cirrus Logic的clps7111和Ep9312系列ARM核心处理器的Bootloader设计。Bootloader是嵌入式系统中的关键组件,负责在系统上电或复位后执行最初的初始化任务,以便加载操作系统或应用程序到内存中执行。对于这些特定的ARM芯片,它们内置了一个128字节的小型Boot程序,简化了操作系统的部署和更新过程。
Boot程序的主要功能包括:
1. 设置串行通信参数:配置波特率9600,数据位8,无奇偶校验,停止位1。
2. 发送一个特定字符,通常作为启动信号。
3. 接收通过串行口传来的2K字节Bootloader代码。
4. 发送另一个字符,如'>',指示接收完成。
5. 跳转到接收到的2K字节代码并执行。
烧录操作系统的步骤涉及以下步骤:
1. 连接ARM目标板的串行端口与PC的对应端口,并确保GND共地。
2. 使用内置Boot程序引导ARM目标板。
3. 在Windows NT 4.0控制台中,设置串行口参数为9600波特率、8位数据、无奇偶校验、1个停止位。
4. 将Bootloader二进制文件发送到串行口,使用'/b'标志指定二进制传输。
5. 修改串行口参数为115200波特率,以匹配Bootloader的设置。
6. 将VxWorks操作系统映像发送到串行口,同样使用'/b'标志。
7. 关闭ARM目标板电源,设定其从Flash启动。
8. 重新启动,进入VxWorks操作系统。
2K字节的Bootloader主要职责:
1. 硬件初始化:包括时钟、内存、I/O设备等基本系统的配置。
2. 通过串行口接收VxWorks的二进制映像,并将其写入Flash存储器。
3. 显示进度或错误信息,提高调试过程的可见性。
传统观点认为Bootloader应采用纯汇编语言编写,以确保效率和对硬件的直接控制。然而,文档提到了C和ASM混合编程的方式,这意味着开发者可以结合C语言的可读性和汇编语言的性能优势来编写Bootloader。这样的混合编程方法在保证性能的同时,提高了代码的可维护性和可读性。
ARM Bootloader的实现是一个涉及硬件初始化、串行通信和二进制文件加载的关键过程,而C和ASM的混合编程策略则提供了一种平衡效率和可读性的解决方案。在实际开发中,理解Bootloader的工作原理和编写技巧对于成功构建和调试嵌入式系统至关重要。