硬汉嵌入式论坛

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

[TouchGFX] Bitmap缓存设置

[复制链接]

3

主题

22

回帖

31

积分

新手上路

积分
31
发表于 2020-7-13 18:15:32 | 显示全部楼层 |阅读模式
我使用的是STM32F429,使用外部SPI flash,在绘图前,需要先把图片缓存
使用函数Bitmap::cache(id)。
我遇到的问题是,当id>13的时候,只要执行这个函数,就进入硬件错误。
执行Bitmap::cacheAll()函数也会进入硬件错误。
正常执行cache函数之后会进入TouchGFXHAL::blockCopy()函数,然后执行自定义的拷贝函数,但是只要id>13,就不会进入blockCopy函数,而直接进入硬件错误。
TouchGFX版本是4.13
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115798
QQ
发表于 2020-7-14 09:41:43 | 显示全部楼层
帮顶,不熟悉TouchGFX
回复

使用道具 举报

3

主题

22

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2020-7-14 09:58:44 | 显示全部楼层
我发现问题在于我把Bitmap的cache地址设置在外部sdram,如果在内部sram,就可以正常缓存图片14,还有待进一步调试
回复

使用道具 举报

3

主题

22

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2020-7-14 14:00:14 | 显示全部楼层
问题找到了,来反馈一下。
我把ExtFlashSection段放在地址0x09000000的地方,我的搬运函数这么写的
if ((uint32_t)src >= 0x09000000 && (uint32_t)src < 0x09D00000)
  {
    uint32_t dataOffset = (uint32_t)src - 0x09000000;
    // In this example we assume graphics is placed in SD card, and that we have an appropriate function
    // for copying data from there.

    if (0 == f_open(&bin, (const TCHAR *)"ER_EROM1", FA_READ)) //打开文件
    {
      if (0 == f_lseek(&bin, dataOffset))
      {
        f_read(&bin, dest, numBytes, &read_num); //读取数据
      }
      f_close(&bin);
    }
    // sdcard_read(dest, dataOffset, numBytes);
    return true;
  }
  else
  {
    // For all other addresses, just use the default implementation.
    // This is important, as blockCopy is also used for other things in the core framework.
    return HAL::blockCopy(dest, src, numBytes);
  }
之前出错是因为上限地址(0x09D00000)错误导致的,我的图片有12M左右,之前这里值写的比较小,导致一超出范围,指针就乱指了。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-9-10 21:32:15 | 显示全部楼层
johnzhy 发表于 2020-7-14 14:00
问题找到了,来反馈一下。
我把ExtFlashSection段放在地址0x09000000的地方,我的搬运函数这么写的
if (( ...

你好,你这是把图片资源放到SD卡?我最近在做个方案,是把资源放到emmc,有些问题想请教一下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-19 10:00 , Processed in 0.232735 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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