硬汉嵌入式论坛

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

[ThreadX全家桶] 爽,搞定ThreadX GUIX的字库,图库和主题存到外部标准SPI Flash,大大拓展适用范围

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
发表于 2020-11-17 02:17:45 | 显示全部楼层 |阅读模式
上周打通了QSPI Flash方式:

爽歪歪,ThreadX GUIX外置全字库到QSPI Flash成功,超简单应用方式,大大方便大家项目实战
http://www.armbbs.cn/forum.php?mod=viewthread&tid=101105


今天将标准SPI Flash的方式也打通了,上电后将其加载到SDRAM即可(如果使用的QSPI Flash,因为支持内存映射,无需加载)

QQ截图20201117021731.png
回复

使用道具 举报

2

主题

31

回帖

37

积分

新手上路

积分
37
发表于 2020-11-17 09:07:52 | 显示全部楼层
加载到SDRAM是不是一上电,就把SPI FLASH里面的所有数据都拷贝到SDRAM里?👍👍👍👍👍厉害!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2020-11-17 10:31:18 | 显示全部楼层
aming882046 发表于 2020-11-17 09:07
加载到SDRAM是不是一上电,就把SPI FLASH里面的所有数据都拷贝到SDRAM里?👍👍👍&#12 ...

对,这种方式也很方便。
回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2020-11-17 14:56:14 | 显示全部楼层
绝对好消息

看来是时候学习一波了
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

21

主题

125

回帖

188

积分

初级会员

积分
188
发表于 2020-11-17 16:43:36 | 显示全部楼层
其它非ST的MCU支持这种操作吗?(通过jlink下载东西到SPI Nand Flash)
回复

使用道具 举报

76

主题

208

回帖

436

积分

高级会员

积分
436
发表于 2020-11-18 08:23:54 | 显示全部楼层
1052可以做到类似操作吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2020-11-18 11:57:39 | 显示全部楼层
kirito 发表于 2020-11-17 16:43
其它非ST的MCU支持这种操作吗?(通过jlink下载东西到SPI Nand Flash)

可以的,需要自己写个算法文件。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2020-11-18 11:57:47 | 显示全部楼层
薪火相传 发表于 2020-11-18 08:23
1052可以做到类似操作吗?

应该也可以的。
回复

使用道具 举报

19

主题

373

回帖

430

积分

高级会员

积分
430
发表于 2020-11-18 12:01:41 | 显示全部楼层

CubeProgrammer v2.5(或者CubeIDE v1.4)是否支持类似功能?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2020-11-19 08:17:22 | 显示全部楼层
h_007 发表于 2020-11-18 12:01
CubeProgrammer v2.5(或者CubeIDE v1.4)是否支持类似功能?

使用批处理实现内部flash,外部flash等多个地址hex文件合并,再通过CubeProg同时下载
http://www.armbbs.cn/forum.php?m ... 6166&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

610

主题

3062

回帖

4912

积分

至尊会员

积分
4912
发表于 2020-11-20 14:15:07 | 显示全部楼层
这个方法吧 guix studio 产生的 *.bin 文件,先写入到 qspi flash 里面,每次上电后再读到 sdram 里面运行吗 ?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2020-11-21 09:43:49 | 显示全部楼层
hpdell 发表于 2020-11-20 14:15
这个方法吧 guix studio 产生的 *.bin 文件,先写入到 qspi flash 里面,每次上电后再读到 sdram 里面运行 ...

对,是这样的,加上到SDRAM后,安装主题即可。
回复

使用道具 举报

0

主题

46

回帖

46

积分

新手上路

积分
46
发表于 2021-4-8 17:33:04 | 显示全部楼层
硬汉大哥  能支持外挂硬件字库吗?或者文件系统  流的方式?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-4-9 08:29:32 | 显示全部楼层
4058665 发表于 2021-4-8 17:33
硬汉大哥  能支持外挂硬件字库吗?或者文件系统  流的方式?

