WIN10系统上,新建AliOS Things项目

全局掌控

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

新项目的目录

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

WIN10系统上,新建AliOS Things项目

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

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

WIN10系统上,新建AliOS Things项目

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

WIN10系统上,新建AliOS Things项目

VSCode新建项目

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

WIN10系统上,新建AliOS Things项目

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

WIN10系统上,新建AliOS Things项目

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

WIN10系统上,新建AliOS Things项目

重新打开SDK的目录

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

WIN10系统上,新建AliOS Things项目

简单修改新项目的模板

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

WIN10系统上,新建AliOS Things项目

编译,烧写,查看结果

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

WIN10系统上,新建AliOS Things项目

WIN10系统上,新建AliOS Things项目

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

WIN10系统上,新建AliOS Things项目

烧写OK。

WIN10系统上,新建AliOS Things项目

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

WIN10系统上,新建AliOS Things项目

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文件夹里面有很多参考项目,非常大的参考价值。
  • 自己的项目,可以边参考例程,边自己修改。

微信公众号 偶尔更新

WIN10系统上,新建AliOS Things项目

上一篇:Docker selenium 自动化 - 使用python操作docker,python运行、启用、停用和查询容器实例演示


下一篇:C#获取windows 10的下载文件夹路径