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

起因

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

需求

根据上述的问题,本文的目标就是在使用scons创建工程的时候,将代码和分组自动添加进我们的工程里面,而不需要每次都手动去添加。

实现

1、bsp目录下新建reader,并将reader所属的源码放到该文件夹下。stm32f407-vup是我的开发板,reader文件夹里面的内容如下:
在这里插入图片描述
2、在reader文件夹下新建SConscript文件
在这里插入图片描述
3、SConscript文件内容如下,后面有相关的注释,可以看着理解

from building import *			# 把 building 模块的所有内容全都导入到当前模块,后面用到的 DefineGroup 定义在这个模块

cwd          = GetCurrentDir()	# 获取当前路径(绝对路径),并保存到 cwd 变量中
include_path = [cwd]			# 将 cwd 变量添加进 include_path 列表中
src          = []				# 新建一个 src 列表,里面的内容为空

src += ['host_if.c']			# 将 host_if.c 文件添加到 src 列表中

group = DefineGroup('reader', src, depend = [''], CPPPATH = include_path)	# 新建一个组,reader 表示组的名称,src 表示组的源文件,depend = ['']表示这个组的依赖为空,CPPPATH = include_path表示这个组的头文件路径

Return('group')

4、通过上面这个SConcript文件,就新建了一个组reader,并且将reader所在的路径添加到了mdk的头文件搜索路径里面,我们使用scons --target=mdk5试试。
在这里插入图片描述
5、打开工程试试,果然reader组已经自动创建了。
在这里插入图片描述
6、再看看头文件路径,也是自动添加进来了的。
在这里插入图片描述
7、假设我们还需要添加一个文件,test.c,怎么做呢?只需修改reader文件夹下的SConscript文件,将test.c添加进来即可。
在这里插入图片描述
在这里插入图片描述
8、然后scons --target=mdk5,再打开工程查看,果然已经添加成功啦。
在这里插入图片描述

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RT-Thread作品秀】通用型数据采集设备作者:鱼柯 概述(说明应用产生的背景、实现功能)在一些低频采集设备中,典型的运行策略是,采集数据,上传数据,关闭外设进入睡眠状态;但是,在运行过程中,需要根据实际需求,更改采集频率,连接不同的设备,如果每次通过修改代码解决,通用性就很难保证,这个项目将一些uart型的传感器进行归类,通过文件设置数据交互过程中的命令,解析方式等,可以适配大多数的uart型传感器;同时,对一些网络摄像头也以同样的方式进行处理; 实现数据采集调度配置,数据采集,数据上传,图片采集,图片上传, 配置文件解析,固件远程更新;由于contab配置文件中的event使用的是MSH_CMD_EXPRT宏导出的命令。所以,它也支持系统需要定时执行的相对时间间隔需要变化的任务,比如:12:00. 13:10, 15:35, 18:23分别执行一次任务; 开发环境(所采用的软、硬件方案)硬件:art-pi, INDUSTRY-IO, 微气象仪, 网络摄像头 RT-Thread版本:rt-thread 4.0.3 开发工具及版本:ubuntu 18.04,gcc-arm-none-eabi-6_2-2016q4,scons v3.0.1,python 3.6.9,pkgs RT-Thread使用情况概述(简要总结下应用中RT-Thread使用情况:内核部分、组件部分、软件包部分、内核、其他)内核部分Inter-thread communication Event Semaphore mutex memory management device object 组件部分Finsh DFS (device virtual file system) serial device, mtd nor flash device, gpio device, ntp rtc device, sd/mmc device, spi device, serial flash universal driver (device driver) posix layer and c stand library SAL (socket abstraction layer) ping, ifconfig, netstat, netdev (network interface) LwIP 2.0.2 Ymodem ulog 软件包部分agile_console-v1.0.0 fal-v0.5.0 ota_downloader-v1.0.0 agile_telnet-v2.0.0 littlefs-v2.2.1 SignalLed-latest cJSON-v1.0.2 netutils-v1.2.0 vi-latest EasyFlash-v4.1.0 webclient-v2.1.1 硬件框架(概述应用所采用的硬件方案框图,并对核心部分做介绍)软件框架说明(介绍应用所采用的软件方案框图、流程图等,并加以解说)软件模块说明(介绍应用软件关键部分的逻辑、采用的实现方式等)类似 linux定时任务contab解析相关json配置文件,构建设备运行数据树: "contab": [{"event":"misc_check","time":"0 18"},{"event":"img_cap_start","time":"20 7,9,14"},{"event":"app_image_upload","time":"20 7,9,14"},{"event":"sensor_acq_start","time":"5,10,15,20,25,30,35,40,45,50,55 *"},{"event":"app_data_upload","time":"5,10,15,20,25,30,35,40,45,50,55 *"}] 事件执行分钟: 表示xx:5, xx:25, xx:30, xx:36, xx:45, xx:54 事件执行小时:*通配符,表示1-24小时 上面参数表示:每个小时的5,25,30,45,54分,执行img_upload_invl事件; 上传数据每次采集数据后,将数据存在本地一个缓存文件中,按照采集时间从前到后写入;同时会生成一个读取位置的缓存文件指示,下一次从哪个文件的那一行读取数据进行上传,上传成功后,更新读取位置的缓存;如20201217,227, 表示从文件20201217.txt的227个字符后读取一行数据进行上传,避免文件过大引起设备死机; 上传图片每次拍照时,将拍照成功的照片名及端口追加记录到一个缓存文件中,每次从缓存文件中,读取需要上传的图片构造form-data上传图片;如4,/sd/1608167012_4.jpg;如果上传成功,则删

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值