TI中文支持网
TI专业的中文技术问题搜集分享网站

DSP Flash填充

    CKFA烧写程序,Appcoed.bin要求Flash的全部空间填充,28335的空间为256k * 16,所以生成的appcode.bin的大小应该是512k * 8.
    按照spraaq2的说明,通过hex2000指令完成,但编译器是CCS3.1:

    "E:\Practise\DSP\28335\Debug\28335.out"
    -map 28335.map
    -o 28335.hex
    -m
    -memwidth 16
    -image

    ROMS
    {
        flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF
    } 
    
    但这样的指令在CCS4下编译后,提示错误,hex转bin文件出错,把romwidth = 16改为romwidth = 8,可以生成,但会生成2个文件,不符合要求。
    请教一下,CCS4下如何填充整个Flash空间?Thx!

    补充:上述指令在.out转hex没出错,但hex转bin出错!

Forrest:

就是这样写,比如:

  FLASH_ABCDEFGH  : origin = 0x300000, length = 0x03FF80  ,fill = 0xFFF0

    CKFA烧写程序,Appcoed.bin要求Flash的全部空间填充,28335的空间为256k * 16,所以生成的appcode.bin的大小应该是512k * 8.
    按照spraaq2的说明,通过hex2000指令完成,但编译器是CCS3.1:

    "E:\Practise\DSP\28335\Debug\28335.out"
    -map 28335.map
    -o 28335.hex
    -m
    -memwidth 16
    -image

    ROMS
    {
        flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF
    } 
    
    但这样的指令在CCS4下编译后,提示错误,hex转bin文件出错,把romwidth = 16改为romwidth = 8,可以生成,但会生成2个文件,不符合要求。
    请教一下,CCS4下如何填充整个Flash空间?Thx!

    补充:上述指令在.out转hex没出错,但hex转bin出错!

master blade:

回复 Forrest:

motorla格式hex文件默认romwidth为8,ROMS指令缺省romwidth默认为romwidth = 8,也会生成2个文件,而并非一个文件!

    CKFA烧写程序,Appcoed.bin要求Flash的全部空间填充,28335的空间为256k * 16,所以生成的appcode.bin的大小应该是512k * 8.
    按照spraaq2的说明,通过hex2000指令完成,但编译器是CCS3.1:

    "E:\Practise\DSP\28335\Debug\28335.out"
    -map 28335.map
    -o 28335.hex
    -m
    -memwidth 16
    -image

    ROMS
    {
        flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF
    } 
    
    但这样的指令在CCS4下编译后,提示错误,hex转bin文件出错,把romwidth = 16改为romwidth = 8,可以生成,但会生成2个文件,不符合要求。
    请教一下,CCS4下如何填充整个Flash空间?Thx!

    补充:上述指令在.out转hex没出错,但hex转bin出错!

Forrest:

回复 master blade:

没能太理解楼主的意思,romwidth = 16的命令不应该放在ROM中,应该是针对hex编译器的。

我也操作了一下,楼主看看,是不是这个意思,结果应该只生成一个文件。

 

    CKFA烧写程序,Appcoed.bin要求Flash的全部空间填充,28335的空间为256k * 16,所以生成的appcode.bin的大小应该是512k * 8.
    按照spraaq2的说明,通过hex2000指令完成,但编译器是CCS3.1:

    "E:\Practise\DSP\28335\Debug\28335.out"
    -map 28335.map
    -o 28335.hex
    -m
    -memwidth 16
    -image

    ROMS
    {
        flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF
    } 
    
    但这样的指令在CCS4下编译后,提示错误,hex转bin文件出错,把romwidth = 16改为romwidth = 8,可以生成,但会生成2个文件,不符合要求。
    请教一下,CCS4下如何填充整个Flash空间?Thx!

    补充:上述指令在.out转hex没出错,但hex转bin出错!

master blade:

回复 Forrest:

我想把28335的flash空间填满,未用到的填1,-image ROMS{….}是填充的指令。CKFA项目有没看过,spraaq2要求烧写的bin文件填充,例如28335应该是512k文件。你这样做,好像不能填充flash,你的输出hex文件转换为bin文件,大小是否512k。

FileIOShell.exe -i 28335.hex -o 28335.bin 

关键就是填充这个(256k * 16) flash,以单个文件输出!

求教一下!

    CKFA烧写程序,Appcoed.bin要求Flash的全部空间填充,28335的空间为256k * 16,所以生成的appcode.bin的大小应该是512k * 8.
    按照spraaq2的说明,通过hex2000指令完成,但编译器是CCS3.1:

    "E:\Practise\DSP\28335\Debug\28335.out"
    -map 28335.map
    -o 28335.hex
    -m
    -memwidth 16
    -image

    ROMS
    {
        flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF
    } 
    
    但这样的指令在CCS4下编译后,提示错误,hex转bin文件出错,把romwidth = 16改为romwidth = 8,可以生成,但会生成2个文件,不符合要求。
    请教一下,CCS4下如何填充整个Flash空间?Thx!

    补充:上述指令在.out转hex没出错,但hex转bin出错!

Forrest:

回复 master blade:

我烧写进28335,看到FLASH已经被填充。

    CKFA烧写程序,Appcoed.bin要求Flash的全部空间填充,28335的空间为256k * 16,所以生成的appcode.bin的大小应该是512k * 8.
    按照spraaq2的说明,通过hex2000指令完成,但编译器是CCS3.1:

    "E:\Practise\DSP\28335\Debug\28335.out"
    -map 28335.map
    -o 28335.hex
    -m
    -memwidth 16
    -image

    ROMS
    {
        flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF
    } 
    
    但这样的指令在CCS4下编译后,提示错误,hex转bin文件出错,把romwidth = 16改为romwidth = 8,可以生成,但会生成2个文件,不符合要求。
    请教一下,CCS4下如何填充整个Flash空间?Thx!

    补充:上述指令在.out转hex没出错,但hex转bin出错!

