如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

RTThread物联网操作系统 2018-02-08 08:50 次阅读

本文描述如何在windows及linux平台使用RT-Thread QEMU BSP,并运行RT-Thread GUI示例。

1  本文的目的和结构

1.1    本文的目的 和背景嵌入式软件开发离不开开发板,在没有物理开发板的情况下,可以使用QEMU等类似的虚拟机来模拟开发板。QEMU是一个支持跨平台虚拟化的虚拟机,它可以虚拟很多开发板。为了方便大家在没有开发板的情况下体验RT-Thread,RT-Thread使用QEMU模拟了ARM vexpress A9开发板,并提供了相关的板级支持包(BSP)。本文主要介绍在windows平台和linux平台使用RT-Thread提供的qemu-vexpress-a9 BSP。

1.2    本文的结构本文首先介绍qemu-vexpress-a9 BSP在windows平台的使用明细,其次介绍在linux平台的使用明细。

2  在windows平台使用qemu-vexpress-a9 BSP

2.1 准备工作

RT-Thread源码

RT-Thread env工具

env是RT-Thread推出的图形界面辅助工具,用来配置基于RT-Thread操作系统开发的项目工程。env自带有编译器和QEMU,因此在windows平台可以不用下载编译器和QEMU。请点击下面链接获取env详细信息及env运行环境要求:

解压RT-Thread源码,在BSP目录下找到qemu-vexpress-a9文件夹,RT-Thread qemu-vexpresss-a9 BSP实现了LCD、键盘、鼠标、SD卡、以太网卡、串口等相关驱动。

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 2.1 1 qemu-vexpress-a9文件夹

2.2 运行qemu-vexpress-a9 BSP工程1、打开env文件夹,根据系统类型(32位/64位)双击对应的console.exe文件打开env控制台:

图 2.2 1 env文件夹

2、在命令行模式下使用cd d:\projects\rt-thread\bsp\qemu-vexpress-a9命令切换到RT-Thread源码文件夹下的qemu-vexpress-a9  BSP根目录,然后输入scons命令编译工程:

图 2.2 2 编译工程

3、编译完成后输入qemu.bat启动虚拟机及BSP工程,qemu.bat是windows批处理文件,此文件位于BSP文件夹下,主要包括QEMU的执行指令,第一次运行工程会在BSP文件夹下创建一份空白的sd.bin文件,这是虚拟的sd卡,大小为64M。env命令行界面显示RT-Thread系统启动过程中打印的初始化信息及版本号信息等,如下图所示:

图 2.2 3 运行工程

4、若电脑安装有360安全卫士会有警告,点击允许程序运行,这时qemu虚拟机就运行起来了。虚拟机中央的白色区域是虚拟的LCD屏,读者可以自己写些GUI相关代码,相关图形图像信息会出现在这块虚拟的LCD屏中,后面本文将演示RT-Thread提供的GUI示例代码。

图 2.2 4虚拟屏

5、RT-Thread支持finsh,用户可以在命令行模式操作,输入help或按tab键可以查看所有支持的命令,输入list_device可以查看所有设备。这里可以看到设备里包括了我们前面提到的虚拟的sd卡“sd0”,接下来我们可以使用mkfs sd0命令格式化sd卡,执行该命令会将sd卡格式化成FatFS文件系统。FatFs是专为小型嵌入式设备开发的一个兼容微软fat的文件系统,采用ANSI C编写,采用抽象的硬件I/O层以及提供持续的维护,因此具有良好的硬件无关性以及可移植性。

图 2.2 5 格式化sd卡

6、第一次格式化sd卡后文件系统不会马上装载上,第二次启动才会被正确装载。我们退出虚拟机,然后在env命令行界面输入qemu.bat重新启动虚拟机及工程,输入ls命令可以看到新增了Directory目录,文件系统已经装载上,然后可以使用RT-Thread提供的其他命令体验文件系统。

图 2.2 6 文件系统其他命令

2.3 运行RT-Thread GUI示例1、关掉QEMU虚拟机,回到ENV控制台。0.6.4版本的env工具中加入了自动更新软件包和自动生成mdk/iar工程的选项,默认不开启。可以使用menuconfig –s或者menuconfig --setting配置:

图 2.3 1 menuconfig -s命令

选中“auto update pkgs config”,在使用menuconfig功能后env会自动使用pkgs --update命令来下载并安装软件包,同时删除旧的软件包:

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 2.3 2 自动更新配置

2、使用menuconfig命令进入配置界面,进入“RT-Thread Components” ——→ “RT-Thread UI Engine”子菜单,按‘↓’键下翻选中“Enable the example of UI Engine”:

图 2.3 3 选择GUI示例

3、按‘→’键选中“save”保存配置,并按“Exit”键退出配置界面,回到命令行界面,输入scons重新编译工程:

图 2.3 4 scons命令编译工程

4、编译完成后输入qemu.bat命令启动QEMU虚拟机及工程,可以看到QEMU虚拟的显示屏上显示了示例代码展示的图片、文字和图形信息:

图 2.3 5 虚拟屏GUI 示例展示

