硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2367|回复: 24
收起左侧

[emWin] emWin6.x移植矢量字体库注意事项

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2021-8-21 11:18:17 | 显示全部楼层 |阅读模式


移植的时候,下面两个地方会编译报错。

解决办法是将函数形参的void删掉即可。

QQ截图20210820233828.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2021-8-21 11:48:59 | 显示全部楼层
SEGGER官网的矢量库连接404了。

使用的这个里面的

emWin矢量字体库,版本V5.18,V5.26和V5.28
http://www.armbbs.cn/forum.php?m ... 8207&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

3

主题

337

回帖

346

积分

高级会员

积分
346
发表于 2021-8-21 16:12:02 | 显示全部楼层
eric2013 发表于 2021-8-21 11:48
SEGGER官网的矢量库连接404了。

使用的这个里面的

可以下载的,我刚刚下载到了。包含v6.20版本的。
https://www.segger.com/downloads/emwin/emWin_FreeType
https://www.segger.com/downloads/emwin/emWin_PNG

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2021-8-21 16:27:51 | 显示全部楼层
glory 发表于 2021-8-21 16:12
可以下载的,我刚刚下载到了。包含v6.20版本的。
https://www.segger.com/downloads/emwin/emWin_FreeTy ...

谢谢,我这里也可以了。
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2021-8-22 10:57:49 | 显示全部楼层
移植矢量字体库时,建议修改ftsystem.c文件里的动态内存申请、释放的几个函数,默认是用的C库malloc、free、realloc,如果是用的FreeRTOS,改成pvPortMalloc、vPortFree。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2021-8-22 10:59:43 | 显示全部楼层
爱恋之燕 发表于 2021-8-22 10:57
移植矢量字体库时,建议修改ftsystem.c文件里的动态内存申请、释放的几个函数,默认是用的C库malloc、free ...

其实改不改意义不大。

编译器带的C库还是很强的。
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2021-8-22 11:03:46 | 显示全部楼层
eric2013 发表于 2021-8-22 10:59
其实改不改意义不大。

编译器带的C库还是很强的。

用C库的动态内存函数,就要设置堆的大小,而TTF使用的动态内存大小和显示的汉字数量有关系,这个堆的大小设置不好把控,而和OS的动态内存放在一起,就很方便,不用单独设置堆的大小
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2021-8-22 11:19:07 | 显示全部楼层
eric2013 发表于 2021-8-22 10:59
其实改不改意义不大。

编译器带的C库还是很强的。

C库是用的堆里面设置的内存区域,还需要单独设置堆的大小,而TTF申请的内存大小和使用的汉字数量有关系,这个堆的设置大小就不好把控,而和OS的动态内存放在一起,就很方便,已在实际项目种同时使用过多种TTF字体都没有问题
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2021-8-22 11:21:20 | 显示全部楼层
爱恋之燕 发表于 2021-8-22 11:03
用C库的动态内存函数,就要设置堆的大小,而TTF使用的动态内存大小和显示的汉字数量有关系,这个堆的大小 ...

一样的,你使用OS的动态内存管理同样需要根据需求大小获取。
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2021-8-22 11:23:18 | 显示全部楼层
eric2013 发表于 2021-8-22 11:21
一样的,你使用OS的动态内存管理同样需要根据需求大小获取。

搞两套动态内存管理,何不合成一套?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2021-8-22 11:29:19 | 显示全部楼层
爱恋之燕 发表于 2021-8-22 11:23
搞两套动态内存管理,何不合成一套?

简单的以FreeRTOS为例,如果你要使用pvPortMalloc、vPortFree,这个默认管理的是FreeRTOSConfig.h
配置的heap大小,如果你要再让他们管理个SDRAM,你就要改造代码。内部SRAM是不行,空间太小了,一般矢量字体配置1MB的动态内存比较靠谱。

回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2021-8-22 16:13:35 | 显示全部楼层
TTF文件占用内存空间大小是各不相同的,有些仅仅是使用FT_Init_FreeType/FT_New_Face这两个API,什么也不做就占用1.2M内存,有些占用700多K。我测试过占用内存最大的好像是宋体(simsun.ttc)。




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2021-8-23 14:16:19 | 显示全部楼层
novice 发表于 2021-8-22 16:13
TTF文件占用内存空间大小是各不相同的,有些仅仅是使用FT_Init_FreeType/FT_New_Face这两个API,什么也不做 ...

谢谢分享。
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2021-8-23 20:35:55 | 显示全部楼层
eric2013 发表于 2021-8-22 11:29
简单的以FreeRTOS为例,如果你要使用pvPortMalloc、vPortFree,这个默认管理的是FreeRTOSConfig.h
配置 ...

