按照官方提供的BSP制作文字教程为STM32F407VET6制作BSP的时候出错。该芯片不使用RT-thread是可以使用的。
已经调了一天,主要是个人对RT-thread初始化堆内部实现不了解,看着源码佷懵,同时也是要尽快做项目。
麻烦遇到过的大神指点一下,或者有基于这个芯片实现了的BSP能发一份就好了,不胜感激。
其中该芯片的Flash为512K,RAM为192K。
使用Jlink在线调试,发现出错的地方在堆初始化函数 rt_system_heap_init
具体执行到该函数的这一步 heap_end->next = mem_size_aligned + SIZEOF_STRUCT_MEM;
会跳转到HardFault_Handler
最后会跳转到 rt_hw_hard_fault_exception
函数的while (1);
死循环。
之前也是制作过STM32F1的BSP,没有出现过这种错误。
使用原子的STM32F407ZGT6探索者的BSP修改也出现这种情况。
修改的一些细节如下:
1、board.h
2、Kconfig
3、linker_scripts(我使用MDK5)
4、SConscript 脚本
后来看了另外BSP(stm32f407-st-discovery),发现RAM的大小当做128K来配置就成功了(目前正常,不知道是否有隐患),查看数据手册才知道所谓的
192K 中有64K是CCM (core coupled memory) data RAM(咱也不懂这是干什么的),应该和这个有关吧。
又是碌碌无为的一早上过去了:(
好奇的是:
原子的407BSP的board.h里面选择的RAM大小是192K,(我改成128K才正常)
然后lin.sct 配置却是按照128K来配置。
手头也没有原子这一款板子,不知道会不会出现我这个问题。
后来看了另外BSP(stm32f407-st-discovery),发现RAM的大小当做128K来配置就成功了(目前正常,不知道是否 …
楼主去查看一下你这个芯片的RAM大小是不是分了好几块,比如F469就是分了2块 https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32f469-st-disco#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9,H7系列分成了5块。