写点什么

基于 LiteOS Studio 零成本学习 LiteOS 物联网操作系统

发布于: 2020 年 12 月 15 日

摘要:大家在学习物联网操作系统开发的时候,都不得不准备一套开发板和仿真器,也是一笔不小的投资。LiteOS 社区现在对外开放了对 Qemu 模拟器的适配工程,在不使用开发板的情况下,也可以搭建 LiteOS 开发环境,做到零成本,非常方便初学者学习。

Qemu 简介

Qemu 是一套由 FabriceBellard 编写的以 GPL 许可证的模拟处理器,在 GNU/Linux 平台上使用广泛,也支持在 X86 环境上运行。有关 Qemu 的介绍可参考其 github 社区内容。LiteOS Stduio 使用 Qemu realview-pbx-a9 开发板来模拟运行 LiteOS 开源工程。本文主要介绍 Windows 下基于 Qemu 运行 LiteOS。

安装 Qemu

在 Windows 上安装 Qemu。下载 qemu-w64-setup-20201124.exe,默认安装即可,不再赘述。如下图:



LiteOS Studio 安装

HUAWEI LiteOS Studio 是以 Visual Studio Code 社区开源代码为基础,根据 LiteOS 嵌入式系统软件开发语言、业务场景等特点开发的一款轻量级定制集成开发环境解决方案。对于熟悉 Visual Studio Code 的开发者,非常容易上手。

访问 LiteOS Studio 官网,下载 LiteOS Studio 安装软件,安装过程非常简单,直接看官网资料即可,不赘述。安装完毕之后,需要参考官网文档,搭建 windows 开发环境

(如下图)。



注意,新建工程时,需要 git 客户端工具,请确保本地已安装 git for windows 工具并添加环境变量。

新建 Qemu 仿真工程

点击新建工程图标,打开新建工程界面。在使用 LiteOS Studio 新建工程时,确保网络畅通,可以访问 LiteOS 开源社区站点https://gitee.com/LiteOS/LiteOS

  • 工程名称:填入自定义的工程名

  • 工程目录:填入或选择工程存储路径

  • SDK 版本号:选择 Gitee-LiteOS-Master

  • 开发板列表:选择 Qemureakview-pbx-a9 开发板

点击确认,后台将下载并保存所选目标板的 SDK,下载完成后自动打开新建的工程。



编译 Qemu 仿真工程

点击工具栏上的编译图标, 开始编译。编译成功后,在控制台输出如下信息:



在编译完毕,打开工程设置,在烧录器 Burner 和调测器 Debugger 设置里,分别设置需要烧录的 bin 文件和调测使用的 elf 可执行文件,分别如下图:

烧录器 Burner 配置:



调试器 Debugger 配置:



除了烧录器、调试器,LiteOS Studio 工程设置还支持对开发板、编译器、组件管理、串口等进行设置,大家可以自行查看相应的设置。本文使用默认设置即可,设置完毕后,点击确认 Comfirm 保存。

运行 Qemu 仿真工程

对于真实开发板,需要把镜像 bin 或者 hex 文件烧录到开发板,才能运行。使用 Qemu 模拟器好处是并不需要真实烧录,启动 Qemu 传入镜像参数即可。我们复用烧录功能,点击工具栏上的图标进行烧录,启动 Qemu 模拟器运行编译的 LiteOS 工程。

运行成功的截图如下:



默认的配置时,输出启动信息后,就进入 shell 模式,我们可以输入 task,查看运行中的任务的信息。更多 LiteOS shell 命令,请参考 https://gitee.com/LiteOS/LiteOS/tree/master/shell 。Shell 命令输出示例如下:



如果想退出 Qemu 运行,在 Terminal 终端窗口同时按 Ctrl + A,然后按 X 键即可退出。

配置 Qemu 仿真工程运行 Kernel Demo

LiteOS 是高度可配置的系统,除了默认设置,我们可以在工程设置--组件管理中对系统组件配置进行定制。这里演示下如何开启 Kernel Demo 在 Qemu 模拟器上运行。



开启的这个 Kernel Task DemoDemo 代码执行入口如下:

