RT-Thread 学习笔记(三)---用SCons 构建编译环境

全网第一个比较好的Scons教程 你也可以直接手动指定文件夹下的 文件然后对其编译 我这里用了os的方法来实现的。 阅读详情

软件环境:Win7,Keil MDK 4.72a, IAR EWARM 7.2, GCC 4.2,Python 2.7 ,SCons 2.3.2

硬件环境:Armfly STM32F103ZE-EK  v3.0开发板



 参考文章

【1】RT-Thread 用户手册


1 关于SCons构建工具

手册第10章是这样描述的:SCons是一套由Python语言编写的开源构建系统,类似于GNU Make。它采用不同于通常Makefile文件的SConstruct和SConscript文件。这些文件也是Python脚本,能够使用标准的Python语法来编写。所以在SConstruct、SConscript文件中可以调用Python标准库进行各类复杂的处理,而不局限于Makefile设定的规则。在SCons的网站上可以找到详细的SCons用户手册。

2 下载并安装NotePad++文本编辑工具

【1】Notepad++简介
Notepad++是一套非常有特色的自由软件的纯文字编辑器(许可证:GPL),有完整的中文化接口及支持多国语言编写的功能(UTF8 技术)。它的功能比 Windows 中的 Notepad(记事本)强大,除了可以用来制作一般的纯文字说明文件,也十分适合当作编写电脑程序的编辑器。Notepad++ 不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。
Notepad++是一款非常有特色的编辑器,是开源软件,可以免费使用。支持的语言: C, C++ , Java , C#, XML,SQL,Ada, HTML, PHP, ASP, AutoIt, 汇编, DOS批处理, Caml, COBOL, Cmake, CSS, D, Diff, ActionScript, Fortran, Gui4Cli, HTML, Haskell, INNO, JSP, KIXtart, LISP, Lua, Make处理(Makefile), Matlab, INI文件, MS-DOS Style, NSIS, Normal text, Objective-C, Pascal,Python,Javascript,VerilogHaskellInnoSetupCMake,
VHDLAdaCaml、AutoItKiXtart、Matlab.
其功能有:
  1. 内置支持多达27种语法高亮度显示(包括各种常见的源代码、脚本,能够很好地支持 .nfo 文件查看),还支持自定义语言;
  2. 可自动检测文件类型,根据关键字显示节点,节点可自由折叠/打开,还可显示缩进引导线,代码显示得很有层次感;
  3. 可打开双窗口,在分窗口中又可打开多个子窗口,显示比例;
  4. 提供了一些有用工具,如 邻行互换位置、宏功能,等……
  5. 可显示选中的文本的字节数 (而不是一般编辑器所显示的字数,这在某些情况下,比如软件本地化很方便);
  6. 正则匹配字符串及批量替换;
  7. 强大的插件机制,扩展了编辑能力,如Zen Coding。
详细内容请参见百度百科 Notepad++

【2】下载并安装
Notepad++下载地址: 点击打开链接。安装过程比较简单,这里不再敖述。

3 建立RT-Thread/bsp下的应用分支


【1】将RT-Thread/bsp目录下的stm32f10x文件夹及其内容复制一份并重命名成stm32f103ze-ek,这是Armfly公司出的一款开发板,如下图。



【2】进入此目录下,用Notepad++打开rtconfig.py,如下,红色粗体字部分需要根据自己的实际开发环境修改
import os
# toolchains options
ARCH='arm'
CPU='cortex-m3'
CROSS_TOOL=' Keil'
if os.getenv('RTT_CC'):
 CROSS_TOOL = os.getenv('RTT_CC')
#device options
# STM32_TYPE =
# 'STM32F10X_LD','STM32F10X_LD_VL',
# 'STM32F10X_MD','STM32F10X_MD_VL',
# 'STM32F10X_HD','STM32F10X_HD_VL',
# 'STM32F10X_XL','STM32F10X_CL'
STM32_TYPE = 'STM32F10X_HD'
# lcd panel options
# 'FMT0371','ILI932X', 'SSD1289'
RT_USING_LCD_TYPE = 'SSD1289'
# cross_tool provides the cross compiler
# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
if  CROSS_TOOL == 'gcc':
 PLATFORM  = 'gcc'
 EXEC_PATH  = r'C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\bin'
