RTT笔记-package

该笔记类别主要是在自己学习时做的一些记录,方便自己很久不用忘掉时进行快速回忆

1 简述

被封装用于特定功能的代码,位于应用层和设备驱动框架层之间,为保证通用性,确保不耦合业务逻辑。通过env来选择加载那些软件包和对于版本,完成后进行scons编译即可。

2创建

生成索引向导

打开env,然后输入命令行

okgs --wizard

如图进行配置,输入包名,版本,类别,之后将会在env的根目录建立一个对于名字的文件夹。


1.png

更改目录结构

由于包索引被同一存放在env/packages目录中,而目录env/packages/packages/是官方软件包,于是需要建立一个自己的软件包源。

  • 在env/package/目录下建立my_packages文件夹
  • 修改env/package/目录下Kconfig文件
source "$PKGS_DIR/packages/Kconfig"
source "$PKGS_DIR/my_packages/Kconfig"
  • 将env/packages/packages/目录中的Kconfig复制到my_packages文件夹中,对其修改为:
menu "RT-Thread online my_packages"

source "$PKGS_DIR/my_packages/iot/Kconfig"

endmenu

  • 在my_packages目录下建立iot文件夹,将自己的索引包扔到里面去,在iot目录下建立Kconfig
menu "IoT - internet of things"

source "$PKGS_DIR/my_packages/iot/software_tool/Kconfig" 
endmenu
  • 在software_tool文件夹中,修改Kconfig中的索引地址
default "/my_packages/iot/software_tool"

官方文档对该文件的注解图


2.png
  • 修改packages.json
    该文件主要需要填写软件包的下载地址信息
    未修改代码为:
{
    "name": "software_tool",
    "description": "a software_tool package for rt-thread", #软件包的描述
    "keywords": [
        "software_tool"
    ],
    "site" : [
    {"version" : "v1.0.0", 
    "URL" : "https://software_tool-1.0.0.zip",  #该版本对于的软件包下载地址
    "filename" : "software_tool-1.0.0.zip",
    "VER_SHA" : "fill in the git version SHA value"},#压缩包形式无需填写
    
    {"version" : "latest_version", 
    "URL" : "https://xxxxx.git",   #填入git仓库地址
    "filename" : "Null for git package",
    "VER_SHA" : "fill in latest version branch name,such as mater" #填入分支名字
    }
    ]
}

修改后示例:


{
    "name": "software_tool",
    "description": "a software_tool package for rt-thread",
    "keywords": [
        "software_tool"
    ],
    "site" : [
    {"version" : "v1.0.0", "URL" : "https://github.com/RT-Thread-packages/hello/archive/v1.0.0.zip","filename" : "software_tool-1.0.0.zip"},
    {"version" : "latest_version", "URL" : "https://github.com/lissettecarlr/software_tool.git","filename" : "software_tool.zip","VER_SHA" : "master"}
    ]
}

由于仓库没有发表第一个版本,这里暂时使用官方提供的hello代替。

3 加载软件包

打开env,切换到对于bsp目录,然后键入menuconfig进入配置页面,将会发现如下图,多出一个my_packages


3.png

点击进入将会看到自己的软件包,然后选择1.0.0版本进行加载。退出保存后,下载软件包

pkgs --update

等待一段时间后显示下载成功,然后编译工程

scons --target=mdk5

打开keil工程,然后就会发现左侧多了一个对于文件夹,由于下载的是hello的软件代码,所以这里显示的是hello


4.png

4 软件包实体

上文表示的是创建索引和导入下载软件包,这里将表述软件包的仓库,也就是实际代码的位置。
规范化软件包的目录结构,参考官方示例包hello,在建立自己的仓库后,需要将在本地生成的链接文件夹中的SConscript文件剪切到你的仓库根目录下。
开发者通过在example中编写示例代码,进行测试后,发布对应版本,该版本信息也就是在packages.json文件中需要填写的内容了,如下列代码,填写对应版本号,和发布版本处获取的zip下载链接地址。

{"version" : "v1.0.0", 
"URL" : "https://github.com/RT-Thread-packages/hello/archive/v1.0.0.zip",
"filename" : "software_tool-1.0.0.zip"},

5 脚本SConscript

位于软件包中的该脚本修改为

from building import *

cwd     = GetCurrentDir() # 将当前路径赋值给cwd
src = Glob('src/*.c')   # 得到当前目录下所有的C文件
CPPPATH = [cwd + '/include']  

group = DefineGroup('software_tool', src, depend = ['PKG_USING_SOFTWARE_TOOL'], CPPPATH = CPPPATH)

Return('group')

github上的目录结构如下图


5.png

6 完善

这里在github上面发布一个版本:


6.png

然后复制source code(zip)的地址,修改packages.json文件中1.0.0版本地址的地方。

{
    "name": "software_tool",
    "description": "a software_tool package for rt-thread",
    "keywords": [
        "software_tool"
    ],
    "site" : [
    {"version" : "v1.0.0", "URL" : "https://github.com/lissettecarlr/software_tool/archive/1.0.0.zip","filename" : "software_tool-1.0.0.zip"},
    {"version" : "latest_version", "URL" : "https://github.com/lissettecarlr/software_tool.git","filename" : "software_tool.zip","VER_SHA" : "master"}
    ]
}

然后重复第三项加载软件包,这时候他提示警告,是因为之前下载hello地址的软件包也被命名为了software_tool,所以找到env/local_pkgs目录下,删除对于的包,然后重新执行即可,再次打开工程后会发现,hello的包和software_tool的数据包都同时存在,hello软件包这里就只能手动删除,而software_tool软件包已经被管理起来,可以通过menuconfig中选择或者取消。

你可能感兴趣的:(RTT笔记-package)