QEMU 仿真RISC-V freeRTOS 程序

1. 安裝RISC-V 仿真環境 --QEMU

安裝包下載地址: https://www.qemu.org/

安裝命令及安裝成功效果如下所示,

target-list 設定爲riscv32-softmmu, 

$ cat ~/project/qemu-8.0.4/install.sh 
sudo apt-get install libglib2.0-dev
sudo apt-get install libpixman-1-dev
./configure --target-list=riscv32-softmmu
make -j24
sudo make install -j24
$ qemu-system-riscv32 -h
QEMU emulator version 8.0.4
Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
usage: qemu-system-riscv32 [options] [disk_image]

2. 安裝RISC-V 編譯器, (過程略)

如下cmd 可檢查是否安裝成功並顯示版本號 12.2.0

$ /opt/riscv/bin/riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (g2ee5e430018) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

3. 準備RISC-V 可執行程序

  • 測試使用freeRTOS 官網提供例程, https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS/Demo/RISC-V_RV32_QEMU_VIRT_GCChttps://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS/Demo/RISC-V_RV32_QEMU_VIRT_GCC

修改例程編譯器路徑徑, 並且由於編譯器版本不匹配, 需要修更換指令集

$ git diff FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/
diff --git a/FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/Makefile b/FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/Makefile
index bd24333a2..736fe8fcb 100644
--- a/FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/Makefile
+++ b/FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/Makefile
@@ -1,6 +1,7 @@
-CROSS   = riscv64-unknown-elf-
+CROSS   = /opt/riscv/bin/riscv64-unknown-elf-CC      = $(CROSS)gccOBJCOPY = $(CROSS)objcopy
+OBJDUMP = $(CROSS)objdumpARCH    = $(CROSS)arBUILD_DIR       = build
@@ -14,7 +15,7 @@ CPPFLAGS = \-I $(RTOS_SOURCE_DIR)/include \-I $(RTOS_SOURCE_DIR)/portable/GCC/RISC-V \-I $(RTOS_SOURCE_DIR)/portable/GCC/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions
-CFLAGS  = -march=rv32imac -mabi=ilp32 -mcmodel=medany \
+CFLAGS  = -march=rv32imac_zicsr -mabi=ilp32 -mcmodel=medany \-Wall \-fmessage-length=0 \-ffunction-sections \
@@ -56,6 +57,9 @@ DEPS = $(SRCS:%.c=$(BUILD_DIR)/%.d) $(ASMS:%.S=$(BUILD_DIR)/%.d)$(BUILD_DIR)/RTOSDemo.axf: $(OBJS) fake_rom.lds Makefile$(CC) $(LDFLAGS) $(OBJS) -o $@
+       $(OBJCOPY) -O ihex $(BUILD_DIR)/RTOSDemo.axf $(BUILD_DIR)/RTOSDemo.hex
+       $(OBJCOPY) -O binary $(BUILD_DIR)/RTOSDemo.axf $(BUILD_DIR)/RTOSDemo.bin
+       $(OBJDUMP) -S -d $(BUILD_DIR)/RTOSDemo.axf > $(BUILD_DIR)/RTOSDemo.asm$(BUILD_DIR)/%.o: %.c Makefile@mkdir -p $(@D)
  • 編譯完成後, BUILD_DIR 下生成RTOSDemo.axf 可執行文件

4.運行RISC-V程序

  執行如下命令, 運行上一步準備好的RTOSDemo.axf, 觀察到周期性打性LOG,

證明程序有正常運行起來, 檢查與上一步例程功能一致,  完結收工~

$ qemu-system-riscv32 -nographic -machine virt -net none -chardev stdio,id=con,mux=on -serial chardev:con -mon chardev=con,mode=readline -bios none -smp 4 -kernel ~/project/freeRTOS/FreeRTOS_main/FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/build/RTOSDemo.axf 
Hello FreeRTOS!
0: Tx: Transfer1
0: Rx: Blink1
0: Tx: Transfer2
0: Rx: Blink2
0: Tx: Transfer1
0: Rx: Blink1
0: Tx: Transfer2

5. 參考資料

QEMU RISC-V 官方文檔: qemu-8.0.4/docs/system/riscv/virt.rst

freeRTOS RISC-V QEMU 官方使用文檔: FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/Readme.md 

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

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

相关文章

给微软.Net runtime运行时提交的几个Issues

前言 因为目前从事的CLRJIT,所以会遇到一些非常底层的问题,比如涉及到微软的公共运行时和即时编译器或者AOT编译器的编译异常等情况,这里分享下自己提的几个Issues。原文:微软.Net runtime运行时提交的几个Issues Issues 一.issues one 第一个System.Numerics.Vecto…

报错处理:Docker容器无法启动

具体报错: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"program\": executable file not found in $PATH": unknown. 报错环境: 该报错出现在使用…

Orange Pi 3B 开发板 开箱评测 和 系统安装教程

香橙派 Orange Pi 3B(RK3566)开发板 开箱测评 和 系统烧录教程 简介 香橙派 Orange Pi 3B 是一款树莓派大小的单板计算机,但接口更加齐全,包括一个全尺寸 HDMI 接口和一个 M.2 存储插槽,售价199起。 Orange Pi 3B 采…

leetcode438. 找到字符串中所有字母异位词(java)

滑动窗口 找到字符串中所有字母异位词滑动窗口数组优化 上期经典 找到字符串中所有字母异位词 难度 - 中等 Leetcode 438 - 找到字符串中所有字母异位词 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出…

