摘要:大家在学习物联网操作系统开发的时候,都不得不筹备一套开发板和仿真器,也是一笔不小的投资。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/Lite... 。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/Lite...。
理解到Demo代码后,从新编译一下。编译胜利后,点击烧录按钮运行,即可看到如下输入:

看到理论运行的成果后,倡议读者们好好浏览下相干的Demo代码,蕴含工作、内存治理、中断、IPC通信、工夫治理、双向链表、工作同步等。请参考:https://gitee.com/LiteOS/Lite...

调测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/liteo...

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/Lite...

点击关注,第一工夫理解华为云陈腐技术~