本来打算自己做个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程序了。