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

F28335串口在线更新程序的问题——flash_api code调用擦除函数返回值为24

如题:
我的烧录方法是:
将ti官方提供的flash_api code工程依据自己的需求做合适的修改,编译并转换成16进制的机器码(这个工程会有一个c _init00地址)。
然后在应用程序cmd文件中定义相关的flash段,将16进制的机器码以一个数组的形式存放到分配的段里。
上位机是sdflash,sdflash向dsp发送烧录命令后,应用程序将16进制的机器码从flash段复制到ram中,然后跳转到flash_api code工程的c _init00地址处开始运行。
flash_api code会与上位机握手并传输数据,同时根据上位机的命令执行擦除、编程、校验操作。

目前我的问题是:烧录开始以后  dsp跳转到flash_api code中运行,   但执行擦除操作时,返回值是24(0x18),根据手册 返回值24表示
STATUS_FAIL_PRECOMPACT
————————————-
Erase operation failed because the pre- 
compaction portion failed. The pre-compaction is 
applied to all sectors on the device. The 
FLASH_ST structure will return a fail address 
corresponding to the first sector fails this step. 

奇怪的是我用jtag仿真器将flash_api  code下载到dsp中单步调试,用串口调试工具发送握手报文和擦除指令时,flash_api  code正确调用了擦除函数,且返回值也是正确的0,一旦脱离调试环境,用sdflash软件启动烧录过程,则返回值就成了24,报erase fail 

请问这个错误是什么原因?应该如何解决?  期待TI的专家能有解答。

下面这个帖子和我的情况比较类似,似乎也还没有解决。

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/69031.aspx

scott scott:

请问楼主解决了吗?我现在在做28335 Flash 远程升级,想通过远程的网络摄像机串口升级28335 的Flash程序,请问如何做呢?用你们说的Flash api可以么?

如题:
我的烧录方法是:
将ti官方提供的flash_api code工程依据自己的需求做合适的修改,编译并转换成16进制的机器码(这个工程会有一个c _init00地址)。
然后在应用程序cmd文件中定义相关的flash段,将16进制的机器码以一个数组的形式存放到分配的段里。
上位机是sdflash,sdflash向dsp发送烧录命令后,应用程序将16进制的机器码从flash段复制到ram中,然后跳转到flash_api code工程的c _init00地址处开始运行。
flash_api code会与上位机握手并传输数据,同时根据上位机的命令执行擦除、编程、校验操作。

目前我的问题是:烧录开始以后  dsp跳转到flash_api code中运行,   但执行擦除操作时,返回值是24(0x18),根据手册 返回值24表示
STATUS_FAIL_PRECOMPACT
————————————-
Erase operation failed because the pre- 
compaction portion failed. The pre-compaction is 
applied to all sectors on the device. The 
FLASH_ST structure will return a fail address 
corresponding to the first sector fails this step. 

奇怪的是我用jtag仿真器将flash_api  code下载到dsp中单步调试,用串口调试工具发送握手报文和擦除指令时,flash_api  code正确调用了擦除函数,且返回值也是正确的0,一旦脱离调试环境,用sdflash软件启动烧录过程,则返回值就成了24,报erase fail 

请问这个错误是什么原因?应该如何解决?  期待TI的专家能有解答。

下面这个帖子和我的情况比较类似,似乎也还没有解决。

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/69031.aspx

fxqu:

回复 scott scott:

 我已经搞定了。

 你想远程升级,只要上位机与28335的串口之间有通道,理论上都是可行的,但是其他的那些方法都有个缺点,需要修改28335的启动方式

这个需要通过修改dsp相关管脚的电平重新上电,这种要求是远程升级做不到的,实际上就是不能远程升级。

我的这种方法在烧录之前不需要对dsp做任何处理,只要把相关烧录接口集成到应用程序即可。非常适合远程升级或者现场升级—-均不需要对待升级机器做额外操作。

如题:
我的烧录方法是:
将ti官方提供的flash_api code工程依据自己的需求做合适的修改,编译并转换成16进制的机器码(这个工程会有一个c _init00地址)。
然后在应用程序cmd文件中定义相关的flash段,将16进制的机器码以一个数组的形式存放到分配的段里。
上位机是sdflash,sdflash向dsp发送烧录命令后,应用程序将16进制的机器码从flash段复制到ram中,然后跳转到flash_api code工程的c _init00地址处开始运行。
flash_api code会与上位机握手并传输数据,同时根据上位机的命令执行擦除、编程、校验操作。

