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操作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里。
简单的办法是,可以定义一个大数组,然后将你的字库当作数组的初始化值对数组进行初始化,使用时直接访问数组即可。
上面已经提到了呀,定义一个大数组,然后将你的字库当作数组的初始化值对数组进行初始化,使用时直接访问数组即可,注意数组定义前加const关键字就好。
并不需要你去做这个映射,也不需要调用时特别怎么操作,更加跟SARAM没任何关系。
你只要使用const定义数组并初始化,然后调用数组即可,它会自动放到flash里去的,对应的字段是cinit.