我从TI官网上下载了一个关于Flash API的例程,编号为:sprc193, http://www.ti.com.cn/sitesearch/cn/docs/universalsearch.tsp?searchTerm=sprc193&Submit=&linkId=1
我把程序编译后烧写到了我的装置中,在运行中程序执行到
VersionHex = Flash_APIVersionHex();
if(VersionHex != 0x0300)
{
// Unexpected API version
// Make a decision based on this info. asm(" ESTOP0");
}
就出现了问题,我看到VersionHex 变量读到的函数Flash_APIVersionHex()的返回值为0写0x0302,因此程序停到asm(" ESTOP0");了。
我想请问一下各位老师和同仁,是不是需要把判断条件改为if(VersionHex != 0x0302) ?还是库函数的版本有问题???谢谢!
xiansheng qian:
还有个问题,为什么这个函数不能设置断点? 而且全速运行就会进入Fl28x_DelayLoop 中出不来。 之后用仿真器也不能少写程序了,错误出现在擦出阶段。
请问如何解决?
我从TI官网上下载了一个关于Flash API的例程,编号为:sprc193, http://www.ti.com.cn/sitesearch/cn/docs/universalsearch.tsp?searchTerm=sprc193&Submit=&linkId=1
我把程序编译后烧写到了我的装置中,在运行中程序执行到
VersionHex = Flash_APIVersionHex();
if(VersionHex != 0x0300)
{
// Unexpected API version
// Make a decision based on this info. asm(" ESTOP0");
}
就出现了问题,我看到VersionHex 变量读到的函数Flash_APIVersionHex()的返回值为0写0x0302,因此程序停到asm(" ESTOP0");了。
我想请问一下各位老师和同仁,是不是需要把判断条件改为if(VersionHex != 0x0302) ?还是库函数的版本有问题???谢谢!
xiansheng qian:
回复 xiansheng qian:
最奇怪的就是为什么这个工程中设置断点不管用,一点“全速运行”就直接过去了。
我从TI官网上下载了一个关于Flash API的例程,编号为:sprc193, http://www.ti.com.cn/sitesearch/cn/docs/universalsearch.tsp?searchTerm=sprc193&Submit=&linkId=1
我把程序编译后烧写到了我的装置中,在运行中程序执行到
VersionHex = Flash_APIVersionHex();
if(VersionHex != 0x0300)
{
// Unexpected API version
// Make a decision based on this info. asm(" ESTOP0");
}
就出现了问题,我看到VersionHex 变量读到的函数Flash_APIVersionHex()的返回值为0写0x0302,因此程序停到asm(" ESTOP0");了。
我想请问一下各位老师和同仁,是不是需要把判断条件改为if(VersionHex != 0x0302) ?还是库函数的版本有问题???谢谢!
xiansheng qian:
回复 Eric Ma:
对!谢谢!
还想问您一下,我做了一个实验,为我以后做在线升级做铺垫。 我在CMD中将
.cinit .pinit .text .econst .switch都定位到了Flash A中,之后在我的应用程序中把Flash A中的数据考到了一个定位在H0的ram中,之后把这些数据都写到了Flash C中,再把Flash A擦除,把Flash C中的数据放到缓冲后再写到Flash A中。 可以写成功,但是复位后程序无法进入main函数,请问这么做有什么不对的地方? 我暂时还没想明白……
我跟踪了一下,程序复位后首先执行code_start 函数,当执行到LB wd_disable的时候,程序就进入了 000066 0000 ITRAP0 而没有进入到wd_disable 这个函数中。我不知道怎么回事……
我从TI官网上下载了一个关于Flash API的例程,编号为:sprc193, http://www.ti.com.cn/sitesearch/cn/docs/universalsearch.tsp?searchTerm=sprc193&Submit=&linkId=1
我把程序编译后烧写到了我的装置中,在运行中程序执行到
VersionHex = Flash_APIVersionHex();
if(VersionHex != 0x0300)
{
// Unexpected API version
// Make a decision based on this info. asm(" ESTOP0");
}
就出现了问题,我看到VersionHex 变量读到的函数Flash_APIVersionHex()的返回值为0写0x0302,因此程序停到asm(" ESTOP0");了。
我想请问一下各位老师和同仁,是不是需要把判断条件改为if(VersionHex != 0x0302) ?还是库函数的版本有问题???谢谢!
Eric Ma:
回复 xiansheng qian:
xiansheng,
我认为应该是烧写出现问题,不然不会这样子。你自己对比用CCS烧写以及用Flash API烧写的Flash A 扇区的内容,看是否有不一样的单元。
另外如果仅仅想测试Flash API的擦除以及烧写功能而已,可以直接使用ControlSUITE 中的例程进行测试。对其他扇区进行擦除和烧写。
Eric
我从TI官网上下载了一个关于Flash API的例程,编号为:sprc193, http://www.ti.com.cn/sitesearch/cn/docs/universalsearch.tsp?searchTerm=sprc193&Submit=&linkId=1
我把程序编译后烧写到了我的装置中,在运行中程序执行到
VersionHex = Flash_APIVersionHex();
if(VersionHex != 0x0300)
{
// Unexpected API version
// Make a decision based on this info. asm(" ESTOP0");
}
就出现了问题,我看到VersionHex 变量读到的函数Flash_APIVersionHex()的返回值为0写0x0302,因此程序停到asm(" ESTOP0");了。
我想请问一下各位老师和同仁,是不是需要把判断条件改为if(VersionHex != 0x0302) ?还是库函数的版本有问题???谢谢!
xiansheng qian:
回复 Eric Ma:
我知道怎么回事了,擦写flash A的时候把 0x3F7FF6和0x3F7FF7也给擦掉了,也就是cmd文件里的BEGIN段里的地址, 因此导致了运行到code_start就出跑飞。
应该在0x3F7FF6 中写入 0x007F, 在0x3F7FF7中写入 DSP280x_CodeStartBranch.obj (.text) 在map文件中地址的低16位。 这样就可以了!
但是如何在程序中获取DSP280x_CodeStartBranch.obj 在map文件中的地址??? 请教一下! 谢谢!
我从TI官网上下载了一个关于Flash API的例程,编号为:sprc193, http://www.ti.com.cn/sitesearch/cn/docs/universalsearch.tsp?searchTerm=sprc193&Submit=&linkId=1
我把程序编译后烧写到了我的装置中,在运行中程序执行到
VersionHex = Flash_APIVersionHex();
if(VersionHex != 0x0300)
{
// Unexpected API version
// Make a decision based on this info. asm(" ESTOP0");
}
就出现了问题,我看到VersionHex 变量读到的函数Flash_APIVersionHex()的返回值为0写0x0302,因此程序停到asm(" ESTOP0");了。
我想请问一下各位老师和同仁,是不是需要把判断条件改为if(VersionHex != 0x0302) ?还是库函数的版本有问题???谢谢!
Eric Ma:
回复 xiansheng qian:
xiansheng,
那你就直接在程序中读0X3F7FF6和0X3F7FF7中的内容,不就可以了吗?你所要做的不就是把这两个单元的内容写进去而已嘛。
Eric
我从TI官网上下载了一个关于Flash API的例程,编号为:sprc193, http://www.ti.com.cn/sitesearch/cn/docs/universalsearch.tsp?searchTerm=sprc193&Submit=&linkId=1
我把程序编译后烧写到了我的装置中,在运行中程序执行到
VersionHex = Flash_APIVersionHex();
if(VersionHex != 0x0300)
{
// Unexpected API version
// Make a decision based on this info. asm(" ESTOP0");
}
就出现了问题,我看到VersionHex 变量读到的函数Flash_APIVersionHex()的返回值为0写0x0302,因此程序停到asm(" ESTOP0");了。
我想请问一下各位老师和同仁,是不是需要把判断条件改为if(VersionHex != 0x0302) ?还是库函数的版本有问题???谢谢!
master man:
回复 xiansheng qian:
你好,我现在也遇到这样的问题了,在API烧录程序中Example_CallFlashAPI函数中设置断点不管用,运行到断点时程序不停止,你是怎么理解的呢?
我从TI官网上下载了一个关于Flash API的例程,编号为:sprc193, http://www.ti.com.cn/sitesearch/cn/docs/universalsearch.tsp?searchTerm=sprc193&Submit=&linkId=1
我把程序编译后烧写到了我的装置中,在运行中程序执行到
VersionHex = Flash_APIVersionHex();
if(VersionHex != 0x0300)
{
// Unexpected API version
// Make a decision based on this info. asm(" ESTOP0");
}
就出现了问题,我看到VersionHex 变量读到的函数Flash_APIVersionHex()的返回值为0写0x0302,因此程序停到asm(" ESTOP0");了。
我想请问一下各位老师和同仁,是不是需要把判断条件改为if(VersionHex != 0x0302) ?还是库函数的版本有问题???谢谢!
xiansheng qian:
回复 master man:
您好! 我知道为什么了,因为这部分程序是load到ram中运行的程序,所以如果您直接把断点打在“被load在ram中运行的函数”中,程序不能停在断点处。
你需要将断点设在非“被load在ram中运行的函数”,这样能停下来,之后单步跟。
至于原因我也不太清楚,我只发现了现象。
顺便提醒,Example_CallFlashAPI中擦写部分的操作很多,最好是先屏掉之后册那部分开放哪部分。我第一次全速运行把芯片烧坏了。
我从TI官网上下载了一个关于Flash API的例程,编号为:sprc193, http://www.ti.com.cn/sitesearch/cn/docs/universalsearch.tsp?searchTerm=sprc193&Submit=&linkId=1
我把程序编译后烧写到了我的装置中,在运行中程序执行到
VersionHex = Flash_APIVersionHex();
if(VersionHex != 0x0300)
{
// Unexpected API version
// Make a decision based on this info. asm(" ESTOP0");
}
就出现了问题,我看到VersionHex 变量读到的函数Flash_APIVersionHex()的返回值为0写0x0302,因此程序停到asm(" ESTOP0");了。
我想请问一下各位老师和同仁,是不是需要把判断条件改为if(VersionHex != 0x0302) ?还是库函数的版本有问题???谢谢!
master man:
回复 xiansheng qian:
多谢你的提示