开发者学堂课程【HaaS 物联网应用开发课程:AliOS-Things 构建系统的介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/801/detail/13825
AliOS-Things 构建系统的介绍
内容介绍:
一、Aos cube 介绍
二、Aos create 介绍
三、Aos make 介绍
一、Aos cube 介绍
1.Aos-cube 是 AliOS-Things 基于命令行的开发管理工具,其需要功能及指令:
工程配置与编译 aos create/aos make
固体下载调试 aos upload
应用开发框架 aos create
组件安装管理 aos install
设备管理 aos devices
代码审查 aos check
OTA 工具功能等 aos ota
这里主要介绍工程配置与翻译和应用开发框架这两个工具。
二、Aos create
1.Aos create 工程
可以根据用户指定的 app 和 board 信息创建一个新的工程,并生成此工程的默认配置,自动生成的配置文件存放在 .config 文件中
aos create project-b <BOARD >-t<SOURCE _APP>- d <TARGET_APP_PATH><TARGET_APP_NAME>
-b: 指定目标版名称,有效 board 列表可参考完整源码中的 platform/board 目录
root@8b09079bccla:/workspace#1s-laAli0s-Things/platform/board/lawk’ (print $9)’
haasedukl
haas100
haas101
这次创建的工程以 haaseduk1为模版。
-t:指定目标 App 所示用模板,可选;若不指定 ,则默认使用 new project_ template 作为模板。
默认模板位置:
Ali0S-Things/build/scripts/templates/new_project_template
总之在 app example下的所有的工程都可以选择。
-d指定目标 App目录及目标 App 名称,可选;若不指定,则使用当前目录
<TARGET APP NAME> 为必填项
也就是说,必须为新创建的工程取一个名字。
2.Aos create 案例
假设我们要在 aos_test 目录下面创建一个基于 haaseduk1 的默认模板的 APP 并命名为 test_app ,则使用指令和创建过程如下:
使用指令:aos create project-b haaseduk1 -d aos_test test_app
d 在 aos_project 目录下面命名新的工程名字为 test_app
创建过程:
创建 APP 源代码过程
Creating/workspace/aos_test/test_app/.defconfig...
(1)创建 APP 配置并保存在
/workspace/aos_test/test_app/.config 文件中
#configuration written to/workspace/aos_test/test_app/.config
(2)创建目标 APP 动作完成
(Info)Project Initialized at:/workspace/aos_test/test_app
//project 在 workspace 下面 aos_test 和 test_app 创建完成。
在 test_app 下面执行 ls 查看工程的目录结构,工程里面的源文件只有应用源文件及 board 目录,编译过程中需要用到应用以来的其它组件,其它组件的源代码的位置可以通过如下指令来查看组件所在目录,这个环境变量便是在前面“HaaS 集成开发环境搭建”章节中搭建开发环境的时候加入的。
root
@
8b09079bcc
1
a:/workspace/aos_test/
h
aasedu_2nd_example# printenv
AOS_SOK_PATH
/workspace/AliOS-Things
在编译新生成的工程的时候,会使用到 workspace/Alios-Things 这个目录下面的组件。
3.Aos create 创建组件
可以根据用户指定的组件类型和名称信息创建一个新的组件
Aos create component -t<component_type><compenent_name>
-<component-type>:组件类型,有效组件类型列表如下:
Bus #本地通讯协议
Dm #设备管理
Fs #文件系统
Generals #通用类
Gui #人机交互界面
Language #脚本引擎
Network #IP 网络协议栈
Peripheral #外设驱动
Security #安全
Service #应用组件
Utility #工具类
Wireless #无线类
<component-type>的意思是想把把组件放到哪个目录下面。上面提到说 component 下面有很多目录。
<compenent_name>//是必选的,即新创建组件的名称。
在这个地方,假如选用 bus 这个新的组件,就会位于 bus 这个目录下面。
三.Aos make
1.Aos make 编译过程
#对 haaseduk1_2nd_example 工程进行编译的关键日志
root@8b09079bccla:/workspace/aos_test/haaseduk1_2nd_example# aos make
//假如之前创建了一个 haaseduk1_2nd_example 的工程,然后需要对它进行编译,需要进入这个工程的下面,执行 aos make 即可。
(1)显示 aos-cube 的版本号
Aos-cube version:0.5.11
(2)确认编译 haaseduk1 的工具是否存在
Check if required tools for haaseduk1 exist
//如果编译工程不存在,会进行下载,下载完成之后,会去解析组件列表。
(3)解析组件列表
Parsing all components
(4)编译配置项
Build Configuration:
App :haaseduk1_2nd_example
Board:haaseduk1
//三列信息:第一列为组件名称,第二列为组件占用的 ROM,第三列为组件占用的 RAM
(5)haas1000 芯片专有步骤,打包生成可烧录到硬件版中的 image
Gen signature and release image...
(6)整个编译,链接及打包过程完成
Build complete; haaseduk1_2nd_example@haaseduk1
2.Aos make 编译选项
MBINS=[app|kernel]:分别生成 App,Kernel 镜像,详情请参见多 bin 特性。
BUILD_ TYPE=[debug l release l release_log]:控制构建类型:
-debug:编译时不优化(-00)并启用日志
-release:编译时优化(-0s), 不启用日志
-release_log:默认值,编译时优化,并启用日志
IDE=[keil l iar]:生成指定工程并执行编译,仅支持 Windows 环境,详情请参见自动生成 Keil MDK 工程,自动生成 IAR 工程
COMPILER=[armcc l iar l rvct]:使用指定编译器执行编译,仅支持 Windows 环境
VERBOSE=1:编译时输出详细命令
更多命令行参数请查看 aos make help
3.编译过程演示
演示创建新工程,编译代码全过程,对编译过程日志进行说明:
(1)首先在 workspace,experimrnt 下面创建一个 create_project 的目录,这个目录下无任何东西,用刚刚的 aos create project 指令来创建一个新的工程,使用-b haaseduk1的版本,-d aos_test 目标的目录, test_app 是目标工程的一个名字。这步无指定所使用 example 的名字,所以它会用默认的模板来创建。生成工程默认配置选项,会提示这个工程已创建完成。
[Info] Project Initialized at: /workspace/experiment/create_project/aos_test/test_app
root@c7f 3a2d46acb:/workspace/experiment/create_project#
(2) 在里面新创建了一个 aos_project 的目标目录,然后进到 aos_test 目录,看见刚刚创建的工程的名字 test_app 。进到 test_app,看到其内容,下面只有比较简单的文件。
要查看 printenv AOS_SDK_PATH 对应的目录。也就是说,在实际编译时,除了会使用当前工程所在的目录的一些文件之外,还会使用到 Alios-Things。
执行 aos make,aos-cube 版本为0.5.11,它会检查编译工具是否存在,然后会创建 config,再编译 APP 所依赖的组件,编译完成之后,会进行打包动作。
打包之前,它会打印各个组件的 MEMORY MAP,编译演示过程即完成了。