使用FreeRTOS的heap5方式管理动态内存,多块内存区域自动分配
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2021-8-23 20:45:28 | 显示全部楼层
eric2013 发表于 2021-8-22 11:29
简单的以FreeRTOS为例,如果你要使用pvPortMalloc、vPortFree,这个默认管理的是FreeRTOSConfig.h
配置 ...

使用heap5方式,不需要改造代码
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2021-8-23 20:47:17 | 显示全部楼层
建议在教程中加入FontPruner字体精简软件的用法,可以把TTF字体文件里保留常用的汉字,原始的字体文件包含各种用不上的繁体汉字、国外语言、符号,动辄上10MB,精简后,保留简体汉字、常用符号仅仅只有1~2MB,大大减小内存的开销,更适合实际产品使用,只不过这个软件需要在linux环境中使用,上传一下使用方法和软件

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2021-8-23 21:05:56 | 显示全部楼层
爱恋之燕 发表于 2021-8-23 20:47
建议在教程中加入FontPruner字体精简软件的用法,可以把TTF字体文件里保留常用的汉字,原始的字体文件包含 ...

这种的固定字符显示还行,动态的不可以,特别是输入法之类的,少字符,这就略麻烦。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2021-8-23 21:08:01 | 显示全部楼层
爱恋之燕 发表于 2021-8-23 20:45
使用heap5方式,不需要改造代码

这个不好,不能指定区域,反倒是他最大的劣势。因为我们的任务栈等空间一定要使用内部SRAM来加快切换速度。如果分配到外部RAM做任务栈就太慢了。

回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2021-8-23 21:17:18 | 显示全部楼层
eric2013 发表于 2021-8-23 21:05
这种的固定字符显示还行,动态的不可以,特别是输入法之类的,少字符,这就略麻烦。

貌似像MCU做的嵌入式显示产品很少用到输入法吧,都是些固定的几个界面,用到的字符数很少,一般也只是输入数字很多,要是有用到输入法,都是些复杂的产品了,直接上QT或者Android,现在大家都习惯了智能拼音、手写、语音,要是用MCU来做这种输入法,把开发人员累死不说,也做不智能,用户使用的体验也是极差的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2021-8-23 21:24:26 | 显示全部楼层
爱恋之燕 发表于 2021-8-23 21:17
貌似像MCU做的嵌入式显示产品很少用到输入法吧,都是些固定的几个界面,用到的字符数很少,一般也只是输 ...

1、太多场景了,我只是简单举了一个例子。

又比如文本内容查看,文件名浏览,凡是有不确定因素的都是这种方式的劣势,这种方式仅适用于简单展示。

2、再说下这个拼音输入法,比如这个展示,客户的产品需求永远是各种各样的。

单片机做个这种界面绰绰有余,应用场景也非常多。

有个浓浓的TheadX GUIX风格的热循环器产品,附视频展示,供大家参考
http://www.armbbs.cn/forum.php?m ... d=107609&fromuid=58
(出处: 硬汉嵌入式论坛)

回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2021-8-23 22:27:04 | 显示全部楼层
eric2013 发表于 2021-8-23 21:24
1、太多场景了,我只是简单举了一个例子。

又比如文本内容查看,文件名浏览,凡是有不确定因素的都是 ...

楼主,写教程写的全面些不是更好吗,你看不上精简这个功能不代表别人看不上,给大家都学习一下不是更好吗,也许其他开发人员就有需求,还有allyzc网友做的字体生成器,对于少量字体也很实用,支持GBK、UTF8、抗锯齿,都写上去,大家喜欢用哪个就用哪个
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2021-8-23 22:33:41 | 显示全部楼层
爱恋之燕 发表于 2021-8-23 22:27
楼主,写教程写的全面些不是更好吗,你看不上精简这个功能不代表别人看不上,给大家都学习一下不是更好吗 ...

对,是这样的

很多东西跟大家一起交流探讨下,也能交流出很好的思路来
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2022-9-13 09:36:02 | 显示全部楼层
eric2013 发表于 2021-8-23 22:33
对,是这样的

很多东西跟大家一起交流探讨下,也能交流出很好的思路来

硬汉哥是否用过外挂的矢量字库芯片?刚留意到高通有一款(GT5SLAD3B-FA),似乎这个可以大幅降低CPU内存消耗。
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2022-9-13 09:50:38 | 显示全部楼层
eric2013 发表于 2021-8-23 22:33
对,是这样的

很多东西跟大家一起交流探讨下,也能交流出很好的思路来

QQ截图20220913094635.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
 楼主| 发表于 2022-9-13 17:32:12 | 显示全部楼层
云琴箫龙 发表于 2022-9-13 09:36
硬汉哥是否用过外挂的矢量字库芯片?刚留意到高通有一款(GT5SLAD3B-FA),似乎这个可以大幅降低CPU内存 ...

用过,之前我们RA8875就是外挂的字库芯片,后面为了降低成本,改用SPI Flash,自己往里面放字库了。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 21:49 , Processed in 0.508406 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表