自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 资源 (7)
  • 收藏
  • 关注

原创 UVM driver和monitor中阻塞和非阻塞

UVM中driver为什么是非阻塞赋值?monitor中为什么使用阻塞赋值?不同的clock event区别

2023-10-16 14:22:07 549

原创 SystemC的调度器

SystemC evaluate update

2023-08-03 20:35:29 1124 1

原创 SystemVerilog scheduler

verilog 作为一种 HDL (Hardware Description Language) 用来描述电子硬件的结构,SystemVerilog 是在 verilog 基础上扩展而来的,它不仅可以用来描述电子硬件,新增的扩展主要用于 verification,称为 HVL(Hardware Verification Language)。

2023-08-03 19:38:05 603

原创 VCS编译进阶-lint

vcs 中 -lint 可以在编译期间查找部分代码问题,辅助完成一些代码clean工作,利用它能在早期纠正代码中的一些问题。

2023-06-15 10:01:52 1170

原创 Synopsys工具简介

因此,Saber可以对复杂的混合系统进行精确的仿真,仿真对象不同系统的仿真结果可以同时获得。Taurus-Workbench是一个用来仿真半导体制造工艺和预估产品特性的虚拟IC工厂,它提供的仿真管理和数据管理使得工程师能够容易并且有效的预估产品特性,适用于:实验设计、统计分析、画图、可视化、优化和辅助工程师浏览、精炼和设计重心调整,Taurus-Workbench是一个开放的环境,它不仅可以集成Synopsys的TCAD工具,而且可以集成第三方的工具和模拟器,另外支持通过网络的并行处理,可以大大提高速度。

2023-06-06 18:21:58 1554

原创 组合逻辑基本电路

组合逻辑电路由基本逻辑 NAND、NOR 或 NOT 门组成,它们“组合”或连接在一起以产生更复杂的开关电路。这些逻辑门是组合逻辑电路的构建块。组合电路的一个例子是解码器,它将输入端的二进制代码数据转换为多条不同的输出线,一次一条在其输出端产生等效的十进制代码。组合逻辑电路可以非常简单或非常复杂,任何组合电路都可以仅使用 NAND 和 NOR 门来实现,因为它们被归类为“通用”门。1. 布尔代数——这形成了代数表达式,显示逻辑电路对每个输入变量(真或假)的操作,导致逻辑“1”输出。

2023-01-28 16:23:51 286

原创 VCS 工具简要说明

VCS 仿真使用汇总

2023-01-10 15:16:52 2304 1

原创 systemctlm-cosim-demo环境搭建

QEMU 和 systemc model 协同仿真验证环境。

2022-11-30 11:48:02 1276

原创 git使用杂记

git 使用杂记

2022-11-29 16:52:38 426

原创 docker使用简要

docker简单使用场景记录,无原理说明

2022-11-24 20:35:43 397

原创 外设直通技术-intel VT-d

虚拟化中外设虚拟化虚拟化的目标是仿真整个的计算机,从计算机资源角度可以分为CPU虚拟化,内存虚拟化,中断虚拟化,设备虚拟化几个基本的组件,下面主要是看一下设备虚拟化中的外设直通场景下的一些技术实现方式。设备虚拟化通常有几种模型:软件仿真和设备直通。其中软件仿真可以细分为两种:仿真真实的硬件、专门为虚拟化设计的外设,前者的典型设备有网卡e1000,虚拟GPU VGA,后者的设备主要是标准的virtio系列设备:virtio-blk, virtio-net等。而设备直通是一种将物理设备呈现给虚拟机的方式,它

2022-05-21 15:31:19 3078

原创 虚拟机Secure Boot安全启动

概述Secure Boot 作为 UEFI 的一个选项,它可以被设置为开启或关闭。 Secure Boot 所需要的公钥证书被保存在计算机的主板的 FLASH 里面,FLASH 里面保存着 PK , KEK, db, dbx 的证书链。下面我们在虚拟机中使能Secure Boot功能,可以在虚拟机中实验,这样比较安全。工具以下工具是必不可少的:opensslefitoolssbsigntools在有些系统上 efitools 和 sbsigntools 无法直接获取,请从源码包编译,其中ef

2022-05-16 20:30:39 8500 2

原创 PCI软件接口

软件开发应知的PCI接口

2022-05-09 20:00:40 2177

