3_1_4_AliOS Thiings 创建新组件|学习笔记

简介: 快速学习3_1_4_AliOS Thiings 创建新组件。

开发者学堂课程【HaaS 物联网应用开发课程3_1_4_AliOS Thiings 创建新组件】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/801/detail/13826


3_1_4_AliOS Thiings 创建新组件

 

内容介绍:

一、添加新组件

二、演示

三、示例演示

 

一、添加新组件

组件基本组成及创建方式

>组件基本组成部分

1. 组件配置文件,即 Config.in。即之前提到的与顶层配置文件相对应的组件配置文件

2. Makefile,即 aos.mk。编译的一些规则都是在 aos.mk 或 Config.in

3. 源代码,组件对外提供 API 的实现

4. 编译规则,定义在 Config.in 或 aos.mk 中

>创建新组件的三种方式

1. 按照 aos.mk、Config.in 及源代码编写规则,从头实现这三部分。知道 aos.mk 和 Config.in 是什么,知道要写的组件的功能是如何实现的就可以从头实现这三部分。

2.复制现有的组件目录例如 component 下有一个文件 netmanager 的组件,可以复制该组件的全部源代码到另一个目录下,然后根据需要修改这三部分内容。修改 aos.mk、Config.in 及源代码

3. 使用 aos create 创建新的新的组件,并在此基础上增加自己的编译选项、宏定义以及源代码。对于初学者建议使用第三种方式:简单快捷不容易出错。

 

二、示例

#创建新组件需要到源代码根目录下,源代码都放置在/workspace/AliOS-Things 中,进入到要新添加组件源代码根目录下

root@8b09079bcc1a:/# cd /workspace/AliOS-Things

#使用aos create component指令创建组件

root@8b09079bccla:/workspace/AliOS-Things# aos create component -t peripherals new_comp

[Info]ComponentInitializedat: /workspace/AliOS-Things/components/peripherals/new_comp

root@8b09079bcc1a:/workspace/AliOS-Things# ls

#创建完新组件后使用ls指令来查看,显示自动创建的新生成组件目录下的文件

root@8b09079bccla:/workspace/AliOS-Things# ls components/peripherals/new_comp -la | awk ’ {print$9}’

Config.in

README.md

aos.mk

example

new_comp

src

一般情况下创建组件是为其它模块提供一些新的 api 功能,新的 api 功能一般是放在 README.md 文件中。

 

三、示例演示

演示创建一个新组件并在 helloworld_demo 中呼叫这个组件的 API

打开窗口,进入/workspace/AliOS-Things 根目录下,输入

aos create component -t peripherals new_comp

创建组件类型为 peripherals,组件名称为 new_comp

执行完成后提示 component 初始化成功,在/workspace/AliOS-Things/components/peripherals new_comp

先来进入该目录,输入

cd /workspace/AliOS-Things/components/peripherals new_comp

再输入 ls

结果显示

Config.in

README.md

aos.mk

example

new_comp

src

再来进入 Config.in,输入 vim Config.in

可以看到其中定义了 AOS_COMP_NEW_COMP,default为y

再来进入 aos.mk,输入 vim aos.mk

可以看到$(NAME)_SOURCES := ./src/new_comp.c

指定组件使用的源代码是 new_comp..c

GLOBAL_INCLUDES += ./new_comp

组件所包含的头文件放在 new_comp 目录下

继续进入到 src下,输入 cd src/

ls

显示 new_comp.c

输入 vim new_comp.c 进入修改内容

进入后找到 int new_comp_init(void)函数

copy 后新实现一个函数

int new_comp_welcome(void)

{

/*add your code*/

printf(“welcome to new component\r\n”)

return 0;

}

然后进入到头文件中进行声明,输入 cd..

ls

vim new_comp/new_comp.h

进入后添加函数声明:

int new_comp_welcome(void)

接着可以到 helloworld_demo 下编辑 helloworld_demo 的源文件,输入

cd /workspace/AliOS-Things/application/example/helloworld_demo/