2.4 用eclipse调试qemu-vexpress-a9 BSP工程1、首先在eclipse的Eclipse Marketplace里下载并安装支持QEMU的调试工具:

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 2.4 1 Eclipse Marketplace

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 2.4 2 调试工具安装

2、首次调试工程需要配置调试参数,如下面图片所示,打开调试配置界面及配置调试参数:

图 2.4 3 eclipse调试配置选项

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 2.4 4 创建新的调试项目

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 2.4 5 选择调试文件

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 2.4 6 选择调试工具

图 2.4 7 选择断点

3、调试相关参数配置好后就可以开始调试了,回到env命令行界面输入qemu-dbg.bat开启调试模式:

图 2.4 8 启动调试

这时候启动的QEMU虚拟机处于暂停状态,等待连接调试:

图 2.4 9 虚拟屏调试初始界面

4、点击eclipse调试配置界面的“Debug”按钮,或者点击调试项目名称,开启eclipse调试界面,这时就可以对工程进行调试了:

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 2.4 10 开始调试

图 2.4 11 eclipse调试项目选择

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 2.4 12 eclipse调试界面

3  在linux平台使用qemu-vexpress-a9 BSP

3.1 准备工作

下载RT-Thread源码,使用命令:git clone https://github.com/RT-Thread/rt-thread.git

安装QEMU,使用命令:sudo apt-get install qemu

安装scons,使用命令:sudo apt-get install scons

安装编译器,使用apt-get命令安装的编译器版本太旧会导致编译报错,可依次使用如下命令下载安装新版本.

安装ncurses库,使用命令:sudo apt-get install libncurses5-dev

编译器安装好以后需要修改qemu-vexpress-a9 BSP下面的rtconfig.py文件,修改对应路径为解压到opt目录下的编译器对应的bin目录,参考下图,目录名字因下载的编译器版本而异:

图 3.1 1 编译器路径修改

3.2 使用menuconfig配置工程1、在qemu-vexpress-a9 BSP根目录输入scons --menuconfig开启配置界面,配置操作和windows平台一样:

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 3.2 1 menuconfig配置界面

2、使用scons --menuconfig命令后会安装及初始化env工具,并在home目录下面生成“.env”文件夹,此文件夹为隐藏文件夹,切换到home目录,使用la命令可查看所有目录和文件。env.sh文件是需要执行的文件,它会配置好环境变量,让我们可以使用pkgs命令来更新软件包,输入source ~/.env/env.sh命令执行。若已经选择了在线软件包,就可以使用pkgs --update命令下载软件包到BSP目录下的packages文件夹里:

图 3.2 2 .env文件夹

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 3.2 3 pkgs --update命令下载软件包

3.3 运行qemu-vexpress-a9 BSP工程1、在qemu-vexpress-a9 BSP目录下输入scons命令编译工程:

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 3.3 1 scons命令编译工程

2、输入ls命令查看BSP下面的文件明细,绿色显示的文件是有执行权限的文件,我们需要给qemu.sh文件新增执行权限,输入chmod +x qemu.sh命令:

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 3.3 2 qemu.sh文件新增执行权限

3、输入./qemu.sh命令执行脚本文件,这时候虚拟机便运行起来,如下图所示,命令行显示了RT-Thread操作系统启动过程所打印的相关信息,白色窗口为虚拟的LCD屏,读者可参考在windows平台运行RT-Thread GUI示例和使用eclipse调试的内容,同样可以在linux平台实现,本文不在赘述。

如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

图 3.3 3 虚拟机运行界面

RTThread物联网操作系统 技术专区

原文标题:【应用笔记】如何在windows及linux平台使用RT-Thread QEMU BSP

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

浅谈Linux touch命令实例

touch命令可以用来修改文件的访问/修改时间戳,使用touch命令创建一个空白文件,需要的语法是“....

的头像 人间烟火123 发表于 02-13 14:08 次阅读 0条评论
浅谈Linux touch命令实例

linux发行版排行 2018大盘点

2018年最受欢迎的 Linux 发行版本将会是什么呢?近日2018 最佳 Linux 发行版排行榜....

的头像 人间烟火123 发表于 02-13 13:52 次阅读 0条评论
linux发行版排行 2018大盘点

进入Linux命令行的简单方法 ​为什么要这样做?

需要访问 GRUB 启动菜单时,需要选择 Linux 发行版条目,按下 e 编辑引导参数。如何进入进....

的头像 人间烟火123 发表于 02-13 13:14 次阅读 0条评论
进入Linux命令行的简单方法 ​为什么要这样做?

linux之父是谁_linux之父简介

林纳斯·托瓦兹,linux之父是一位著名的电脑程序员、黑客。Linux内核的发明人及该计划的合作者。....

的头像 lhl545545 发表于 02-10 10:10 次阅读 0条评论
linux之父是谁_linux之父简介

使用 Shell 脚本掩盖 Linux 服务器上的操作痕迹的步骤解析

使用 Shell 脚本在 Linux 服务器上能够控制、毁坏或者获取任何东西,通过一些巧妙的攻击方法....