目前我的问题是:烧录开始以后  dsp跳转到flash_api code中运行,   但执行擦除操作时,返回值是24(0x18),根据手册 返回值24表示
STATUS_FAIL_PRECOMPACT
————————————-
Erase operation failed because the pre- 
compaction portion failed. The pre-compaction is 
applied to all sectors on the device. The 
FLASH_ST structure will return a fail address 
corresponding to the first sector fails this step. 

奇怪的是我用jtag仿真器将flash_api  code下载到dsp中单步调试,用串口调试工具发送握手报文和擦除指令时,flash_api  code正确调用了擦除函数,且返回值也是正确的0,一旦脱离调试环境,用sdflash软件启动烧录过程,则返回值就成了24,报erase fail 

请问这个错误是什么原因?应该如何解决?  期待TI的专家能有解答。

下面这个帖子和我的情况比较类似,似乎也还没有解决。

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/69031.aspx

scott scott:

回复 fxqu:

对对,我想做的也是你这种方法,不更改28335的启动模式;

请问你工程具体的逻辑是什么样的呢?   还有你的CMD文件时如何分配的呢?

比如用于烧写的程序烧写在FLashA中,运行时API函数调到RAM里面运行; 正常的用户程序烧写在FlashC中,这部分是实际的项目代码,程序一开始先执行烧写,烧写完后请问如何能跳转至FlashC里面运行新程序呢?

如题:
我的烧录方法是:
将ti官方提供的flash_api code工程依据自己的需求做合适的修改,编译并转换成16进制的机器码(这个工程会有一个c _init00地址)。
然后在应用程序cmd文件中定义相关的flash段,将16进制的机器码以一个数组的形式存放到分配的段里。
上位机是sdflash,sdflash向dsp发送烧录命令后,应用程序将16进制的机器码从flash段复制到ram中,然后跳转到flash_api code工程的c _init00地址处开始运行。
flash_api code会与上位机握手并传输数据,同时根据上位机的命令执行擦除、编程、校验操作。

目前我的问题是:烧录开始以后  dsp跳转到flash_api code中运行,   但执行擦除操作时,返回值是24(0x18),根据手册 返回值24表示
STATUS_FAIL_PRECOMPACT
————————————-
Erase operation failed because the pre- 
compaction portion failed. The pre-compaction is 
applied to all sectors on the device. The 
FLASH_ST structure will return a fail address 
corresponding to the first sector fails this step. 

奇怪的是我用jtag仿真器将flash_api  code下载到dsp中单步调试,用串口调试工具发送握手报文和擦除指令时,flash_api  code正确调用了擦除函数,且返回值也是正确的0,一旦脱离调试环境,用sdflash软件启动烧录过程,则返回值就成了24,报erase fail 

请问这个错误是什么原因?应该如何解决?  期待TI的专家能有解答。

下面这个帖子和我的情况比较类似,似乎也还没有解决。

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/69031.aspx

fxqu:

回复 scott scott:

你qq多少?

如题:
我的烧录方法是:
将ti官方提供的flash_api code工程依据自己的需求做合适的修改,编译并转换成16进制的机器码(这个工程会有一个c _init00地址)。
然后在应用程序cmd文件中定义相关的flash段,将16进制的机器码以一个数组的形式存放到分配的段里。
上位机是sdflash,sdflash向dsp发送烧录命令后,应用程序将16进制的机器码从flash段复制到ram中,然后跳转到flash_api code工程的c _init00地址处开始运行。
flash_api code会与上位机握手并传输数据,同时根据上位机的命令执行擦除、编程、校验操作。

目前我的问题是:烧录开始以后  dsp跳转到flash_api code中运行,   但执行擦除操作时,返回值是24(0x18),根据手册 返回值24表示
STATUS_FAIL_PRECOMPACT
————————————-
Erase operation failed because the pre- 
compaction portion failed. The pre-compaction is 
applied to all sectors on the device. The 
FLASH_ST structure will return a fail address 
corresponding to the first sector fails this step. 

奇怪的是我用jtag仿真器将flash_api  code下载到dsp中单步调试,用串口调试工具发送握手报文和擦除指令时,flash_api  code正确调用了擦除函数,且返回值也是正确的0,一旦脱离调试环境,用sdflash软件启动烧录过程,则返回值就成了24,报erase fail 

