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.

请教LM4F230程序保护的问题

请问LM4F230中Flash Memory Protection Read Enable的位清零了以后,禁止相应的块读取,
是不是就自己的程序中也不能把它作为数据读取,因而不能用来保存常量、变量的初始值等数据了呢?
还是只是禁止外部读取?谢谢

  • Flash Memory Protection Read Enable的位清零了以后,对应block只能执行程序,不能被读取。尝试读取一个读保护的block是被禁止的,并会产生一个bus fault。

    自己的程序也不能读取 读保护的block。

    Datasheet中对此有对应的描述:“Care must be taken not to store required data in a Flash memory block that has the associated FMPREn bit cleared”。

    LM4F230片上有2K的EEPROM,可以用来存放用户需要的数据。

  • 可问题是在执行程序时有些参数也是存在FLASH中的,比如for(i=0; i<10; i++); 中1和10就是数据存在FLASH中的。这个怎么来避免呢?

    换句话说,怎么让编译器把这些参数存储在固定的FLASH空间呢?

    比如说常量和变量的初始值都有对应的段,应该可以定义段的位置,但是程序中的参数有些是参照PC寻址的,我怎么来定义这些段的位置呢?

    结论难道就是用C语言就不能设置禁止读的属性吗?只能用禁止JTAG的方法来防止程序被读出吗?     GOD SAVE TI!

  •  用C语言就能设置禁止读的属性,不仅仅是只能用禁止JTAG的方法来防止程序被读出,请参考下边的例程。

    Using Execute, Write, and Erase-Only Flash Protection on Stellaris MCU.pdf
  • 谢谢,不过这个例子是CCS,不知道有没有MDK的?

  • 暂时没有MDK的,编译器的问题