电子说
这几天一直在捣鼓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型号能解决)。
目前已经实现boot从spi flash拷贝程序到psram并跳转到psram运行的工作。在keil下调试也可以了(已实现spi flash的下载算法)。不过要注意boot和app的时钟配置要合理,或者干脆一样的配置,避免不必要的错误。keil下代码重新编译过后再调试,需要手动点下载烧录,而不是调试的自动更新固件。
全部0条评论
快来发表一下你的评论吧 !