在看例程和Tim Love 写的文档时有几个疑问。1: 烧写在flash中的程序上电后是不是既可以部分搬移到RAM中运行又可以全部搬移到RAM中运行:?2:如果是这样的话,当使用FLASH_API的时候,是不是操作就不一样了呢?:3:上电后程序全部搬移到RAM里运行的时候还可以使用FLASH_API吗?
希望您能够点拨我的疑惑,非常感谢您百忙之中阅读和回答我的问题。
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.
在看例程和Tim Love 写的文档时有几个疑问。1: 烧写在flash中的程序上电后是不是既可以部分搬移到RAM中运行又可以全部搬移到RAM中运行:?2:如果是这样的话,当使用FLASH_API的时候,是不是操作就不一样了呢?:3:上电后程序全部搬移到RAM里运行的时候还可以使用FLASH_API吗?
希望您能够点拨我的疑惑,非常感谢您百忙之中阅读和回答我的问题。
tanson
1: 烧写在flash中的程序上电后是不是既可以部分搬移到RAM中运行又可以全部搬移到RAM中运行:?
是的,如果你要把某些函数搬到Flash运行,参考initflash函数的做法,如果要把所有的代码都搬到ram中,可以对整个.text进行操作,不过RAM没有那么多空间。
2:如果是这样的话,当使用FLASH_API的时候,是不是操作就不一样了呢?
FLASH API的操作都是一样的,确定搬到RAM,才能调用。
3:上电后程序全部搬移到RAM里运行的时候还可以使用FLASH_API吗?
可以,所有对FLASH操作的代码都必须运行在RAM。
Eric
非常感谢您的耐心作答,帮助我解除了迷惑。还有一个问题请教您:
假设我把所有程序上电都搬移到RAM中运行,是不是ramfuncs段全都换成text段?
一些将函数映射到ramfuncs段的操作就不需要做了?
还有无论程序运行在flash里还是RAM 里当接到指令需要调用FLASH_API函数的时候都要将全局中断关掉?
再次致谢!
tanson,
假设我把所有程序上电都搬移到RAM中运行,是不是ramfuncs段全都换成text段?
一些将函数映射到ramfuncs段的操作就不需要做了?
你说的对,只要把.text段按照ramfuncs设置就可以把整个.text段也就是所有的代码都加载在flash,但是跑在RAM,但你要保证RAM的空间够用。
还有无论程序运行在flash里还是RAM 里当接到指令需要调用FLASH_API函数的时候都要将全局中断关掉?
在你调用FLASH API进行擦除,烧写的时候,我建议关掉全局中断,即禁止所有中断,等flash操作完再打开。当然,在FLASH API操作的过程中,有一个阶段是可以接收中断的,你需要读FLASH API的指导手册。但如没有特殊中断要求,还是关掉比较方便。
Eric
Hi,Eric
我还想请教一下,当连接仿真器的时候程序就是在RAM里运行的,那是不是说明把程序全部从FLASH搬移RAM的时候,RAM 的空间是够用的呢?