elif CROSS_TOOL == 'keil':
 PLATFORM  = 'armcc'
 EXEC_PATH  = 'C:/Keil'
elif CROSS_TOOL == 'iar':
 PLATFORM  = 'iar'
 IAR_PATH  = r'C:\Program Files\IAR Systems\Embedded Workbench 7.0'
if os.getenv('RTT_EXEC_PATH'):
 EXEC_PATH = os.getenv('RTT_EXEC_PATH')
BUILD = 'debug' #this is a debug version
... ...

【3】保存并编译

编译技巧提示:每次打开命令终端输入命令进入到工作目录下对于打字比较慢的人来说比较费时的事,新建一个批处理文件可以节省点时间,将下面内容复制到一个记事本里然后重命名成一个xxx.bat文件就可以了。

echo RTT bat
E:  
cd \RTT\apingrtt\rt-thread-1.2.2\bsp\stm32f103ze-ek
::pause
cmd.exe

然后就可以编译了。

出现错误,如下图:

再打开keil MDK的options,如下图。

对照下系统变量,发现系统变量列表中没有RT_CC,所以rtconfig.py中的判断条件为假,而RT_ROOT=E:\RT_Thread需要修改下,因为这里RTT_ROOT的变量值为RTT源码根目录,这个变量在顶级SConstruct文件中用到,修改结果如下图。

然后在运行scons --target=mdk4 -s,如下图。

再次用keil去打开此目录下的工程文件,然后打开options,看看,如下图。

根目录已经起作用了。

在命令终端进入到stim32f103zet_v5(baiwei)目录下,运行scons -c,清除之前的编译结果。然后运行scons 重新编译,结果如下:

【4】经编译输出目录设置为不收版本监控。

Git 中的文件忽略
1. 共享式忽略新建 .gitignore 文件,放在工程目录任意位置即可。.gitignore 文件可以忽略自己。忽略的文件,只针对未跟踪文件有效,对已加入版本库的文件无效。
2. 独享式忽略针对具体版本库 :.git/info/exclude针对本地全局:  git config --global core.excludefile ~/.gitignore
忽略的语法规则:

"#"表示注释;

以斜杠“/”开头表示目录;

以星号“*”通配多个字符,即"*" 表示任意多个字符;

以问号“?”通配单个字符,即"?" 代表一个字符;

以方括号“[]”包含单个字符的匹配列表;

以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

 ([abc]) 代表可选字符范围

此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;

