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

F2812运行Flash2812_API210例程后就无法再次擦出

本来打算自己做个bootloader,找了一下2812的flash编程手册没找到,搜网络有人说TI提供了一个操作Flash的库。

我用的是210版的,开始运行了一两次没问题。然后我在链接脚本里将ramfuncs的运行地址改为了RAMH0,.运行一次后

第二次再下载程序就提示flash api error #24。

我怀疑操作flash时不能将代码运行在RAMH0,然后我把ramfuncs的运行地址改回RAML0,但将程序的存储地址改成了

FLASHJ、FLASHI、FLASHH,并将void Example_Done(void)作了如下修改:

 {  

  asm(" LB 0x3F7FF6 ");  

 //  asm("    ESTOP0");

 // asm("    SB 0, UNC");

 }。

像这样大概循环执行了7、8次后还是出现了flash api error #24。

 

 

Eric Ma:

he yuanjie,

芯片本身是否有加密?因为RAMH0和RAML0的区别也就是前者没在CSM的保护范围内而已。当然,你如果改动CMD的话,要rebuild。

至于出现Flash api错误,详细情况可能有很多,但不外乎下面几种:

一种是Flash 初始化, Flash API等对Flash操作的代码没有复制到RAM中运行;

第二种是在Flash API操作过程中的有中断进行不正当的打断操作;

第三种则是Flash 没有擦除,然后就进行program操作,或是地址范围不对;

你可以用在线仿真,然后擦看一下在哪里出现这个错误。

Eric

本来打算自己做个bootloader,找了一下2812的flash编程手册没找到,搜网络有人说TI提供了一个操作Flash的库。

我用的是210版的,开始运行了一两次没问题。然后我在链接脚本里将ramfuncs的运行地址改为了RAMH0,.运行一次后

第二次再下载程序就提示flash api error #24。

我怀疑操作flash时不能将代码运行在RAMH0,然后我把ramfuncs的运行地址改回RAML0,但将程序的存储地址改成了

FLASHJ、FLASHI、FLASHH,并将void Example_Done(void)作了如下修改:

 {  

  asm(" LB 0x3F7FF6 ");  

 //  asm("    ESTOP0");

 // asm("    SB 0, UNC");

 }。

像这样大概循环执行了7、8次后还是出现了flash api error #24。

 

 

he yuanjie:

回复 Eric Ma:

我连仿真器查看了0x3F7FF8处的内容全都是0xFFFF,应该没被锁吧。但就是再也不能擦出了。

本来打算自己做个bootloader,找了一下2812的flash编程手册没找到,搜网络有人说TI提供了一个操作Flash的库。

我用的是210版的,开始运行了一两次没问题。然后我在链接脚本里将ramfuncs的运行地址改为了RAMH0,.运行一次后

第二次再下载程序就提示flash api error #24。

我怀疑操作flash时不能将代码运行在RAMH0,然后我把ramfuncs的运行地址改回RAML0,但将程序的存储地址改成了

FLASHJ、FLASHI、FLASHH,并将void Example_Done(void)作了如下修改:

 {  

  asm(" LB 0x3F7FF6 ");  

 //  asm("    ESTOP0");

 // asm("    SB 0, UNC");

 }。

像这样大概循环执行了7、8次后还是出现了flash api error #24。

 

 

Eric Ma:

回复 he yuanjie:

he,

仿真器能够连,也能够用CCS正常烧写吗?如果可以的话,那芯片应该没被锁。

还是用仿真器带仿真的测一下,看出错的时候相关变量,地址等是否有超出范围等。

Eric

本来打算自己做个bootloader,找了一下2812的flash编程手册没找到,搜网络有人说TI提供了一个操作Flash的库。

我用的是210版的,开始运行了一两次没问题。然后我在链接脚本里将ramfuncs的运行地址改为了RAMH0,.运行一次后

第二次再下载程序就提示flash api error #24。

我怀疑操作flash时不能将代码运行在RAMH0,然后我把ramfuncs的运行地址改回RAML0,但将程序的存储地址改成了

FLASHJ、FLASHI、FLASHH,并将void Example_Done(void)作了如下修改:

 {  

  asm(" LB 0x3F7FF6 ");  

 //  asm("    ESTOP0");

 // asm("    SB 0, UNC");

 }。

像这样大概循环执行了7、8次后还是出现了flash api error #24。

 

 

chang qing:

 

 您好,我是新手,我也出现了您所说的情况,前两片已经换了,现在已经是第三片了,请问您的问题解决了么?he yuanjie

本来打算自己做个bootloader,找了一下2812的flash编程手册没找到,搜网络有人说TI提供了一个操作Flash的库。

我用的是210版的,开始运行了一两次没问题。然后我在链接脚本里将ramfuncs的运行地址改为了RAMH0,.运行一次后

第二次再下载程序就提示flash api error #24。

我怀疑操作flash时不能将代码运行在RAMH0,然后我把ramfuncs的运行地址改回RAML0,但将程序的存储地址改成了

FLASHJ、FLASHI、FLASHH,并将void Example_Done(void)作了如下修改:

 {  

  asm(" LB 0x3F7FF6 ");  

 //  asm("    ESTOP0");

 // asm("    SB 0, UNC");

 }。

像这样大概循环执行了7、8次后还是出现了flash api error #24。

 

 

本来打算自己做个bootloader,找了一下2812的flash编程手册没找到,搜网络有人说TI提供了一个操作Flash的库。

我用的是210版的,开始运行了一两次没问题。然后我在链接脚本里将ramfuncs的运行地址改为了RAMH0,.运行一次后

第二次再下载程序就提示flash api error #24。

我怀疑操作flash时不能将代码运行在RAMH0,然后我把ramfuncs的运行地址改回RAML0,但将程序的存储地址改成了

FLASHJ、FLASHI、FLASHH,并将void Example_Done(void)作了如下修改:

 {  

  asm(" LB 0x3F7FF6 ");  

 //  asm("    ESTOP0");

 // asm("    SB 0, UNC");

 }。

像这样大概循环执行了7、8次后还是出现了flash api error #24。

 

 

chang qing:

 

 您好,我是新手,我也出现了您所说的情况,前两片已经换了,现在已经是第三片了,请问您的问题解决了么?

本来打算自己做个bootloader,找了一下2812的flash编程手册没找到,搜网络有人说TI提供了一个操作Flash的库。

我用的是210版的,开始运行了一两次没问题。然后我在链接脚本里将ramfuncs的运行地址改为了RAMH0,.运行一次后

第二次再下载程序就提示flash api error #24。

我怀疑操作flash时不能将代码运行在RAMH0,然后我把ramfuncs的运行地址改回RAML0,但将程序的存储地址改成了

FLASHJ、FLASHI、FLASHH,并将void Example_Done(void)作了如下修改:

 {  

  asm(" LB 0x3F7FF6 ");  

 //  asm("    ESTOP0");

 // asm("    SB 0, UNC");

 }。

像这样大概循环执行了7、8次后还是出现了flash api error #24。

 

 

blue pangzi:

你好!过了这么久了,不知道你的问题解决没有。我这几天用28035烧写flash api后也出现了你这种情况,程序代码和CMD文件我都没有更改,运行几次后就不能擦除flash了,只能烧写原来的程序了。搞得我现在都不敢用其他芯片烧flash api程序了。

赞(0)
未经允许不得转载:TI中文支持网 » F2812运行Flash2812_API210例程后就无法再次擦出
分享到: 更多 (0)