文章目录
前言
本来想学习一下lwip协议栈,顺便复习一下rtthread的bsp制作,本以为简简单单的顺便,也让我摔了两跤,虽然都是很低级的错误,但是我也想记录下来,原因之一是提醒自己一定要认真!!!认真!!!认真!!!重要的事情要说三遍,还有一个原因是希望可以帮助到初步学习rtthread的同志们,跳出因为大意所踩进的坑。
一、准备工作
- rtthread源码(这里使用的是v4.1.0版本)
- Env工具
- keil5
- stm32cubemx
二、制作步骤
1、以stm32f407vgt6为例,复制模板
2、修改模板名
3、使用stm32cubemx打开工程
4、重新选择芯片型号并保存工程,首次打开需要联网下载资源包
5、配置下载方式、时钟、串口
6、拷贝Src、Inc文件夹
7、复制SystemClock_Config函数
8、修改flash、sram、宏定义
9、配置工程模板
10、menuconfig配置
11、编译工程
12、运行scons --dist命令
使用此命令会在该 BSP 目录下生成 dist 目录,这便是开发项目的目录结构,RT-Thread 源码位于项目文件夹内,可以随意拷贝 dist 文件夹的工程到任何目录下使用。
三、遇到的问题
1、芯片选型
使用stm32cubumx配置工程的时候,忘记选择相应的芯片,导致修改完SOC_STM32F407VG宏之后,menuconfig无法打开,工程创建失败。
2、SRAM的大小
粗心大意,没有仔细阅读芯片手册,导致SRAM大小分配错误,程序随不报错,但无法正常运行。
如图是stm32cubumx芯片选型的时候显示的芯片参数,我们可以看到,图中flash大小为1024kb,sram大小为192kb
但是,当我修改完这两个文件的时候,程序编译正常,一运行就跑飞,后来上网查资料说是SRAM分配有问题,然后我就又去看了一下f407的芯片手册,发现
手册上虽然说f407虽然有192kb大小,但是其中包括64kbCCM内存(CPU直接访问的内存,有关CCM内存更详细的说明和使用方法,大家可以去上网搜索),所以分配SRAM的时候不能分配192kb,应该为128kb。
总结
希望本篇文章可以帮助到大家,如果大家发现文章中有错误或者需要改进的地方,欢迎大家私信或是在文章下方留言。