随想录(qemu的学习)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
这两天看了一下qemu,还是有不少收获的。对于没有开发板、或者是觉得使用开发板学习cpu不太方便的同学来说,使用qemu学习嵌入式是非常好的一个选择。不但免去了硬件搭建的各种烦恼,还能利用gdb单步调试、全程跟踪,确实很不错。
1、qemu的代码
https://github.com/qemu/qemu
2、qemu下和cpu关系比较紧密的目录,
我们以开源cpu openrisc为例,涉及的主要目录有
target/openrisc
linux-user/openrisc
hw/openrisc
tests/tcg/openrisc
3、重要的目录分布
target主要和cpu相关,主要是指令、中断、mmu、dsp的解析
linux-user主要是一些和cpu相关的头文件
hw主要和soc相关,主要是将io地址和具体的仿真硬件进行关联
tests/tcg就是一些测试文件
4、qemu的调试
qemu里面集成了gdb server,这样可以利用gdb方便地进行调试。
此外如果能配合不同的elf符号表,那么就可以从uboot、kernel、busybox进行无缝地顺序调试。
5、qemu二次开发
qemu作为整合程度最好的仿真平台,非常适合用来做二次开发。
特别是soc仿真这一块,只要做好了底层io address的适配,用qemu来代替大部分开发板的工作还是很有可能的。
6、其他
qemu的主要应用场景还是偏向于bsp的仿真和学习应用这块。
如果是性能或者压力测试,最好还是借助于硬件来完成。当然如果是逻辑层面的验证,qemu问题不大。
ps:说到软件,其实现在的大部分软件作品都不可能由个人从头到尾进行独立开发的。所以,有条件的同学可以好好学习和利用qemu,一方面借助于qemu服务于项目、不断提高业务水平和团队能力,另外一方面反馈给社区,促进社区的长远发展。充分利用好现有的资源,达到win-win的目的,才是一个嵌入式开发者的真正价值所在。
随想录(qemu的学习)相关推荐
- 随想录(如何学习内核)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很多学习linux kernel的同学都会陷入到一个误区当中.一方面,他们希望自己学习的东西大而 ...
- Qemu Fuzzer学习
Qemu Fuzzer 学习 本文章来自于开源软件供应链点亮计划的Openeuler社区项目 项目名称:No.112 qemu设备fuzz测试完善 前言 一提到 Qemu + Fuzz 的组合,我首先 ...
- QEMU零知识学习5 —— QEMU安装
接前一篇文章<QEMU零知识学习4 -- QEMU编译>,链接如下: QEMU零知识学习4 -- QEMU编译_蓝天居士的博客-CSDN博客 安装QEMU QEMU编译完成之后,运行&qu ...
- QEMU零知识学习3 —— QEMU配置
本文接前一篇文章<QEMU零知识学习2 -- QEMU源码下载>,链接如下: QEMU零知识学习2 -- QEMU源码下载_蓝天居士的博客-CSDN博客 基于第2种方式通过wget下载源码 ...
- QEMU+KVM学习笔记
1 QEMU和KVM的关系: 现在所说的虚拟化,一般都是指在CPU硬件支持基础之上的虚拟化技术.KVM也同hyper-V.Xen一样依赖此项技术.没有CPU硬件虚拟化的支持,KVM是无法工作 ...
- 随想录(ros学习笔记)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] ros,全称robot operating system.说它是操作系统,其实也不全对,因为它实 ...
- 随想录(zynq学习)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 最近学习zynq较多,这里做一个笔记,供日后参考使用.zynq是xilinx公司出的一款soc, ...
- 随想录(英语学习的几个误区)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 学技术的人,最好英文水平好一点.但凡有点深度的文档,都离不开英文.想要寻找好一点的资料,最好go ...
- QEMU零知识学习2 —— QEMU源码下载
QEMU源代码有多种方式进行下载.本文只介绍其中2种方法. 1. 通过git进行下载开发中的最新的qemu.git (1)获取源码 $ git clone http://git.qemu.org/qe ...
最新文章
- C++中的static关键字的总结
- 成功解决PackagesNotFoundError: The following packages are not available from current channels: tensorflo
- 如何通过DBLINK取REMOTE DB的DDL
- 为什么在mysql执行删除表中外键的语句,外键却仍然存在? [问题点数:40分]
- 如何编写第一个 ngrx Effect 类
- Silverlight C# 游戏开发:关于精灵for Silverlight容器
- AI语音入门:认识词错率WER与字错率CER
- 一位网友在某职业论坛上就发了一个相关的帖子
- 反转!物联网火爆,程序员开发技能却有待加强?
- eclipse中Java EE 与Java 区别
- 使用opencv实现matlab中的imfill填充孔洞功能
- hdu 2037 这个夏天不AC (java)
- 怎么用matlab进行博弈论计算,博弈论的Matlab算法包
- 一个OEIS数列的通式
- AI数学基础(1)--- 马尔可夫不等式
- xss(跨站脚本攻击)详解
- 个人网站怎么申请支付接口?
- Cause: java.sql.SQLExceptioValue ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestamp
- Python requests HTTP验证登录实现流程
- 使用Nuxt.js框架开发(SSR)服务端渲染项目
热门文章
- VMware ESXI 5.0群集+ISCSI存储
- linux系统下的权限知识梳理
- 树莓派-linux的多种启动自运行方式
- 面向对象的三大特性:封装、继承、多态
- Oracle技术之初始化参数REMOTE_OS_AUTHENT
- 分享:利用tcp_wrappers 保护服务安全
- install lsa package for R on ubuntu 10.04 lts lucid
- 涉及到整型参数时,没有初始化时,Debug下可以运行,但是Release下不行
- Android5.0水波纹效果ripple实现
- 字符编码乱码问题(servlet底层 编码大揭秘)