硬汉嵌入式论坛

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

[ThreadX全家桶] V7板子移植跑ThreadX+FileX+LevelX+SDRAM

[复制链接]

6

主题

683

回帖

701

积分

金牌会员

积分
701
QQ
发表于 2020-8-21 15:54:23 | 显示全部楼层 |阅读模式
论坛上,移植V7板子移植跑ThreadX+FileX+LevelX的例子已经有好几个,其中NOR-FLASH和NANDFLASH都已经有网友成功移植跑起来了,但是好像还没有见网友在SDRAM上移植跑起来过;在学习V7板子SDRAM的过程中,自己就顺便花点时间也把FILEX+LEVELX移植跑了起来。
SDRAM驱动库采用的是官方STM32CUBE_HAL库下自带,经过半天摸索成功跑通,但是在移植FILEX+LEVELX的过程中却遇到了一点问题
H7内部的RAM很大,不过分了几个分区,第一步利用芯片内部的RAM跑起来FILEX+LEVELX;
在LEVEL文件包内的NOR驱动代码上,把nor_memory_area强制定位到内部RAM指定区域,如下所示:
FLASH_BLOCK   nor_memory_area[TOTAL_BLOCKS] __attribute__((section(".ARM.__at_0x24000000")));
这样代码很顺利的跑成功,然后如法炮制,想把nor_memory_area强制定位到外部RAM指定区域,如下所示:
FLASH_BLOCK   nor_memory_area[TOTAL_BLOCKS] __attribute__((section(".ARM.__at_0xC0000000")));
但是这次却直接进入hardfault,看来不能这样简单的干;
经过思索,想起来STEMWIN也由用到外部RAM的地方,参考V6板子STEMWIN的范例,想起来外部RAM只能
通过指针进行读写操作,所需经过简单修改后,终于在外部RAM成功跑通FILEX+LEVELX;

接下来上传工程代码,做一个记录:
STM32H743XIH6_ThreadX_SDRAM.zip (15.42 MB, 下载次数: 526)

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-8-21 16:02:31 | 显示全部楼层
非常感谢分享。
回复

使用道具 举报

23

主题

1444

回帖

1513

积分

至尊会员

积分
1513
发表于 2020-8-21 16:20:52 | 显示全部楼层
楼主能搞定H7的NetX不,能搞定的话,造福全人类
代码不规范,亲人两行泪!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-8-21 17:17:14 | 显示全部楼层
SDRAM硬件异常问题,可以看下这个帖子,这种定义方式要防止SDRAM还没有初始化就使用,否则会硬件异常

像使用内部SRAM一样定义使用STM32H7的外部SDRAM,含MDK和IAR两版
https://forum.anfulai.cn/forum.p ... 8697&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

6

主题

683

回帖

701

积分

金牌会员

积分
701
QQ
 楼主| 发表于 2020-8-21 20:13:43 | 显示全部楼层
missfox 发表于 2020-8-21 16:20
楼主能搞定H7的NetX不,能搞定的话,造福全人类

硬汉不是都打通了嘛,你可以耐心等待
H7我也是刚入门接触半个月,急不来,慢慢摸索学习吧
回复

使用道具 举报

6

主题

683

回帖

701

积分

金牌会员

积分
701
QQ
 楼主| 发表于 2020-8-21 20:14:10 | 显示全部楼层
eric2013 发表于 2020-8-21 17:17
SDRAM硬件异常问题,可以看下这个帖子,这种定义方式要防止SDRAM还没有初始化就使用,否则会硬件异常

像 ...

感觉硬汉指点,去好好学习下
回复

使用道具 举报

6

主题

683

回帖

701

积分

金牌会员

积分
701
QQ
 楼主| 发表于 2020-8-21 21:18:04 | 显示全部楼层
eric2013 发表于 2020-8-21 17:17
SDRAM硬件异常问题,可以看下这个帖子,这种定义方式要防止SDRAM还没有初始化就使用,否则会硬件异常

像 ...

MDK和IAR的外部变量定义形式看到了,但是没看到GNUC下该怎么处理
现在学习threadx全家桶都用Segger embeded studio软件,
__attribute__((section (".RAM_SDRAM"),zero_init)) uint32_t SDRAMSRAMBuf[10];
Segger embeded studio软件编译提供不能识别zero_init,
找了半天没找到GNUC下的处理办法,不然暂时只能用指针处理了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-8-22 08:35:01 | 显示全部楼层
yklstudent 发表于 2020-8-21 21:18
MDK和IAR的外部变量定义形式看到了,但是没看到GNUC下该怎么处理
现在学习threadx全家桶都用Segger embe ...

GCC那个要修改ld文件。

用指针方式吧,省事,我现在GUIX的canvas画布就是用的指针方式,还是这种方式简单易维护。
回复

使用道具 举报

18

主题

309

回帖

363

积分

高级会员

积分
363
发表于 2020-9-23 21:55:24 | 显示全部楼层
楼主知道哪个函数可以得到文件的大小呢?fatfs用f_size即可,但是filex中没找到一个合适的函数啊
回复

使用道具 举报

18

主题

309

回帖

363

积分

高级会员

积分
363
发表于 2020-9-23 22:05:33 | 显示全部楼层
找到了,可以用下面的语句获得

  1. my_file.fx_file_current_file_size
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 01:18 , Processed in 0.052731 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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