如果名称最前面是路径分隔符“/”,表示忽略的该文件在此目录下。
如果名称的最后面是 “/” ,表示忽略整个目录,但同名文件不忽略。
通过在名称前面加 “!”,代表不忽略。
例子如下:
# 这行是注释
*.a                   # 忽略所有 .a 伟扩展名的文件
!lib.a                # 但是 lib.a 不忽略,即使之前设置了忽略所有的 .a
/TODO            # 只忽略此目录下 TODO 文件,子目录的 TODO 不忽略
build/               # 忽略所有的 build/ 目录下文件,注意,不管是根目录下的 /build/ 目录,还是某个子目录 /child/build/ 目录,都会被忽略;
doc/*.txt           # 忽略如 doc/notes.txt, 但是不忽略如 doc/server/arch.txt

打开git shell窗口进入到根目录下,git cat .gitignore,如下图。

可以看到,build目录已经加入到被忽略列表。
【5】将新应用分支上传都远程版本库中
输入git add .或者git add stm32f103zet6_v5(baiwei) 回车
输入git commit -m "stm32f103zet6_v5(baiwei)" 回车
输入git push origin master 回车,结果如下图。



【SCons】SCons编译软件工程(一) SCons是一种用Python实现的软件构建工具,类似与Makefile,它可以自动编译源代码或者代码工程并构建输出可执行文件,除了能对C代码,C++代码以及汇编代码进行构建外,还可以对Fortran,Java等编程语言进行构建;它帮助开发者管理复杂的软件代码工程通过一种灵活的、可扩展的构建系统;所以可以将SCons看作是经典Make实用程序进一步改进后的替代品,SCons是一个更简便、更可靠、更高效的编译软件;由于Python语言编写的开源构建系统,所以具备很强的跨平台特性; 阅读详情

相关推荐

初识rt-thread与scons

rtconfig.py 用于定义工具链的路径,以及全局的编译参数。 必须包含变量PLATFROM(编译平台) EXEC_PATH(工具链路径) PREFIX(工具链程序的前缀) ARCH(CPU架构) CPU(CPU型号) CC(C编译器) POST_ACTION(编译完成后需执行的动作)。以上变量会被rt-thread的辅助编译脚本(比如building.py)使用。 ARCH CPU会被用于寻找libcpu的路径。POST_ACTION定义的命令串,以换行符\n分割,最后通过命令行执行。 CXX(C+

xflm的博客 2269

【c++】Scons|scons对比make

Sconsmake如果只有少数几个文件修改过,make 工具知道仅仅需要对哪些文件重新编译,缩短编译的时间。虽然如此,但是 make 规则复杂,即使是有经验的开发者也望而生畏。Scons是它的同类产品,也可以说是升级产品。做的事情跟make一样,但更简单,更容易。SconsScons是一个开放源码、以Python语言编码的自动化构建工具,可用来替代make编写复杂的makefile。并且scons是跨平台的,只要scons脚本写的好,可以在Linux和Windows下随意编译。.........

我的笔记本 6204

从入门到精通:RT-Thread SCons构建系统与Kconfig/SConscript实战指南

本文深入解析RT-Thread构建系统的核心组件SCons与Kconfig/SConscript,通过生动的比喻和实战案例,指导开发者从入门到精通。文章详细阐述了如何利用Kconfig实现功能裁剪与配置,并通过SConscript脚本组织代码编译,最终手把手演示如何创建一个可配置的“呼吸灯”驱动模块,助力实现嵌入式开发的组件化与工程高效管理。

jwt8token的博客 869

Scons入门简介

Scons是什么 make 在Linux系统上做过c/c++开发的同学们都知道一个项目工程管理工具:make和Makefile。 make 这个工具自上个世纪 70 年代 Stuart Feldman 在贝尔实验室开发出以来,就一直是类 UNIX 程序员的最爱之一。 通过检查文件的修改时间,make 工具可以知道编译目标文件所要依赖的其他文件。在复杂的项目中,如果只有少数几个文件修改过,make...

guotianqing的博客 5万+

rt-thread-标准版应用——STM32项目构建- SCons

本文介绍了基于RT-Thread操作系统的STM32F429项目构建过程,主要涵盖以下内容: 所需开发软件环境:KEIL开发工具、STM32CubeMX配置工具、RT-Thread Env环境和RT-Thread 4.0.2源码包。 使用STM32CubeMX配置时钟和IO口,并解决KEIL工程构建时的启动文件缺失问题。 利用SCons构建系统组织项目: 从RT-Thread示例中获取模板文件 修改工程配置适配STM32F429芯片 调整SCons构建脚本路径和编译选项 最终成功构建项

huanghongqi11的博客 993

FMT 开源飞控 - RT-Thread 与 SCons 构建系统深度解析

本文深度解析了FMT开源飞控如何利用RT-Thread实时操作系统与SCons构建系统构建高效开发框架。文章详细阐述了SCons在模块化构建、依赖管理和系统裁剪中的核心作用,并结合实战案例,指导开发者如何将FMT飞控移植到新硬件平台,同时提供了关键的避坑指南与效率优化建议。

algae的博客 1036

RT-Thread SCons构建工具 全面详解 对比cmake 强过Makefile

笔者首先对于scons这个工具的引入是在学习cmake的时候有所听闻,并在真正学习RT架构的时候由于RTthread的迭代之后就不用Make/Makefile ,RT-Thread 早期使用 Make/Makefile 构建。从 RT-Thread 0.3.0 开始,RT-Thread 开发团队逐渐引入了 SCons 构建系统,引入 SCons 唯一的目是:使大家从复杂的 Makefile 配置、IDE 配置中脱离出来,把精力集中在 RT-Thread 功能开发上。

你要拥有一个你喜欢并且热爱的人生 1万+

【RT-Thread】使用Scons管理自己的工程

起因 在使用env进行构建工程的时候,如果是从MDK手动添加分组和源码,重新构建以后工程又恢复原来的样子了,极为不方便,因此就去RT-Thread的官网查找这方面的资料,果然找到了相关的教程,教程的连接如下:Scons。但是教程的篇幅较长,如果只是希望在工程中添加一些分组和源码,其实只需要简单的几步即可完成,因此本文作为一个使用笔记,能够让读者在不熟悉Scons的基础上快速将组和源码添加进入工程。如果读者需要理解Scons,可以看上面提到的链接,作为入门理解非常有帮助。 需求 根据上述的问题,本文的目标就是

tanzhuolin 2841

RT-Thread 多级目录 scons 构建

RT-Thread 多级目录 scons 构建

坚韧与专注 1305

RT-Thread项目构建:使用SCons自动化生成MDK工程与系统裁剪指南

在嵌入式开发中,构建工具是连接源代码与可执行程序的关键桥梁,它负责自动化处理编译、链接和文件组织等复杂流程。SCons作为一款基于Python的现代化构建系统,通过声明式脚本定义构建规则,能够智能分析文件依赖关系,实现跨平台的一致构建体验。其技术价值在于提升大型项目的可维护性和团队协作效率,尤其适用于模块化程度高的嵌入式实时操作系统。在RT-Thread开发场景中,SCons不仅用于自动化生成Keil MDK工程文件,还深度集成menuconfig图形化配置工具,实现对操作系统组件的灵活裁剪。本文聚焦于SC

weixin_33725515的博客 383

RT-Thread开发,使用SCons编译,生成静态库,并进行链接生成MCU程序

寞水

寞水 3063

Scons构建RT-Thread开发环境

1.下载并安装软件,下载RT-Thread源码。软件和源码可以去对应官网下载,这里不多说了。 python-2.7.11 scons-2.4.1-setup 说明一下,搭建开发环境前需要安装编译器:MDK/IAR/VisualStudio/arm gcc等,根据自己习惯。在window下分别安装完python和scons,基于Scons是Python插件,Scons安装会自动搜索Python的

阳光守望者Coder 4950

SCons构建系统,RT-Thread生成静态库,RT-Thread链接静态库

寞水

寞水 995

FMT 开源飞控 - RT-Thread 移植与 SCons 构建实战指南

本文是一份详细的FMT开源飞控实战指南,重点介绍了如何将RT-Thread实时操作系统移植到特定硬件平台,并利用SCons构建工具完成项目编译。文章从开发者视角出发,阐述了选择FMT和RT-Thread的优势,逐步解析了项目结构、BSP创建、构建脚本配置、系统调试及进阶定制等核心步骤,旨在为开发者提供一条清晰的飞控系统移植与部署路径。

efc123456的博客 778

WSL2迁移后用户名不见了?一招教你快速恢复Ubuntu22.04默认用户

本文针对WSL2迁移后Ubuntu 22.04默认用户名丢失的常见问题,提供了详细的诊断与修复方案。通过分析迁移底层逻辑,指导用户使用`ubuntu2204.exe config --default-user`命令或配置`/etc/wsl.conf`文件快速恢复用户身份,并涵盖权限修复、冲突解决及自动化迁移脚本等进阶内容,确保子系统迁移后环境完整可用。

web39explorer的博客 558

KEPServerEX实战:Modbus TCP与RTU双协议配置详解

本文详细解析了如何使用KEPServerEX软件同时配置与管理Modbus TCP和RTU混合网络。通过实战步骤,指导用户建立双协议通道、配置设备与标签,并分享核心的地址映射规则与通讯故障排查技巧,帮助工业自动化工程师高效集成多协议设备,简化数据采集架构。

weixin_29186249的博客 397

如何降级SCons版本解决RT-Thread BSP独立开发中的构建问题

本文详细介绍了如何通过降级SCons版本解决RT-Thread BSP独立开发中的构建兼容性问题,特别是启用SPI驱动后出现的类型不匹配错误。文章提供了具体的解决方案步骤,包括SCons版本降级、构建脚本修改以及虚拟环境隔离方案,帮助开发者快速恢复构建流程并确保项目稳定性。

pandas7gardener的博客 380

FFmpeg视频编码的流程详解及参考demo

本文主要讲解FFmpeg的视频编码的具体流程,API使用。最后再以一个非常简单的demo演示将一个yuv数据文件编码为H264的视频文件,也就是YUV编码为H264。

分享音视频技术 4498

【ARM 嵌入式 番外篇 编译系列 8 -- RT-Thread 编译命令 Scons 详细讲解】

SCons 是一个开源的构建工具,类似于 Make,但 SCons 使用 Python 脚本作为构建脚本。在 RT-Thread 实时操作系统中,SCons 用于构建和编译整个 RT-Thread 系统。scons:执行 SConstruct 脚本,构建项目。如果没有指定目标,将构建默认目标。scons-c 或 scons --clean:清理已构建的目标。:显示描述当前 SCons 构建环境和可用选项的帮助信息。scons -s或:静默模式,不显示正在执行的命令。scons -j N。

CodingCos的博客 2751

解决usbisp不识别无法烧录Atmega328P,Arduino不识别问题

如果使用Arduino IDE里面的烧录,可能会遇到一个问题,就是不识别国产这种廉价的USBISP 点击烧录引导程序,会遭遇到找不到USB设备的问题,选哪个都会提示找不到,比如选择USBasp could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp' 因此,我们需要使用到progisp这一个软件的1.72版本 选择好芯片的型号后,调用编译好的HEX文...

arenascat的博客 7436

cocos creator接入微信登陆sdk ios篇

cocos creator接入微信登陆sdk ios篇 背景已经在Android篇里面交代过了,有兴趣的朋友可以再看看Android篇 步骤 去微信开放平台下载ios平台所需要的sdk 在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id 在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin 将SDK文件中...

凤小鹿的博客 6362

【RT-Thread】RT-Thread中常用的指令

在使用RT-Thread开发过程中常用的指令

ARM_qiao的博客 4133

【人工智能】Spring AI项目在定义 `response_format` 的 Invalid schema for response_format ‘custom_schema‘

确保。

奶爸的编程之路,也就一周冷个三天 562

RT-Thread学习之scons篇--SConsruct脚本文件解析

scons的构建文件名称是统一的都称为SConstruct。其是scons所接受的编译脚本主文件。当然为了方便目录的组织,也允许在各个目录下面存放SConscript, 然后最上面SConstruct收集这些SConscript组织成为一个大的构建文件。       这里以bsp/stm32f10x为例予以介绍,其SConstruct文件为:       注: 对于RT-Thread的

unix_120的博客 7403

40.8K星爆火!Crawl4AI实战突破Cloudflare 5秒盾:AI反爬新范式,爬虫再也不被封

Crawl4AI的爆火(40.8K星)不是偶然——它解决了爬虫工程师最头疼的反爬问题,让爬虫从“体力活”变成“脑力活”,不用再花费大量时间配置指纹、编写行为脚本。但要注意:爬虫必须遵守目标网站的robots.txt协议,不得用于非法爬取数据(比如用户隐私、商业机密)。合理使用技术,才能长久落地。如果你在使用Crawl4AI时遇到具体问题(比如绕过更严格的反爬、批量爬取配置),欢迎在评论区交流,我会第一时间分享解决方案!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1603

MALTAB程序利用质心法去寻峰

质心法的优点是简单易实现且计算速度快,适用于数据点较少或峰值较明显的情况。然而,对于复杂的数据或多峰曲线,质心法可能无法准确识别所有峰值,因此在这些情况下可能需要使用更复杂的峰值检测算法。质心法(Centroid Method)是一种寻找峰值的方法,其基本原理是通过计算数据窗口内的质心位置来确定峰值的位置。质心是指在一维数据中,按照数据的幅值对位置进行加权平均的结果,即质心位置为数据幅值加权平均值的位置。变量定义了计算质心的窗口大小。最后,绘制了找到的峰值位置和幅值点,并显示了找到的峰值位置和幅值的结果。

走向CTO的路上... 1345
上一篇: RT-Thread 学习笔记(二)---配置github代码版本控制工具
下一篇: RT-Thread 学习笔记(四)---用Eclipse构建编译环境
aping_cs_dn
博客等级 码龄19年 188粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aping_cs_dn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值