浅析TMS320F2812片内Flash在线烧写技术
用户目标代码。
4.1 顶层软件
顶层软件可实现用户程序的解析等工作。其用户程序为.oul文件,顶层软件主要完成.hex文件的解析,并将解析后的有用数据发送至目标DSP。.hex文件的组织格式严格,只要提取数据在内存中的存放地址和数据长度就可以按照要求将数据发送给目标DSP。如果用户程序很大而目标DSP的内存空间不足时,该过程还可以分段进行。顶层软件可以使用VC++或者LabVIEW等实现。
4.2 底层软件
底层软件用于实现将串口发来的数据烧写至Flash.涉及到用户程序的正确定位和复位后的启动过程,是整个软件设计的重点。底层软件主要实现以下功能:
(1)烧写程序搬移功能。由于F2812片上Flash不支持在其中一个扇区运行程序去擦除或烧写其他扇区,故完成接收数据和烧写Flash工作的这部分程序需搬移至片内RAM或片外RAM上运行。实现程序搬移的函数为:
其中,SourceAddr为Flash中程序的起始地址,即源程序开始地址;SourceEndAddr为Flash中程序的结束地址,即源程结束序地址;DestAddr为搬移至内存的首地址。
(2)上电复位查询功能。上电复位后查询一个通用I/O端口的状态以确定是否需要烧写程序。这个通用I/O端口可由用户自行确定,但I/O端口占用后其特殊功能便不可用,上电复位后保证其确定状态,否则会不间断烧写程序或者不能正确跳转到用户应用程序。
(3)接收PC机发送的数据并保存到目标DSP内存。这是在串口接收中断服务子程序中完成的,并确定用于数据保存的这部分内存未占用。
(4)接收结束后将内存中的数据烧写至指定Flash扇区,这由Flash28lx_APl库函数完成。图1为底层应用软件流程图。
4.3 底层软件的定位
电复位后,XMP/MC引脚为低电平.目标DSP处于计算机模式,CPU将从内部Boot Rom获得复位向量。复位向量指向Boot Rom并执行其内部的Bootloader程序,执行完毕后确定从内部Flash启动.程序指针跳转到Flash的Ox3F7FF6处.这个地址是同定的,因此底层软件程序必须烧写在以这个地址为起始地址的空间内,或者在0x3F7FF6烧写一条跳转指令,上电复位后通过跳转指令跳转到底层软件程序。
4.4 用户应用程序的定位
用户应用程序从main函数开始,但DSP首先必须调用_c_int00函数建立C语言的运行环境,主要包括:建立初始化系统堆栈,把.cinit段中的数据表拷贝到.bss段。对全局和静态变量初始化等。_c_int00执行结束后调用main函数开始运行用户应用程序。因此_c_int00函数的首地址才是整个程序的入口点。底层软件程序执行结束后应该调用_c_int00函数,而不是main函数,可用跳转指令实现,参考程序如下:
讨论的Flash三种在线烧写技术在实际工程中均得到实际运用。采用TMS320F2812作为控制器的数据采集系统.利用Flash在线烧写技术开发的试验程序,可以根据需求及时更新,有助于产品维护。为了工程技术人员在实际项目开发中根据工程阶段和现场环境选择合适的烧写方法,文中给出了关键部分程序。经过比较发现,基于JTAG口的烧写技术适用于研发调试阶段,而串口烧写Flash技术更适用于维护阶段.大大提高系统的可维护性和可扩展性,如在封闭和复杂环境下进行外场加载和控制时,该技术具有较好的实用价值。
在线 技术 Flash 片内 TMS320F2812 浅析 相关文章:
- 基于JTAG的DSP外部FLASH在线编程与引导技术(01-22)
- TMS320F2812片内Flash在线烧写技术研究(01-23)
- 一种DSP的远程多加载方案设计(01-18)
- 基于DSP的外部Flash存储器在线编程的软硬件设计(03-11)
- 基于关键点控制的网络嵌入式设备在线升级的实现(04-24)
- 基于JTAG口对DSP外部Flash存储器的在线编程设计(04-29)