[STM32H7] 【银杏科技ARM+FPGA】分享iCore4T移植RT-Thread过程的点点滴滴

[复制链接]
28945|373
wker 发表于 2020-9-14 14:34 | 显示全部楼层
不错的资料,非常值得收藏学习。
GT01115 发表于 2020-9-18 09:52 | 显示全部楼层
支持支持
Zzzzz1225 发表于 2020-9-19 08:57 | 显示全部楼层
板子很棒!写的非常详细,感谢分享
Zzzzz1225 发表于 2020-10-10 14:03 | 显示全部楼层
资料很全呀,再来回顾一下
xiaolin1111 发表于 2020-10-14 10:42 | 显示全部楼层
这个资料好啊   正好用到项目中
GT01115 发表于 2020-10-20 09:43 | 显示全部楼层
支持支持
xiaolin1111 发表于 2020-10-21 09:30 | 显示全部楼层
感谢楼主  学习学习
如意不如意 发表于 2020-10-28 11:33 | 显示全部楼层
分享iCore4T移植RT-Thread过程的点点滴滴——DAY 9
高手请略过,如有错误请多多批评指点!
之前咱们已经移植了FLASH驱动,今天给大家分享W25Q64加入文件系统的过程并完成文件创建、写入、读出的测试。
1、开启 / 配置 DFS 框架进入stm32h750-gingko-icore4t文件夹下,右击空白处,选择ConEmu Here,打开menuconfig,RT-Thread Components Device virtual file system 下,使能文件系统。
9_DFS.png
9_DFS2.png
2、开启 SPI 设备驱动, 在 RT-Thread Components → Device Drivers 下勾选Using MTD Nor Flash device drivers 和 Using Serial Flash Universal Driver 选项保存并退出menuconfig
9_DFS3.png
3、使用scons命令,键入scons --target=mdk5,生成MDK5工程。
2、打开stm32h750-gingko-icore4t下的project.uvprojx工程,编译,烧录,就可以进行文件系统测试了
3、打开终端,可以看到系统启动信息,file system initialization done!,文件系统初始化成功,下面进行文件创建、写入、读出测试,
9_test.png
至此说明我们的文件系统已经添加成功。

9、源代码

源代码可以稳步这里下载:
链接:https://pan.baidu.com/s/1fcLU4WaRDlgr0mNYwZj1Yg  提取码:zstq

韩小野 发表于 2020-10-29 08:53 | 显示全部楼层
支持支持!
如意不如意 发表于 2020-10-30 18:07 | 显示全部楼层
本帖最后由 如意不如意 于 2020-11-3 09:06 编辑

分享iCore4T移植RT-Thread过程的点点滴滴——DAY 10

高手请略过,如有错误请多多批评指点!

SDRAM同步动态随机存储器iCore4T ARM+FPGA双核心板挂有一片容量为32M外部SDRAM,在前面项目的基础上(rt-thread-icore4t-v0.7),分享RTT的SDRAM驱动移植,最后实现外部SDRAM的读写测试。

1、首先按照银杏知识库iCore4T双核心板系列教程(STM32CubeMX教程六十——LCD实验驱动4.3寸液晶屏)来对项目Cube进行配置需要配置时钟、GPIO、TIM12、FMC。要与教程配置保持一致,配置完成后重新生成MDK工程。

http://www.gkwiki.cn/doku.php?id=icore4t_60

2、复制刚刚生成的src文件夹main.c文件中的函数SystemClock_Config(void)到board.c。这里内核初始化时要调用该函数进行时钟配置。

3、修改board文件夹下kconfig文件,在menu "Onboard Peripheral Drivers"中添加配置SDRAM的选项。

9_kconfig.png

