我遇到一个问题,如果自己磁轭bootloader程序,可以在程序中不用调用Flash_Erase\Flash_Program\Flash_Verify函数吗,如何做到的,不理解,希望得到帮助解释谢谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我遇到一个问题,如果自己磁轭bootloader程序,可以在程序中不用调用Flash_Erase\Flash_Program\Flash_Verify函数吗,如何做到的,不理解,希望得到帮助解释谢谢!
自己写bootloader 也是需要调用Flash_Erase等API函数,所有对FLASH的操作都必须调FLASH API实现。
请查看datasheet里对擦除和烧录时间的典型值参数表,支持按字(不是字节)烧录并不代表实际就是按字,它还可以按区(sector)进行烧录。
另外,新问题请另起一个帖子,已解决的请帮忙在是否解决了你的问题后点选“是”进行结帖,谢谢!
在dsp烧录过程中:Flash_Program(Uint16 *FlashAddr, Uint16 *BufAddr, Uint32 Length, FLASH_ST *FProgStatus);
Length是什么意思?是一次烧录的数据长度,Length越大烧录的时间越短?Length大到有没有上限?最小值是1,比如下面的列子:
1、 Flash_ptr = Sector[2].StartAddr;
for(j=0;j<1024;j++)
{
Status = Flash_Program(Flash_ptr,&j,1,&FlashStatus);
}
2、
for(i=0;i<0x100;i++)
{
Buffer[i] = 0x100+i;
}
Flash_ptr = Sector[1].StartAddr;
Length = 0x400;
Status = Flash_Program(Flash_ptr,Buffer,Length,&FlashStatus);
在上方回复的帖子里,你打开API文档,可以看到该函数的详细定义和参数的说明。
Length就是一次调用该函数的烧写长度,理论上当然是Length越大,烧录时间越长。
理论上它的上限值是你所使用芯片的整个Flash的大小(按word字),但实际应用中它通常不会超过一个sector的大小。