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

实验完成。

相关文章
|
安全 Android开发 数据安全/隐私保护
请说明鸿蒙操作系统与其他操作系统(如Android和iOS)的主要区别。
请说明鸿蒙操作系统与其他操作系统(如Android和iOS)的主要区别。
2004 1
|
存储 开发者 Python
Python中的collections模块与UserDict:用户自定义字典详解
【4月更文挑战第2天】在Python中,`collections.UserDict`是用于创建自定义字典行为的基类,它提供了一个可扩展的接口。通过继承`UserDict`,可以轻松添加或修改字典功能,如在`__init__`和`__setitem__`等方法中插入自定义逻辑。使用`UserDict`有助于保持代码可读性和可维护性,而不是直接继承内置的`dict`。例如,可以创建一个`LoggingDict`类,在设置键值对时记录操作。这样,开发者可以根据具体需求定制字典行为,同时保持对字典内部管理的抽象。
|
传感器 消息中间件 物联网
AliOS Things 系统架构介绍(二)
AliOS Things 系统架构介绍(二)
1214 1
|
Java Shell Linux
Android——编译(一):编译make的基础知识
Android——编译(一):编译make的基础知识
824 0
|
网络协议 网络安全 PHP
使用天猫精灵实现计算机WOL网络唤醒
解决笔记本连显示器不想掀盖子开机和远程办公时给公司电脑开机不方便的痛点。
16572 8
使用天猫精灵实现计算机WOL网络唤醒
|
安全 算法 网络安全
SSL/TLS协议是什么?
SSL/TLS协议是什么?
2228 57
|
安全 Shell 网络安全
|
存储 传感器 人工智能
AliOS Things 系统架构介绍(一)
AliOS Things 系统架构介绍(一)
951 0
|
安全 物联网 Linux
AliOS Things 物联网操作系统介绍
AliOS Things 物联网操作系统介绍
14893 1
AliOS Things 物联网操作系统介绍
|
存储 安全 网络协议