master blade:

回复 Forrest:

    你用的是什么烧写方式,我想用的CKFA项目的串口烧写方式!你看一下上面的那个PDF附件!

    擦除Flash也会使flash置1,我需要的是手动填充flash空间!你是一下转换为bin文件,看其大小是否为512k!因为28335的flash空间大小为256k,存储位数为16位。你的转换文件不是512k!

    FileIOShell.exe -i 28335.hex -o 28335.bin 

    CKFA烧写程序,Appcoed.bin要求Flash的全部空间填充,28335的空间为256k * 16,所以生成的appcode.bin的大小应该是512k * 8.
    按照spraaq2的说明,通过hex2000指令完成,但编译器是CCS3.1:

    "E:\Practise\DSP\28335\Debug\28335.out"
    -map 28335.map
    -o 28335.hex
    -m
    -memwidth 16
    -image

    ROMS
    {
        flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF
    } 
    
    但这样的指令在CCS4下编译后,提示错误,hex转bin文件出错,把romwidth = 16改为romwidth = 8,可以生成,但会生成2个文件,不符合要求。
    请教一下,CCS4下如何填充整个Flash空间?Thx!

    补充:上述指令在.out转hex没出错,但hex转bin出错!

Forrest:

回复 master blade:

我知道您的意思了。

新的hex2000支持直接把.out文件转成.bin文件,不需要用FileIOShell。

请看一下附件双击28335.bat运行

    CKFA烧写程序,Appcoed.bin要求Flash的全部空间填充,28335的空间为256k * 16,所以生成的appcode.bin的大小应该是512k * 8.
    按照spraaq2的说明,通过hex2000指令完成,但编译器是CCS3.1:

    "E:\Practise\DSP\28335\Debug\28335.out"
    -map 28335.map
    -o 28335.hex
    -m
    -memwidth 16
    -image

    ROMS
    {
        flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF
    } 
    
    但这样的指令在CCS4下编译后,提示错误,hex转bin文件出错,把romwidth = 16改为romwidth = 8,可以生成,但会生成2个文件,不符合要求。
    请教一下,CCS4下如何填充整个Flash空间?Thx!

    补充:上述指令在.out转hex没出错,但hex转bin出错!

master blade:

回复 Forrest:

TMS320F28335的flash空间配置:origin = 0x300000, length = 0x040000,填充值是0xFFFF吗?

-image

ROMS{ flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF} ROMS指令是这样配置,还是你上面的配置吗?

还有,用不用FileIOShell没什么关系,关键是按照TMS320F281x Boot ROM Serial Flash Programming这个pdf的方法,生成不了正确的bin文件!

这个AppCode附件,就是官方例程,2810生成128k的bin,2812生成256k的bin,但按这种方法,28335成不了512k的bin。

    CKFA烧写程序,Appcoed.bin要求Flash的全部空间填充,28335的空间为256k * 16,所以生成的appcode.bin的大小应该是512k * 8.
    按照spraaq2的说明,通过hex2000指令完成,但编译器是CCS3.1:

    "E:\Practise\DSP\28335\Debug\28335.out"
    -map 28335.map
    -o 28335.hex
    -m
    -memwidth 16
    -image

    ROMS
    {
        flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF
    } 
    
    但这样的指令在CCS4下编译后,提示错误,hex转bin文件出错,把romwidth = 16改为romwidth = 8,可以生成,但会生成2个文件,不符合要求。
    请教一下,CCS4下如何填充整个Flash空间?Thx!

    补充:上述指令在.out转hex没出错,但hex转bin出错!

Forrest:

回复 master blade:

既然hex2000能够转换成bin文件,我想是否就不要在纠结于FileIOShell?我里面填充的是0xfffe,这您可以写其他的数值。

FileIOShell是当时针对281X芯片的,您试试在28335上如2812那样只用0x10000长度的内存,按照该文档的方法那应该也能够正确转换。

    CKFA烧写程序,Appcoed.bin要求Flash的全部空间填充,28335的空间为256k * 16,所以生成的appcode.bin的大小应该是512k * 8.
    按照spraaq2的说明,通过hex2000指令完成,但编译器是CCS3.1:

    "E:\Practise\DSP\28335\Debug\28335.out"
    -map 28335.map
    -o 28335.hex
    -m
    -memwidth 16
    -image

    ROMS
    {
        flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF
    } 
    
    但这样的指令在CCS4下编译后,提示错误,hex转bin文件出错,把romwidth = 16改为romwidth = 8,可以生成,但会生成2个文件,不符合要求。
    请教一下,CCS4下如何填充整个Flash空间?Thx!

    补充:上述指令在.out转hex没出错,但hex转bin出错!

master blade:

回复 Forrest:

尝试了一下,好像FileOShell转换超过256k*(0x20000)的文件就错误了,如果用hex2000转换,指令如何编写:

"E:\Practise\DSP\28335\Debug\28335.out"

-map 28335.map-o 28335.bin-b-memwidth 8-image

ROMS{    flash28335:origin = 0x300000, len = 0x40000, romwidth = 16, fill = 0xFFFF}

这样的话,好像不对,生成不了正确的512k的bin文件!应该是哪里错了,求教啊!

赞(0)
未经允许不得转载:TI中文支持网 » DSP Flash填充
分享到: 更多 (0)