战舰V3适配oneos系列05:添加外部SRAM

战舰V3系列05:添加外部SRAM

本系列以 oneos2.3.0 提供的 STM32F103ZE 模板为基础,将 oneos 在战舰 V3 上运行起来,并逐步适配相关外设,计划周更

本系列相关代码将上传 gitee 供测试体验,仓库: https://gitee.com/dreamfly233/OneOS/tree/projects_OneOS-v2.3.0/

这是本系列的第5期,添加外部sram驱动,并添加到oneos的内存管理中

参考文档:

一个说明:

由于gitee库容量限制,后续将仅保留最新版例程,参考https://gitee.com/dreamfly233/OneOS/tree/projects_OneOS-v2.3.0/projects/stm32f103zet6-atk-warship_v3-latest

准备项:

复制上个教程的stm32f103zet6-atk-warship_v3-sdcard-spiflash文件夹,并重命名为stm32f103zet6-atk-warship_v3-sram

cubemx配置:

下面是战舰V3 外部sram的原理图:
挂载在fsmc上,型号IS62WV51216,大小为1Mbytes

打开projects\stm32f103zet6-atk-warship_v3-sram\board\CubeMX_Config 下 的 cubemx 工程文件(CubeMX_Config.ioc),参照下图进行配置,时序参数参考正点原子例程

完成以上配置后点击GENERATE CODE生成代码

menuconfig配置及生成工程

在stm32f103zet6-atk-warship_v3-sram文件夹打开oneos-cube,内存管理算法在menuconfig中定位到Kernel→ Memory management调整,这里保持默认配置即可

使用scons --ide=mdk5生成mdk工程,然后打开project.uvprojx工程

添加了fsmc设备如sram后,drv_sram.c/sram_test函数将参与编译,此时编译可能报错SRAM_SIZE未定义,在board.h添加相关宏即可


此时编译可以通过,编写并添加drv_atk_sram.c到工程:

os_sys_heap_add即将外置sram加入到系统内存管理中,调用os_malloc/os_calloc即可从外置sram分配内存

mem_test_func调用os_calloc分配内存,并进行内存写入和读取校验

注意:加入系统内存堆后,调用sram_test函数将破坏sram的内存控制块,再次调用内存管理接口将导致hardfault

因此调用add_sram后禁止调用sram_test

提示:外部sram速度一般,且在战舰开发板上与lcd、网卡复用fsmc接口,不适合作为lcd的framebuffer使用

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值