[RTT][ENV][PACKAGE]如何制作软件包
1.官方资料
首先看下官方文档:
https://www.rt-thread.org/document/site/development-guide/package/package/
- 再看下官方视频:
https://www.bilibili.com/video/av79943543?p=1
看完这个,基本上差不多会知道如何做一个软件包了。
pkgs –wizard
新版本会让你输入github地址
操作完成之后。
会生成一个文件夹,两个文件
Kconfig
这个主要和平时操作menuconfig中的选项相关
package.json
这个主要跟你这个软件包的git地址相关。
简单来说软件包这就算做好了。
至于里面内容需要分几个东西来讲:
分别是
pkgs
menuconfig
scons
1.pkgs
这个工具是专门管理软件包的。
有以下几个常用命令:
pkgs --update
这个负责升级,其实本质上就是git clone,从git上下载代码;
可以看下package.json文件:
这张图应该很清晰了。
就是你的每个版本对应的git 地址填对了
你的pkgs --update
的时候,更新就会从这个git地址下载你的package包的文件(如果某个package被选中的话)。
pkgs --upgrade
这个用的比较少,
从两个地址,
package: https://github.com/RT-Thread/packages
这个下载到哪里了呢?
我们打开env目录:
env_released_1.2.0\env\packages\packages
就是这里,其实本质上,就是更新packages的目录
env: https://github.com/RT-Thread/env
本质上也是从git上下载,只是路径不一样。
这个稍微找一会也能找到:
env_released_1.2.0\env\tools\scripts
大家可以打开github和文件夹目录比较下,
应该都是相同的。
![](/assets/blank.gif)
2. menuconfig
这个是linux里面常用的配置界面,嵌入式RTOS能用上menuconfig的,我只见过RTT这样用过,其他的还么见过:
不知道有没有人稍微了解下这几行命令是如何来显示的。
其实就是目录下面的Kconfig
文件
|
其实这个里面内容比较多,就不展开了,我们现在要做的是软件包,可以选择在某个package中menuconfig。
比如你可以进到目录env_released_1.2.0\env\packages\packages\peripherals\sensors\dht11
menuconfig一下:
看到这个应该能明白大概意思了。
bool类型,只能选y(yes) 和n(no)
后面跟的是显示的内容
menuconfig代表是一个menu配置 后面跟的是PKG_USING_DHT11
这个是什么呢?这个其实和下一讲的scons相关,
你可以暂且认为这个就代表这个选项的一个变量,就是敲y
之后,这个变量值PKG_USING_DHT11就变成y了(可以理解成bool类型中的true)。
子菜单:
仔细想下刚才的操作,是不是只能点y之后才能进入到子菜单。
其实就是前面有个
if PKG_USING_DHT11
判断
后面
Kconfig语法可以看:
kconfig语法整理
基本上会Kconfig语法,你就知道menuconfig该怎么改了,唯一要记住的是刚才那个变量。
配置完之后,系统都会保存到.config文件:
这个是最重要的,前面无论你怎么配置,最后都影响的是.config文件。
你也可以直接改.config文件。
这里你可以看到配置改了,所以有时候,编译linux内核的时候,只要.config文件就可以编译成功了,就是这个道理。
保存之后,
我们用命令pkgs –update,就会看到package中会多出来一个文件,就是你的软件包。
//小测问:
github 我们国内clone的时候,都很慢,为啥env下载的时候很快?
3.scons
在做软件包前面基本已经差不多了。接下来讲的scons,其实是和编译相关的,你可以理解为,scons就是make, scons里面的SConscript
SConstruct
就是里面的makefile文件,你软件包需要写好写对Scons的脚本,才能编译进去,或者生成的project生成进去。
这个时候就看官方文档:
Scons 构建工具
官方文档已经很详细很详细了。学完,你就会用你自己的软件包。
理解这些,基本上你应该知道自己接下来该怎么做了:
基本思路是这样的:
- 先做一个软件包,把名字起好,对应到相应的目录,比如tools。
- github上搞一个仓库(gitee也可以,只要路径填对即可),将你的软件包中要放的.c .h等代码放入到git上。
- 将github地址放到你的package.json中
- 把这个软件包放到env中package对应的目录中,(暂时)
- 这个时候你在你的bsp里面敲menuconfig,会发现,你的软件包并没有出现在目录中。
- 根据Kconfig语法,知道是在你的tools目录下面也有个Kconfig,需要把目录加进去。
- menuconfig里面配置选好,pkgs –update
- 这个时候,检查你的包里面的东西的完整性就好。
- 根据scons语法和Kconfig语法,写你的软件包中的scons语法,如果是配置的话,要放到env中的package Kconfig修改。
- 基本上把你的目录提交到官方的package收入即可。
[RTT][ENV][PACKAGE]如何制作软件包相关推荐
- stm32wb55 基于rtt的ble sample制作过程
stm32wb55 基于rtt的ble sample制作过程 准备活动 硬件 stm32wb55 nucleo开发板 stm32wb55 dangle 软件 rtthread stm32wb55 bs ...
- python package打包制作
python package打包制作 1. python package层次结构 2. python package打包,分发与安装 1. python package层次结构 根据navdeep-G ...
- 效率最高的Excel数据导入续---SSIS Package包制作图解全过程
目的:本文主要是详细讲解SSIS Package包的制作过程 本人买过的一张盗版windows 2003操作系统光盘上,上面自带有很详细的图文介绍,也就是傻瓜版的系统安装图解.因此,本文打算也是采用那 ...
- vue cli3 热更新 保存时自动刷新页面内容 + 分离环境变量.env package.json配置
前几天ts+vue3.0+view-design撸了一个项目,然后总感觉哪里不对劲,今天终于醒悟了原来是热更新没开 在vue.config.js中配置以下选项 const IS_PRO = ['pro ...
- 【Linux扩展】五、软件包管理 ——RPM(RedHat Package Manager,RedHat软件包管理工具)查询与卸载、YUM仓库配置
软件包管理 5.1 RPM 5.1.1 RPM 概述 5.1.2 RPM 查询命令(rpm -qa) 5.1.3 RPM 卸载命令(rpm -e) 5.2 YUM 仓库配置 5.2.1 YUM 概述 ...
- RT-Thread 软件包制作及发布流程
前言 RT-Thread是一个嵌入式实时多线程操作系统,系统完全开源,它不仅仅是一个实时内核,还具备丰富的中间层组件,包括如文件系统.图形库等较为完整的中间件组件,具备低功耗.安全.通信协议支持和云端 ...
- RT-Thread应用实战-TI温湿度HDC1000软件包设计与制作
目录 1 概述 2 HDC1000应用原理 2.1 HDC1000传感器工作原理 2.1.1 工作模式 2.1.2 典型应用场景 2.2 硬件设计 2.3 软件设计 2.3.1 IIC从机地址 2.3 ...
- 利用python开源库制作并验证torrent种子文件
下面的文章来源于参考文献[1], 这里将我的实践过程记录如下,方便后来人参考,我的操作系统是Ubuntu 14.04 64bit 一.安装开源BT种子制作软件包 cd /home/taoyx/下载/ ...
- linux学习笔记(软件包管理)
前言:运维工程师平时安装服务时很正常的事情,所以软件包的管理就显得尤为重要. 内容: 基础知识. 程序发行的源代码都是不可以运行的,需要编译之后才可以运行,linux发行版的厂商会在他的机器上进行编译 ...
最新文章
- UA PHYS515A 电磁理论III 静磁学问题2 标量势方法与向量势方法简介
- 在学术发展上,不论困难与否,应该给自己一个清晰定位
- 【转】新浪微博手机客户端刷新都是手动刷新或者下拉刷新,为什么不设计成自动刷新?...
- 转: 用 Eclipse 平台进行 C/C++ 开发
- Codeforces Round #676 (Div. 2) E待补
- Page directive: illegal to have multiple occurrences of contentType with different values
- 详细了解文档对象模型(DOM)
- python需要excel基础吗_Python实现和Excel基础功能对应关系
- java 返回泛型_Java返回类型泛型的用法小结 | 学步园
- 安卓没有第三方rec获取root教程,成功率90%
- tex中的书签与链接hyperref
- 支付宝APP参数SDK转换URL网页链接
- 金融业务系统日志精益化分析
- 服装导购个人简历模板范文--带详细内容
- 对keep-alive的理解,它是如何实现的,具体缓存的是什么?
- DNUICTF反思总结
- vue源码分析系列一:new Vue的初始化过程
- 计算机多出一个盘无法读,电脑有一个盘读不出来了
- cf621E. Wet Shark and Blocks
- ansys热分析及电器电动力理论