9_menuconfig_sdram.png
4、在board文件夹下新建ports文件夹,用来存放接口头文件。在ports下新建sdram_port.h文件,并添加接口头文件路径到board/SConscript中,内容如下:

  1. #ifndef __SDRAM_PORT_H
  2. #define __SDRAM_PORT_H

  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif

  6. #define SDRAM_MODEREG_BURST_LENGTH_1                                    ((uint16_t)0x0000)
  7. #define SDRAM_MODEREG_BURST_LENGTH_2                                   ((uint16_t)0x0001)
  8. #define SDRAM_MODEREG_BURST_LENGTH_4                                     ((uint16_t)0x0002)
  9. #define SDRAM_MODEREG_BURST_LENGTH_8                                       ((uint16_t)0x0004)
  10. #define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL                   ((uint16_t)0x0000)
  11. #define SDRAM_MODEREG_BURST_TYPE_INTERLEAVED                ((uint16_t)0x0008)
  12. #define SDRAM_MODEREG_CAS_LATENCY_2                                           ((uint16_t)0x0020)
  13. #define SDRAM_MODEREG_CAS_LATENCY_3                                           ((uint16_t)0x0030)
  14. #define SDRAM_MODEREG_OPERATING_MODE_STANDARD           ((uint16_t)0x0000)
  15. #define SDRAM_MODEREG_WRITEBURST_MODE_PROGRAMMED  ((uint16_t)0x0000)
  16. #define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE                ((uint16_t)0x0200)
  17. #define SDRAM_REFRESH_COUNT                                                                 ((uint32_t)0x0603)

  18. #define LOADTOACTIVEDELAY                                 2
  19. #define EXITSELFREFRESHDELAY                         7
  20. #define SELFREFRESHTIME                                       4
  21. #define ROWCYCLEDELAY                                           7
  22. #define WRITERECOVERYTIME                                        2
  23. #define RPDELAY                                                              2
  24. #define RCDDELAY                                                          2

  25. #define SDRAM_BANK_ADDR                                      ((uint32_t)0xC0000000)
  26. #define SDRAM_SIZE                                                      ((uint32_t)0x2000000)
  27. #define SDRAM_DATA_WIDTH                                  16
  28. #define SDRAM_TARGET_BANK                                 1
  29. #define SDRAM_COLUMN_BITS                                9
  30. #define SDRAM_ROW_BITS                                        13
  31. #define SDRAM_CAS_LATENCY                                 3
  32. #define SDCLOCK_PERIOD                                         2
  33. #define SDRAM_RPIPE_DELAY                                  1

  34. #ifdef __cplusplus
  35. }
  36. #endif
  37. #endif /*__ SDRAM_PORT_H */

9_incloudpath.png


5、进入stm32h750-gingko-icore4t文件夹下,右击空白处,选择ConEmu Here,使用scons命令,键入scons --target=mdk5,生成MDK5工程。

6、打开stm32h750-gingko-icore4t下的project.uvprojx工程,编译,烧录,就可以进行外部SDRAM测试了

7、打开终端,选择对应COM口,比特率115200,可以看到系统启动信息,sdram init success,外部SDRAM映射地址为0xC0000000,大小为32M。运行sdram_test读写测试程序,
9_sdram_test.png
至此说明我们的外部SDRAM驱动已经添加成功。

8、源代码
源代码可以稳步这里下载:
链接:https://pan.baidu.com/s/1fcLU4WaRDlgr0mNYwZj1Yg  提取码:zstq

回复就哭哭 发表于 2020-10-30 23:12 来自手机 | 显示全部楼层
使用scons命令生成MDK5工程,编译、烧录,最后探测不到了AXP152是怎么回事?
回复就哭哭 发表于 2020-10-30 23:13 来自手机 | 显示全部楼层
楼主写的很详细,刚刚没耐心等待,已经没问题了。谢谢。
 楼主| heart蓝色CD 发表于 2020-10-31 08:56 | 显示全部楼层
回复就哭哭 发表于 2020-10-30 23:12
使用scons命令生成MDK5工程,编译、烧录,最后探测不到了AXP152是怎么回事?

目前发现AXP152有几个不同版本,他的设备地址不太一样。我们在v0.7以后版本更新了AXP152驱动,在以后的开发中使用最新的驱动
 楼主| heart蓝色CD 发表于 2020-10-31 08:56 | 显示全部楼层
回复就哭哭 发表于 2020-10-30 23:13
楼主写的很详细,刚刚没耐心等待,已经没问题了。谢谢。

OK
sdlls 发表于 2020-11-1 20:29 | 显示全部楼层
共享的资料比较详细  谢谢                                 
1988020566 发表于 2020-11-1 20:29 | 显示全部楼层
非常感谢楼主分享                                 
youtome 发表于 2020-11-1 20:29 | 显示全部楼层
STM32H7很高端呢。                                    
dzfansman 发表于 2020-11-1 20:29 | 显示全部楼层
谢谢lz分享,很有用                                 
benjaminka 发表于 2020-11-1 20:29 | 显示全部楼层
资料够全的,多谢分享                                 
pmp 发表于 2020-11-1 20:29 | 显示全部楼层
资料下载了几个  好好收藏一下                                 
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部