请问这个错误是什么原因?应该如何解决?  期待TI的专家能有解答。

下面这个帖子和我的情况比较类似,似乎也还没有解决。

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/69031.aspx

scott scott:

回复 fxqu:

呵呵,真的谢谢了;

我的qq:  1170047083

如题:
我的烧录方法是:
将ti官方提供的flash_api code工程依据自己的需求做合适的修改,编译并转换成16进制的机器码(这个工程会有一个c _init00地址)。
然后在应用程序cmd文件中定义相关的flash段,将16进制的机器码以一个数组的形式存放到分配的段里。
上位机是sdflash,sdflash向dsp发送烧录命令后,应用程序将16进制的机器码从flash段复制到ram中,然后跳转到flash_api code工程的c _init00地址处开始运行。
flash_api code会与上位机握手并传输数据,同时根据上位机的命令执行擦除、编程、校验操作。

目前我的问题是:烧录开始以后  dsp跳转到flash_api code中运行,   但执行擦除操作时,返回值是24(0x18),根据手册 返回值24表示
STATUS_FAIL_PRECOMPACT
————————————-
Erase operation failed because the pre- 
compaction portion failed. The pre-compaction is 
applied to all sectors on the device. The 
FLASH_ST structure will return a fail address 
corresponding to the first sector fails this step. 

奇怪的是我用jtag仿真器将flash_api  code下载到dsp中单步调试,用串口调试工具发送握手报文和擦除指令时,flash_api  code正确调用了擦除函数,且返回值也是正确的0,一旦脱离调试环境,用sdflash软件启动烧录过程,则返回值就成了24,报erase fail 

请问这个错误是什么原因?应该如何解决?  期待TI的专家能有解答。

下面这个帖子和我的情况比较类似,似乎也还没有解决。

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/69031.aspx

velarn song:

回复 scott scott:

我最近也在整自升级的问题,不知仁兄的问题解决了没?

如题:
我的烧录方法是:
将ti官方提供的flash_api code工程依据自己的需求做合适的修改,编译并转换成16进制的机器码(这个工程会有一个c _init00地址)。
然后在应用程序cmd文件中定义相关的flash段,将16进制的机器码以一个数组的形式存放到分配的段里。
上位机是sdflash,sdflash向dsp发送烧录命令后,应用程序将16进制的机器码从flash段复制到ram中,然后跳转到flash_api code工程的c _init00地址处开始运行。
flash_api code会与上位机握手并传输数据,同时根据上位机的命令执行擦除、编程、校验操作。

目前我的问题是:烧录开始以后  dsp跳转到flash_api code中运行,   但执行擦除操作时,返回值是24(0x18),根据手册 返回值24表示
STATUS_FAIL_PRECOMPACT
————————————-
Erase operation failed because the pre- 
compaction portion failed. The pre-compaction is 
applied to all sectors on the device. The 
FLASH_ST structure will return a fail address 
corresponding to the first sector fails this step. 

奇怪的是我用jtag仿真器将flash_api  code下载到dsp中单步调试,用串口调试工具发送握手报文和擦除指令时,flash_api  code正确调用了擦除函数,且返回值也是正确的0,一旦脱离调试环境,用sdflash软件启动烧录过程,则返回值就成了24,报erase fail 

请问这个错误是什么原因?应该如何解决?  期待TI的专家能有解答。

下面这个帖子和我的情况比较类似,似乎也还没有解决。

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/69031.aspx

fxqu:

回复 velarn song:

已经搞定了

如题:
我的烧录方法是:
将ti官方提供的flash_api code工程依据自己的需求做合适的修改,编译并转换成16进制的机器码(这个工程会有一个c _init00地址)。
然后在应用程序cmd文件中定义相关的flash段,将16进制的机器码以一个数组的形式存放到分配的段里。
上位机是sdflash,sdflash向dsp发送烧录命令后,应用程序将16进制的机器码从flash段复制到ram中,然后跳转到flash_api code工程的c _init00地址处开始运行。
flash_api code会与上位机握手并传输数据,同时根据上位机的命令执行擦除、编程、校验操作。

