基于EDMA的TMS320C6713片外Flash自举引导
SECTIONS伪指令选项可让链接器定位2次。第一次使用装载关键字load设置装入地址,再使用运行关键字run设置它的运行地址。装载地址确定段的原始数据或代码装入的地方,而任何对段的引用则参考它的运行地址。在应用中必须将该段从装载地址复制到运行地址,本引导程序便使用EDMA方式完成这一复制过程。链接命令文件(boot.cmd)如下:
MEMORY
{
VEC:ORG=0x00000000,LEN=0x00001000
PMEM:ORG=0x00001000,LEN=0x00004000
CEVEC:ORG=0x90000000,LEN=0x00001000
CEPMEM:ORG=0x90001000,LEN=0x00004000
}
以上设置是将整个存储器分成具有不同名称的存储区域。VEC,PMEM代表内部RAM的两块存储空间,而CEVEC,CEPMEM代表Flash内的两块存储空间。对目标文件中各段的加载地址和运行地址在SECTIONS段实现。
SECTIONS
{
.BootCode:load=CEVEC;用户的引导代码段定位在Flash的最开始。
.text:load=CEPMEM,run=PMEM;用户程序段装载于
Flash空间,而运行在C6713内部RAM中。
}
通过JTAG口的Flash在线烧写
用汇编语言编写一个搬移程序,内容仅是Flash的擦除过程,以及对EDMA的多次操作构成的由片内RAM到片外Flash的写入过程。把该搬移程序直接嵌入主程序中,这样程序代码长度很短,不会占用过多的主程序空间。在主机引导方式下,通过JTAG口load后,手工更改PC值使其指向这段代码,控制其运行结束,完成自举程序的在线烧写。而在此之后,这段短小的搬移程序不会被主程序中任何一段代码所调用。
结束语
工程实际应用表明该方法是切实可行的,与以往Flash引导程序编写方法相比避免了目标代码的格式转换,利用EDMA直接搬移,无需编程器,Flash也不需频繁拆卸,利于工程上的快速开发。
TMS320C671 相关文章:
- LT3751如何使高压电容器充电变得简单(08-12)
- 三路输出LED驱动器可驱动共阳极LED串(08-17)
- 浪涌抑制器IC简化了危险环境中电子设备的本质安全势垒设计(08-19)
- 严酷的汽车环境要求高性能电源转换(08-17)
- 适用于工业能源采集的技术 (08-10)
- 单片式电池充电器简化太阳能供电设计(08-20)