需要使用GUIX Studio生成的字库格式,什么Flash都可以,比专用的硬件字库芯片更方便。
使用文件系统的话,最好加载到动态内存中使用。
回复

使用道具 举报

10

主题

46

回帖

76

积分

初级会员

积分
76
发表于 2021-4-9 08:58:02 | 显示全部楼层
eric2013 发表于 2021-4-9 08:29
需要使用GUIX Studio生成的字库格式,什么Flash都可以,比专用的硬件字库芯片更方便。
使用文件系统的话 ...

硬汉哥,我用的是TouchGFX,1024*600的屏,RGB565格式,外部SPIFlash保存图片,自己写的下载算法STM32F429_W25QXX.FLM,可以下载成功,上电加载的SDRAM缓存空间也足够大(8M),但是好像过大的图片显示会花屏,个别图片显示正常。请帮忙分析可能是啥原因。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-4-9 09:45:24 | 显示全部楼层
zhoutao318 发表于 2021-4-9 08:58
硬汉哥,我用的是TouchGFX,1024*600的屏,RGB565格式,外部SPIFlash保存图片,自己写的下载算法STM32F42 ...

什么样的花屏,如果是图片不正常,最好可以对比下原始图片数据和输出时实际的数据是否一直。

回复

使用道具 举报

17

主题

132

回帖

183

积分

初级会员

积分
183
发表于 2021-4-9 12:28:33 | 显示全部楼层
图库和主题存到外部标准SPI Flash例程发布没有?
回复

使用道具 举报

10

主题

46

回帖

76

积分

初级会员

积分
76
发表于 2021-4-9 14:28:35 | 显示全部楼层
eric2013 发表于 2021-4-9 09:45
什么样的花屏,如果是图片不正常,最好可以对比下原始图片数据和输出时实际的数据是否一直。

效果和这个差不多,就是部分显示区域花屏。放到内部flash就显示正常。

部分区域花屏

部分区域花屏
回复

使用道具 举报

610

主题

3062

回帖

4912

积分

至尊会员

积分
4912
发表于 2021-4-9 16:52:50 | 显示全部楼层


大神,好

我之前是按照 V7-064_内部Flash和QSPI Flash都运行程序的混合方式,无需单独制作BOOT和APP(强烈推荐) 这个历程搞的 算法,
搞到 外部 qspi 里面运行程序,貌似感觉速度还是有点慢,特别是搞了图片,全字库等


我现在想使用 这个 历程的方法 历程名称: V7-065_SPI Flash的MDK下载算法制作 这个历程的 ?

我现在想按照 V7-065_SPI Flash的MDK下载算法制作 这个历程修改到 sdram 里面运行程序,到时我只是
spi-c00.png

把我以前的 地址 0x9000 0000 改成 0xc000 0000 就行了,其他的基本就不用怎么修改了吗 ?
我之前的地址 0x9000 0000 程序运行时正常的,只是速度慢点

另外 sdram 部分地址空间作为 这个 guix 的 资源库来使用的话,那其他的地址空间是否还是可以正常使用 ???



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-4-10 08:44:21 | 显示全部楼层
rgzdb 发表于 2021-4-9 12:28
图库和主题存到外部标准SPI Flash例程发布没有?

发布了:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-4-10 08:45:59 | 显示全部楼层
zhoutao318 发表于 2021-4-9 14:28
效果和这个差不多,就是部分显示区域花屏。放到内部flash就显示正常。

这种效果应该是图片没有正常加载吧。这种效果就跟SDRAM那部分空间数据还是随机态差不多。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-4-10 08:47:12 | 显示全部楼层
hpdell 发表于 2021-4-9 16:52
大神,好

我之前是按照 V7-064_内部Flash和QSPI Flash都运行程序的混合方式,无需单独制作BOOT和APP ...

1、对。
2、可以。
回复

使用道具 举报

10

主题

46

回帖

76

积分

初级会员

积分
76
发表于 2021-4-10 09:05:58 | 显示全部楼层
eric2013 发表于 2021-4-10 08:45
这种效果应该是图片没有正常加载吧。这种效果就跟SDRAM那部分空间数据还是随机态差不多。

