您尚未登录。

楼主 #1 2020-04-07 17:55:46

ytm52513
会员
注册时间: 2020-03-20
已发帖子: 7
积分: 7

littlevgl如何读取nand flash里面的字库和图片

littlevgl如何读取nand flash里面的字库和图片?目前看到的例程都是指定文件名读取的。嵌入式上面使用小Flash,没有文件系统,是不是一定要加入文件系统才行?还是可以直接使用Nand Flash的寄存器操作?

离线

#2 2020-04-07 18:30:10

pythinker
会员
注册时间: 2019-02-12
已发帖子: 215
积分: 215

Re: littlevgl如何读取nand flash里面的字库和图片

建议用文件系统, 如果不用文件系统会非常麻烦.

离线

楼主 #3 2020-04-13 15:37:11

ytm52513
会员
注册时间: 2020-03-20
已发帖子: 7
积分: 7

Re: littlevgl如何读取nand flash里面的字库和图片

问题已经解决了,贴一个自己测试可以用的demo代码:

void loadBitmap(lv_img_dsc_t *image, uint32_t start_addr, uint32_t file_size)
{
    uint8_t *pbuf;        //读取数据缓冲区
    uint8_t *pbmp;
    uint32_t header;
    int secTime = file_size/4096;
    int secOff = file_size%4096;
    int i;
    dbg_printf(" secTime = %d, secOff = %d\r\n", secTime, secOff);

    pbuf = lv_mem_alloc(file_size);

    for (i=0; i<secTime; i++) {
        SPI_Flash_Read(&pbuf[i*4096], start_addr+i*4096, 4096);
    }
    if (secOff>0) {
        SPI_Flash_Read(&pbuf[secTime*4096], start_addr+secTime*4096, secOff);
    }
    /* 获取图片数据流 */
    pbmp = (uint8_t *)pbuf + 4;
    /* 获取头 */
    header = (uint32_t)pbuf[3] << 24;
    header |= (uint32_t)pbuf[2] << 16;
    header |= (uint32_t)pbuf[1] << 8;
    header |= (uint32_t)pbuf[0];

    image->header.cf = pbuf[0];
    image->header.always_zero = 0;
    image->header.w = (uint16_t)(header >> 10);
    image->header.h = (uint16_t)(header >> 21);
    image->data_size = file_size - 4;    //去掉4字节的头,剩余的就是图片数据流长度
    image->data = pbmp;
}

最近编辑记录 ytm52513 (2020-04-13 15:39:13)

离线

#4 2020-04-13 16:46:24

湘楚浪子
会员
注册时间: 2019-12-22
已发帖子: 40
积分: 39.5

Re: littlevgl如何读取nand flash里面的字库和图片

这样做也没有什么问题,但是文件多处理起来就会比较麻烦,至少打包生产的烧录文件就够呛.

离线

#5 2020-04-13 17:34:31

小丸子
会员
注册时间: 2019-09-26
已发帖子: 43
积分: 7

Re: littlevgl如何读取nand flash里面的字库和图片

还是加个文件系统吧

离线

#6 2020-06-22 16:13:27

zhaoxunren
会员
注册时间: 2020-06-20
已发帖子: 18
积分: 18

Re: littlevgl如何读取nand flash里面的字库和图片

你可以直接使用lvgl的图像解码函数,可以直接对flash中的图像文件或是bin文件解析。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn