如题:
我的烧录方法是:
将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:
万分感谢!