在windows上通过QEMU快速上手RT-thread smart

news2024/11/17 17:33:34

参考链接

官方文档

资料下载

env-windows-v1.3.5.7z
userapps

注意事项

通过QEMU仿真不同的平台,使用到的交叉编译工具也不一样,需要将相应工具的路径添加到系统PATH里;或者通过CMD定位到userapps,运行smart-env.bat xxxarm或者riscv64)指定交叉编译工具的路径(只在当前CMD环境有效)

操作步骤

注意:

  1. 以下的CMD命令不能用powershell代替;
  2. 通过QEMU仿真arm平台可以运行成功,但是仿真riscv64时运行不起来,原因不明;
  1. 打开CMD,定位到userapps/tools目录,运行python get_toolchain.py arm命令安装arm平台的交叉编译工具链,如下图:

注意:如果要仿真riscv64平台,通过python get_toolchain.py riscv64命令安装riscv64平台的交叉编译工具链

在这里插入图片描述
等待命令执行完成后,在userapps/tools/gnu_gcc目录下就能看到交叉编译工具链了:
在这里插入图片描述
2. 在CMD中定位到userapps目录,执行命令smart-env.bat arm,如下图:

注意:如果要仿真riscv64平台,需要执行smart-env.bat riscv64

在这里插入图片描述
3. 在CMD中定位到userapps目录,执行scons命令,如下图:

说明:如果没有找到scons命令,需要在CMD中通过python -m pip install scons命令安装scons

在这里插入图片描述
如果scons命令执行成功,可以在userapps/root/bin目录下看到一些elf可执行文件,如下图:
在这里插入图片描述
4. 将 userapps 下的 root 目录复制到 env\tools\fatdisk 目录下,如下图:
在这里插入图片描述
5. 修改 env\tools\fatdisk 目录下 fatdisk.xml 文件为下面的内容:

<?xml version="1.0" encoding="UTF-8"?>
<fatdisk>
   <disk_size>65536</disk_size>
   <sector_size>512</sector_size>
   <root_dir>root</root_dir>
   <output>sd.bin</output>
   <strip>0</strip>
</fatdisk>
  1. env目录下双击运行env.exe,然后定位到 env\tools\fatdisk 目录,输入命令 fatdisk 运行,就会在当前目录下生成 sd.bin 文件:
    在这里插入图片描述
  2. 将新生成的 sd.bin 剪切到 userapps\prebuilt\qemu-vexpress-a9 目录:

注意:如果是仿真riscv64平台,需要将新生成的 sd.bin 剪切到 userapps\prebuilt\qemu-virt64-riscv 目录

在这里插入图片描述
8. 将env工具定位到userapps\prebuilt\qemu-vexpress-a9目录,然后执行./qemu-nographic.bat运行arm虚拟机,然后在arm虚拟机内运行hello.elf程序,如图:

注意:如果是仿真riscv64平台,需要将env工具定位到 userapps\prebuilt\qemu-virt64-riscv 目录

在这里插入图片描述

编译rt-thread smart

  1. 打开env定位到usarapps,运行smart-env.bat arm配置arm平台的交叉编译工具路径:

注意:如果需要编译riscv64架构的内核,运行smart-env.bat riscv64

在这里插入图片描述
2. 将env定位到rt-thread\bsp\qemu-vexpress-a9,然后执行menuconfig命令配置rt-thread开启smart内核。

注意:如果需要编译riscv64架构的内核,需要将env定位到rt-thread\bsp\qemu-virt64-riscv

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3. 在env中执行scons编译rt-thread内核,编译完成后将产生rtthread.bin,如下图:
在这里插入图片描述在这里插入图片描述
4. 将上面的rtthread.bin剪切到userapps\prebuilt\qemu-vexpress-a9,并将env定位到userapps\prebuilt\qemu-vexpress-a9,然后运行qemu-nographic.bat,如下图:

注意:如果需要编译riscv64架构的内核,将以上路径换成userapps\prebuilt\qemu-virt64-riscv

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【jvm系列-11】jvm性能调优篇---命令行工具的基本使用

JVM系列整体栏目 内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈…

智能优化算法——下山单纯型算法

作者&#xff1a;非妃是公主 专栏&#xff1a;《智能优化算法》 博客地址&#xff1a;https://blog.csdn.net/myf_666 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录 专栏推荐序一、算法流程1. 反射2. 膨胀…

马哈鱼SQLFLow数据流生成介绍

马哈鱼数据血缘分析器是当前最流行的数据血缘关系(data lineage)管理工具之一&#xff0c;它是一种通过分析SQL脚本来自动发现数据流向的工具。它通过生成一个简洁的图表来显示数据仓库中表/视图和列之间的数据流。支持超过20种流行的数据库&#xff0c;包括 bigquery, couchba…

项目风险的4种应对策略及实施条件

面对威胁或可能给项目带来消极影响的风险&#xff0c;我们一般采用规避、转移、缓解和接受的应对策略。 一、风险规避 风险规避策略是指项目团队采取行动来消除威胁&#xff0c;或保护项目免受风险影响的应对策略&#xff0c;通常包括改变项目管理计划&#xff0c;以完全消除威…

super_数学知识(质数筛选和约数学习)lesson08易错题记录

文章目录 回文质数第n小的质数素数个数 回文质数 先上代码 #include<iostream> #include<vector>//创建动态数组需要的头文件 #include<cstring>//使用memset需要的头文件 using namespace std; vector<int> q; bool arr[10000005]; //埃氏筛法找出所…

详解软件开发的标准过程(生命周期):跟着标准搞,设计没烦恼

