OpenEdv-开源电子网

 找回密码
 立即注册
查看: 105|回复: 0

求助:使用SDRAM装载外部中文字库文件,LVGL没有显示

[复制链接]

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2019-6-19
在线时间
14 小时
发表于 2024-10-27 10:31:11 | 显示全部楼层 |阅读模式
20金钱
新手求助,在跟着原子哥的教程学习LVGL,现在卡在使用外部字体。
使用LvglFontTool  V0.5生成了一个宋体字体,将生成的lv_font_song_16.bin存在了SD卡的Font目录下面;
在SDRAM中开辟了一个10M的缓冲区(字体文件大小9M多),在main线程中把字体文件读入缓冲区,
但是没有字符(包括英文字符)显示出来,恳请高手帮忙指点一二。

相关代码如下:
uint32_t bytes_read;
FIL f_font;
uint8_t font_data[1024*1024*10] __attribute__((at(0XC0000000+ 800*480*6)));


main()
{
...
        // load font file into sdram
        res = f_open(&f_font, "0:/Font/lv_font_song_16.bin", FA_READ | FA_OPEN_EXISTING);
        if(res == FR_OK)
        {
                rt_kprintf("打开文件成功。\r\n");
                file_size = f_font.obj.objsize;
                res = f_read(&f_font, font_data, file_size, &bytes_read);
                if(res == FR_OK)
                {
                  rt_kprintf("文件读取成功,读到字节数据:%d\r\n", bytes_read);
                }
                else
                {
                  rt_kprintf("文件读取失败:(%d)\n", res);
                }               
        }
        else
        {
                rt_kprintf("打开文件失败。\r\n");
        }
        f_close(&f_font);
       
        lv_init();
        lv_port_disp_init();
        lv_port_indev_init();

...
}


lv_font_song_16.c中修改的内容:
extern uint8_t font_data[];

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);
    return (uint8_t*)(font_data + offset);
}


测试函数内容:
LV_FONT_DECLARE(lv_font_song_16)
void lv_mainstart(void)
{
        lv_obj_t* label = lv_label_create(lv_scr_act());
        lv_obj_set_style_text_font(label, &lv_font_song_16, LV_STATE_DEFAULT);
        lv_label_set_text(label, "世界你好!Hello, world!");
        lv_obj_center(label);
}

测试线程:
static void lvgl_thread_entry(void* parameters)
{
        lv_mainstart();
        while (1)
        {
                rt_mutex_take(&lvgl_mutex, RT_WAITING_FOREVER);
                lv_timer_handler();
                rt_mutex_release(&lvgl_mutex);
                rt_thread_delay(5);
        }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则

关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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