1.官方资料

首先看下官方文档:

https://www.rt-thread.org/document/site/development-guide/package/package/

  1. 再看下官方视频:

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和文件夹目录比较下,
应该都是相同的。


2. menuconfig

这个是linux里面常用的配置界面,嵌入式RTOS能用上menuconfig的,我只见过RTT这样用过,其他的还么见过:

不知道有没有人稍微了解下这几行命令是如何来显示的。

其实就是目录下面的Kconfig 文件


mainmenu "RT-Thread Configuration"
config BSP_DIR
string
option env="BSP_ROOT"
default "."
config RTT_DIR
string
option env="RTT_ROOT"
default "../../.."
config PKGS_DIR
string
option env="PKGS_ROOT"
default "packages"
source "$RTT_DIR/Kconfig"
source "$PKGS_DIR/Kconfig"
source "../libraries/Kconfig"
source "board/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 构建工具

官方文档已经很详细很详细了。学完,你就会用你自己的软件包。

理解这些,基本上你应该知道自己接下来该怎么做了:
基本思路是这样的:

  1. 先做一个软件包,把名字起好,对应到相应的目录,比如tools。
  2. github上搞一个仓库(gitee也可以,只要路径填对即可),将你的软件包中要放的.c .h等代码放入到git上。
  3. 将github地址放到你的package.json中
  4. 把这个软件包放到env中package对应的目录中,(暂时)
  5. 这个时候你在你的bsp里面敲menuconfig,会发现,你的软件包并没有出现在目录中。
  6. 根据Kconfig语法,知道是在你的tools目录下面也有个Kconfig,需要把目录加进去。
  7. menuconfig里面配置选好,pkgs –update
  8. 这个时候,检查你的包里面的东西的完整性就好。
  9. 根据scons语法和Kconfig语法,写你的软件包中的scons语法,如果是配置的话,要放到env中的package Kconfig修改。
  10. 基本上把你的目录提交到官方的package收入即可。

[RTT][ENV][PACKAGE]如何制作软件包相关推荐

  1. stm32wb55 基于rtt的ble sample制作过程

    stm32wb55 基于rtt的ble sample制作过程 准备活动 硬件 stm32wb55 nucleo开发板 stm32wb55 dangle 软件 rtthread stm32wb55 bs ...

  2. python package打包制作

    python package打包制作 1. python package层次结构 2. python package打包,分发与安装 1. python package层次结构 根据navdeep-G ...

  3. 效率最高的Excel数据导入续---SSIS Package包制作图解全过程

    目的:本文主要是详细讲解SSIS Package包的制作过程 本人买过的一张盗版windows 2003操作系统光盘上,上面自带有很详细的图文介绍,也就是傻瓜版的系统安装图解.因此,本文打算也是采用那 ...

  4. vue cli3 热更新 保存时自动刷新页面内容 + 分离环境变量.env package.json配置

    前几天ts+vue3.0+view-design撸了一个项目,然后总感觉哪里不对劲,今天终于醒悟了原来是热更新没开 在vue.config.js中配置以下选项 const IS_PRO = ['pro ...

  5. 【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 概述 ...

  6. RT-Thread 软件包制作及发布流程

    前言 RT-Thread是一个嵌入式实时多线程操作系统,系统完全开源,它不仅仅是一个实时内核,还具备丰富的中间层组件,包括如文件系统.图形库等较为完整的中间件组件,具备低功耗.安全.通信协议支持和云端 ...

  7. 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 ...

  8. 利用python开源库制作并验证torrent种子文件

    下面的文章来源于参考文献[1], 这里将我的实践过程记录如下,方便后来人参考,我的操作系统是Ubuntu 14.04 64bit 一.安装开源BT种子制作软件包 cd  /home/taoyx/下载/ ...

  9. linux学习笔记(软件包管理)

    前言:运维工程师平时安装服务时很正常的事情,所以软件包的管理就显得尤为重要. 内容: 基础知识. 程序发行的源代码都是不可以运行的,需要编译之后才可以运行,linux发行版的厂商会在他的机器上进行编译 ...

最新文章

  1. UA PHYS515A 电磁理论III 静磁学问题2 标量势方法与向量势方法简介
  2. 在学术发展上,不论困难与否,应该给自己一个清晰定位
  3. 【转】新浪微博手机客户端刷新都是手动刷新或者下拉刷新,为什么不设计成自动刷新?...
  4. 转: 用 Eclipse 平台进行 C/C++ 开发
  5. Codeforces Round #676 (Div. 2) E待补
  6. Page directive: illegal to have multiple occurrences of contentType with different values
  7. 详细了解文档对象模型(DOM)
  8. python需要excel基础吗_Python实现和Excel基础功能对应关系
  9. java 返回泛型_Java返回类型泛型的用法小结 | 学步园
  10. 安卓没有第三方rec获取root教程,成功率90%
  11. tex中的书签与链接hyperref
  12. 支付宝APP参数SDK转换URL网页链接
  13. 金融业务系统日志精益化分析
  14. 服装导购个人简历模板范文--带详细内容
  15. 对keep-alive的理解,它是如何实现的,具体缓存的是什么?
  16. DNUICTF反思总结
  17. vue源码分析系列一:new Vue的初始化过程
  18. 计算机多出一个盘无法读,电脑有一个盘读不出来了
  19. cf621E. Wet Shark and Blocks
  20. ansys热分析及电器电动力理论

热门文章

  1. 前中后序遍历-java模板代码
  2. WinHttp 类封装
  3. R语言 plot swimmer_R语言基础知识学习(四):R中的画图函数--plot()函数
  4. 大恒工业相机实例使用
  5. 根据地址生成客户地图及热力图(百度地图API)
  6. C语言if else语句
  7. 编译OpenDDS - 安装ActiveState Perl
  8. flashbuilder4.7 打断点调试flash
  9. 定积分的计算(分部积分法)习题
  10. Wowza Streaming Engine 4 配置mediacache功能(上)