首先感谢群友“ART-Pi代言人”提供的PSRAM(LY68L6400SLIT).
工程源代码:
psram_sram_03.zip
后续会推送到:
gitee仓库
这几天一直在捣鼓stm32h7b0 ospi外挂psram做映射读写,
群友“ART-Pi代言人”的测试平台是stm32h730,他反复测试了psram映射,在映射写的时候会进入硬件错误,
这几天我们两人交流了一下发现是stm32h7系列的几款单片机的ospi外的的一个bug导致的
(es0478-stm32h7a3xig-stm32h7b0xb-and-stm32h7b3xi-device-errata-stmicroelectronics.pdf)
(see errata 2.7.8 “Memory-mapped write error response when DQS output is disabled”)
,原文的意思是即使器件没有DQS引脚,在间接和映射写时也要开启DQS,而在间接和映射读时也要关闭DQS。
后续他的平台可以运行了。
我的stm32h7b0必须配置mpu关闭涉及cache的功能,总结如下:
对于psram映射的地址空间,mpu中TEX、C、B、S配置组合对应表中的Other attributes一列必须是空的,
不然会导致大量写入psram的数值存在错误。
下一步打算把程序存储在spi flash中,由mcu内部flash中的boot将spi flash中的程序拷贝到psram中运行,
剩余多余的psram存储空间就可以作为堆栈使用(不能配置cache,速度上会比较慢,希望后续的stm32型号能解决)。
2023-04-22 目前已经实现boot从spi flash拷贝程序到psram并跳转到psram运行的工作。在keil下调试也可以了(已实现spi flash的下载算法)。不过要注意boot和app的时钟配置要合理,或者干脆一样的配置,避免不必要的错误。keil下代码重新编译过后再调试,需要手动点下载烧录,而不是调试的自动更新固件。
后续有尝试过H7b0的OSPI上挂Flash吗,我在移植rtt的QSPI驱动时发现H7b0的OSPI并不能直接使用rtt官方的QSPI驱动,做了一些修改也没有解决,官方也没有对OSPI的驱动对接,请问你有做尝试吗