我现在想下载带dsp/bios的程序到flash进行开机启动,按照boards/dvdsk下面有个flashburns文件夹的一个flashing文档的步骤做,选择仿真器连接->下载FTBC->擦flash->下载(注:根据文档没有加载CMD文件)。然而发现dsp/bios的程序没有运行成功,但是不带bios的裸机程序按照上面的步骤可以成功,问题出在哪儿?请问有可行相关下载方法的文档提供么?感谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我现在想下载带dsp/bios的程序到flash进行开机启动,按照boards/dvdsk下面有个flashburns文件夹的一个flashing文档的步骤做,选择仿真器连接->下载FTBC->擦flash->下载(注:根据文档没有加载CMD文件)。然而发现dsp/bios的程序没有运行成功,但是不带bios的裸机程序按照上面的步骤可以成功,问题出在哪儿?请问有可行相关下载方法的文档提供么?感谢
hi,Titan,我的工程是基于BIOS内核的
代码我加了,就是现在我很模糊到底以什么样的方式把程序下载到flash。现在用的是参考TI提供的《creating a second bootloader for C6000》,但是没有效果(程序接仿真器时正常)。参照文档我的作法是这样的,1。在工程中加入boot.asm二次启动代码,修改工程cmd(为bootloader分配RAM段) .2。生成Out文件。3。编写convert.cmd利用Hex6x工具生成hex,然后flashburn烧写。然后结果不成功。我参照了成功的non-bios工程的map(hex6x工具生成一个.hex和一个.map)文件,发现二者主要区别在entry point 和BOOT TABLE下的run地址,成功的flashing例子run地址是IRAM,而我的自动生成map文件的run地址是DDR!由此我想到工程的BIOS配置,CCS3的TCF文件,发现在MEM的存储管理的bios code/bios data/complier 之类的都是指向DDR,我如何修改才能正确执行?
可能字的有点多,但越详细越能帮助你为我解答问题,期待您的回复,非常感谢
您好,我像你上面提到的将men.uercommand改成true,但是出现一系列的警告:
warning: creating output section .bss without SECTIONS specification
>> warning: creating output section .cinit without SECTIONS specification
>> warning: creating output section .const without SECTIONS specification
>> warning: creating output section .printf without SECTIONS specification
>> warning: creating output section .far without SECTIONS specification
>> warning: creating output section .switch without SECTIONS specification
>> warning: creating output section .pinit without SECTIONS specification
然后用hex6x.exe工具生成hex文件,出现warning,大体意思就是如.const section必须以4字节的整数倍,然后导致无法生成hex文件。
其实这么和您说吧,我跑的不是自己的例程, 完全是你们提供的,主要是为了掌握如何在flash上运行bios内核的工程,我用的例程是DVSDK\dvsdk_1_01_00_15\psp_1_00_02_00\pspdrivers\system\dm6437\bios\dm6437_evm\src\video\sample\loopback,一直无法出来想要的结果,我在这个原有工程中加了boot.asm的二次搬移程序,在linker.cmd(还有一个cfg.cmd没做修改)加了bootloader的section指向iram0x1080 0000,其他的没有改,然后hex6x.exe生成hex文件,当然用了convert.cmd,这按照文档写的。就这些了,不知道你们是用的什么方法?问了这么多,很感谢您的回答!
我按照您说的改了下,
SECTIONS{
.bootld: > BOOT_RAM
.text: > IRAM
.switch: > DDR2
.bss > DDR2
.far > DDR2
.cinit > DDR2
.pinit > DDR2
.const > DDR2
.printf > DDR2
.data > DDR2
.cio > DDR2
}
哪怕我只改了.text的,也会出现
"dm6437_evm_video_st_samplecfg.cmd", line 462: error: run placement fails for
object ".LOG_system$buf", size 0x1000 (page 0). Available ranges:
IRAM size: 0x20000 unused: 0x12c0 max hole: 0xec0
"dm6437_evm_video_st_samplecfg.cmd", line 465: error: run placement fails for
object ".trace$buf", size 0x1000 (page 0). Available ranges:
IRAM size: 0x20000 unused: 0x12c0 max hole: 0xec0
这样的问题,我看了下载cfg.cmd中,有这么一段,我虽改了二者的大小,但是重新编译时,工程会自动将其改写为默认。。
=========================================
另外,您之前提到的DDR初始化得问题,我有两个想法:1。在二次bootloader的boot.asm中已经有对EMIF和PLL、DDR初始化得代码,但不排除有问题,我是从网上下的,对汇编不熟;2.如果我用hexAIS.exe这个工具也会自动调用6437.ini这个文件,而这个文件则包含一些初始化得代码,我估计不存在初始化得问题,附件中式我的boot.asm,非常感谢您的耐心回答,一直被这个flash拖着项目进度,也很着急