自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 QEMU安装运行fedora笔记

1.制作镜像文件[cx@localhost ppc-softmmu]$ qemu-img create -f qcow2 disk.img 8G2.安装操作系统export MPATH=/home/cx/cxworkspace/mirror./qemu-system-ppc -M mac99 \ -m 512 \ ...

2020-04-22 00:30:20 749

原创 解析QEMU操作码

1.target/ppc/translate.c2.指令类型定义/* PowerPC Instructions types definitions */enum { PPC_NONE = 0x0000000000000000ULL, /* PowerPC base instr...

2020-04-20 22:07:49 288

原创 制作根系统文件

1.下载busybox工具下载地址:https://busybox.net/downloads/busybox-1.28.1.tar.bz22.解压busybox解压源码: tar -xvfbusybox-1.28.1.tar.bz23.配置并编译busybox/*配置*/make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-...

2020-04-11 00:09:22 483

原创 搭建powerpc交叉编译工具链

安装环境:fedora-311.下载安装包1.1 GCC软件包:http://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2 解压安装包:tar -jxvfhttp://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2 1.2 binutils...

2020-04-10 13:26:39 1820

原创 QEMU加载linux内核

1.编译linux内核[cx@localhost linux-5.3.11]$ cp arch/powerpc/configs/85xx/mpc85xx_cds_defconfig ./.config/*配置*/[cx@localhost linux-5.3.11]$ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- menuconf...

2020-04-04 01:53:32 409

原创 安装powerpc交叉编译GDB

1.下载工具1.1 下载GDB:http://ftp.gnu.org/gnu/gdb/gdb-8.2.1.tar.gz1.2 下载termcap:http://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz2.解压工具3.安装termcap3.1 配置/*配置,prefix为要安装的目录,host为依赖的编译环境*/$ ./co...

2020-04-03 09:53:05 750

原创 qemu中的powerpc架构运行u-boot

附:powerpc交叉编译工具下载地址:http://rpmfind.net/linux/rpm2html/search.php?query=gcc-powerpc64-linux-gnu,因为虚拟机操作系统的版本是fedora31因此最终下载了http://rpmfind.net/linux/fedora/linux/releases/31/Everything/x86_64/os/Pa...

2020-03-09 00:58:36 1351

原创 QEMU中的事件处理机制-------timer(以openpic中的定时器为例)

1.新建timer 在创建openpic的模型中创建定时器,定时器创建流程如下图所示生成如下结构关系2.启动Timercase 0x10: /* TBCR */ /* Did the enable status change? */ if ((opp->timers[idx].tbcr & TBCR_CI) != ...

2020-02-25 16:10:41 760

原创 QEMU中CLOCK的初始化

1. QEMUTimerList的结构体struct QEMUTimerList { QEMUClock *clock; //timer的链表会对应一个qemuclock QemuMutex active_timers_lock; QEMUTimer *active_timers; QLIST_ENTRY(QEMUTimerList) l...

2020-02-24 17:55:05 543

原创 qemu_clock_get_ns函数分析

1.函数总体int64_t qemu_clock_get_ns(QEMUClockType type){ int64_t now, last; QEMUClock *clock = qemu_clock_ptr(type); switch (type) { case QEMU_CLOCK_REALTIME: return get_cloc...

2020-02-24 14:45:12 501

原创 gettimeofday函数

因为在学习qemu中timer定时器,创建timer时用到了该函数所以学习一下1.函数原型 int gettimeofday(structtimeval*tv, struct timezone *tz); 结构体timeval返回的是精确的时间,timezone结构体返回的是时区信息。 timeval的结构体原型如下:struct timeval{...

2020-02-24 14:29:01 462

原创 hva的创建过程

其创建流程如下图所示:ppc架构的处理器的在mac_newworld.c文件中ppc_core99_init函数中调用memory_region_allocate_system_memory函数创建ram,ram属于实体MemoryRegion,有自己的内存(从QEMU进程的中分配内存空间)。源代码分析如下:memory_region_allocate_system_memory...

2020-02-14 15:46:26 380

原创 address_space_init源码分析(GPA的生成)

参考博客https://www.cnblogs.com/ccxikka/p/9477530.html最终生成的结构体间关系如下图所示具体实现步骤分析://exec.c中memory_map_init函数static void memory_map_init(void){ system_memory = g_malloc(sizeof(*system_memory)...

2020-02-14 15:44:53 394

原创 QEMU中的sysbus_mmio_map函数

以mac_newworld.c文件中的函数使用为例,其连接关系如下图所示具体实现过程如下1.代码实现(在ppc_core99_init中)s = SYS_BUS_DEVICE(dev); //生成sysbusdevice设备/* PCI hole */memory_region_add_subregion(get_system_memory(), 0x80000000...

2020-02-12 15:47:38 909

原创 QEMU内存

RAM 通过memory_region_init_ram()函数初始化MMIO 由主机回掉函数实现的目标机内存,通过memory_region_init_io()函数初始化ROM 通过memory_region_init_rom()函数初始化,只读ROM device读像RAM,写像MMIO(有回掉函数)。通过memory_region_init_rom_device().初始化...

2020-02-11 18:44:20 672

原创 OPENPIC中的内存分配

内存创建过程图:其具体实施过程如下:1.openpic外部设备内存初始化 使用memory_region_init函数完成该设备内存的创建,其名称为openpic,大小为ox40000static void openpic_init(Object *obj){ OpenPICState *opp = OPENPIC(obj); memory_regio...

2020-02-11 18:36:39 460

原创 安装S2E时安装multiprocessing包出错

报错信息如下:ERROR: Complete output from command python setup.py egg_info: ERROR: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-instal...

2020-01-03 11:26:05 408

原创 fedora安装S2E时报错,提示You must install the Python development headers!

报错信息如下ERROR: Complete output from command python setup.py egg_info: ERROR: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-instal...

2020-01-03 11:11:25 545

原创 进入linux的terminal显示的是bash-5.0而不是用户名@localhost

1.现象如下:2.首先进入到root模式下su root拷贝文件到host端输入cd进入不了

2019-12-06 19:39:46 4256 2

原创 使用QEMU中的tarce实现对函数的跟踪

1. 配置时使能trace功能[cx@localhost qemu-4.2.0-rc1]$ ./configure --target-list=ppc-softmmu --enable-sdl --enable-trace-backend=simple2. 使用make命令进行编译3. 新建一个文件并向其中写入要追踪的函数,(参考qemu-3.1.0-rc0\docs\devel\...

2019-12-05 14:50:55 1061 1

原创 QEMU中log日志文件的使用

在启动时加 -d命令,参考如下:./qemu-system-ppc -hdc ../../mirror/debian_squeeze_powerpc_desktop.qcow2\ -M mac99\ -monitor stdio\ -d out_asm\若要打印多个选项可...

2019-12-03 16:51:45 7984

原创 QEMU中taget code翻译为TCG 中间码的过程

目录1.TCG中间码的宏定义2. 代码翻译过程(gen_intermediate_code函数的解析,这里以PPC体系架构为例)1.TCG中间码的宏定义 该头文件位于tcg/tcg-opc.h文件下,部分定义如下所示:DEF(mov_i32, 1, 1, 0, TCG_OPF_NOT_PRESENT)DEF(movi_i32, 1, 0, 1, TCG_OPF_NOT_P...

2019-11-29 10:10:02 1184

原创 QEMU中TCG翻译流程

声明:本文使用的qemu源码版本为qemu-3.1.0-rc0前言:qemu中采用事件驱动架构和并行架构相结合的方式来工作的。qemu中的线程主要有Vcpu线程,main_loop线程、I/O线程和workthread线程,其中main_loop属于主线程。1. 翻译流程总体框架2. 具体流程 1>在vl.c的main函数中创建单板machine​curren...

2019-11-28 20:44:33 2302

原创 fedora-31中qemu搭建powerpc架构虚拟机

目录1.下载qemu源码2. 启动单板2.1 方案1(最终未能成功) 1. 创建磁盘 2. 将镜像拷到磁盘中(这里下载了ubuntu操作系统)2.2 方案2(下载现成的powerpc镜像文件)1. 下载镜像2. 启动单板,命令如下1.下载qemu源码wget https://download.qemu.org/qemu-4.2.0-rc2...

2019-11-20 21:35:20 747 1

原创 DHCP报文分析(三级网络技术)

1.boot record type 为1表示客户机请求,即该报文的源地址为客户主机 为2表示dhcp服务器提供给客户机的报文,即dhcp服务器为源地址2.hops表示跳数,和帧中继有关。DHCP报文经过的DHCP中继的数目,默认为0。DHCP请求报文每经过一个DHCP中继,该字段就会增加1。没有经过DHCP中继时值为0。(若数据包...

2019-09-20 17:12:11 2324 3

原创 CIDR掩码聚合的规则

聚合的规则:1.首先必须两个ip地址一起进行聚合2.聚合的两个ip地址掩码必须相同,如果不同各自算其可用的地址数例如:IP地址块为202.113.79.128/27 202.113.79.160/27 202.113.79.192/27根据规则1,前两个首先进行聚合 第一个IP地址块的后8bits为 1...

2019-09-18 10:13:49 3576 1

原创 QEMU建模之设备创建总体流程

(这里的设备创建以中断控制器即openpic为例)1.main函数之前执行type_init1> 在vl.c文件的main函数执行前会先执行module_init的函数。因为该函数使用GNC中attribute属性constructor即构造函数属性,该属性的设置使得该函数在main函数之前被执行。函数原型如下:其路径为G:\qemu-3.1.0-rc0\hw\intc\openp...

2019-09-04 13:29:26 1523

原创 队列的链式存储

//链队列#include "stdio.h"#include "stdlib.h" typedef struct snode{ int data; struct snode* next;}snode,*linkq;typedef struct{ linkq rear,front;}linkqueue;//插入元素 int insertn(linkqueue* q,int...

2019-09-02 22:15:23 73

原创 线性表之队列

目录1.什么是队列2.队列的存储结构 顺序存储结构 链式存储结构3.循环队列4.队列中插入元素5.队列中删除元素6.打印队列中元素7.主函数1.什么是队列 队列是只允许在一端进行插入,在另一端进行删除操作的线性表。允许插入的一端成为队尾,允许删除的一端称为队头。2.队列的存储结构 顺序存储结构 链式存储结构3.循环队列...

2019-09-02 21:18:34 337

原创 c语言实现栈的链式存储

//栈的链式存储结构#include "stdio.h"#include "stdlib.h" typedef struct snode{ int data; struct snode *next;}*linkstack,snode;//入栈linkstack pushin(linkstack p,int e) { linkstack m; m = (linkstack)...

2019-09-02 15:21:16 123

原创 线性表顺序存储之两栈共享内存

目录1.两栈共享内存2.入栈操作3.出栈操作4.打印栈的内容5.主函数1.两栈共享内存背 景:1.两个栈数据结构相同; 2.其中一个栈已经满了,而另一个栈还剩很多存储空间; 3.基于2很容易造成存储空间的浪费,基于1、2可以采用两栈共享同一数组的方式解决上述问题。实现要点:1.定义一...

2019-09-02 11:17:52 186

原创 线性表之栈

目录1.什么是栈2.栈的存储结构 顺序存储结构(本节所展示的方式) 链式存储结构3.栈的应用 递归 四则运算表达式4.入栈操作5.出栈操作6.打印栈的内容7.主函数1.什么是栈 栈是限定在表尾进行插入和删除操作的线性表2.栈的存储结构 顺序存储结构(本节所展示的方式) 链式存储结构3.栈的应用 递...

2019-09-02 10:31:23 89

原创 C语言链式存储之双向链表

目录1.什么是双向链表2.双向链表的整表创建3.插入结点4.删除结点5.打印双向链表6.主函数1.什么是双向链表 双向链表是在单链表的基础上,为每一个结点加一个前驱即可。typedef struct Snode{ int data; struct Snode *prior; struct Snode *next;}*List,list; 2....

2019-08-30 17:06:29 182

原创 C语言链式存储之循环链表

目录1.什么是循环链表2.创建循环链表3.合并循环链表4.打印链表5.主函数1.什么是循环链表 循环链表是以单链表为原型,单链表中头结点和未结点是不能直接关联的,现在循环链表让尾结点直接指向头结点,形成一个圈,实现单向循环。2.创建循环链表要点:<1>创建一个头结点,后面依次添加结点和单链表相同; <2&gt...

2019-08-30 16:03:11 251

原创 C语言链式存储之静态链表

目录1.什么是静态链表2.添加一个新元素3.插入结点4.删除结点5.静态链表的初始化6.打印静态链表7. 查找给定结点的上一个结点的下标8.主函数1.什么是静态链表 用数组来代替指针,描述单链表。定义一个结构体,结构体中包含两个整形变量,第一个整形变量等价于链表中的data域,第二个整形元素等价于单链表中的next指针域,这个变量用cur表示,用来存储下...

2019-08-30 14:18:49 224

原创 c语言实现线性表之顺序存储

目录线性表的定义线性表的存储结构顺序存储(数组的方式)链式存储单链表静态链表循环链表双向链表线性表的定义: 零个或多个数据元素的有限序列,如果有多个元素,第一个元素无前驱,最后一个元素无后继。其它每个元素 有且只有一个前驱,一个后继。线性表中存储的数据类型必须一样。顺序存储的特点:用一段连续的...

2019-08-29 15:54:05 346

原创 C语言实现在不知道具体行数的情况下实现多行字符串的输入

实现思路:通过比较输入的行和空字符串是否相等,如果相等则退出输入,实现代码如下:#include "stdio.h"#include "stdlib.h"#include "string.h"#define N 1000int main(){ char str[N][12]; int i=0; while(gets(str[i])) { if(strcmp(str...

2019-08-29 09:48:48 6108

原创 单链表的C语言实现

目录整表创建头插法尾插法整表删除插入单个节点删除单个节点单链表逆序头插法 Link tcreatelist() { int value,len; Link head = (Link)malloc(sizeof(link));//先创建头结点,头结点的数据域没有值 head->next = NULL; ...

2019-08-28 17:56:52 247

原创 eclipse编译线程相关代码,虽然加了pthread.h头文件但是编译报错显示对pthread_create未定义的引用

解决方法:在工程属性中添加pthread库即可具体操作步骤:右键自己的工程->propertites->c/c++ Build->Settings->Tool Settings->Cross Gcc Linker->Libraries添加ptread库即可如下图所示:设置完点击apply and close应用改设置并关闭即可...

2019-08-17 10:38:32 784

原创 Fedora27安装eclipse

Fedora-27自带eclipse安装包遇到的问题:显示:同步仓库“update”缓存失败解决方法:重启虚拟机即可首先进入root模式 :输入su root,根据窗口提示输入密码 在root模式下输入yum install eclipse(因为我要用的是c语言所以用yum install eclipse-cdt) 系统提示是否安装选择:y 之后会显示完毕! (然而不知道装到...

2019-08-16 15:46:14 328

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除