ls

vim appdemo.c

进入后找到 application_start 就是要编辑的函数

先在 application_start 函数上方添加#include “new_comp.h”

再在函数中 while(1){}上方添加 new_comp_welcome();

退出后再进入到根目录下,输入 cd /workspace/AliOS-Things/

然后执行 aos make helloworld_demo@haaseduk1 -c config 生成一个默认配置文件

结果放在 config 下,再来输入 vim .config

进入后 AOS_BUILD_BOARD=”haaseduk1”

定义了要编译的当前工程 board 是 haaseduk1

AOS_BUILD_APP=”helloworld_demo”

要编译的 app 是 helloworld_demo

退出后输入 aos make 指令对整个工程进行编译

结果显示找不到

image.png

输入 find . -name new_comp.h

结果存在,之前讲解过如果一个应用想要使用组件功能,需要设定对该组件的依赖关系。

依赖关系有两种设置方式:在应用的 config.in 中、在 aos.mk 中

现在使用第二种方式对组件添加依赖:

刚才新建的组件名为 new_comp,输入

vim application/example/helloworld_demo/aos.mk

将 new_comp 添加到$(NAME)_COMPONENTS += 后即$(NAME)_COMPONENTS += osal_aos cli new_comp

退出后输入 aos make 进行编译

可以看到 new_comp 已经编译成功

再输入 aos upload

下载完成后查看串口输出,进入一个窗口打开输入

picocom -b 150000 /dev/tty.usbserial-A908XGVV

因为刚才看到new_compwelcome的API是在helloworld_demo启动时调用的,所以此时需要进行重启来确认该函数是否被呼叫。

image.png

重启后打印出 welcome to new component

实验完成。

相关文章
|
5月前
|
IDE 开发工具 Windows
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之FlowItem容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之FlowItem容器组件
103 1
|
存储 网络协议 物联网
AliOS Things组件功能介绍(一)
AliOS Things组件功能介绍(一)
276 0
|
安全 物联网 API
AliOS Things组件功能介绍(三)
AliOS Things组件功能介绍(三)
213 0
|
传感器 数据采集 安全
AliOS Things组件功能介绍(二)
AliOS Things组件功能介绍(二)
217 0
|
前端开发 JavaScript API
openHarmony系统组件学习
openHarmony系统应用开发的组件很多,本篇文章仅以一个例子作为一个通用的学习方法,如果之前学过安卓开发,这部分内容应该除了语言,其他没有任何难度,本篇文章参考官网实现一个dialog组件,开始了~~
165 0
openHarmony系统组件学习
|
开发框架 安全 AliOS-Things
AliOS-Things 构建系统的介绍|学习笔记
快速学习 AliOS-Things 构建系统的介绍。
436 0
AliOS-Things 构建系统的介绍|学习笔记
|
传感器 机器学习/深度学习 JSON
AliOS Things 目录结构|学习笔记
快速学习 AliOS Things 目录结构。
337 0
AliOS Things 目录结构|学习笔记
|
物联网 Linux
【AliOS Things学习笔记】为你的AliOS Things应用增加自定义cli命令
怎么才能在RTOS系统中,通过 串口shell控制LED的开关。
3672 0
|
存储 JavaScript Java
HarmonyOS应用开发——使用HUAWEI DevEco Studio创建第一个程序 HELLO WORLD!
HarmonyOS应用开发——使用HUAWEI DevEco Studio创建第一个程序 HELLO WORLD!
HarmonyOS应用开发——使用HUAWEI DevEco Studio创建第一个程序 HELLO WORLD!
|
编解码 开发工具
Hi3516开发笔记(九):在QtCreator开发环境中引入海思sdk的bsp包,运行显示Qt界面
Hi3516开发笔记(九):在QtCreator开发环境中引入海思sdk的bsp包,运行显示Qt界面
Hi3516开发笔记(九):在QtCreator开发环境中引入海思sdk的bsp包,运行显示Qt界面