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 Flash填充

Other Parts Discussed in Thread: TMS320F28335

    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出错!

  • 就是这样写,比如:

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

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

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

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

     

  • 我想把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,以单个文件输出!

    求教一下!

    TMS320F281x Boot ROM Serial Flash Programming.pdf
  • 我烧写进28335,看到FLASH已经被填充。

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

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

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

    FileIOShell.zip
  • 我知道您的意思了。

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

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

    file.zip
  • 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。

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

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

  • 尝试了一下,好像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文件!应该是哪里错了,求教啊!

  • 上上个帖子我有写一个例子给楼主。楼主请看一下。我的理解是由于16bit=2个8bit所以地址和长度要乘二否则报错,楼主再试试。

  • 可以生成512Kb的bin文件!还有地址和长度要乘二是因为menwidth = 8!还有你有没有研究过DSP的串口烧写方案CKFA,没有的话,可以看一下,实在是很无语!

    就只剩下回调函数这个问题啊!那个双ram buf接收串口数据,边烧写边接收数据!

    万分感激,你的指导!Thx!

  • 你好,我也遇到这个问题,我用了下您附件得文件,发现只能用一次啊,把生成得bin删除,重新生成就啥都没了