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

DSP在线升级完毕,DSP却没有反应

28035芯片,CAN通讯,基于Flash Update API做的在线升级功能,存在这样的问题:用cc5.5编译产生的.out文件,有时候可以在线升级成功,有时候,升级完毕后DSP没有反应(连CCS看,是处于应用区)。同样的.out文件用仿真器烧写后运行正常。

往往是将应用程序稍微修改了下,产生新的.out文件后,在新旧两个.out文件间相互切换升级时就会出现升级完毕DSP没有反应的情况。

不知是否有人能指点一下呢?先谢过了!

Huihong LIU1:

帮顶顶!!

另外,有个问题请教,大哥,我现在也在做在线升级,基于flash_api的进行flash的相关操作。现在也碰到了DSP没反应的情况。

我用的芯片是F28335,通过SCI通信进行升级。我现在的思路是想建立两个工程即bootloader,用户APP程序,分别通过JTAG烧入flashA,B扇区后,然后在开机后先运行bootloader程序,判断是否升级,升级则调用flash_api函数对flash进行擦除,编程等操作。

但现在问题是:发现只能烧写bootloader程序,再通过JTAG口将APP程序烧写到flash时,出现如图所示的错误。这个问题已经困扰我好几天了。

请问我这样的思路正确吗?不能同时烧写两个程序吗?

我估计是我的CMD文件配置出错。

28035芯片,CAN通讯,基于Flash Update API做的在线升级功能,存在这样的问题:用cc5.5编译产生的.out文件,有时候可以在线升级成功,有时候,升级完毕后DSP没有反应(连CCS看,是处于应用区)。同样的.out文件用仿真器烧写后运行正常。

往往是将应用程序稍微修改了下,产生新的.out文件后,在新旧两个.out文件间相互切换升级时就会出现升级完毕DSP没有反应的情况。

不知是否有人能指点一下呢?先谢过了!

harte zhang:

回复 Huihong LIU1:

多谢帮顶。可惜我也不甚明白

28035芯片,CAN通讯,基于Flash Update API做的在线升级功能,存在这样的问题:用cc5.5编译产生的.out文件,有时候可以在线升级成功,有时候,升级完毕后DSP没有反应(连CCS看,是处于应用区)。同样的.out文件用仿真器烧写后运行正常。

往往是将应用程序稍微修改了下,产生新的.out文件后,在新旧两个.out文件间相互切换升级时就会出现升级完毕DSP没有反应的情况。

不知是否有人能指点一下呢?先谢过了!

da qin zheng sheng:

这个确实有难度的!检查CAN中断服务程序的地址以及bootloader代码地址是否和新的APP代码冲突!

28035芯片,CAN通讯,基于Flash Update API做的在线升级功能,存在这样的问题:用cc5.5编译产生的.out文件,有时候可以在线升级成功,有时候,升级完毕后DSP没有反应(连CCS看,是处于应用区)。同样的.out文件用仿真器烧写后运行正常。

往往是将应用程序稍微修改了下,产生新的.out文件后,在新旧两个.out文件间相互切换升级时就会出现升级完毕DSP没有反应的情况。

不知是否有人能指点一下呢?先谢过了!

Huihong LIU1:

回复 da qin zheng sheng:

大哥,想请教下你,建立两个工程即bootloader,用户APP程序,分别通过JTAG烧入flashA,B扇区后,然后在开机后先运行bootloader程序,判断是否升级,升级则调用flash_api函数对flash进行擦除,编程等操作。

分别烧写两个工程到flashA,flashB的思路是否正确?我担心自己走进了死胡同。

求教!

28035芯片,CAN通讯,基于Flash Update API做的在线升级功能,存在这样的问题:用cc5.5编译产生的.out文件,有时候可以在线升级成功,有时候,升级完毕后DSP没有反应(连CCS看,是处于应用区)。同样的.out文件用仿真器烧写后运行正常。

往往是将应用程序稍微修改了下,产生新的.out文件后,在新旧两个.out文件间相互切换升级时就会出现升级完毕DSP没有反应的情况。

不知是否有人能指点一下呢?先谢过了!

harte zhang:

回复 Huihong LIU1:

思路是正确的,之前有项目就是这么做的。应该可以成功。

另外我遇到的问题,在DSP升级完毕后没反应,发现DSP总是在复位-重启-复位死循环。即使掉电重新上电任然如此。周期大概400ms多点。

具体原因还没定位到。

希望有遇到类似问题的同学能指点一二!拜谢~

28035芯片,CAN通讯,基于Flash Update API做的在线升级功能,存在这样的问题:用cc5.5编译产生的.out文件,有时候可以在线升级成功,有时候,升级完毕后DSP没有反应(连CCS看,是处于应用区)。同样的.out文件用仿真器烧写后运行正常。

往往是将应用程序稍微修改了下,产生新的.out文件后,在新旧两个.out文件间相互切换升级时就会出现升级完毕DSP没有反应的情况。

不知是否有人能指点一下呢?先谢过了!

peng huifeng:

回复 Huihong LIU1:

1 bootloader程序和app程序可以做到一个程序里面一起升级的,这个我确定;你这个用jtag烧写会擦出所有区域,这个我不是太确定,貌似是这样的;

2 如果dsp无反应,检查codebranch文件,看跳转是否有问题,有个地方需要非常注意的;

3 据我所知,业界一般都用你说的这种思路,bootloader+app,程序接收到升级命令后开启看门狗,程序重启,升级标志置位,然后先运行bootloader,然后判断标志位,如果升级则调用flashapi进行擦除,然后接收数据进行升级,升级完成改写标志位,然后开启看门狗重启,即可!

