5834|21

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:关于LPC2138下载字库 [复制链接]

最近在LPC2138的项目中遇到了这样的问题,敬请达人指点:

    因为在项目中有一不带字库的液晶显示,而且所需汉字较多,且不定,故需下载字库到LPC2138的内部flash中,其有500K的内部flash,HZK16只需使用261K,我准备自己的程序有200K左右,flash空间化为从0到0x37fff为程序空间,0x38000-0x7CFFF为字库空间,如何把字库放到flash内成为目前最大的问题!
   我在网上也找了一些解决方法:

方法1:
   1.找到HZK16这个文件;
   2.到ZLG提供的H-JTAG V0.4.2.EXE
   3.用它将HZK16写到你想写的某一个扇区

方法2:
   建立一个批处理文件 MergFont.bat,内容如下:
   copy WVOIP_Vx.xx.HEX prog.hex
   bin2hex /M /O262144 /4 GBJT_mode3.fnt prog.hex

   其中WVOIP_Vx.xx.HEX为ADS编译连接生成HEX程序,GBJT_mode3.fnt为字库二进制文件,最终合成文件为prog.hex,262144为字库起始地址。将bin2hex.exe放到HEX文件目录中,运行bat,直接烧写prog.hex即可。
   针对以上方法,办法1我没法用,JTAG口已被用于IO,没法仿真和进行相应下载,办法2看起来不错,但是用其提供的语句我写的bat文件如下:
   copy Lpc2138_mobile.hex prog.hex
   bin2hex /M /229376/4 HZK16 prog.hex

   运行后生成的文件和原始文件-Lpc2138_mobile.hex一样大小,有可能是我的bat语句有问题;如果我同时加载一个ASC16的字库也可以这样写么?有知道的请指点一二!

   如果还有其他的什么方法,也请指出,项目很急,通过马上给分!也可通过QQ联系:75453284

最新回复

好贴,学习来的,我也正弄这个,打算使用的方法是:用工具软件将汉字字库(bin文件)和我的程序(也是bin文件)合并成一个bin文件,通过jtag下载  详情 回复 发表于 2012-5-31 15:40
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
太专业了,没法帮你
顶顶顶!
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
方法3:
   把你的字库转换成C语言的一个常数数组,存放到一个文件中,
   把这个文件加入到项目中。 所有的字节都可同时用这方法。

-----
这个小工具其实很简单,可以自己写的。
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

4
 
所有的字节都可同时用这方法。
----
所有的字库都可同时用这方法。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
如需要我可以免费帮你写一个
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

6
 
用winhex自己把东西粘到对应的偏移可以吗?
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
如果用ADS,还有一个更省事的办法。
创建一个 hzk16.s, 内容是

    export hzk16

    area font_table, data, readonly, align=4
hzk16
    incbin a1.dat

    end

再创建一个 hzk16.h, 包含像这样的声明:
unsigned char hzk16[];

unsigned short int hzk16[];

unsinged int hzk16[];

就可以在c程序中访问hzk16了.
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
a1.dat 就是字库,可以是其它的名字.
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
我的问题已解决,我用的是IAP的方法,通过串口把字库写进去了的!

谢谢大家哦!

当然Great_Bug() 的方法也是可行的!!!

如果哪位需要具体的程序,我可以给出!!!
 
 
 

回复

99

帖子

0

TA的资源

一粒金砂(初级)

10
 
uint8 Writeflash(uint32 add)
{
    uint8 err,tmp1;
   
    IRQDisable();
   
    IAP_Entry = (void(*)())IAP_ENTER_ADR;           // 初始化函数指针IAP_Entry
    tmp1 = Calcflashsector(add);
    if(tmp1==27) return(3);
    //ReadParID();                                    // 读器件ID
    //BootCodeID();                                   // 读Boot版本号
   
    SelSector(tmp1,tmp1);                                 // 选择扇区1                                 // 选择扇区
                  // 写数据到扇区
    RamToFlash(add,(uint32)(&Uart0RXbuffer[8]),256);
    err = Compare(add,(uint32)(&Uart0RXbuffer[8]),256);           // 比较数据*/
   
    IRQEnable();
    if(err == CMD_SUCCESS) return(1);
    else return(3);  
}
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

11
 
我试Great_Bug 的方法,在主程序test.c中用指针指向hzk16[],uchar *p=hzk16,但编译不过,提示hzk16.h  和test.c中hzk16冲突,老大啊,要怎么设置一下呢?
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

12
 
哈哈,我也搞定了,两种方法
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

13
 
Great_Bug  ,你好,刚看过你的贴子,我也在弄汉字字库这部分,你前面说的:
“如果用ADS,还有一个更省事的办法。
创建一个   hzk16.s,   内容是

        export   hzk16

        area   font_table,   data,   readonly,   align=4
hzk16
        incbin   a1.dat

        end

再创建一个   hzk16.h,   包含像这样的声明:
unsigned   char   hzk16[];

unsigned   short   int   hzk16[];

unsinged   int   hzk16[];

就可以在c程序中访问hzk16了.

a1.dat   就是字库,可以是其它的名字.

其中hzk16[]是一个自己做的汉字字模数组吧,
如是这样,那还不是要做个hzk16[]数组,好做吗?我没试过;要是行的话,要分散加载文件中就可
将hzk16[]定位在FLASH中某个区了;
还有,a1.dat是什么来的,请指教一二,谢谢!!
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

14
 
MAXDELL 你好,请问你是怎样搞定的,请教!谢谢!!
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

15
 
其中hzk16[]是一个自己做的汉字字模数组,  hzk16.s 的目的是把字库文件a1.dat (我用的是UCDOS下面的hzk16)倒如hzk16[]。
注意使用的时候,hzk16.h 不要在你的.c文件中 include ,直接extern 来调用。 还有编译的时候 可能由于分散加载的SRAM分配的空间少了,你可根据需要自己改,或者直接烧到外部flash
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

16
 
其中hzk16[]是一个自己做的汉字字模数组,  hzk16.s 的目的是把字库文件a1.dat (我用的是UCDOS下面的hzk16)倒如hzk16[]。
注意使用的时候,hzk16.h 不要在你的.c文件中 include ,直接extern 来调用。 还有编译的时候 可能由于分散加载的SRAM分配的空间少了,你可根据需要自己改,或者直接烧到外部flash
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

17
 
maxdell,太感谢了,这么晚了还回复我,我再试试,有什么问题再请教你吧,对了,我下了一下HZK16,不知是什么格式的文件,你上面说a1.dat,ucdos有hzk16.dat这个文件吗?能不能传份给我,谢谢了;
EMAIL:zcdz163@163.com
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

18
 
这个汉字我用几种方法解决了,最后还是自己将 HZK16中的一级字库用 WINHEX软件转化为 C语言数组。这样编译出来的HEX文件在300多kb。而用到入整个HZK16的方法,HEX已经到750Kb了,太大了,我只用片上资源。
HZK16 网上很多,是二进制的文件,应该不带后缀名。大概250多KB
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

19
 
没遇到过这种情况.
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(中级)

20
 
不知,帮顶
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表