- 博客(278)
- 资源 (9)
- 收藏
- 关注
原创 QEMU学习之路(5)— 从0到1构建Linux系统镜像
在Linux系统构建中,ISO文件的核心作用是将内核(vmlinuz)、初始内存盘(initramfs.img)和引导程序(如GRUB)等关键组件打包成一个可物理刻录(光盘/USB)或虚拟机加载的独立镜像。在initramfs目录新建init文件,它作为Linux 启动镜像(initramfs)中的 首个用户态进程(PID 1),由内核直接启动,承担着从内核过渡到用户空间的关键桥梁作用,主要任务是为后续系统启动准备必要的运行环境。
2025-04-04 20:33:30
760
原创 Visual Studio Code (VSCode) 使用 GDB 进行调试
通过以上步骤,你可以在 VSCode 中使用 GDB 调试 C/C++ 程序。确保正确配置和tasks.json,并安装必要的工具和扩展。
2025-03-02 14:22:41
1511
原创 QEMU学习之路(3)— Centos7上安装qemu-system-riscv64
确保你的系统已经安装了所有必要的依赖项,并且你有足够的权限来安装软件包。如果从源码编译,请确保你有足够的时间和有效的带宽来完成下载和编译过程,因为这可能需要一些时间。以上步骤会在您的CentOS 7系统上安装Python 3.9,并保留系统的Python 2不受影响。注意使用altinstall是为了避免覆盖系统默认的Python版本。
2024-08-31 23:53:47
920
原创 C++学习之路(1)— 第一个HelloWorld程序
C++在C语言的基础上添加了对面向对象编程和泛型编程的支持,在 20世纪90年代便是最重要的编程语言之一,并在21世纪仍保持强劲势头。C++继承了C语言高效、简洁、快速和可移植性的传统。C++面向对象的特性带来了全新的编程方法,这种方法是为应付复杂程度不断提高的现代编程任务而设计的。C++的模板特性提供了另一种全新的编程方法------泛型编程。这三件法宝既是福也是祸,一方面让C++语言功能强大,另一方面则意味着有更多的东西需要学习。
2024-08-05 00:11:28
782
原创 PCIe驱动开发(3)— 驱动设备文件的创建与操作
在 Linux 中一切皆为文件,驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对这个名为“/dev/xxx” (xxx 是具体的驱动文件名字)的文件进行相应的操作即可实现对硬件的操作。
2024-07-13 22:52:49
791
原创 QEMU学习之路(2)— 从零创建一个ARM64(aarch64)主机
参考教程: bilibili:05_QEMU PCIE 开发环境准备参考: VMware下Ubuntu18.04虚拟机的安装下载网站: https://download.qemu.org下载文件:qemu-4.1.0-rc5.tar.xz使用如下命令解压:然后进入解压后的目录打开加入 选项接着执行如下命令进行配置:然后开始编译:运行完后再执行如下命令:编译完成后我们新建一个自己的安装目录, 例如我们回到上一级,新建目录然后将刚才编译出来的如下文件复制到新建目录下:四、安装buildr
2024-07-07 11:28:54
860
原创 PCIe驱动开发(1)— 开发环境搭建
参考: VMware下Ubuntu18.04虚拟机的安装参考文章:QEMU搭建X86_64 + Ubuntu虚拟系统环境下载地址:https://old-releases.ubuntu.com/releases/20.04.5/ubuntu-20.04.5-live-server-amd64.iso创建一个空白虚拟硬盘用来安装系统下载好后使用如下命令解压:然后使用以下命令开始安装ubuntu20安装过程可参考: Ubuntu 无图形界面安装
2024-07-06 23:47:51
1032
原创 香橙派OrangePi AIpro上手初体验
通过查询香橙派官网可以了解到OrangePi AIpro的相关信息如下:OrangePi AIPro 开发板是香橙派联合华为精心打造的高性能AI开发板, 其搭载了昇腾AI 处理器,最高可提供 8TOPS 的INT8算力;目前收到的用于评测的OrangePi AIpro自带一个32GB的闪迪MicroSD存储卡,其中已经预装了Ubuntu系统,可以直接开机使用;
2024-05-27 23:22:04
1140
原创 SystemVerilog学习之路(9)— 枚举类型的随机化约束
SystemVerilog学习之路(9)— 枚举类型的随机化约束一、前言在SystemVerilog中我们经常用到枚举类型,同样的我们也会对其进行随机化二、代码编写代码如下所示:class transaction; typedef enum { SIZE_8BIT, SIZE_16BIT, SIZE_32BIT, SIZE_64BIT, SIZE_128BIT } burst_size_t; r
2022-05-21 11:47:06
1938
1
原创 Verilog学习之路(12)— 任务和函数
Verilog学习之路(12)— 任务和函数一、前言在VerilogHDL中提供了任务和函数,可以将较大的行为级设计划分为较小的代码段,允许设计者将需要在多个地方重复使用的相同代码提取出来,编写成任务和函数,这样可以使代码更加简洁和易懂。任务和函数的区别如下所示:二、任务如下为一个交通灯控制任务的实例:module traffic_tb; reg red, amber, green, clk; reg [2:1] order; parameter ON=1, OFF=0, RED_TI
2022-03-14 18:59:03
791
原创 UVM学习之路(6)— 基于MCDF的验证平台
UVM学习之路(6)— 基于MCDF的验证平台一、前言MCDF即多通道数据整形器(Multi-Channel Data Formatter)可以将多个通道是数据经过打包后以数据包的形式发送出去,其输入输出如下所示,其中输出的数据包的数据长度由寄存器设置。二、设计描述MCDF的设计结构如下所示其主要分为如下几部分通道从端(Channel Slave):接受输入的上行数据,然后存储到其FIFO中;仲裁器(Arbiter):选择从不同的FIFO中读取数据,然后将数据进一步传送至整形器(Form
2022-02-13 00:48:24
8204
2
原创 UVM学习之路(5)— 完整的UVM验证平台
UVM学习之路(5)— 完整的UVM验证平台一、前言一个完整的UVM验证平台还应该加入寄存器模型,对应的设计文件中也应该存在寄存器及其控制端口, 通过该控制端口可以配置DUT中的寄存器。二、设计模块设计文件添加寄存器模块后信号列表如下所示:寄存器列表如下所示三、验证环境基于UVM搭建的验证环境如下所示...
2022-02-12 13:01:46
4741
1
转载 CentOS 7的时间设置
Linux下使用timedatectl命令时间时区操作详解 timedatectl命令对于RHEL / CentOS 7和基于Fedora 21+的分布式系统来说,是一个新工具,它作为systemd系统和服务管理器的一部分,代替旧的传统的用在基于Linux分布式系统的sysvinit守护进程的date命令。 timedatectl命令可以查询和更改系统时钟和设置,你可以使用此命令来设置或更改当前的日期,时间和时区,或实现与远程NTP服务器的自动系统时钟同步。 在...
2022-02-04 19:22:37
11843
3
原创 Verilog学习之路(11)—事件控制(时间延迟)
Verilog学习之路(11)—事件控制一、前言事件控制是为行为语句的执行指定触发事件的信号延迟方式。事件控制可以分为边沿触发事件控制和电平敏感事件控制。边沿触发事件控制方式是指在指定的信号变化时刻,即指定的信号跳变边沿才触发语句的执行,而当信号处于稳定状态下时则不会触发语句的执行。电平敏感事件是在指定的条件表达式为真时启动需要执行的语句。二、事件表达式一个事件表达式可以以三种形式出现:形式1: <信号名>形式2: posedge<信号名>形式3: neged
2022-01-23 21:14:48
7302
原创 Verilog学习之路(10)—仿真使用的系统任务
Verilog学习之路(10)—仿真使用的系统任务一、前言在Verilog HDL集成电路设计过程中,设计者完成RTL级描述后需要对设计进行设计确认。设计确认是设计者检查设计中是否包含缺陷的过程。设计确认可以通过仿真和验证来完成。仿真和验证能确保设计的完整性、可靠性、时效性以及先进性。二、display和write$display和$write是Verilog中两种主要的标准输出任务,这两个系统函数都用于将特定信息输出到标准输出设备且语法格式相同。其中不同的是,$display带有行结束字符,即自动
2022-01-15 22:40:19
1822
原创 Verilog学习之路(9)—计数器和移位寄存器
Verilog学习之路(9)—计数器和移位寄存器一、前言计数器是应用最广泛的逻辑部件之一。计数器可以统计输入脉冲的个数,具有计时、计数、分频、定时、产生节拍脉冲等功能。计数器的种类繁多,根据计数器中触发器时钟端的链接方式,分为同步计数器和异步计数器;根据计数方式,分为二进制计数器、十进制计数器和任意进制计数器;根据计数器中的状态变化规律,分为加法计数器、减法计数器和加/减计数器。移位寄存器可以用来实现数据的串并转换,也可以构成移位行计数器,进行计数、分频,还可以构成序列码发生器、序列码检测器等
2022-01-10 21:45:11
8100
原创 Verilog学习之路(8)— 时序电路的设计
Verilog学习之路(8)— 时序电路的设计一、前言时序逻辑电路的输出不仅与当前时刻输入变量的取值有关,而且与电路的原状态,即与过去的输入情况有关。时序逻辑电路的两个特点:时序逻辑电路包括组合逻辑电路和存储电路两部分,存储电路具有记忆功能,通常由触发器组成;存储电路的状态反馈到组合逻辑电路输入端,与外部输入信号共同决定组合逻辑电路的输出。时序逻辑电路的结构框图如下所示:其中各部分代表的含义如下:X(x1, x2, …, xn)是外部输入信号,;Q(q1, q2, … , qj
2022-01-02 18:43:11
4846
1
原创 Verilog学习之路(7)— 数字加法器
Verilog学习之路(7)— 数字加法器一、前言数字加法器是一种较为常见的逻辑运算器件,被广泛用于计算机、通信和多媒体数字集成电路中。广义发加法器包括加法器和减法器,在实际系统中加法器的输入信号通常采用的是补码形式,因此就电路结构而言,加法器和减法电路是一样的,只不过输入信号采用的是补码输入。二、全加器如果运算考虑了来自低位的进位,那么该运算就为全加运算,实现全加运算的电路称为全加器。2输入1bit信号全加器的真值表如下所示, 其中A、B是两个加数,CI是来自低位的进位,SUM是相加的和,CO
2021-12-19 17:45:37
2530
原创 Verilog学习之路(6)— 组合电路的设计
组合电路的设计一、前言组合电路的特点是电路中任意时刻的稳态输出仅仅取决于该时刻的输入,而与电路之前的状态无关,组合电路没有记忆功能。在使用Verilog设计中组合电路的描述方法主要有四种:真值表、逻辑代数、结构描述、抽线描述。设计如下电路为例:设计一个3裁判表决电路,当两个或两个以上裁判同意时,判决器输出1,否则输出0。二、真值表真值表是对电路功能最直接和简单的描述方式,根据要求的功能,将三个输入端记为A、B、C,输出端记为OUT,可以得出真值表如下所示:ABCOUT
2021-12-19 14:35:56
2626
原创 Verilog学习之路(5)— Verilog HDL的结构化建模
Verilog HDL的结构描述方式一、前言结构描述方式就是将硬件电路描述成一个分级子模块系统,通过逐层调用这些模块构成功能复杂的数字逻辑电路和系统的一种描述方式。根据所调用子模块的不同抽象级别,可以将模块的结构描述方式分成如下三类:模块级建模:通过调用由用户设计生成的低级子模块来对硬件电路结构进行说明,这种情况下由低级模块的实例组成。门级建模:通过调用Verilog HDL内部的基本门级元件来对硬件电路的结构进行说明,这种情况下模块将由基本门级元件的实例组成。开关级建模:通过调用Verilog
2021-12-18 22:42:55
2906
1
原创 Verilog学习之路(4)— Verilog HDL的程序设计语句
Verilog HDL的程序设计语句一、连续赋值语句连续赋值语句通常用来描述组合逻辑电路,连续赋值的目标类型主要是标量线网和向量线网两种,标量线网如“wire a,b;”,向量线网如“wire [3:0] a,b”。连续赋值语句还可分为显示赋值语句和隐式连续赋值语句。如下所示为显示连续赋值语句: wire a,b,c; assign c = a & b;如下所示为隐式连续赋值语句: wire a,b; wire c = a & b;如上所示,我们可以看到,显示连续赋值语
2021-12-18 15:25:54
3525
原创 UVM学习之路(4)— 基本的UVM验证平台
UVM学习之路(4)— 基本的UVM验证平台一、前言一个基本的UVM验证平台包括如下所示内容:其组织结构如下所示本次使用的源码修改来自张强的《UVM实战》第二章节的源码二、uvm_testuvm_test是整个UVM的树根,本次搭建的平台中有3个不同实现的uvm_test1、 使用default_sequencecase0.sv代码如下class case0_sequence extends uvm_sequence #(transaction_dut); transactio
2021-12-13 22:19:33
7172
原创 Verilog学习之路(3)— Verilog HDL的基础知识
Verilog学习之路(3)— Verilog HDL的基础知识一、语言要素1、空白符空白符包括空格符(\b)、制表符(\t)、换行符和换页符。空白符使代码看起来结构清晰,阅读起来更方便。在编译和综合时,空白符被忽略。VerilogHDL程序可以不分行,也可以加入空白符采用多行编写。initial begin a=3'b100; b=3'b010; end和如下代码是一致的initial begin a=3'b100; b=3'b010;end2、注释符Verilog HDL中运行
2021-11-27 18:27:33
8965
原创 Verilog学习之路(2)— Vivado 2018.3下载安装和HelloWorld
Vivado 是Xilinx的FPGA设计工具,
2021-11-27 17:27:27
15460
5
原创 Verilog学习之路(1)— Quartus II 13.0下载安装和HelloWorld
Verilog学习之路(1)— Quartus II 13.0下载安装和HelloWorld一、前言Quartus II是Altera的FPGA设计工具,二、安装包下载百度云链接地址:https://pan.baidu.com/s/1VtDVKaiUDgbZI1vICS9jlw 提取码:ac9r其他相关资料下载:http://www.corecourse.cn/forum.php?mod=viewthread&tid=27539三、软件安装安装包下载好后解压点击进入【Quartus
2021-11-26 23:11:58
55822
49
原创 UVM学习之路(3)— 基于UVM的第一个Hello程序
UVM学习之路(3)— 基于UVM的第一个Hello程序一、前言UVM( Universal Verification Methodology),是一个标准化的用于验证设计的方法学。其正式版是在2011年2月由Accellera推出的, 得到了Sysnopsys、 Mentor和Cadence 的支持。 UVM几乎完全继承了OVM, 同时又采纳了Synopsys在VMM中的寄存器解决方案RAL。 同时, UVM还吸收了VMM中的一些优秀的实现方式。 可以说, UVM继承了VMM和OVM的优点, 克服了
2021-10-23 19:37:31
5029
6
原创 UVM学习之路(2)— 使用VCS+Verdi进行仿真调试
UVM学习之路(2)— 使用VCS+Verdi进行仿真调试一、前言Verdi最初是由Novas Softwave公司设计的,后属于了SpringSoft公司,最终SpringSoft被Synopsys公司收购,Verdi正式属于Synopsys。Verdi可以调用第三方工具进行编译仿真产生波形文件并可以查看、可查看源代码对应的电路图,最强大之处在于可以在源代码、原理图、波形图和状态图之间进行即时跟踪,协助工程师debug。原文参考文章 :Linux下VCS与Verdi联合仿真简易教程及例子示范
2021-10-23 16:38:59
13061
5
William Font.icls
2020-04-19
3_QSPI_FLASH.rar
2020-01-12
SPILCD.rar
2020-01-10
1_UART_DMA.rar
2020-01-04
STM32L431RXT6_LED_KEY_delay_USARTrxtx.rar
2020-01-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人