里飞网

 找回密码
 立即注册
查看: 1128|回复: 8
打印 上一主题 下一主题

MCU内RAM100~200K,无外置RAM,能否用SD卡装载全字库?

[复制链接]

1

主题

5

帖子

29

积分

新手上路

Rank: 1

积分
29
跳转到指定楼层
楼主
发表于 2022-10-18 12:33:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,也没有外置FLASH,请教有啥办法可实现全字库用在LVGL?
回复

使用道具 举报

45

主题

288

帖子

2478

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2478
沙发
发表于 2022-10-18 12:42:27 | 只看该作者
SD卡也可以,实时读取字库文件了
回复

使用道具 举报

1

主题

5

帖子

29

积分

新手上路

Rank: 1

积分
29
板凳
 楼主| 发表于 2022-10-18 12:55:47 | 只看该作者
本帖最后由 WorkMan 于 2022-10-18 13:04 编辑
阿里兄 发表于 2022-10-18 12:42
SD卡也可以,实时读取字库文件了

版主,有没有例程哈,或请告知一个方案
其实不太清楚LVGL的字体显示时的流程!比如标签是在创建时就将要显示的文字的点阵数据装到RAM里,需要显示更新时直接到RAM里读取,还是每次显示更新时都要再去字体文件中读取数据?
回复

使用道具 举报

45

主题

288

帖子

2478

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2478
地板
发表于 2022-10-18 13:38:13 | 只看该作者
WorkMan 发表于 2022-10-18 12:55
版主,有没有例程哈,或请告知一个方案
其实不太清楚LVGL的字体显示时的流程!比如标签是在创建时就将要显 ...

用我的工具生成BIN格式字体,实现里面的读函数就行
回复

使用道具 举报

1

主题

5

帖子

29

积分

新手上路

Rank: 1

积分
29
5#
 楼主| 发表于 2022-10-18 13:56:54 | 只看该作者
阿里兄 发表于 2022-10-18 13:38
用我的工具生成BIN格式字体,实现里面的读函数就行

我先试试,谢谢版主!
回复

使用道具 举报

1

主题

5

帖子

29

积分

新手上路

Rank: 1

积分
29
6#
 楼主| 发表于 2022-11-26 17:45:42 | 只看该作者
阿里兄 发表于 2022-10-18 13:38
用我的工具生成BIN格式字体,实现里面的读函数就行

版主,用SD卡装载常用汉字字库,字体大小16,label标签更新4个汉字,用时约1.5秒,这个速度是否正常?
GD32F450,主频200MHz,好像不应该那么慢的!用debug跟踪了一下,多次进入读取字库文件,还都是很小size的读取数据,4~6字节,估计是在获取字体的一些信息。
回复

使用道具 举报

2

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
7#
发表于 2022-11-27 11:39:04 | 只看该作者
我用的模拟器,通过文件系统加载点阵字体,几个中文字符,打开文件几百次,是否正常?另外中文标点符号也无法找到,会是什么原因?

static uint8_t __g_font_buf[512];//如bin文件存在SPI FLASH可使用此buff

static uint8_t* __user_font_getdata(int offset, int size) {
    //如字模保存在SPI FLASH, SPIFLASH_Read(__g_font_buf,offset,size);
    //如字模已加载到SDRAM,直接返回偏移地址即可如:return (uint8_t*)(sdram_fontddr+offset);

    ///todo you code
    lv_fs_file_t file;
    lv_fs_res_t result;
    static uint32_t icount = 0;

    result = lv_fs_open(&file, "/Font/Bin/my_hei16.bin", LV_FS_MODE_RD);
    printf("lv_fs_open res:%d,count:%d\r\n", result,++icount);
    if (result != LV_FS_RES_OK)
        return NULL;

    lv_fs_seek(&file, offset, LV_FS_SEEK_CUR);
    uint32_t len;
    lv_fs_read(&file, __g_font_buf, size, &len);
    lv_fs_close(&file);

    return __g_font_buf;
}

回复

使用道具 举报

1

主题

5

帖子

29

积分

新手上路

Rank: 1

积分
29
8#
 楼主| 发表于 2022-11-29 10:17:36 | 只看该作者
本帖最后由 WorkMan 于 2022-11-29 10:19 编辑
flyfire 发表于 2022-11-27 11:39
我用的模拟器,通过文件系统加载点阵字体,几个中文字符,打开文件几百次,是否正常?另外中文标点符号也无 ...

同样问题啊,读取文件多次,估计是LVGL的读取点阵信息导致吧。
中文标点的问题可能是使用阿里字体工具生成字库数据时需要把中文标点符号加入到左边那输入文字的位置,那样才能生成标点的数据到字库文件中。
回复

使用道具 举报

2

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
9#
发表于 2022-12-8 16:30:58 | 只看该作者
模拟器里还不觉得,用stm32f103+sd卡,从文件读取字库,速度感人。最起码用spi flash存储字库吧。据说想要更快的速度,需要加字库或图片等资源,加载到扩展内存。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|里飞网  

GMT+8, 2024-4-19 17:53 , Processed in 0.093365 second(s), 4 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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