QEMU让你无需开发板即可玩溜RT-Thread~
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 准备工作
2.1 准备工作
RT-Thread源码,https://github.com/RT-Thread/rt-thread
RT-Thread env工具,https://www.rt-thread.org/page/download.html
env是RT-Thread推出的图形界面辅助工具,用来配置基于RT-Thread操作系统开发的项目工程。env自带有编译器和QEMU,因此在windows平台可以不用下载编译器和QEMU。请点击下面链接获取env详细信息及env运行环境要求:https://www.rt-thread.org/document/site/zh/5chapters/01-chapter_env_manual/
解压RT-Thread源码,在BSP目录下找到qemu-vexpress-a9文件夹,RT-Thread qemu-vexpresss-a9 BSP实现了LCD、键盘、鼠标、SD卡、以太网卡、串口等相关驱动。
2.2 运行qemu-vexpress-a9 BSP工程
1、打开env文件夹,双击env.exe文件打开env控制台:
2、在命令行模式下使用cd D:\repository\rt-thread\bsp\qemu-vexpress-a9
命令切换到RT-Thread源码文件夹下的qemu-vexpress-a9 BSP根目录,目录根据自己的RT-Thread源代码目录输入,然后输入scons
命令编译工程:
3、编译完成后输入qemu.bat
启动虚拟机及BSP工程,qemu.bat是windows批处理文件,此文件位于BSP文件夹下,主要包括QEMU的执行指令,第一次运行工程会在BSP文件夹下创建一份空白的sd.bin文件,这是虚拟的sd卡,大小为64M。env命令行界面显示RT-Thread系统启动过程中打印的初始化信息及版本号信息等,如下图所示:
4、若电脑安装有360安全卫士会有警告,点击允许程序运行,这时qemu虚拟机就运行起来了。
5、RT-Thread支持finsh,用户可以在命令行模式操作,输入help
或按tab键可以查看所有支持的命令,输入list_device
可以查看所有设备。这里可以看到设备里包括了我们前面提到的虚拟的sd卡“sd0”,接下来我们可以使用mkfs sd0
命令格式化sd卡,执行该命令会将sd卡格式化成FatFS文件系统。FatFs是专为小型嵌入式设备开发的一个兼容微软fat的文件系统,采用ANSI C编写,采用抽象的硬件I/O层以及提供持续的维护,因此具有良好的硬件无关性以及可移植性。
了解FatFS详细信息请点击链接:http://elm-chan.org/fsw/ff/00index_e.html
6、第一次格式化sd卡后文件系统不会马上装载上,第二次启动才会被正确装载。我们退出虚拟机,然后在env命令行界面输入qemu.bat
重新启动虚拟机及工程,输入ls
命令可以看到新增了Directory目录,文件系统已经装载上,然后可以使用RT-Thread提供的其他命令体验文件系统
2.3 运行RT-Thread GUI示例
1、关掉QEMU虚拟机,回到ENV控制台,输入menuconfig
命令进入配置界面:
2、进入“RT-Thread oneline packages” → “system packages” → “RT-Thread GUI Engine”子菜单,选中“Enable GUI Engine”和“Enable the example of GUI Engine”:
3、按‘→’键选中“save”保存配置,并按“Exit”键退出配置界面,回到命令行界面,输入pkgs --update
下载GUI软件包及示例代码:
4、软件包下载完成后输入scons
重新编译工程:
5、编译完成后输入qemu.bat
命令启动QEMU虚拟机及工程,可以看到QEMU虚拟的显示屏上显示了示例代码展示的图片、文字和图形信息:
2.4 用eclipse调试qemu-vexpress-a9 BSP工程
1、首先在eclipse的Eclipse Marketplace里下载并安装支持QEMU的调试工具:
2、首次调试工程需要配置调试参数,如下面图片所示,打开调试配置界面及配置调试参数:
3、调试相关参数配置好后就可以开始调试了,回到env命令行界面输入qemu-dbg.bat开启调试模式:
这时候启动的QEMU虚拟机处于暂停状态,等待连接调试:
4、点击eclipse调试配置界面的“Debug”按钮,或者点击调试项目名称,开启eclipse调试界面,这时就可以对工程进行调试了:
QEMU让你无需开发板即可玩溜RT-Thread~的更多相关文章
- ESP32 LyraT音频开发板试玩(二):播放音乐
我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 本文延续上一篇博客 将D:\msys32\ ...
- ESP32 LyraT音频开发板试玩(一):搭建开发环境
我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 关于ESP32的开发环境搭建,官方有教程, ...
- 基于QEMU的ARM Cortex-A9开发板Vexpress-ca9的Linux内核的编译和运行
宿主机:Ubuntu16.04 x64(Linux内核4.4.0) 交叉编译工具链:gcc-arm-linux-gnueabiarm-linux-gcc:4.4.3QEMU:2.5.0Linux ke ...
- 为Qemu aarch32开发板添加sd卡
Qemu: 2.8.0 开发板: vexpress 1.制作sd卡镜像 2.分区 sudo losetup /dev/loop0 fs_vexpress_1G.img sudo fdisk /dev/ ...
- 实现Qemu aarch32虚拟开发板ping www.baidu.com
环境 Qemu: 2.8.0 开发板: vexpress-ca9 概述 如果要玩物联网,至少应该让开发板实现联网,让qemu支持联网在之前的博文中已经有介绍了,但是如果只能在自己的局域网内玩耍就太没意 ...
- CentOS 7 利用qemu模拟ARM vexpress A9开发板
听说qemu用于仿真arm很不错,今日就来试了一把.由于刚刚开始,了解的并不多.本文仅仅记录Qemu装载Linux kernel和busybox根文件系统的过程.后续将会深入了解仿真的其他内容. 先上 ...
- Qemu搭建ARM vexpress开发环境(一)
Qemu搭建ARM vexpress开发环境(一) 标签(空格分隔): Qemu ARM Linux 嵌入式开发离不开硬件设备比如:开发板.外设等,但是如果只是想学习研究Linux内核,想学习Linu ...
- 迅为iTOP-4418开发板编译Ubuntu
Ubuntu 系统比较特殊,源码就是它的镜像.Ubuntu 系统通过解压的方式进行烧写,我们也可以通过配置解压出来的 Ubuntu 系统源码文件夹,来配置 Ubuntu 系统.然后通过打包压缩的方式来 ...
- 嵌入式LInux-让开发板访问外网-ping bad address baidu.com
我的嵌入式设备已经接入网络.能够ping局域网ip.可是为了实现能够ping通外网.比如 ping baidu.com 还是不行的. 当运行ping baidu.com这个命令时,提示 ping ba ...
随机推荐
- nyoj 54-小明的存钱计划 (遍历 + 判断)
54-小明的存钱计划 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:5 submit:11 题目描述: 小明的零花钱一直都是自己管理.每个月的月初妈 ...
- nyoj 822-画图 (*)
822-画图 内存限制:64MB 时间限制:1000ms 特判: No 通过数:133 提交数:187 难度:0 题目描述: 计算机画图也挺有趣的哈!那我们就来用计算机画幅图吧... 输入描述: 输入 ...
- GitHub注册失败,卡在第一步
同事说他无法注册GitHub,我一开始以为GitHub又无法登录进去,我就登录了自己的GitHub账号,没有问题,可以登录啊,见第一个标签页.同一局域网,不可能我能登录,你无法完成注册啊.于是,我就在 ...
- Mysql 添加字段 修改字段 删除字段
1.添加字段(alter.add) mysql> alter table users add name varchar(30) not null after id; 2.修改字段(alter.m ...
- Python3 之 with语句(高效、便捷)
在实际的编码过程中,有时有一些任务,需要事先做一些设置,事后做一些清理,这时就需要python3 with出场了,with能够对这样的需求进行一个比较优雅的处理,最常用的例子就是对访问文件的处理. 文 ...
- 2019-9-9:渗透测试,基础学习,phpmyadmin getshell方法,基于时间的盲注,基于报错的注入,笔记
phpmyadmin getshell方法1,查看是否有导入导出设置 show global variables like '%secure-file-priv%';2,如果secure-file-p ...
- 使用three.js创建大小不随着场景变化的文字
使用three.js创建大小不随着场景变化的文字,需要以下两步: 1.将文字绘制到画布上. 2.创建着色器材质,把文字放到三维场景中. 优点: 1.跟用html实现文字相比,这些文字可以被模型遮挡,更 ...
- MySQL事务和隔离级别
Mysql事务 避免事务,会占用内存 事务是啥? 简而言之:事务 - 就是保护多条执行的sql语句,要么全部成功,要么全部失败 比如:转账就是一个事务:从一个用户将资金转出,再将资金转入到另一个用户, ...
- CSS浮动和各种定位
CSS定位 css定位机制 文档流:元素按照在HTML中的位置决定排布的过程 块级元素是从上到下的,内联元素是从左到右的 浮动 position布局 position css position属性用于 ...
- 磁盘格式化、磁盘挂载、手动增加swap空间 使用介绍
第4周第2次课(4月10日) 课程内容: 4.5/4.6 磁盘格式化4.7/4.8 磁盘挂载4.9 手动增加swap空间 4.5/4.6 磁盘格式化 [root@jimmylinux-002 ~]# ...