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.

关于F28035.cmd中FLASHB的问题

默认的F28035.cmd中有如下定义:

PAGE 1 :   /* Data Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
           /* Registers remain on PAGE1                                                  */

   BOOT_RSVD   : origin = 0x000000, length = 0x000050     /* Part of M0, BOOT rom will use this for stack */
   RAMM0       : origin = 0x000050, length = 0x0003B0     /* on-chip RAM block M0 */
   RAMM1       : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   RAML2       : origin = 0x008C00, length = 0x000400     /* on-chip RAM block L2 */
   RAML3       : origin = 0x009000, length = 0x001000     /* on-chip RAM block L3 */
   FLASHB      : origin = 0x3F4000, length = 0x002000     /* on-chip FLASH */
想问一下那个FLASHB的定义是什么意思?怎么用?
  • 结合MCU内存映射看   应该是将FLASH区划分为了A 和B

    具体存什么非易失的内容    需要你看看cmd中的其他内容

  • 分配的片上flash块的大小,可以参考例程中的应用。

  • 感谢回答。

    Flash分块我理解,我是疑问如下:

    cmd文件里通常定义两个Memory Page(0和1),0是Program memory, 1是Data memory。

    Program memory定义了.text等代码空间,Data memory定义了stack和ebss等数据空间,所以RAMM0和RAML1这些我能理解,我的问题是:

    为什么Data memory里也有一个FLASH块?难道我可以把一部分Data放到flash上吗?如果是,那这部分Data是可写呢还是只读?

    是不是可以定义这样一个section:

    constdata     : >FLASHB, Page = 1

    用于存放程序中的常量?

  • cmd文件里通常定义两个Memory Page(0和1),0是Program memory, 1是Data memory。

    Program memory定义了.text等代码空间,Data memory定义了stack和ebss等数据空间,所以RAMM0和RAML1这些我能理解,我的问题是:

    为什么Data memory里也有一个FLASH块?难道我可以把一部分Data放到flash上吗?如果是,那这部分Data是可写呢还是只读?

    是不是可以定义这样一个section:

    constdata     : >FLASHB, Page = 1

    用于存放程序中的常量?

    ERIC: page0, page1程序空间,数据空间的概念是以前老一代C2000沿用下来的概念,现在而言,两者可以视为一样的东西,不用去区分具体含义。

    你只要记住,不变的数据分配在FLASH,变化的数据放在RAM。 如你定义的const常量数据,放在FLASHB是没问题的。

    另外,举例,也可以如此来做

    constdata     : >FLASHC, Page = 0

  • 明白了,多谢!