我也觉得是Flash加载的问题,有时候这次的工程会残留显示上个工程的部分资源。准备按照您说的那样,只用一个图片,看看原始数据和加载到SDRAM的数据是否一致。
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2021-5-31 09:46:18 | 显示全部楼层
这种既下程序到内部又下字库到外部是不是只有用下载工具(比如keil)才能实现,能不能怎么来实现编译完程序是一个bin,字库是另一个bin
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-5-31 11:38:22 | 显示全部楼层
huiji 发表于 2021-5-31 09:46
这种既下程序到内部又下字库到外部是不是只有用下载工具(比如keil)才能实现,能不能怎么来实现编译完程序 ...

可以,怎么玩都行。
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2021-5-31 21:09:16 | 显示全部楼层
eric2013 发表于 2021-5-31 11:38
可以,怎么玩都行。

有啥方法生成两个bin,求指点
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-6-1 09:23:15 | 显示全部楼层
huiji 发表于 2021-5-31 21:09
有啥方法生成两个bin,求指点

这个不用生成,楼主位本身就是两个bin,我是把字库的bin转换为C数组,方便使用MDK一键下载内部Flash和SPIFlash。
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2021-8-2 15:03:45 | 显示全部楼层
参考V6的程序在自己的板子上测试,数据可以下载到外部flash,读取到的数据比对了一部分和下载的一致。但是加载字体和主题的时候返回GX_INVALID_FORMAT。第一张图是加载主题函数返回结果。

第二张图是函数调用,最终是_gx_binres_theme_buffer_allocate函数返回了GX_INVALID_FORMAT。


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-8-3 08:36:58 | 显示全部楼层
GAOPAN 发表于 2021-8-2 15:03
参考V6的程序在自己的板子上测试,数据可以下载到外部flash,读取到的数据比对了一部分和下载的一致。但是 ...

我记得有个GUIX版本有异常,使用我GUIX配套例子里面的版本试试。
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
发表于 2021-8-12 04:10:56 | 显示全部楼层
不能MDK一键下载,用自己做的bootloader和烧录工具。这种方法,如果app是做成偏移了xxx地址的bin文件的程序还能用么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-8-12 09:35:51 | 显示全部楼层
EmbeddedXGJ 发表于 2021-8-12 04:10
不能MDK一键下载,用自己做的bootloader和烧录工具。这种方法,如果app是做成偏移了xxx地址的bin文件的程序 ...

没问题。
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
发表于 2021-8-12 14:08:28 | 显示全部楼层

那真是太好了,3Q
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
发表于 2021-8-19 09:32:28 | 显示全部楼层

C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o ..\..\gui.bin !L  生成的是文件夹 f_bin.png
C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin --bincombined --bincombined_padding=1,0xff --output ..\..\gui.bin  !L  生成的的bin文件2G多大小 big-bin.png

这个bin文件咋生成呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-8-19 17:34:07 | 显示全部楼层
EmbeddedXGJ 发表于 2021-8-19 09:32
C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o ..\..\gui.bin !L  生成的是文件夹
C:\Keil_v5\ARM\ARM ...

生成hex就可以了,然后winhex将不同地址段的数据分别导出
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
发表于 2021-8-21 12:29:49 | 显示全部楼层
eric2013 发表于 2021-8-19 17:34
生成hex就可以了,然后winhex将不同地址段的数据分别导出

分别导出不同地址数据段有什么作用呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
 楼主| 发表于 2021-8-21 17:21:58 | 显示全部楼层
EmbeddedXGJ 发表于 2021-8-21 12:29
分别导出不同地址数据段有什么作用呢

这样生成的bin文件就不会有2G多大小
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
发表于 2021-8-24 17:23:43 | 显示全部楼层
eric2013 发表于 2021-8-21 17:21
这样生成的bin文件就不会有2G多大小

不会弄,没这样搞过,winhex也没用过
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 10:47 , Processed in 0.315182 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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