在c5402采用boot table的并行根模式模式时,ti的资料上是说时,是将code从数据空间转移到程序空间,而我们一般把写在eprom上,那是不是eprom在与dsp接口时,是要经过/ds来片选?
没错。
c5402加载根程序时,有四种方法。其中hpi,并行口,i/o口,eprom是通过读i/o端口地址ffffh的数判断出来的。1)在什么情况下用这些方法呢?2)i/o端口ffffh地址为什么就能判断出是用这些方法呢?3)c5402的bootloader是固化在片内rom的f800-fbff的。是否能进行改动?ff80出放的是转移指令,转移到f800加在程序(程序烧在外部eprom)吗?f800-fbff出究竟固化的是什么程序呢?
1) 启动模式由用户根据具体情况确定。2)在RESET时,若MC/MP=0,则执行5402片内ROM程序,完成BOOTLOADER功能。若MC/MP=1,则从外部程序存储器的FF80开始执行 !
TMS320VC5402的BOOTLOADER程序需要自己写吗?
bootload 程序不需要自己写,已经固化好了。vc5402芯片的4kROM中有BOOTLODDER 程序,每片都一样,可以适应多种bootloader 方式。TI的application note有详细介绍哦。
最近我在使用HEX500时碰到几个问题:我创建BOOT TABLE命令是:
hex500 port.out -i -boot -bootorg 0x0000 -memwidth 8 -romwidth 8 -o a.hex
跟据资料,在生成的HEX文件中应有08aa关键字,但我的hex文件中却没有这个关键字,这是为什么哪?
在ASM500中加-V548开关。还有,版本必须是1。2以上。
c32的存储器中1000h对应的是boot1,810000h对应的是boot2,请问否是用址线译码将boot1或boot2的一个地址接到外部EPROM的片选信号端,运行时PROM内的程序由此地址载入到RAM中去。
对的。BOOT ROM使用INT0或INT1脚来判断使用的是boot1还是boot2。EPROM的数据宽度可以是8位,16位或32位。
1。将32k的27256映射在外部8000h~~ffffh数据空间,但在内部的 f000h~~feffh处却有另一部分rom,并由pmst中的drom位控制,那么,在bootloader阶段,pmst未设置,如果cpu读取该段地址,则会读到 27256还是内部rom?
2。启动时,bootloader需要读取存放在数据空间0ffffh的一个指针, 此指针指向bootloader表,但此指针是在何处设置的?
3。是否bootloader表被cpu读入后要存放在某个位置,运行时还有另一个运行位置?
1)ROM是对PMST中的DROM置1时才会映射为数据空间的,Reset后默认是0,即on-chip ROM并不会映射数据空间。
2)bootloader是on-chip rom中的启动引导程序,是固化在ROM中的。 0ffffh处的指针是指向boot tabler。 这个指针是自己烧录在EPROM中。
我有一个简单的CMD文件共HEX500使用:
-memwidth 8 -i -boot -map boot.map
产生8位EPROM,INTEL格式。这个CMD很简单,而且只有.text段,如果在数据段有 常量,只能在开始时用初始化程序将该常数从.text中复制到数据区。不妨试试?
如何生成BOOT TABLE?
BOOT TABLE可以用hex500.exe自动生成,但不同系列的DSP参数略有不同。请参考相关资料。最后应该在烧EPROM时手工修改BOOT TABLE指针,即BOOT TABLE的起始位置。我有一个简单的CMD文件共HEX500使用:(FOR C542)
产生8位EPROM,INTEL格式。