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.

关于对FLASH操作的顺序问题



专家您好:

我用的是F2801,想对芯片的FLASH进行读写操作,想咨询下:

每次写FLASH之前都必须要擦整个块区吗?还是说只要最先开始擦一次就好了。

我想在同一个块区里面进行三重数据备份,那是不是只要最先擦一次就好了?

谢谢

  • 是的,要擦除整个块区,如果三重数据备份的地址没有重叠区域的话只擦除一次就可以了。

  • 专家,您好:

    我在CMD文件中进行了这样的分配:

       UNION : RUN = RAML0
        {
        ramfuncs            : LOAD = FLASHD,
                              RUN = RAML0,
                              LOAD_START(_RamfuncsLoadStart),
                              LOAD_END(_RamfuncsLoadEnd),
                              RUN_START(_RamfuncsRunStart),
                              PAGE = 0

      Flash28_API:
         {

          /*
       -lFlash2801_API_V302.lib(.econst)
       -lFlash2801_API_V302.lib(.text)
       -lFlash2801_API_V302.lib (.cinit)
       */
       -lFlash2801_API_V302.lib

       
      }             
                LOAD = FLASHC,
                           
                            LOAD_START(_Flash28_API_LoadStart),
                            LOAD_END(_Flash28_API_LoadEnd),
                            RUN_START(_Flash28_API_RunStart),
                            PAGE = 0                 
        }

    编译后出现如下的警告:

    >> warning: run address of member ramfuncs of UNION_1 ignored
    >> warning: load address of uninitialized member Flash28_API of UNION_1 ignored

    我在map文件中看过,RAML0和FLASHD和FLASHC都有剩余的空间。

    这两个警告要不要紧?

    谢谢

     

     

     

  •  你好,这两个警告不要紧,把UNION : RUN = RAML0{ }去掉,警告就没有了。