原创 openeuler上虚拟化使用问题

硬件:KP920操作系统:openEuler-22.03-LTS-aarch64虚拟化安装必要组件qemu, libvirtd,edk2-aarch64, virt-manager,之后找个UOS的镜像开始体验一番。遇到几个小坑随手记录。问题:创建虚拟机时默认没有键盘、鼠标、触摸板设备,没有显示设备。问题:只添加VNC设备而没有键盘鼠标设备时,通过virt-manager交互时,整个鼠标无法从virt-manager 中出来了,任何的点击事件都无法触发。解决方法:virt-manager

2022-05-09 15:48:55 1381

原创 numa balance实现浅析

NUMA结构的系统上通过numa balance将task和它访问的内存放到相同的node上

2022-04-03 17:00:37 6488 1

原创 arm64的异常

arm64异常处理

2022-03-14 20:21:34 4764

原创 perf kvm

perf kvm可以在host中采样guest os的信息,看起来挺鸡肋,但是有很多实际用途。它不需要登录guest直接就能够采样guest信息,一般使用的场景:你没有guest的控制权,不能登录到guest中,所以没有办法采样guest中信息。guest已经无法响应用户动作,例如内核死锁或者panic了,系统已经异常了guest中没有网卡,无法通过ssh登录,也没有控制台终端在以上这些场景下使用perf kvm工具,这个工具需要做一些额外的动作,获得guest的符号表。内核符号表由两部分:vm

2022-03-05 16:06:07 1175

原创 内核中使用向量指令

为什么内核不使用向量指令来加速

2022-02-17 16:28:08 427

原创 qemu tcg系列-概览

QEMU TCG linux-user翻译过程浅析。target->IR->host翻译过程

2022-01-27 11:20:20 10162 3

原创 我的程序员书单

做linux之后的书单,有毒的已经过滤。android时代的书籍已经太久,放弃考古了

2021-12-18 23:09:22 5681

原创 龙芯虚拟化使用手册

4000 kvm虚拟化使用手册: http://doc.loongnix.cn/web/#/30?page_id=56loongarch kvm虚拟化使用和优化手册: http://doc.loongnix.cn/web/#/729?page_id=3887

2021-10-22 16:08:21 1119 5

翻译 virtio系列-packed virtqueue

virtio packed virtqueuespilt virtqueue因其简约的设计而备受欢迎,但是它有一个基本的问题:avail, used ring 是分离的,cpu cache miss的概率比较大,从硬件角度来看意味着每个descriptor的读写操作都需要几个PC事务。packed virtqueue通过将三个ring合并到一起来改善这个问题.不过这种方式看起来非常复杂,远不如split virtqueue简约。在split版本中如果认识到在获取driver提供的数据之后device可以丢

2021-09-09 21:15:51 3829 12

原创 virtio系列-split virtqueue数据流

virtio split virtqueue数据流基本概念解释buffers和notifications:一个virtqueue的buffer是由guest来分配,host来消费的,host可以读和写这些buffer。一个buffer只能是只读或者只写的,但是不能读和写同时存在。buffer的描述符可以是通过指针链接起来的,即indriect descriptor,通过将消息扩展会更加方便,例如在一个buffer中放入和2000字节的数据和使用两个1000字节的数据buffer存放效果是一样的。

2021-09-09 20:47:24 1770

原创 virtio系列-规范解读

virtiovirtio 是一种 I/O 半虚拟化解决方案,是一套通用 I/O 设备虚拟化的程序,是对半虚拟化 Hypervisor 中的一组通用 I/O 设备的抽象。提供了一套上层应用与各 Hypervisor 虚拟化设备(KVM,Xen,VMware等)之间的通信框架和编程接口,减少跨平台所带来的兼容性问题,大大提高驱动程序开发效率。历史背景qemu支持多种设备,例如网卡有e1000,virtio等,其中e1000属于全虚拟化设备,它模拟了一个真实的硬件设备,提供的访问接口完全遵循硬件手册,当虚拟

2021-09-09 19:42:57 2584

原创 qemu coredump配置

ulimit -c unlimitedsysctl -w kernel.core_pattern=/var/crash/core-%e.%p修改/etc/libvirtd/qemu.confmax_core = “unlimited”systemctl restart libvirtd

2021-06-21 10:27:42 763

原创 qemu的bridge和nat模式

