C5409系统Bootloader的设计
1 系统要求:在我们设计的系统中,程序代码长度很有可能超过32K字,因此BOOTLOADER过程下载的程序代码长度必须超过32K字,最好能够达到60K字或更高。
2 BOOTLOADER方式的选择:
TMS320VC5409的BOOTLOADER方式共有五种:
- HPI Boot Mode
- Serial EEPROM Boot Mode
- Parallel Boot Mode
- Standard Serial Boot Mode
- I/O Boot Mode
其中Serial EEPROM Boot Mode下载的程序代码长度最大为32K字;Parallel Boot Mode在8位模式下下载的程序代码长度最大为24K字,而且需要占用特定的数据空间;Standard Serial Boot Mode需要占用特定的串口通道;I/O Boot Mode需要占用XF/BIO两根信号线,而且只能从I/O地址0000H处读取数据,操作也不是很方便。
综上所述,我们最后选择HPI Boot Mode做为系统的Bootloader方式,理由如下:
- 在我们设计的系统中,已经用到了HPI口,再用它做为Bootloader方式,可使系统硬件的利用率提高,同时避免了采用其他Boot方式带来的必要的附加的硬件设计;
- HPI口操作简便,可以直接下载并执行程序代码;
- 需下载的程序代码可存于4Mbit的串行FlashMemory中,通过单片机对其进行读写,操作简便,而且硬件接口简单,增加系统的稳定性、可靠性。
但是,HPI Boot Mode只能对片内存储区进行访问,对片外程序区或数据区都没有访问权限,因此,我们设计了一种方式,称其为“HPI Bootloader扩展模式”,它能够通过HPI口成功得将60K(或64K)字的程序代码下载到片外程序空间。
3 “HPI Bootloader扩展模式”的设计原理:
我们设计一段Boot程序,我们称之为“HPI扩展Boot”,相应的,我们称原来的HPI Boot Mode模式为标准HPI Boot Mode。这个“HPI扩展Boot”由三部分程序代码组成:A段、B段、C段。在标准HPI Boot Mode过程中,片内存储区虽然被映射成程序空间(OVLY=1),但HPI口访问片内存储区不受限制,所以可以通过HPI口将“HPI扩展Boot”的三部分程序代码写入片内地址1000H开始的存储空间中。
这时,我们完成标准HPI Boot Mode过程的最后一项,即各给出片内程序运行的开始地址,显然,这个地址应该为1000H,然后程序运行控制权交给“HPI扩展Boot”,同时标准HPI Boot Mode过程结束。
“HPI扩展Boot”开始运行时,执行A段代码,将B段和C段代码移动到地址8000H开始的程序空间处,同时,A段代码运行完毕,程序运行控制权交给B段代码。这时应该注意到,执行B段代码时,程序实际已经运行在片外程序区,因为从地址8000H开始的16K字程序空间始终为片外程序空间,不管OVLY=1还是OVLY=0。
B断代码开始执行时,将寄存器PMST的值改写为0040H,即中断向量表在地址0000H开始处,MP/MC=1,OVLY=0。这时,片内存储区立即被映射为数据区,而片外从地址0000H开始,一直到地址FFFFH结束的64K字的程序空间全部有效,程序可以随时在这64K字的空间内进行读写操作。接下来的B段程序即是将C段代码移动到地址F000H开始的程序空间处,同时,B段代码运行完毕,程序运行控制权交给C段代码。
C段代码的作用是通过HPI口与单片机通讯,完成实际应用程序代码的下载过程。它可将片外程序空间从地址0000H开始,一直到EFFFH结束的60K字空间全部下载为应用程序代码。下载完毕后,C段代码运行完毕,程序运行控制权交给应用程序,同时宣布“HPI扩展Boot”过程全部运行完毕。
由上述阐述的原理可知,如果应用程序中有一小段程序代码(可称为D段)将片外程序空间从地址F000H开始的4K字空间也下载为应用程序代码,那么,整个64K字的片外程序空间都可为应用程序所用。
这里,我们的程序空间为60K字已足够使用,所以应用程序中不用再加上所谓的D段程序代码。 |