硬汉嵌入式论坛

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

[TouchGFX] f429外部flash放字库

[复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2023-8-2 17:53:05 | 显示全部楼层 |阅读模式

根据官方的两篇文档
https://support.touchgfx.com/zh- ... s-in-unmapped-flash
https://support.touchgfx.com/zh- ... /using-serial-flash

接下来我的步骤:
1.designer中默认配置,生成代码
2.修改链接脚本,成功将字库编译链接到外部spi flash中,然后做了外部flash烧写算法,但是访问不行,开机直接进hardfault。
3.按照官方的说法,字体设置项选中 unmap模式,再生成代码,下载程序后不会崩溃了,页面也显示了,只是没有字符了。
4.开始着手动态读取数据。文档里有一句话

我没找到在那儿进行配置。
5.不管了,新建了一个官方的g071项目代码生成,然后对比我这边的,把没有的代码文件复制过去,各种各种对比看哪儿和这个功能相关并且都实现,最后又开始进hardfault了,说明管用了。
6.但是也就到这儿了,g071的代码是dma模式读取外部flash,我不用dma只是满意点吧,不应该崩呀,现在完全不知道怎么弄了。

有知道的大佬告知一下不,不胜感激!!


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106831
QQ
发表于 2023-8-3 08:23:43 | 显示全部楼层
楼主已经验证过下载进SPI Flash的数据没问题吧,可以考虑继续使用map方式,映射地址到SDRAM,上电后直接将SPI Flash的内容先加载到SDRAM运行看看。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-8-3 14:05:51 | 显示全部楼层
eric2013 发表于 2023-8-3 08:23
楼主已经验证过下载进SPI Flash的数据没问题吧,可以考虑继续使用map方式,映射地址到SDRAM,上电后直接将S ...

数据应该没问题的,用的就是你们的代码做的下载算法,只是没做校验而已,之前我用其他代码做下载算法都失败了,不是擦除不行就是烧写不行,你们的直接能用,只改了spi的io。

然后map方式不知道怎么写关联代码,SDRAM是够的,看了你们处理图片方式的代码,但我是字库,完全不知道用哪些接口,没有例程代码
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106831
QQ
发表于 2023-8-4 09:47:28 | 显示全部楼层
JustQin 发表于 2023-8-3 14:05
数据应该没问题的,用的就是你们的代码做的下载算法,只是没做校验而已,之前我用其他代码做下载算法都失 ...

早期GUIX做过一种这种方式的例子。方法是这样,GUI上位机端设置为总线映射方式的,正常是给了一个总线地址的。你的程序上电后就将这个SPI Flash的字库数据加载到SDRAM的此地址。

TouchGFX应该也支持这种用法,你试试。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-8-4 14:36:25 | 显示全部楼层
eric2013 发表于 2023-8-4 09:47
早期GUIX做过一种这种方式的例子。方法是这样,GUI上位机端设置为总线映射方式的,正常是给了一个总线地 ...

我这么理解看对不对哈
我sram地址是0xC0000000,然后定义后面一部分用于映射字库,假如地址是C0001000,然后我就修改链接脚本,大概是这样的,TxtInExtFlash区链接到C0001000区,然后下载算法的地址也写成这个,这样的话下载时就会将这一部分调用外部下载算法写入spi flash,启动后在touchgfx启动之前将spi flash数据读取填充到sram c0001000位置处,然后其他啥都不动就可以了

是这样吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106831
QQ
发表于 2023-8-4 15:40:10 | 显示全部楼层
JustQin 发表于 2023-8-4 14:36
我这么理解看对不对哈
我sram地址是0xC0000000,然后定义后面一部分用于映射字库,假如地址是C0001000, ...

对,思路是这样的。细节的话,有几个地方
1、SPI Flash下载地址算法可以和你的TouchGFX映射没有任何关系,我们仅仅是需要将数据下载到SPI Flash里面,上电启动TouchGFX之前加载到对应的RAM地址即可。
2、然后映射方式的话,注意用的是内存总线地址的映射的方式。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-8-4 16:56:23 | 显示全部楼层
eric2013 发表于 2023-8-4 15:40
对,思路是这样的。细节的话,有几个地方
1、SPI Flash下载地址算法可以和你的TouchGFX映射没有任何关系 ...

1.spi算法映射那儿也确实可以说没关系,但要自动下载就得有关系了,否则就得单独提取文件写到flash里,更麻烦
2.是不是得调用某个函数,告诉touchgfx字库数据在sram里去读呀,并且还得做个启动动画,近8M得数据,时间应该蛮长的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106831
QQ
发表于 2023-8-5 08:28:19 | 显示全部楼层
JustQin 发表于 2023-8-4 16:56
1.spi算法映射那儿也确实可以说没关系,但要自动下载就得有关系了,否则就得单独提取文件写到flash里,更 ...

SPI Flash的读取速度很快的。

之前的测试:STM32H7驱动SPI接口Flash W25Q64JV查询读速度2.6MB/S,中断读速度4.0MB/S,DMA读速度5.7MB/S
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 16:11 , Processed in 0.372801 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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