qemu使用brige模式创建tap和bridge设备tunctl -t tap1 #创建tap网卡brctl addbr br0brctl addif br0 tap1brctl addif br0 enp0s3f0 #将tap和物理网卡全都挂接在bridge上ip addr add 192.168.0.10/24 dev br0ip link set tap1 upip link set enp0s3f0 upip link set br0 uproute ad

2020-12-15 19:40:31 4907 3

原创 Makefile 中命令执行中的进程关系及返回值检查

Linux的静态库是以.a结尾的,要连接静态库有两种方法,一种是在编译命令最后直接加上库路径/库名称。例如你的库在绝对目录/lib/libtest.a下面方法一:你就可以这样来编译$(CC) $(CFLAGS) $^ -o $@ /lib/libtest.a方法二:你可以用-L制定库的目录,用-l指定库的名称。(是一起用的-L -l)例如库的名称为libtest.a 那么就用-ltest$(CC) $(CFLAGS) -L/lib $^ -o $@ -ltest.a注:-ltest要放在-

2020-12-10 23:55:20 2238

原创 linux Intel a370/AC9560 driver

issuewhen I install ubuntu 16.04 and in system setting can’t open wireless, no wireless network interface.Enviromenthardware: Lenovo Y7000Network: Intel A370os: ubuntu 16.04HOWTOFirst I switch to Windows System and search wireless hardware info and

2020-12-05 23:12:23 1314 3

原创 gdb调试笔记

官方文档:断点查询断点信息:info b设置断点b *0x123456 // b *addressb main //b funcb test.c:100 //b filename:line取消断点disable 1 //取消断点,不会触发断点del 1 //删除断点信息断点触发时自动执行命令commands 断点 断点 //选择断点列表,可以是多个。。。 //执行命令,当为空时表示删除断点触发时执行的命令。ends符号加载...

2020-09-29 09:24:18 1724 1

转载 mips汇编中的.set伪指令

