WIN10系统上,新建AliOS Things项目

全局掌控

  • 确定新项目的目录
  • 用VSCode新建项目
  • 重新打开SDK目录
  • 简单修改新项目的模板
  • 编译,烧写,查看结果
  • AliOS Things 的Yloop调度

新项目的目录

我们将从Git上面下载的源码,称之为SDK。
这个文件夹,就是存放SDK的文件夹。
SDK的路径你随意放。

image.png | left | 159x203

在零妖的电脑上,SDK的路径是:F:AliOS_SourceAliOS-Things

新建的项目,需要放到SDK里面的一个叫做 example 的目录。
这个目录里面已经有一些参考项目了。

image.png | left | 747x398

咱们要做的,就是在这个目录里面新建自己的项目。
比如零妖要新建一个 led1 的项目,那就新建一个文件夹,名字叫做 led1 。
新建的项目路径是:F:AliOS_SourceAliOS-Thingsexampleled1

image.png | left | 747x419

VSCode新建项目

打开VSCode,点击这个符号就可以新建项目。
你提前复制好你的项目路径。
零妖的电脑上,这个路径是:F:AliOS_SourceAliOS-Thingsexampleled1

image.png | left | 747x447

点过之后,这里会有一个默认路径,删除掉。
粘贴上自己的项目路径后,敲回车。

image.png | left | 747x442

OK,这一步完成后,你就可以关闭VSCode了。
打开刚才新建的项目文件夹,发现里面多了许多文件。

image.png | left | 747x227

重新打开SDK的目录

需要用VSCode,重新打开SDK文件夹。
看到了吧。刚才新建的项目已经能找到了。

image.png | left | 747x397

简单修改新项目的模板

新建的项目,是一个Helloworld的模板项目。
简单修改一下。

image.png | left | 747x419

编译,烧写,查看结果

编译之前要选择对应的项目,选择对应的硬件。

image.png | left | 747x399

image.png | left | 747x415

选择好之后,编译一下。
编译OK。

image.png | left | 747x319

烧写OK。

image.png | left | 747x270

打开串口。
输出的调试信息和咱修改的一致。

image.png | left | 747x279

AliOS Things 的Yloop调度

Yloop实现原理

Yloop是AliOS Things的异步事件框架。

每个Yloop实例(aos_loop_t)与特定的任务上下文绑定。

AliOS Things的程序入口application_start所在的上下文与系统的主Yloop实例绑定,该上下文也称为主任务。当底层的OS初始化完毕后,会第一个执行 application_start 这个函数。

主任务以外的任务也可以创建自己的Yloop实例。

Yloop实现了对资源的的统一调度管理,比如:

  • IO:最常见的是Socket,也可以是AliOS Things的vfs管理的设备
  • timer:即常见的定时器
  • callback:特定的执行函数
  • event:包括系统事件,用户自定义事件

当调用aos_loop_run后,当前任务将会等待上述的各类事件发生。

程序讲解

application_start里面做了两件事情:

  • 调用aos_post_delayed_action创建了一个1秒的定时器(Yloop里面只有oneshot timer)
  • 调用aos_loop_run进入事件循环

1秒后,定时器触发,app_delayed_action被调用,而app_delayed_action里面

  • 调用LOG打印
  • 再次创建一个5秒的定时器,重而实现定期执行app_delayed_action

这里注意到,程序并不需要aos_loop_init()去创建Yloop实例,因为系统会默认自动创建主Yloop实例。

OS内的API参考:https://github.com/alibaba/AliOS-Things/wiki/AliOS-Things-API-YLOOP-Guide#6-aos_post_delayed_action

解释一个函数的原型:
int aos_post_delayed_action(int ms, aos_call_t action, void *arg)
作用:
比如:aos_post_delayed_action(5000, test, NULL);
系统定时5000ms,然后时间到了之后,运行 test() 这个函数。
//当OS初始化完成1S之后,系统会执行一次此函数
static void app_delayed_action(void *arg)
{
    LOG("你好零妖 %s:%d %s\r\n", __func__, __LINE__, aos_task_name());//串口打印一些信息
    aos_post_delayed_action(5000, app_delayed_action, NULL);//告诉系统,5S后执行一下这个函数
}

//主任务。OS初始化完成后,会第一个执行的函数。
int application_start(int argc, char *argv[])
{
    LOG("初始化完成,应用程序开始:");//串口输出OS完成信息
    aos_post_delayed_action(1000, app_delayed_action, NULL);//1S后,触发 app_delayed_action 函数
    aos_loop_run();//OS开始等待各个事件是否发生,并随时准备执行对应的函数

    return 0;
}

结束

  • 新建的项目,一定要放到SDK里面,example的文件夹里。
  • 一定要重新打开VSCode,然后打开SDK文件夹。
  • example文件夹里面有很多参考项目,非常大的参考价值。
  • 自己的项目,可以边参考例程,边自己修改。

微信公众号 偶尔更新

1531823192520-8e7b5e01-69d4-4ef3-913c-53dca21b47a2.png | center | 310x310

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值