摘要: 大家在学习物联网操作系统开发的时候,都不得不筹备一套开发板和仿真器,也是一笔不小的投资。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…
点击关注,第一工夫理解华为云陈腐技术~