硬汉嵌入式论坛

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

[ThreadX全家桶] 怎么分批加载GUIX的资源

[复制链接]

58

主题

267

回帖

446

积分

高级会员

积分
446
发表于 2021-1-14 18:18:09 | 显示全部楼层 |阅读模式
在项目开发中,因为要用到全字库和各种图片,最终资源包的大小达到了10M。在上电时将资源包加载到SDRAM耗时太久,造成开机太慢。


怎样能分批加载资源?比如先加载开机界面需要的资源,在开机界面再加载其他主要界面资源,
剩下的不常用的界面在进去的时候加载或者其他空余时间段加载。


回复

使用道具 举报

14

主题

245

回帖

287

积分

高级会员

积分
287
发表于 2021-1-14 19:17:03 | 显示全部楼层
慢吗?我们也是从Nor Flash加载到SDRAM,大概1秒钟左右把
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-1-15 10:27:03 | 显示全部楼层
直接使用QSPI即可,速度飞快,50MB/S左右

如果是SPI Flash的话,DMA方式读速度大概5MB/S左右,也可以。
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
 楼主| 发表于 2021-1-15 11:26:05 | 显示全部楼层
eric2013 发表于 2021-1-15 10:27
直接使用QSPI即可,速度飞快,50MB/S左右

如果是SPI Flash的话,DMA方式读速度大概5MB/S左右,也可以。

我现在读取完成整个资源包,要大概38秒,不知道是哪里出了问题

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-1-16 12:57:14 | 显示全部楼层
ihavedone 发表于 2021-1-15 11:26
我现在读取完成整个资源包,要大概38秒,不知道是哪里出了问题

太慢了,得好好整整了。
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
 楼主| 发表于 2021-1-16 15:47:54 | 显示全部楼层
eric2013 发表于 2021-1-16 12:57
太慢了,得好好整整了。

整到了6秒,拿示波器看了,主频42M,429的单片机,用了USB,所以主频只能设置168M,外设时钟就是84M,SPI最少要2分频,42M。

目前来看不能再提高了,但是读出整个资源包要大概6秒钟。
所以有没有办法把资源包分成两部分,一部分上电加载,另一部分在启动界面加载。

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-1-17 07:37:14 | 显示全部楼层
ihavedone 发表于 2021-1-16 15:47
整到了6秒,拿示波器看了,主频42M,429的单片机,用了USB,所以主频只能设置168M,外设时钟就是84M,SPI ...

把DMA方式实现了,可以实现4.8MB/S的速度。

可以2秒加载完毕,继续优化下。比你研究分步加载要简单的多。

1、测试效果:
STM32F4驱动SPI接口Flash W25Q64FV查询读速度1.0MB/S,中断读速度3.8MB/S,DMA读速度4.8MB/S
http://www.armbbs.cn/forum.php?mod=viewthread&tid=96760

2、配套例子:
http://www.armbbs.cn/forum.php?m ... 3255&extra=page%3D1


回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
 楼主| 发表于 2021-1-17 14:53:22 | 显示全部楼层
eric2013 发表于 2021-1-17 07:37
把DMA方式实现了,可以实现4.8MB/S的速度。

可以2秒加载完毕,继续优化下。比你研究分步加载要简单的 ...

我现在是DMA读取,每次读取65535字节,最后读剩下的。
实测开机需要6秒左右。跟踪调试发现其他初始化直到开始读资源的地方是200多ms,读完资源包就是6秒左右了,所以时间都是消耗在这里。

FLASH 芯片是W25Q128
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
 楼主| 发表于 2021-1-17 15:23:45 | 显示全部楼层
eric2013 发表于 2021-1-17 07:37
把DMA方式实现了,可以实现4.8MB/S的速度。

可以2秒加载完毕,继续优化下。比你研究分步加载要简单的 ...

图片是读取SPI Flash的时候的CLK波形,这是一次DMA的波形,读取65535字节。
可以看到基本上读取几个字节后,就会有一小段空闲,空闲时间大概是200~300ns。
应该是这里拉慢了读取速度,还不清楚为什么会有这些空闲。
读取的内容是存储到SDRAM,是否跟SDRAM的延迟有关?
_VN46WP{ZK2TJO29JY88F~B.png
回复

使用道具 举报

58

主题

267

回帖

446

积分

高级会员

积分
446
 楼主| 发表于 2021-1-17 16:01:29 | 显示全部楼层
eric2013 发表于 2021-1-17 07:37
把DMA方式实现了,可以实现4.8MB/S的速度。

可以2秒加载完毕,继续优化下。比你研究分步加载要简单的 ...

在内部RAM开了个16k的缓存,试着往这里读一下,示波器测试就没有那个空闲了。
确定是SDRAM的速度不够,现在就是想办法把SDRAM的速度提上来。不知道改快一点之后还能不能运行。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-1-18 10:55:11 | 显示全部楼层
ihavedone 发表于 2021-1-17 16:01
在内部RAM开了个16k的缓存,试着往这里读一下,示波器测试就没有那个空闲了。
确定是SDRAM的速度不够, ...

32bit SDRAM走起。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 04:17 , Processed in 0.292792 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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