自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 QEMU工程编译错误解决

一 背景在ubuntu16.04新系统没有运行过qemu,这时候configure qemu工程会有一些错误,本文列出解决方法。二 问题及解决1. ERROR: glib-2.40 gthread-2.0 is required to compile QEM解决方法:sudo apt-get install libglib2.0-dev2. ERROR: pixman >...

2020-02-29 11:59:48 3458

转载 github下载太慢怎么办

一、git shallow clonegit clone默认会下载项目的完整历史版本,如果你只关心最新版的代码,而不关心之前的历史信息,可以使用 git 的浅复制功能: 1 $ git clone --depth=1 https://github.com/bcit-ci/CodeIgniter.git --depth=1表示只下载最近一次的版本,...

2019-07-20 11:02:21 2128

原创 PCTarget Initiated Termination

一、背景PCI传输都是主设备发起,然后从设备相应。但是当某些时候从设备发现自己忙着暂时来不及处理、或者处理一半时候发现后边req来得太快了暂时不能处理、或者从设备遇到了一个致命的错误不能完成这个req,就需要报告给主设备,让主设备稍后重传或者放弃传输。二、3种Termination方式1. Retry(1)定义:在cmd周期结束后的第一个数据周期,收到命令的从设备发现自己忙着,暂时...

2019-07-11 16:55:19 288

原创 QEMU内存管理

QEMU内存管理1 QEMU中管理的Memory有:普通的RAM。 MMIO。 内存控制器(将物理内存动态的映射到不同的虚拟地址空间)2 QEMU的Memory是以一个MemoryRegin为节点组成的非循环图的形式组织的。叶子节点代表RAM、MMIO。 其它节点代表buses、内存控制器、以及被rerouted的memory regions。3 Memory regions...

2019-03-28 11:05:02 590

原创 C/C++多线程常见问题

1 问题1.1 创建线程后是否立马开始并行执行?答: 主线程创建了子线程之后, 后者并不是立即就开始运行了. 至少在Linux操作系统下:(1)子线程和主线程运行在一个core上, 那还需要等待主线程交出core控制权, 可能是时间片耗尽.(2)子线程和主线程运行在不同的core上, 在时间轴上主线程后边的代码也可能先于子线程中的代码执行.因此要考虑之间的同步....

2018-12-24 16:14:12 989

原创 UEFI EDK2开发环境设置关键点/修改环境变量

1 问题描述Linux下当修改了已经编译过的EDK2工程顶层路径后, 进入工程顶层路径source edksetup.sh会报错.2 解决步骤有一个隐藏问题非常容易被忽视, 那就是EDK2工程的环境变量可能还是原来的旧的. 这时候:(1) 进入工程运行.edksetup.sh这时候会自动重新设置下边三个环境变量,可以看一下这三个变量是不是正确指向当前工程:用echo $环境变量...

2018-12-21 17:45:43 948

原创 linux静态库.a使用常见错误

在linux中如果一个程序需要用到.a, 有以下几点需要注意:(1)如果x.o与y.o中用到了静态xx.a中的函数, 不能用gcc xx.a -o test x.o y.o这种方式编译, 会提示那些函数undefined. 正确的做法是gcc -o test x.o y.o xx.a, 即把静态.a库文件放到.o的后边.(2) xx.a(jsc_debug.o): relocation R...

2018-12-21 17:34:30 927

原创 c++常错语法

1.new T()代表创建一个T类的对象指针,new T[]标识创建T类对象数组指针。2.template模板类只能把成员函数都定义在.h中,分开.h和.cpp会报链接错误。3.类A:的成员变量包含B的对象B b,则A的构造函数中需调用B的构造函数:A::A():b(8) {......}...

2018-12-08 15:24:59 101

原创 c语言如何调用c++(本文从qemu开发中总结)

背景:有时候一个工程中有c语言编写的代码(.c),也有c++(.cpp)编写的,分别用c语言编译器(这里指gcc)和c++编译器(g++)编译.c语言调用c++中的函数.注:这种情形多出现在以下情况,一个较成熟的大型开源c语言工程,需要在其中添加一些c++特性的函数(仅验证了下边的例子)或者库(对于库还未验证).举例说明:添上红色部分代码就可以了(必须都加上).主要是要使用extern "...

2018-11-16 16:20:40 468

转载 qemu tcg代码执行流程

转自: http://blog.csdn.net/alloc7/article/details/7719823一.qemu简介        qemu是使用动态二进制翻译的cpu模拟器,它支持两种运行模式:全系统模拟和用户态模拟。在全系统模拟下,qemu可以模拟处理器和各种外设,可以运...

2018-10-26 15:58:40 2988

转载 转载:malloc和free底层实现

转载:malloc和free底层实现内存管理内幕Linux内存管理:Malloc本文引用了下面这篇文章,读完下面,应该读下上面两篇文章,其中,《内存管理内幕》提供了一个简单的malloc/free实现版本。看看它的free设计,相信有足够的吸引力(gnu free版本远比这复杂)该篇文章基本把malloc与free的实现机制说清...

2018-10-26 09:27:24 141

原创 Qemu使用心得

使用Qemu的心得体会如下:(1)在QEMU源码中增加自己的.c实现,编译后出现很多个错误如:“error: storage class specified for parameter”。其实只要在实现的.c文件最前面加上如下头文件就可以了:#include "qemu/osdep.h"。(2)QEMU下Application打印信息不全的问题:QEMU启动参数增加串口重定向:-serial fi...

2018-06-22 18:43:22 839