4 注意cmd文件需要针对bootloader 升级标志位 和app单独分区操作,因为貌似dsp擦除是针对一个区域整体擦出的,所以会浪费点存储空间;

鉴于是同行,提示你思路,注意我提示的几个重点,剩下的慢慢摸索!

28035芯片,CAN通讯,基于Flash Update API做的在线升级功能,存在这样的问题:用cc5.5编译产生的.out文件,有时候可以在线升级成功,有时候,升级完毕后DSP没有反应(连CCS看,是处于应用区)。同样的.out文件用仿真器烧写后运行正常。

往往是将应用程序稍微修改了下,产生新的.out文件后,在新旧两个.out文件间相互切换升级时就会出现升级完毕DSP没有反应的情况。

不知是否有人能指点一下呢?先谢过了!

Huihong LIU1:

回复 harte zhang:

你是不是开了看门狗啊?然后如果你的程序上有大的DELAY的时候,就是不断的使能看门狗复位呢,个人见解,希望可以帮到你

EALLOW;if(!(SysCtrlRegs.WDCR & 0x0080)) //check WDFLag{//Force a reset//make sure WDog is enabled//watch dog enable, and WDCHK valueSysCtrlRegs.WDCR = 0x00A8; //previous value of 0x0068//would disable the WDog//write invalid data forces resetSysCtrlRegs.WDCR = 0x0000;}//Clear WDFlag - also need to write WDCHK correctlySysCtrlRegs.WDCR = 0x00E8; //This will also disable the WDog//SysCtrlRegs.WDCR = 0x00A8; //This will enable the WDogEDIS;

28035芯片,CAN通讯,基于Flash Update API做的在线升级功能,存在这样的问题:用cc5.5编译产生的.out文件,有时候可以在线升级成功,有时候,升级完毕后DSP没有反应(连CCS看,是处于应用区)。同样的.out文件用仿真器烧写后运行正常。

往往是将应用程序稍微修改了下,产生新的.out文件后,在新旧两个.out文件间相互切换升级时就会出现升级完毕DSP没有反应的情况。

不知是否有人能指点一下呢?先谢过了!

fei han2:

回复 peng huifeng:

想请问一下    某段程序和该程序在FLASH中的位置是怎么对应起来的?  

28035芯片,CAN通讯,基于Flash Update API做的在线升级功能,存在这样的问题:用cc5.5编译产生的.out文件,有时候可以在线升级成功,有时候,升级完毕后DSP没有反应(连CCS看,是处于应用区)。同样的.out文件用仿真器烧写后运行正常。

往往是将应用程序稍微修改了下,产生新的.out文件后,在新旧两个.out文件间相互切换升级时就会出现升级完毕DSP没有反应的情况。

不知是否有人能指点一下呢?先谢过了!

fei han2:

回复 peng huifeng:

大哥   帮忙指点一下      

怎样才能得到二进制代码?代码中的各个部分在FLASH中的位置是如何确定的?

28035芯片,CAN通讯,基于Flash Update API做的在线升级功能,存在这样的问题:用cc5.5编译产生的.out文件,有时候可以在线升级成功,有时候,升级完毕后DSP没有反应(连CCS看,是处于应用区)。同样的.out文件用仿真器烧写后运行正常。

往往是将应用程序稍微修改了下,产生新的.out文件后,在新旧两个.out文件间相互切换升级时就会出现升级完毕DSP没有反应的情况。

不知是否有人能指点一下呢?先谢过了!

user78960159:

回复 fei han2:

你了解COFF文件格式吧 

官网有文档介绍的 可以看下 Common Object File Format.pdf

.out文件是可以转换成bin文件的,我做过TMS320F2812的远程下载代码,但是不是load到flash,是load到RAM做代码验证。

编译.out文件时是需要cmd文件的,从这个里面可以知道空间分配的,对吧

我总结过.out文件转.bin的方法,发给你看看能不能帮到你

这个很久以前弄得,那时候还用ccd3.3呢 编译设置你参考下吧

方法一:

1.编写批处理文件(例:yourProName_COFF2BIN_By_hex2bin.bat

示例代码:

cd debug

E:\CCStudio_v3.3\C2000\cgtools\bin\hex2000.exe yourProName_hex.cmd (路径需用户修改)

Hex2bin yourProName.hex

将此文件保存于工程路径下

2.编写.cmd文件

示例代码:

yourProName.out

-boot

-sci8

-map yourProName_hex.map

-o yourProName.hex

-I

将此文件保存于工程路径下的Debug文件夹内

3.将hex2bin.exe文件Copy到工程路径下的Debug文件夹内

4.在Build Option中添加如下命令

编译后在Debug文件夹中可得到:yourProName.bin,yourProName.hex,yourProName_hex.map

方法二:

1.编写批处理文件(例:yourProName_COFF2BIN_By_shell.bat)

示例代码:

cd debug

E:\CCStudio_v3.3\C2000\cgtools\bin\hex2000.exe yourProName_hex.cmd (路径需用户修改)

FileIOShell.exe -i yourProName.hex –o yourProName.bin

将此文件保存于工程路径下

2.编写.cmd文件

示例代码:

yourProName.out

-boot

-sci8

-map yourProName_hex.map

-o yourProName.hex

-I

将此文件保存于工程路径下的Debug文件夹内

3.将FileIOShell.exe文件Copy到工程路径下的Debug文件夹内

4.在Build Option中添加如下命令

编译后在Debug文件夹中可得到:yourProName.bin,yourProName.hex,yourProName_hex.map

赞(0)
未经允许不得转载:TI中文支持网 » DSP在线升级完毕,DSP却没有反应
分享到: 更多 (0)