串口通讯是最简单也是最廉价的一种双机通讯设备,所以往往在BootLoader中主机和目标机之间都通过串口建立连接,BootLoader 程序在执行时通常会通过串口来进行 I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。当然如果认为串口通讯速度不够,也可以采用网络或者USB通讯,那么相应的在BootLoader中就需要编写各自的驱动。
Boot Loader 的操作模式
启动加载模式:这种模式也称为"自主"(Autonomous)模式。也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式。
下载模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件,比如:下载应用程序、数据文件、内核映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被 BootLoader写到目标机上的固态存储设备中。BootLoader 的这种模式通常在系统更新时使用。工作于这种模式下的 BootLoader 通常都会向它的终端用户提供一个简单的命令行接口。
BootLoader与主机间文件传输的通信设备及协议
最常见的情况就是,目标机上的 Boot Loader 通过串口与主机之间进行文件传输,传输可以简单的采用直接数据收发,当然在串口上也可以采用xmodem/ymodem/zmodem 协议以及在以太网上采用TFTP协议。
为了兼容不同系统需求,C2000提供很多种启动模式,包括:
HPI启动模式
由外部处理器(即主机)将执行代码通过C2000的HPI口搬移到C2000片内RAM。
当主机搬移完所有程序代码,还要将程序入口地址写入C2000数据空间007Fh内。
C2000一旦检测到007Fh处不再为0值,即判断为代码转移完毕,并跳转到007Fh里存放的地址去执行,从而完成启动;
8bit/16bit的并行启动模式
C2000通过其数据和地址总线从数据空间读取启动表(Boot Table)。
启动表内容包括:需要搬移的代码段,每个段的目的地址,程序入口地址和其他配置信息。启动表具体内容将在下文介绍。
8bit/16bit的标准串口启动模式
C2000通过工作在标准模式的多通道缓冲串口(McBSP)接收启动表,并根据启动表中的信息装载代码。
McBSP0支持8bit模式,McBSP1支持16bit模式;
8bit串行EEPROM启动模式
C2000通过工作在SPI模式的McBSP1接收来自外部串行的EEPROM中的启动表,并根据启动表中的信息装载代码。
8bit/16bit的I/O启动模式
C2000使用XF和BIO引脚,与外部设备达成异步握手协议
从地址0h处的I/O端口读取启动表。