原创 System verilog的DPI通信使用心得

System verilog和C语言进行DPI通信常见问题及使用心得:(1)SV使用压缩结构存储结构体,定义时需加packed修饰符,否则与DPIC传递结构数据出错;(2)SV调用.c函数的形参必须为指针,否则值无法传递;SV调用.c函数的形参必须为指针,否则值无法传递;(3)SV和C语言共享数组的用法用伪代码描述如下:void c_function(int *d, int len) {    f...

2018-06-22 18:30:04 3674

原创 c语言信号量使用心得体会

1、选用什么标准的信号量在Linux中信号量有两种标准,一种是System V,另一种是Posix标准。其中System V是早期的标准;Posix(Portable Operating System Interface )是一个由IEEE开发的一系列标准,它还是由ISO(国际标准化组织)和IEC(国际电工委员会)采纳的国际标准。而System v是Unix操作系统众多版本的一个分支。...

2018-06-22 18:19:11 4357

原创 c语言如何释放一个被阻塞住的线程

问:在c语言中,使用pthread_create创建线程。在线程中阻塞函数导致其阻塞的时候,如何退出线程?答:线程退出方式:(1)正常顺序执行完后return;(2)在线程内部自身调用pthread_exit();这两种方式都依赖于线程函数自身执行,如果线程遇到阻塞函数被阻塞,则不能继续执行,则无法满足上述条件。(3)使用pthread_cancel()函数:该函数在cancle point处能退...

2018-06-22 17:17:27 5095

转载 《C语言中分配了动态内存后一定要释放吗?》

问:比如main函数里有一句 malloc(),后面没有free()1.那么当main结束后,动态分配的内存不会随之释放吗?2.如果程序结束能自动释放,那么还加上free(),是出于什么考虑?答:1. 就算没有free(),main()结束后也是会自动释放malloc()的内存的,这里监控者是操作系统,设计严谨的操作系统会登记每一块给每一个应用程序分配的内存,这使得它能够在应用程序...

2018-05-17 09:55:50 3277

原创 Linux下开发调试中大型C语言代码-如何提高效率

背景:在Linux下开发中大型C语言程序(包括编写、编译调试等步骤)时,尤其大部分代码都是原创的情况下。以下的 经验往往能提高调试效率。经验:(1)Linux命令行中编译错误较多,导致屏幕不能显示出所有的错误信息。可使用如下命令将编译信息输出到文件中:make > make.log 2 >& 1注:这里以make作为例子,实际中也可以是其它编译命令。输出的文件名“make.log”

2017-12-18 10:11:43 631

原创 C/C++语言static修饰函数的作用

描述:在C/C++语言程序中,特别是的大型程序,当中的函数往往用static关键词修饰。原因:主要的原因是避免命名冲突。static函数与一般函数作用域不同,仅在本文件。

2017-12-15 15:37:54 905

原创 结构体sizeof不想字节对齐

问题描述:笔者在做一个项目:硬件要访问内存中按照Spec格式定义的一段数据包。在C语言中一般使用结构体初始化这个数据包,因为可以方便配置各个字段。但结构体默认需要字节对齐的(sizeof和实际大小不同),因此和内存真实的存放方式可能不同。解决方法:让结构体按1字节对齐,例如:  struct test{   char ch;   int size;   char str[10]

2017-12-13 09:40:59 787

原创 Verilog变量位宽定义的两种方式及差别和可能引起的错误

Verilog数据位宽的定义     方式一:        Verilog的位宽定义一般如下所示:       如:reg [7:0] in,代表定义一个8位长度的变量in;       方式二:       在写代码的过程中不小心写成了reg [7] in(少写了“:0”),编译器没有报错。       差别:此时变成了长度为7的变量in。

2017-11-09 10:22:08 25035

原创 Ubuntu系统失败之----安装U盘不能存放其它文件

Ubuntu安装失败的经验贴        背景:笔者在数月之前制作了一个Ubuntu 14.4系统安装盘(当时把U盘格式化、制作了引导并且拷贝了镜像)。U盘的特点是除了系统相关文件之外没有其它任何文件。当时在三台联想笔记本上均成功安装。        问题:后来往U盘里面存了若干文件和文件夹。存了其它文件!!!今天安装时进度条一直不动,并且在大概五分钟后弹出错误信息:An attempt

2017-10-23 16:12:32 1255

原创 C语言中局部变量的地址覆盖问题

1.问题描述    在C语言的一个函数中定义了几个局部变量如A,B,C。当对其中一个变量A取地址并对该地址赋值时,如果赋值的地址大小超过A所占的空间大小,则其它的变量会被修改。2.调试过程   把被改变的变量的地址和A的地址打印出来,发现两者的地址差小于变量类型的地址。3.举例fun(){int a = 1, b = 2, c = 3;changeV

2017-10-19 15:37:58 1840

原创 C语言结构体内含有数组,该结构体作为参数传递时需用指针,否则对数组的修改不会被记录

在C语言编程时,常常会定义结构体,而且结构体里面常常会有数组,比如如下所示:typedef struct {int data[MAX_HEAP_SIZE];unsigned int heap_size;}HeapType;    这是一个堆的数据结构,包含堆的元素(数组)和堆的大小。在建大顶堆时会给建堆的函数传递参数,建堆函数如下:void Build_Max_He

2016-04-09 11:23:20 4769 1

推荐计算机读物

这里推荐了计算机专业的一些经典名著,希望大家能够受益。

2014-09-19

空空如也

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

TA关注的人

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