目前我的问题是:烧录开始以后  dsp跳转到flash_api code中运行,   但执行擦除操作时,返回值是24(0x18),根据手册 返回值24表示
STATUS_FAIL_PRECOMPACT
————————————-
Erase operation failed because the pre- 
compaction portion failed. The pre-compaction is 
applied to all sectors on the device. The 
FLASH_ST structure will return a fail address 
corresponding to the first sector fails this step. 

奇怪的是我用jtag仿真器将flash_api  code下载到dsp中单步调试,用串口调试工具发送握手报文和擦除指令时,flash_api  code正确调用了擦除函数,且返回值也是正确的0,一旦脱离调试环境,用sdflash软件启动烧录过程,则返回值就成了24,报erase fail 

请问这个错误是什么原因?应该如何解决?  期待TI的专家能有解答。

下面这个帖子和我的情况比较类似,似乎也还没有解决。

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/69031.aspx

velarn song:

回复 fxqu:

啊,我也在弄,遇到不懂的问题能不能请您指导一下?

如题:
我的烧录方法是:
将ti官方提供的flash_api code工程依据自己的需求做合适的修改,编译并转换成16进制的机器码(这个工程会有一个c _init00地址)。
然后在应用程序cmd文件中定义相关的flash段,将16进制的机器码以一个数组的形式存放到分配的段里。
上位机是sdflash,sdflash向dsp发送烧录命令后,应用程序将16进制的机器码从flash段复制到ram中,然后跳转到flash_api code工程的c _init00地址处开始运行。
flash_api code会与上位机握手并传输数据,同时根据上位机的命令执行擦除、编程、校验操作。

目前我的问题是:烧录开始以后  dsp跳转到flash_api code中运行,   但执行擦除操作时,返回值是24(0x18),根据手册 返回值24表示
STATUS_FAIL_PRECOMPACT
————————————-
Erase operation failed because the pre- 
compaction portion failed. The pre-compaction is 
applied to all sectors on the device. The 
FLASH_ST structure will return a fail address 
corresponding to the first sector fails this step. 

奇怪的是我用jtag仿真器将flash_api  code下载到dsp中单步调试,用串口调试工具发送握手报文和擦除指令时,flash_api  code正确调用了擦除函数,且返回值也是正确的0,一旦脱离调试环境,用sdflash软件启动烧录过程,则返回值就成了24,报erase fail 

请问这个错误是什么原因?应该如何解决?  期待TI的专家能有解答。

下面这个帖子和我的情况比较类似,似乎也还没有解决。

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/69031.aspx

fxqu:

回复 velarn song:

可以的,你把qq号发过来,我加你,有什么问题我知道的话就告诉你。

如题:
我的烧录方法是:
将ti官方提供的flash_api code工程依据自己的需求做合适的修改,编译并转换成16进制的机器码(这个工程会有一个c _init00地址)。
然后在应用程序cmd文件中定义相关的flash段,将16进制的机器码以一个数组的形式存放到分配的段里。
上位机是sdflash,sdflash向dsp发送烧录命令后,应用程序将16进制的机器码从flash段复制到ram中,然后跳转到flash_api code工程的c _init00地址处开始运行。
flash_api code会与上位机握手并传输数据,同时根据上位机的命令执行擦除、编程、校验操作。

目前我的问题是:烧录开始以后  dsp跳转到flash_api code中运行,   但执行擦除操作时,返回值是24(0x18),根据手册 返回值24表示
STATUS_FAIL_PRECOMPACT
————————————-
Erase operation failed because the pre- 
compaction portion failed. The pre-compaction is 
applied to all sectors on the device. The 
FLASH_ST structure will return a fail address 
corresponding to the first sector fails this step. 

奇怪的是我用jtag仿真器将flash_api  code下载到dsp中单步调试,用串口调试工具发送握手报文和擦除指令时,flash_api  code正确调用了擦除函数,且返回值也是正确的0,一旦脱离调试环境,用sdflash软件启动烧录过程,则返回值就成了24,报erase fail 

请问这个错误是什么原因?应该如何解决?  期待TI的专家能有解答。

下面这个帖子和我的情况比较类似,似乎也还没有解决。

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/69031.aspx

velarn song:

回复 fxqu:

万分感谢!

赞(0)
未经允许不得转载:TI中文支持网 » F28335串口在线更新程序的问题——flash_api code调用擦除函数返回值为24
分享到: 更多 (0)