Skip to content

Commit 39a805d

Browse files
authored
Docs:(STM32系列BSP制作教程.md)更新了SConscript的编写教程
Updated instructions for modifying SConscript scripts and project templates in the STM32 BSP documentation.
1 parent a69d381 commit 39a805d

1 file changed

Lines changed: 30 additions & 5 deletions

File tree

bsp/stm32/docs/STM32系列BSP制作教程.md

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -210,13 +210,35 @@ BSP 的制作过程分为如下五个步骤:
210210

211211
#### 3.4.2 修改构建脚本
212212

213-
**SConscript** 脚本决定 MDK/IAR 工程的生成以及编译过程中要添加文件
213+
**SConscript** 脚本决定 MDK/IAR 工程的生成以及编译过程中要添加的文件
214214

215-
在这一步中需要修改芯片型号以及芯片启动文件的地址,修改内容如下图所示
215+
在这一步中需要修改芯片型号以及芯片启动文件的地址,在BSP目录中存在两个SConscript文件,其中只有根目录下的需要修改,修改内容如下所示
216216

217-
![修改启动文件和芯片型号](./figures/SConscript.png)
217+
```diff
218+
# for module compiling
219+
import os
220+
Import('RTT_ROOT')
221+
Import('env')
222+
from building import *
218223

219-
注意:如果在文件夹中找不到相应系列的 .s 文件,可能是多个系列的芯片重用了相同的启动文件,此时可以在 CubeMX 中生成目标芯片的工程,查看使用了哪个启动文件,然后再修改启动文件名。
224+
cwd = GetCurrentDir()
225+
objs = []
226+
list = os.listdir(cwd)
227+
228+
- # 修改前模板中的存在如下宏定义语句:
229+
- env.Append(CPPDEFINES = ['STM32H723xx'])# 目标芯片宏定义,hal库将使用这个宏定义作判断
230+
+ # 修改宏定义为对应的芯片型号,例如对于STM32F103xB,修改后的内容如下:
231+
+ env.Append(CPPDEFINES = ['STM32F103xB'])
232+
for d in list:
233+
path = os.path.join(cwd, d)
234+
if os.path.isfile(os.path.join(path, 'SConscript')):
235+
objs = objs + SConscript(os.path.join(d, 'SConscript'))
236+
237+
Return('objs')
238+
239+
240+
```
241+
注意:由于BSP瘦身计划,template目录下的模板已经过时,SConscript文件可能与示例有所差异,请参考实际BSP或等待更新。
220242

221243
#### 3.4.3 修改工程模板
222244

@@ -233,8 +255,11 @@ BSP 的制作过程分为如下五个步骤:
233255
![配置下载方式](./figures/template_3.png)
234256

235257
### 3.5 重新生成工程
258+
工程生成需要使用 Env 工具。
259+
260+
在进行工程生成前,必须在 Env 工具中执行 `pkgs --update` 命令。
236261

237-
重新生成工程需要使用 Env 工具。
262+
该命令会根据 Kconfig 配置自动拉取对应的 HAL 库软件包,这是后续编译成功的关键。
238263

239264
#### 3.5.1 重新生成 rtconfig.h 文件
240265

0 commit comments

Comments
 (0)