UINT32 Example_TskCaseEntry(VOID){    UINT32 ret;    TSK_INIT_PARAM_S stInitParam;
/* lock task shcedue */ printf("\nKernel task demo begin.\n"); LOS_TaskLock();
printf("LOS_TaskLock() ok.\n");
stInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_TaskHi; stInitParam.usTaskPrio = TSK_PRIOR_HI; stInitParam.pcName = "HIGH_NAME"; stInitParam.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; /* create high prio task */ ret = LOS_TaskCreate(&g_demoTaskHiId, &stInitParam); if (ret != LOS_OK) { LOS_TaskUnlock();
printf("Example_TaskHi failed.\n"); return LOS_NOK; }
printf("Create Example_TaskHi ok.\n");
stInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_TaskLo; stInitParam.usTaskPrio = TSK_PRIOR_LO; stInitParam.pcName = "LOW_NAME"; stInitParam.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; /* create low prio task */ ret = LOS_TaskCreate(&g_demoTaskLoId, &stInitParam); if (ret != LOS_OK) { /* delete high prio task */ if (LOS_OK != LOS_TaskDelete(g_demoTaskHiId)) { printf("Delete TaskHi failed.\n"); }
LOS_TaskUnlock();
printf("Create Example_TaskLo failed.\n");
return LOS_NOK; }
printf("Create Example_TaskLo ok.\n");
/* unlock task schedue */ LOS_TaskUnlock(); LOS_TaskDelay(40); return ret;}
复制代码

示例代码先后创建了 2 个任务,一个名为 HIGH_NAME、一个名为 LOW_NAME。在两个任务里,演示了 Task 相关的接口 LOS_TaskSuspend、LOS_TaskResume、LOS_TaskDelay、LOS_TaskDelete 的使用。更完整的示例请访问https://gitee.com/LiteOS/LiteOS/blob/master/demos/kernel/api/los_api_task.c

了解到 Demo 代码后,重新编译一下。编译成功后,点击烧录按钮运行,即可看到如下输出:



看到实际运行的效果后,建议读者们好好阅读下相关的 Demo 代码,包含任务、内存管理、中断、IPC 通信、时间管理、双向链表、任务同步等。请参考:https://gitee.com/LiteOS/LiteOS/tree/master/demos/kernel

调测 Qemu 仿真工程

HUAWEI LiteOS Studio 调测非常简单易用,点击工具栏上的调测按钮即可开启 GDB 图形化调测。对于我们的 Qemu 工程,开始调测后的界面如下:



对界面上的区域进行介绍下:

  • 变量 Variable

展示局部变量、全局变量、静态变量的值。

  • 监视 Watch

监视指定的表达式,可以输入变量名称或者表达式,实时计算结果。

  • 调用堆栈 Call Stack

展示当前运行状态和暂停状态的任务调用堆栈。

  • 断点 Breakpoints

展示设置的断点。

  • 寄存器 Registers

查看各个寄存器的数值,支持复制数值操作。

  • 源代码窗口

高亮显示当前执行的源代码行。

  • 反汇编窗口

对应当前源代码文件行所在的反汇编代码。

  • 输出 Output

展示 GDB 客户端的输出日志。

  • 调试控制台 Debug Console

展示 GDB Server 的输出日志。

读者们可以继续尝试,继续、单步、跳入、调测、停止等调测动作。更加详细的调测介绍,请参考 ---调试器-执行调试。

本文演示了如何准备 LiteOS Studio 环境,如何新建 Qemu 工程,如何编译、烧录、如何组件配置 Kernel Demo、如何 GDB 调测。

LiteOS Studio 工具还是容易上手的,非常适合学习物联网开发的。特别是对于初学者,不需要购买开发板,即可以学习、体验 LiteOS 物联网操作系统开发。通过对 LiteOS 开源社区提供的 Kernel Demo 的学习、实际上手练习,会对 LiteOS 操作系统内核会有个更深入的了解。

附资料:

LiteOS Studio 社区资料:https://liteos.gitee.io/liteos_studio/#/

LieOS 开源代码:https://gitee.com/liteos

Qemu 介绍: https://github.com/qemu/qemu

QEMU Binaries for Windows (64 bit)下载:https://qemu.weilnetz.de/w64/

Linux 环境基于 Qemu 运行 LiteOS,请参考:https://gitee.com/LiteOS/LiteOS/blob/master/targets/realview-pbx-a9/README_CN.md

 

点击关注,第一时间了解华为云新鲜技术~


发布于: 2020 年 12 月 15 日阅读数: 30
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
基于LiteOS Studio零成本学习LiteOS物联网操作系统