的头像 马哥Linux运维 发表于 02-09 15:23 次阅读 0条评论
使用 Shell 脚本掩盖 Linux 服务器上的操作痕迹的步骤解析

VI 编辑器的命令、模式和选项介绍

VI 编辑器是一个基于命令行的、功能强大的文本编辑器,最早为 Unix 系统开发,后来也被移植到许多....

的头像 Linux爱好者 发表于 02-09 15:11 次阅读 0条评论
VI 编辑器的命令、模式和选项介绍

解析修改CentOS7网卡名字的步骤

CentOS7网卡名字不再是之前版本的eth0,eth1这样的名字了,而是enoxxx,比较长,不太....

的头像 阿铭linux 发表于 02-09 09:09 次阅读 0条评论
解析修改CentOS7网卡名字的步骤

简单介绍MySQL延迟主从复制

MySQL 5.6 已经支持延迟复制, 可设置备节点的延迟时间, 延迟复制是有意义的,例如防止主节点....

的头像 阿铭linux 发表于 02-09 09:05 次阅读 0条评论
简单介绍MySQL延迟主从复制

介绍两种方法来避免正在执行中的任务中断

有时我们也许会有这样的需求:要执行一个命令或者脚本,但是需要几个小时甚至几天。这就要考虑一个问题,就....

的头像 阿铭linux 发表于 02-09 08:56 次阅读 0条评论
介绍两种方法来避免正在执行中的任务中断

执行rsync的任务的2种方式解析

前面介绍的rsync 5种方式当中,第二、第三(1个冒号)就属于通过ssh的方式,这种方式其实就是让....

的头像 阿铭linux 发表于 02-09 08:48 次阅读 0条评论
执行rsync的任务的2种方式解析

分享解决No input file specified问题的方法

解决No input file specified问题的方法是, 修改php.ini中的cgi....

的头像 阿铭linux 发表于 02-09 08:41 次阅读 0条评论
分享解决No input file specified问题的方法

分享nginx 502的解决方法

还好,我印象中多年前遇到过一次类似的问题,不过是linux代理linux,症状和该问题基本类似,当时....

的头像 阿铭linux 发表于 02-09 08:37 次阅读 0条评论
分享nginx 502的解决方法

介绍一个不太常见的概念:嵌入文档

今天介绍一个不太常见的概念 -- 嵌入文档,英文名叫做Here Documents。也就是你在she....

的头像 阿铭linux 发表于 02-09 08:33 次阅读 0条评论
介绍一个不太常见的概念:嵌入文档

基于SLUB的DEBUG功能,如何帮忙检测内存越界和访问已经释放的内存

SLAB内存分配器-SLUB的DEBUG功能,如何帮忙检测内存越界(out-of-bounds)和访....

的头像 Linuxer 发表于 02-08 14:11 次阅读 0条评论
基于SLUB的DEBUG功能,如何帮忙检测内存越界和访问已经释放的内存

介绍 Nginx的基本概念,性能,SSL 安装

我们会告诉你 Nginx 如何工作及其背后的理念,还有如何优化以加快应用的性能,如何安装启动和保持运....

的头像 Linux爱好者 发表于 02-08 09:12 次阅读 0条评论
介绍 Nginx的基本概念,性能,SSL 安装

学习使用 8 种 Linux 原生命令或第三方实用程序来生成随机密码

在这篇文章中,我们将引导你通过几种不同的方式在 Linux 终端中生成随机密码。其中几种利用原生 L....

的头像 Linux爱好者 发表于 02-08 08:26 次阅读 0条评论
学习使用 8 种 Linux 原生命令或第三方实用程序来生成随机密码

学习ARM + Linux之前要讲解用ADS或RealViewMDK去调试ARM开发板的原因

掌握 ARM 体系结构。ARM 是一种计算机,掌握其体系结构也就是掌握ARM的工作原理。在大学里一般....

的头像 21ic电子网 发表于 02-07 13:36 次阅读 0条评论
学习ARM + Linux之前要讲解用ADS或RealViewMDK去调试ARM开发板的原因

基于嵌入式Linux内核的特殊矩阵键盘设计完整驱动控制模块方案

为了适应嵌入式设备外设的多样性,本文以特殊矩阵键盘为例,设计了一套完整的驱动 控制模块 。硬件电路设....

发表于 02-07 09:44 次阅读 0条评论
基于嵌入式Linux内核的特殊矩阵键盘设计完整驱动控制模块方案

通过操作命令来统计 Linux 中文件和文件夹/目录的数量

在本教程中,我们将向您展示如何使用多个命令,并使用 ls、egrep、wc 和 find 命令执行一....

的头像 Linux爱好者 发表于 02-07 08:24 次阅读 0条评论
 通过操作命令来统计 Linux 中文件和文件夹/目录的数量

深度解析Linux SPI总线和设备驱动架构

SPI控制器不用关心设备的具体功能,它只负责把上层协议驱动准备好的数据按SPI总线的时序要求发送给S....

的头像 嵌入式ARM 发表于 02-07 08:16 次阅读 0条评论
深度解析Linux SPI总线和设备驱动架构