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

网友投稿 539 2022-05-30

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

大家在学习物联网操作系统开发的时候,都不得不准备一套开发板和仿真器,也是一笔不小的投资。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,默认安装即可,不再赘述。如下图:

LiteOSStudio安装

HUAWEI LiteOS Studio 是以VisualStudio 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。

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

了解到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

轻量级操作系统 LiteOS

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:kubernetes1.11手动搭建
下一篇:Linux之文件目录类指令基本使用
相关文章