• 2024-09-19设计资料保存:372-基于XC7VX690T的万兆光纤、双FMC扩展的综合计算平台 RISCV 芯片验证平台
      一、板卡概述      基于V7的高性能PCIe信号处理板,板卡选用Xilinx 公司Virtex7系列FPGA XC7VX690T-2FFG1761C为处理芯片,板卡提供两个标准FMC插槽,适用于高性能采集、回放以及相关处理。通过连接不同的FMC子卡的方式,可实现不同形式的数据采集、回放、处理的功能模块。板
  • 2024-09-18设计方案:372-基于7VX690T的万兆光纤、双FMC扩展的综合计算平台 RISCV 芯片验证平台
    基于7VX690T的万兆光纤、双FMC扩展的综合计算平台RISCV芯片验证平台 一、板卡概述      基于V7的高性能PCIe信号处理板,板卡选用Xilinx 公司Virtex7系列FPGA 7VX690T-2FFG1761C为处理芯片,板卡提供两个标准FMC插槽,适用于高性能采集、回放以及相关处理。通过连接不同的FMC
  • 2024-09-16一个简单的交叉编译riscv的makefile脚本
    为了编写一个使用特定交叉编译工具链(在这个例子中是`riscv64-unknown-linux-gnu-`)来编译`hello.c`的Makefile脚本,你需要设置`CROSS_COMPILE`变量,并在编译命令中使用这个变量来指定交叉编译器的路径。下面是一个简单的Makefile示例:```makefile#定义交叉编译工具链的前缀CROSS_COM
  • 2024-09-15Ubuntu 18.04搭建RISCV和QEMU环境
    Ubuntu18.04搭建RISCV和QEMU环境  原文:https://blog.csdn.net/Eng_ingLi/article/details/135285200 前言因为公司项目代码需要在RISCV环境下测试,因为没有硬件实体,所以在Ubuntu18.04上搭建了riscv-gnu-toolchain+QEMU模拟器环境。安装riscv-gnu-toolchainriscv
  • 2024-09-10『QEmu』理解QEMU构建系统
    QEmu采用了一套由Kconfig发展而来的Domain-SpecificLanguage(DSL领域特定语言),和meson相结合。其特点是对于模块编译的依赖关系较为严格(QEmu文档自己说的),在大量不同种类的主板之间也可以对同样的模块采用同样的共享代码。对于开发者来说,一方面添加新的设备较为容易;另一方
  • 2024-07-18【efinix】 efinity Programmer里添加riscv的hex,Programner闪退
    问题在efinixefinityProgrammer里添加riscv的hex,Programner闪退分析1.某FAE提到可能hex文件有个小锁,应该是加密的问题变相解决方案使用【riscv-sapphire-ug-6.0.pdf77页】,CopyaUserBinarytoFlash(EfinityProgrammer)章节的方法,把FPGA程序和riscv的程序整合成一
  • 2024-07-17RISCV内核中断优先级/Priority
    一、讲解中断优先级分为抢占优先级和响应优先级。配置参数越小,则说明其优先级别越高。抢占:是指可以打断其他中断函数的属性。出现该属性时会出现中断嵌套;响应:是指抢占优先级相同情况下,则优先执行响应优先级高的中断;二、举例序号中断名称优先级1TMR1102TMR21
  • 2024-07-16一起学RISC-V汇编第3讲之寄存器
    寄存器是处理器中最常用的处理单元,RISC-V指令的操作数除了立即数就是寄存器。RISC-V指令集包含了多种不同类型的寄存器,用于不同目的和功能:对于rv32imafd架构而言,包含如下寄存器:通用寄存器:32个通用整数寄存器,分别标记为x0-x31,如果是fd扩展,还有32个独立的浮点寄存器,分别标记为f
  • 2024-07-12RISCV AIA (五) APLIC
     APLIC在RISC-V系统中,PLIC处理外部中断是通过线中断而非MSI(messagesignalinterrupt)的方式,当系统的hart不具有IMSIC时,hart本身不支持MSI,因此所有的外部中断必须通过PLIC。即使hart具有IMSIC,且大多数的中断使用MSI的方式,但有些设备还是以线中断的方式发出。特别是对于
  • 2024-06-03qemu 新增 machine
    下面以新增一个新的riscvmachine为例子进行说明新增Machine步骤修改Kconfighw/riscv/Kconfig修改configsconfigs/devices/riscv32-softmmu/default.mak新增Machine的编译文件下面两个文件参考的hw/riscv/sifive_e.c,并修改了一些源码,不然会有冲突,导致编译失败
  • 2024-04-10RISCV
    RISCVriscv通用寄存器riscv通用寄存器寄存器调用名字用途x0zero常数0x1ra返回地址x2sp栈指针x3gp全局指针x4tp线程指针x5-x7t0-t2临时存储x8s0/fp保存用寄存器/帧指针(配合栈指针界定一个函数的栈)x9s1保存用寄存器x10-x11a0-a1函数参数/返回值x12-x17a2-a7函数参数x
  • 2024-02-29Book-Riscv-XV6-Chap1
    操作系统接口–阅读xv6-riscv-bookXv6的时钟周期:定时器芯片两次中断之间的时间xv6作为一个简单的操作系统,利用一个“内核kernel”向其他运行中的程序提供服务的特殊程序,这个内核相当于连接了硬件和运行程序。每一个正在运行的程序可以称为进程,都拥有子集的包含指令、数据、
  • 2024-01-19riscv linker relaxations 是什么
    什么是linkerrelaxations由于链接时携带一些符号地址信息,可以执行一些编译时难以或者不大可能实现的优化。LinkerRelaxtion与传统编译时期的优化是不一样的,此优化发生在链接时。通常情况下,在链接时,改变代码的执行序列是有风险的,因为语义信息此时会丢失,链接器看到也仅是字节流
  • 2023-12-10riscv gnu编译器
    官网https://github.com/riscv-collab/riscv-gnu-toolchain编译器基于RISC-V交叉编译器包括32bit和64bit两种类型,其中每种类型又包括裸机版本(newlib)和动态链接库版本(linuxglibc)newlib./configure--prefix=/opt/riscvmakeglibc#默认仅支持64位target./configure--
  • 2023-12-09xv6 想到什么记什么
    xv6不同视频里安装了不同版本两个我都装了一个是xv6-public点进去是深大视频里配套的i386arch另一个是xv6risc-V就是另一个我参考的视频里 运行xv6用的QEMU是个linux上的模拟器xv6又是个unix变体简易版系统所以最终说起来这个系统是一个程序,跑在一个模拟器程序里,模
  • 2023-12-09学习riscv(1)安装tinyriscv的工具链
    因为毕设是CPU的低功耗设计,所以开始看cpu,打算还是先从这个tinyriscv学起,昨天把环境下好了,第一步是用git去clone代码,这个首先要下载git,然后在目标文件夹鼠标右键,选择“opengitbushhere”,再输入项目的url,就可以了。方法不难。b站有详细教程接下来是安装工具,我用的是wind
  • 2023-10-31mitos - xv6 for riscv
    参考:code:https://github.com/mit-pdos/xv6-riscvbook:https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdfnote:https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/
  • 2023-10-16milkv-duo启动流程分析:手动构建boot.sd
    目录上电测试制作boot.sd编译Linux内核multi.its上电测试在上一篇,我们构建了fip.bin。让我们继续用以前的boot.sd。我们插上电源,U-Boot2021.10(Oct152023-14:17:51+0800)cvitek_cv180xDRAM:63.3MiBgd->relocaddr=0x82435000.offset=0x2235000MMC:cv-sd@43100
  • 2023-10-15milkv-duo启动流程分析:手动构建fip.bin [2/2]
    手动合成fip.bin和boot.sd[2/2]编译FSBL编译FSBL是为了得到bl2.bin。注意到我们需要配置一些参数:ARCH?=ifneq($(originCROSS_COMPILE),commandline)ifeq($(ARCH),riscv)CROSS_COMPILE:=${CROSS_COMPILE_GLIBC_RISCV64}BOOT_CPU?=riscvelseCROSS_COMPILE:=${
  • 2023-10-07qemu搭建riscv的可调试环境
    qemu搭建riscv的可调试环境riscv工具链(网上大多数用Github直连的工具链,但是因为太大,download的时候老是出问题)选择使用Cross-compilationtoolchainsforLinux-Home(bootlin.com)进行下载,之后解压。bin目录下为可执行的工具链,将其添加到PATH中。qemuqemu压缩包下载
  • 2023-08-29RISCV-MINI cache小记
    该cache映射策略为直接映射,采用写回(writeback)方式。需要注意的细节在于cpu-cache通过mask信号判断访存是读还是写,显然mask全0时为读。下图FSM中省略了dirty会影响状态转移,比如WriteCache到WriteBack,当cache块为dirty时才会触发aw.fire(io.nasti.aw.valid:=is_dirty)。简单解释:
  • 2023-07-13RISCV处理器-存储器模型
    之前一直没怎么弄清楚fence以及fence.i指令,现在重新回顾一下。可选的原子性存储器指令扩展"A" FENCEfence指令用于顺序话其他RISCV线程、外部设备或者协处理器看到的设备I/O和存储器访问。在所有predecessor执行到fence前的任何操作前,处于fence指令后的successorset种的任
  • 2023-07-12riscv处理器——除法运算实现
    采用试商法实现除法运算,试商法的计算过程如下:1.每次除法运算至少需要33个时钟周期才能完成,用状态机来实现;2.主要需要判断并执行的指令有4种类:1wireop_div=(op_r==`INST_DIV);//有符号除法,结果为商2wireop_divu=(op_r==`INST_DIVU);//无符号除法,结果为商3wire
  • 2023-06-11RISCV Ubuntu Linux内核更换
    交叉编译内核#!/bin/bash#LINUXSRC=/root/linuxexportLINUXSRC=/keystone/linuxexportOUTPUT=/keystone/build/linux.build#exportCONFIG=/keystone/conf/linux64-defconfigexportCONFIG=/keystone/build/config-5.19.0-1012-genericexportCROSS_COMPILE=riscv64-u
  • 2023-05-10tinyriscv——gp寄存器/riscv-tests的变化
    在RISC-V中,gp寄存器是全局指针(GlobalPointer)寄存器,用于存储全局数据区(.data和.sdata段)的地址。在程序启动时,该寄存器会被设置为一个固定的值,通常为__global_pointer$的地址,表示全局指针的起始地址。在一些情况下,可以通过修改该寄存器的值来实现一些特定的功能。在常见的