• 明理
    • 个人网站
    • STM32
    • SCons
    • 图形界面
    • 使用GLFW构建一个窗口
    • Nuklear入门
    • CubeMX + SCons 闪灯实验
      • Environment
        • Python
        • SCons
        • Toolchain
        • PyOCD
        • CubeMX
      • 生成项目
        • Pin & Configuration
        • Project Manager
          • Project
          • Code Generator
          • Generate Code
      • Build
        • Glob
    • 手搓 Gitbook 主题
    • 在本地测试个人网站
    • 想要一个个人网站
CubeMX + SCons 闪灯实验

CubeMX + SCons 闪灯实验

  • Windmill-City
  • 2022-09-20
  • 2023-01-29
    • STM32
    • SCons

Environment

软件 说明
Python SCons PyOCD Runtime
SCons Build Tools
Arm GNU Toolchain Toolchain
PyOCD Debug Tool
STM32CubeMX Debug Tool

Python

python --version
---
Python 3.10.5

SCons

scons -v
---
SCons by Steven Knight et al.:
        SCons: v4.3.0.559790274f66fa55251f5754de34820a29c7327a, Tue, 16 Nov 2021 19:09:21 +0000, by bdeegan on octodog
        SCons path: ['C:\\Python310\\lib\\site-packages\\SCons']
Copyright (c) 2001 - 2021 The SCons Foundation

Toolchain

arm-none-eabi-gcc -v
---
gcc version 12.2.0 (Arm GNU Toolchain 12.2.MPACBTI-Bet1 (Build arm-12-mpacbti.16))

PyOCD

pyocd -V
---
0.34.1

CubeMX

CubeMXVersion

生成项目

CubeMX->Access to MCU selector->STM32F103RCT6

Pin & Configuration

  • PA15 = GPIO Output
Status

Project Manager

Project

  • Project Name = firmware
  • Project Location = STM32Cube-Flashing
  • Toolchain / IDE = Makefile

Code Generator

  • Copy all used libraries into the project folder

Generate Code

tree
---
STM32Cube-Flashing
└─firmware
    ├─Core
    │  ├─Inc
    │  └─Src
    └─Drivers

Build

Unable to cross compile for ARM with Scons because /Fo is added

需要指定构建环境用到的工具 Appendix C. Tools

SConstruct

env = Environment(ENV=os.environ, tools=['gcc', 'g++', 'gnulink', 'ar', 'as'])

依照 Makefile 的内容配置 Environment

Working Directory = firmware

scons
---
scons: done building targets.

Glob

阮一峰-命令行通配符教程

C_Src_Dirs = [
    'Core/Src',
]

C_Glob_Srcs = []
for _dir in C_Src_Dirs:
    C_Sources += Glob(f'{_dir}/*.c')

使用 Glob 简化多文件编译