在mips中.set xxx是一条伪指令,它指示汇编器如何处理之后的汇编代码,典型的有以下几种:.set push --> save all settings.set reorder/noreorder --> let/don't let assembler reorder instructions.set at/noat --> let/don't let assembler use the register $at in instruction aliases (li,la, e

2020-09-21 16:39:01 2675

原创 qemu monitor

QM(qemu monitor)是一个能够和QEMU模拟器进行交互的工具,通过QM能够完成查询虚拟机的内部状态,进行设备的热插拔,虚拟机的迁移/备份/快照等功能。而QMP(Qemu Monitor Protocol)是一种基于JSON格式的传输协议,定义了与虚拟机的交互规范,底层支撑了QM的实现。一般手工维护大部分都是用QM,而做批量维护或者二次定制就需要基于QMP进行封装。有多种方法使用QM/QMP,一般主要通过tcp和unix socket。通过TCP使用QM/QMP使用-monitor添加QM相

2020-09-19 10:55:15 2198

原创 linux hook方法整理

在计算机中,基本所有的软件程序都可以通过hook方式进行行为拦截,hook方式就是改变原始的执行流,下面简要分类linux系统下的各种hook方式,主要有三类:修改函数指针,直接修改指令,利用系统提供的注册机制.函数指针hookC语言的一项强大的功能就是指针,指针代表一个地址,而函数指针就是指向一个函数地址的指针,通过函数指针来指向不同的函数地址控制执行流.一般这类函数指针存在于软件运行的整个周期中,要实施这类hook首先就是找到关键的函数指针,之后就和普通的指针修改一样进行改变就OK.函数指针的使

2020-08-20 15:16:49 5425

原创 ubuntu中go eclipse环境搭建

ubuntu下安装go:apt install golang-go默认安装在/usr/local/go下,自带了gofmt工具go开发IDE:https://www.runoob.com/go/go-ide.htmlgo插件直接使用goeclipse的官方教程:https://github.com/GoClipse/goclipse/blob/latest/documentation/Installation.md#installationStart Eclipse, go to Help -

2020-08-19 14:25:45 54

原创 linux应用层内存统计

在内核中有很多的机制:KASAN,slab debug等,在应用层也有很多的优秀的工具:valgrind, ASAN,tcmalloc, glibc memcheck等。这里不讲这些已知的方案,只总结一下基于glibc的内存debug方法,主要分为两大类:一种是需要修改api名称,例如将malloc改成debug_malloc,另外一种不需要修改api名称。

2020-07-06 23:41:20 533

原创 变长参数va_list va_start va_arg va_end

对于int printf(const char *format, ...);这种变长参数,需要使用va_list va_start va_end va_arg来访问参数。下面是一个tutorialspoint 的一个使用demo,示范如何使用这几个接口#include<stdarg.h>#include<stdio.h>int sum(int num_args, ...) { int val = 0, i; va_list ap; va_start(ap,

2020-06-29 16:34:16 4416 1

原创 静态编译文件是否真的到处可运行

这里只讨论一个问题,基于x86_64的静态编译文件是否真的到处可运行?例如在centos上静态链接一个程序是否在ubuntu、suse等linux发行版上运行毫无障碍,这个时间维度也不能毫无边界的扩散,运行的条件是内核支持ELF三种格式,在这讨论0.11版内核完全没有意义。首先一个简单的hello world运行大概率是没有任何问题。一个静态链接程序的排布,我们通过一个简单的helloworld程序来看一下它的链接过程:gcc hello.c -static -o hello -v...... /

2020-06-25 01:39:13 1084

原创 linux虚拟文件系统-文件的打开

文件打开的过程主要有两件事,确认文件是否存在,文件存在建立fd,file,dentry,inode,address_space的关联关系dentry的hash管理,加速查找,rcu锁无dentry之后的文件查找,inode的lookup关联各种对象软链接文件的处理…和.的处理挂载点的处理fd和file的映射关系文件的关闭简单的关闭文件释放open flag的作用O_CLOEXEC...

2020-06-20 03:44:48 763 1

原创 linux虚拟文件系统综述

Linux延续了Unix的一个哲学观点:一切皆文件,应用看到的所有对象都是文件,里面除了socket不那么典型之外所有都是文件。而实际情况非常复杂,内核管理着非常多的设备:字符设备、块设备、网络设备,还支持许多类型的文件系统:ext2、ext3、ext4、fuse、ntfs等,另外还有很多的伪文件系统:proc、devfs、sys、debugfs等,特殊的节点类型:netlink、notify、epoll等。没有什么是不能通过增加一个抽象层解决的,VFS就作为linux中的这一抽象层完成了一切皆文件的哲学观

2020-06-16 20:24:56 301

原创 linux内存管理-反向映射

为什么需要反向映射正向映射是通过虚拟地址根据页表找到物理内存,反向映射就是通过物理地址找到哪些虚拟地址使用它。应用场景:页面回收compaction匿名页的反向映射文件页的反向映射struct anon_vma {}struct anon_vma_chain}...

2020-06-11 11:16:06 1495

原创 ELF中模块间数据引用的重定位

在模块中进行各类数据引用的方式总共分有:模块内数据、函数访问,模块间数据、函数访问,其中模块内的访问在链接时就已经决定了他们的相对偏移,在运行时不再关心这部分的内容,而模块间访问相对就比较复杂了。为了复用物理内存,发明了PIC/PIE技术,将数据和指令分开GOT和PLT stub,这样重定位代码只需要修改GOT的数据部分就可以访问正确的函数了,ELF的PLT和GOT分析了模块间函数访问过程中的lazy bind机制。http://www.qnx.com/developers/docs/qnxcar2/i

2020-06-08 23:43:08 365

Android应用程序开发宝典

Android应用程序开发指南 飞凌嵌入式 让嵌入式开发融入移动互联时代 TE/OK6410

2012-03-01

人体感应智能开关的设计方法

只是一个关于人体感应智能开关的设计方法,说的比较笼统但是思想已经表达出来了

2011-09-05

51单片机串行口讲解

51单片机的串行口实例讲解,主要是一个例子,适合初学者观看

2011-08-27

详细的关于1602的资料

这是一个关于液晶显示屏1602的资料,有引脚和内存分配

2011-08-04

74hc138的英文资料

这是一个关于我们常用的74hc138芯片的英文资料,

2011-08-04

MAX232单片机的c语言程序,适合初学者

这是一个描述关于c语言的串口通信的单片机程序,适合初学者,了解每一步的过程

2011-07-17

matlab命令大全集

这里是好多的matlab命令概括,不懂的可以下载下来每日记住,打印出来更好

2011-04-09

空空如也

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

TA关注的人

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