软考:中级软件设计师:大数据

软考:中级软件设计师:大数据 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 &#x…

网络经济与企业管理【五】之市场营销管理

感谢内容提供者:金牛区吴迪软件开发工作室 上一篇:网络经济与企业管理【四】之企业组织管理 文章目录 第五章:市场营销管理一、市场营销概述二、市场营销过程1.市场营销的过程2.目标营销经历的三个阶段3.选择目标市场的三种战略4.市场营销组…

【市场营销学三】企业战略与营销管理

【市场营销学三】企业战略与营销管理 一、企业战略与规划1.1、企业战略特征1.2、企业战略层次结构1.3、企业战略规划过程 二、总体战略2.1、认识和界定企业使命2.2、区分战略业务单位2.3、明确投资组合2.4、选择业务成长战略 三、经营战略3.1、分析竞争环境3.2、选择竞争战略 四…

【市场营销学二】市场营销管理哲学及其贯彻

【市场营销学二】市场营销管理哲学及其贯彻 一、市场营销哲管理哲学及其演进1.1、 什么是市场营销管理1.2、什么是市场营销管理哲学1.3、以企业为中心的观念1.4、以消费者为中心的观念1.5、以利益相关者和社会整体利益为中心的观念 二、以全方位营销促进顾客满意及客户忠诚2.1、…

Docker容器:docker consul的注册与发现及consul-template

Docker容器:docker consul的注册与发现及consul-template守护进程 一.docker consul的注册与发现介绍 1.什么是服务注册与发现 (1)服务注册与发现是微服务架构中不可或缺的重要组件。 (2)为解决服务都是单节点的&a…

DiskCatalogMaker for Mac简单智能快速的磁盘管理工具

DiskCatalogMaker是一款Mac上的磁盘目录管理工具。它可以帮助用户快速创建和管理磁盘目录,方便查找和访问存储在磁盘上的文件和文件夹。它具有快速扫描和索引功能,生成详细的目录列表,支持关键字搜索和自定义标签。 此外,DiskCat…

Zotero教程

Zotero教程 简介 Zotero是一款集成式的文献管理工具,支持一键导出bib格式文献库或一键插入Word文档。当然,作为一款文献管理工具,它的核心功能就是文献的管理。不清楚你是否有这样的苦恼,看过的论文很难归类,有得论文…

python使用matplotlib 画柱状图代码_Python 使用 matplotlib 画柱状图教程

Python 使用 matplotlib 画图是非常方便的,之前的文章记录了《Python 使用 matplotlib 画折线图教程》,今天就再次记录一下使用 matplotlib 画柱状图的教程。一般来说,也就折线图和柱状图这两种图比较常见,所以基本上老唐也就用了这两个。 一、基本柱状图 代码:import mat…

(动态规划) 剑指 Offer 48. 最长不含重复字符的子字符串 ——【Leetcode每日一题】

❓剑指 Offer 48. 最长不含重复字符的子字符串 难度:中等 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为…

SpringBoot 2.x 集成QQ邮箱、网易系邮箱、Gmail邮箱发送邮件

在Spring中提供了非常好用的 JavaMailSender接口实现邮件发送,在SpringBoot的Starter模块中也为此提供了自动化配置。 项目源码已托管在Gitee-SpringBoot_Guide 几个名词解释 什么是POP3、SMTP和IMAP? 详细介绍-请移步至网易帮助文档 IMAP和POP3有什么区别&#x…

Gmail配置邮箱客户端

公司的游戏的找回密码功能发邮件是走GMail渠道来实现的。之前在做这一部分的时候,受到QQ邮箱的影响,以为没什么大问题(之前QQ邮箱配置过什么,也比较简单,简单设置好独立密码即可)然后主要原因是这次再次经历了这个过程…

matlab 点云的二进制形状描述子

目录 一、功能概述1、算法概述2、主要函数3、参考文献二、代码示例三、结果展示四、参数解析输入参数名称-值对应参数输出参数五、参考链接本文由CSDN点云侠原创,

网易企业邮箱登录服务器出错,网易企业邮箱登录出现故障,无法正常登录

9月1日上午8:30左右,强比科技企业邮箱客服中心陆续接到网易企业邮箱用户反馈,在通过“mail.域名”登录邮箱过程中出现异常,页面出现“您所请求的网址(URL)无法获取”等错误提示,导致无法正常登录邮箱。 随后,客服人员进…

非常难得的iPad版房地产售楼助手应用

一款高质量的iPad房地产售楼助手应用,采用的是类似facebook,新浪微博,腾讯微博,人人网的布局视图。功能有:客户管理系统(可添加,编辑等);2.房源管理系统;3.房贷计算器等&…

新IPAD安装程序

新IPAD安装程序 安装爱思助手iPad连接电脑复制UDID生成两个签名文件ipa签名安装制作好的ipa下拉设置服务器IP 安装爱思助手 https://www.i4.cn/ iPad连接电脑 复制UDID 生成两个签名文件 把复制的UDID发给研发或IT部,拿到生成的两个签名文件 ipa签名 安装制作…

linux并发服务器 —— Makefile与GDB调试(二)

Makefile Makefile:定义规则指定文件的编译顺序;类似shell脚本,执行操作系统命令 优点:自动化编译——通过make(解释Makefile文件中指令的命令)命令完全编译整个工程,提高软件开发效率&#x…