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.

F28027的CMD的文件修改对于程序的影响

本人使用F28027操作NOKIA5110液晶,由于液晶中没有字库,需要人工建立。
现在有几个问题:(1)如果字库建立在FLASH中,则操作时直接不显示相应的内容,直接全屏都是黑。


(2)再建立在M1_SARAM1中,调用图片时,如果在系统初始化调用时图片显示正常,但是在程序的运行过程中调用却会有些部分显示不符合原定义的内容,图片会花。但是我在重新调用之后新的显示内容时我都会调用清屏处理程序,将显示的内容清除掉。但是M1_SARAM中在CMD文件中仅有字库数据占用。

(3)当我是用系统默认分配的区域来存储字库,则显示正常,而系统分配的地址则在L0_SARAM中。但是原先分配的区域为M1_SARAM,两者都是0等待。希望大家能给我一点意见与建议。

下图是我的一部分的CMD文件。
SECTIONS
{
   /* Allocate program areas: */
   .cinit              : > FLASHA       PAGE = 0   /*C语言中的变量初值与常量,已经初始化则放置在FLASH中*/
   .pinit              : > FLASHA,      PAGE = 0
   .text               : > FLASHCD       PAGE = 0  /*C语言中的代码段,已经初始化则放置在FLASH中*/
   codestart           : > BEGIN        PAGE = 0
   ramfuncs            : LOAD = FLASHA,
                         RUN = PRAML0,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         PAGE = 0
   csmpasswds          : > CSM_PWL_P0   PAGE = 0
   csm_rsvd            : > CSM_RSVD     PAGE = 0
   /* Allocate uninitalized data sections: */
   .stack              : > RAMM0        PAGE = 1
   .ebss               : > DRAML0       PAGE = 1
   .esysmem            : > DRAML0       PAGE = 1    /*动态分配的存储空间*/
  .ziku               :>  RAMM1        PAGE = 1    /*自身所建立的字库存储单元*/
  // .ziku               :>  FLASHCD        PAGE = 0    /*自身所建立的字库存储单元*/
}

  • 字库是需要保存在内存里,掉电不丢失的,所以需要初始化然后放在Flash里。

    简单的办法是,可以定义一个大数组,然后将你的字库当作数组的初始化值对数组进行初始化,使用时直接访问数组即可。

  • 您好!很长感谢您的回答。但是我使用的为F28027系列的C2000芯片,内部的RAM容量不是很大,从而我想着把所定义的字库数组链接映射到Flash中,然后从系统中调用。

    有人跟我说要设置Flash的等待时间,但是我不清楚该如何去做?

    其次我前面可能没有说清楚,我自己通过CMD文件修改了字库的映射的区域,同样是一SARAM区域,但是显示的图片有所畸变。数据发生了变化。

    衷心希望您能够解答我的问题。  

                                                                                                                                         谢谢

                                                                                                                                                      刘明

  • 上面已经提到了呀,定义一个大数组,然后将你的字库当作数组的初始化值对数组进行初始化,使用时直接访问数组即可,注意数组定义前加const关键字就好。

    并不需要你去做这个映射,也不需要调用时特别怎么操作,更加跟SARAM没任何关系。

    你只要使用const定义数组并初始化,然后调用数组即可,它会自动放到flash里去的,对应的字段是cinit.

  • 非常感谢您的回答。谢谢