目录 一.软件开发的生命周期总括 二.项目架构分类 C/S架构 B/S架构 三.详解软件需求 需求分类 需求获取 需求分析 四.详解面向对象分析&#xff08;OOA&#xff09; 概念理解&#xff1a; 统⼀建模语⾔UML UML的重要组成部分&#xff1a; ⽤例图的元素 识别参与者…

怎么搭建个人小型渲染农场?搭建渲染农场配置

渲染农场是众多机器组成的渲染集群&#xff0c;通常用来渲染你的单帧效果图或动画项目&#xff0c;我们借助渲染农场的力量&#xff0c;可以满足3D项目交期时间迫在眉睫的需求&#xff0c;当你试着在自己的机器上渲染一个复杂的动画项目时&#xff0c;可能需要几十小时的等待时…

gdb与symbol符号表文件的调试

目录 1&#xff0c;剥离命令 2&#xff0c;gdbdebug 文件的调试 今天在调试程序的时候发现&#xff0c;在测试部测试的程序都是剥离了符号表的&#xff0c;导致用gdb无法调试&#xff0c;只有找到符号表文件才能继续gdb调试&#xff0c;好在符号表文件是和程序一起发布的。之…

浅谈作为程序员如何写好文档:了解读者

我作为从一名懵懂的实习生转变为工程师的工作经历中&#xff0c;伴随着技术经验的成长&#xff0c;也逐渐意识到了编写文档是知识和经验传递给其他人的最有效方式。通过文档&#xff0c;可以分享我的技术知识和最佳实践&#xff0c;使其他人更好地理解我的工作。在这里&#xf…

Postgres : 创建schema、创建表空间与指定用户权限

1. 创建新的Schema 要创建 PostgreSQL 中的一个新的 schema&#xff0c;并创建一个只有该 schema 权限的新用户&#xff0c;请按照以下步骤操作&#xff1a; &#xff08;1&#xff09;打开 PostgreSQL 客户端并连接到数据库服务器。 &#xff08;2&#xff09;创建一个新的…

如何在Oracle存储过程发生异常时获取out类型参数的值

Oracle存储过程关于在出现&#xff08;自定义/自带&#xff09;异常下out类型参数的获取问题的分析 ✈️ 场景: 有一些关于金额和时间的精确且量大的计算需要在存储过程中完成。存储过程中有一些自定义的异常。并且将在RAISE前通过out类型的参数将详细的异常原因返回。 但是在…

商业智能BI分析报表很慢是什么原因?应该如何优化?

当下&#xff0c;数据计算已成为了分析工作中必不可少的高频次操作之一&#xff0c;而且在大数据的发展背景下&#xff0c;应用性能往往关系着项目的成败&#xff0c;成为了大家最为关注的产品技术参数。那么我们先来分析一下BI分析表计算很慢的原因是什么&#xff0c;再对症下…

Microsoft Dynamics 365 Business Central 生产订单扣料的几种方法

学习目标&#xff1a; 掌握生产订单扣料的几种方法 学习内容&#xff1a; Forward flush by routing operation&#xff08;通过工序&#xff1a;向前扣料&#xff09;Backward flush by routing operation&#xff08;通过工序&#xff1a;向后扣料&#xff09;Forward flus…

Java-Redis持久化之RDB操作

Java-Redis持久化之RDB操作 1.为什么redis需要持久化&#xff1f;2.什么是RDB操作?3.请你用自己的话讲下RDB的过程?4.如何恢复rdb文件? 1.为什么redis需要持久化&#xff1f; Redis是内存数据库&#xff0c;如果不将内存数据库保存到磁盘&#xff0c;那么服务器进程退出&am…

匿名对象的特性和使用场景你知道吗?

目录 一、匿名对象的概念 二、单参数和多参数构造场景的匿名对象 ①只有一个参数的构造函数 ②多个参数的构造函数 三、使用匿名对象作为函数的参数的缺省值 四、只为调用类中的一个函数时 五、匿名对象的特性 1、匿名对象的生命周期只有一行 2、匿名对象具有常性 3、当匿…

今天去面一个点工,HR要我会数据库,Linux还有Python,这合理吗?

软件测试出路在哪&#xff1f; 业务编程&#xff01;&#xff01; 1、软件测试的变化趋势 变化趋势1&#xff1a; 功能测试是核心&#xff0c;但是价值降低 目前测试这个行业&#xff0c;还是有大量的点工。但是行业的进步&#xff0c;技术的创新&#xff0c;导致了企业的需求…

不用下载的网页版Axure在这里

作为一名产品经理&#xff0c;你一定需要一款能够帮助你更好更快地制作原型&#xff0c;更方便地和团队协作的软件。网页版Axure工具替代即时设计无需下载激活&#xff0c;就可免费使用。那么&#xff0c;Axure网页版工具替代即时设计是如何进行的呢&#xff1f; 首先&#xf…

【数据结构】双向带头循环链表

文章目录 一、什么是带头双向循环链表二、带头双向循环链表的实现&#xff08;一&#xff09;链表中结构体的声明&#xff08;二&#xff09;头节点的创建&#xff08;链表的初始化&#xff09;&#xff08;三&#xff09;新节点的创建&#xff08;四&#xff09;链表的尾插&am…

( 位运算 ) 231. 2 的幂 ——【Leetcode每日一题】

❓231. 2 的幂 难度&#xff1a;简单 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2 x n 2^x n2x &#xff0c;则认为 n 是 2 的幂次方。 示例 1&…

软考高级架构师笔记1-计算机硬件

目录 1. 前言 & 更新2. CPU组成3. CPU的指令集:4.存储器5. 总线1. 前言 & 更新 注意:绪论不考,直接略过。 计算机硬件章节19-21年没考过,在22年真题考过磁盘调度,根据趋势分析,以后考的概率也不大,了解即可。 本节删掉了第一版中的编码、海明码等内容。 2. CP…