自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Cache Stashing

Cache stashing is theability of an external agent to request that a line is brought in (or stashed) to a cache in the cluster. Cache stashing can be performed over the ACP interface, or the CHI master interface. Stash requests can target the L3 cache, or

2022-08-21 09:45:03 1191 1

原创 Mac 无法访问github

第一步:打开 访达文件夹第二步: command + shift + g 搜索,输入 /private/etc/hosts 找到 hosts 文件第三步:编辑修改(修改之前需要备份),输入http://github.com 204.232.175.94 http://gist.github.com 107.21.116.220 http://help.github.com 207.97.227.252 http://nodeload.github.com 199.27.76.130

2022-05-22 21:49:40 2098 2

原创 MAC配置 chisel3环境运行FIRRTL

1. Mac 安装 homebrew参考:Mac os 解决brew找不到问题_简单同学的博客-CSDN博客2. 安装 Scala可以从 Scala 官网地址 Install | The Scala Programming Language 下载 Scala 二进制包,本教程我们将下载 2.13.0版本,如下图所示: 然后将下载的安装包解压,放到/usr/local目录下,打开.bash_profile,添加如下变量:source .bash_profile 后输入scala - version打印出如

2022-05-22 20:26:52 952

原创 Mac系统安装JDK1.8适配chisel3

概述这篇文章主要为在MAC苹果系统下安装JDK1.8并配置系统环境变量。用来适配chisel3的使用。主要分为以下步骤:到Oracle官网下载JDK1.8安装包。 打开获取到的安装包按步骤安装到系统上。 配置系统的环境变量。 验证JDK1.8是否安装成功。到Oracle官网下载JDK1.8安装包官网下载链接,找到以下图:选择接受证书协议,然后选择对应的Mac OS X一栏下载SDK,这里我说下,下载sdk必须要登录才可以下载,我这里点击接受协议,并注册了账号:...

2022-05-22 19:31:18 949

转载 Mac os 解决brew找不到问题

Mac OS

2022-05-21 17:29:44 6580 3

原创 Linux查看文件和文件夹大小

1. 查看目前所有文件系统的可用空间及使用情形df -h2. 查看文件或文件夹的磁盘使用空间du -h --max-depth=1 your_dest_dir注意,du -h --max-depth=1 your_dest_dir只会返回目标文件夹和目标文件夹下首层文件夹的大小,不会返回更深层的文件夹的大小,也不会返回文件的大小。要想返回更深层的文件夹的大小,可以设置--max-depth为更高的数值,或者干脆取消--max-depth参数,这样它就会返回目标文件夹下所有子文件夹的.

2021-08-09 15:28:20 767

原创 Low Power设计中的Retention技术

常规的Low Power设计,都会用到CLK Gating,在模块不工作的时候,关掉CLK。如果对功耗要求更高,则可以使用Power Gating,在模块不工作的时候,直接断掉模块供电。但是有一个问题:Power Gating确实更省电,但是关掉供电之后,模块想重新工作,就得重新上电。从重新上电到电源稳定,然后再恢复CLK(有的要重新起振PLL),会有很大的delay。而且,采用Power Gating断电之后,模块的信息和数据都会丢失。重新运行必须重新配置。有没有办法既能省很多电,又能够快

2021-08-06 11:43:25 1472

原创 ARMV8体系结构简介:exclusive操作例子

之前,提到了为什么要引入exclusive操作。ARM对于exclusive操作,新增了exclusive指令。下面以一个例子,来说明下,这个是如何工作的。以以下代码进行说明,标准的抢锁代码:线程0执行LDXR指令,exclusive的load操作,读取锁状态。此时线程0的monitor状态变为exclusive状态。当线程0执行STXR指令,exclusive的store操作,此时monitor状态是exclusive状态,因此store可以成功,W2的值被更新为0。当线程0的monito

2021-06-03 10:10:20 1314 1

原创 ARMV8体系结构简介:exclusive monitor

为了支持exclusive操作,硬件会增加exclusive monitor来支持。一、exclusive monitorexclusive monitor分为2类:local monitor: 实现在cpu内部,针对cacheable属性地址进行监测global monitor:实现在cpu外部,针对non-cacheabal属性和device属性地址进行监测从上图,能够看出local monitor和global monitor所处的位置。每个cpu,均有一个local monito

2021-06-03 10:09:43 1388

原创 ARMV8体系结构简介:exclusive操作的引入

AMRv8架构中对于A64,提供了如下的一些exclusive指令,用来支持exclusive操作。那为什么,arm在加入exclusive指令呢?加入这个,主要是为了解决多核情况下,锁的竞争问题。在软件层面,对于共享资源的访问,会设定一个锁,只有能拿到这个锁的程序,才能够访问共享资源,而没有拿到锁的程序,就不能访问该共享资源。拿到锁的程序,在访问完毕后,要释放锁,这样,其他的程序,才可以竞争该锁,从而访问共享资源。其伪代码如下://获取锁get_lock: ldr w1.

2021-06-03 10:06:23 628

原创 从Cortex-M33内核认识TrustZone

欢迎大家关注STM32L5课程。本期我们会介绍STM32L5的内核,Cortex-M33。它是ARM在MCU架构上增加了TrustZone这个安全扩展的一种内核实现。从这一期开始,我们进入技术部分的学习。L5快速入门,会由5期的介绍组成,会着重讲解L5的TrustZone安全扩展。除此之外,L5新增了内置SMPS,进一步提高平台的低功耗特性。Cortex-M33内核Cortex-M33,在以往传统的Cortex-M系列内核基础上最大的扩展是新增对TrustZone的...

2021-05-28 11:50:54 3070 1

原创 Breakpoint和Watchpoint的区别

Breakpoint: 设置断点比较直接,在某处停止Watchpoint: 观察点,即某个变量/表达式发生变化时,停止. 可扩展为变量被读/被写/被读or写时都停止

2021-05-25 14:55:07 3534

原创 A Beginner’s Guide on Interrupt Latency - and Interrupt Latency of the Arm Cortex-M processors

IntroductionAll experienced embedded system designers know that interrupt latency is one of the key characteristics of a microcontrolller, and are aware that this is crucial for many applications with real time requirements. However, the descriptions of

2021-05-17 16:27:19 237

原创 AMBA低功耗接口(二)P_Channel

为了满足复杂的power管理的需求,arm提供了P_Channel的低功耗接口,来满足这样的应用场景。一、P_ChannelP_Channel,提出了一个概念,叫power state transition,power状态的切换。在P_Channel的应用场景中,power的状态有很多,这个是实现自己定义的。power的各个状态之间,是可以切换的。2个最基本的状态: lower-power状态:在这个状态下,power消耗比较少,device处于低功耗状态(具有部分功能) ..

2021-05-08 15:14:36 1238

原创 AMBA低功耗接口(一)Q_Channel

AMBA提供了,低功耗的接口。用于实现power控制功能。目前,AMBA里面,包含2种低功耗接口。 Q-Channel:实现简单的power控制,如上电,下电。 P-Channel:实现复杂的power控制,如全上电,半上电,1/4上电等。 ARM引入这2种低功耗接口,是为了满足不同的应用场景下,对power的控制。在一些场景下,组件只有两种power状态,分别为power-up,power-down。因此对这种组件的power控制,只需要对其上电,断电即可。用Q-Channel,即

2021-05-08 15:12:11 836

原创 8.CPU体系架构-DMA

DMA本来不属于CPU体系架构部分的内容,只因为在开发中经常要用到其相关的知识,所以这里就其基本概念、工作原理、常见问题做一个总结。DMA概述DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问。DMA既可以指内存和外设直接存取数据这种内存访问的计算机技术,又可以指实现该技术的硬件模块(对于通用计算机PC而言,DMA控制逻辑由CPU和DMA控制接口逻辑芯片共同组成,嵌入式系统的DMA控制器内建在处理器芯片内部,一般称为DMA控制器,DMAC)。DMA内存访问

2021-04-30 15:53:16 1351

原创 8.CPU体系架构-MMU

在现在的工作项目中虽然没有使用到MMU功能,但MMU是较复杂的嵌入式操作系统运行的基础。例如Linux就不能够运行在没有MMU的ARM7处理器上,ucLinux就是为了适应没有MMU的处理器而对Linux进行的裁剪和修改。了解MMU基础知识,对理解编译链接,OS多进程,嵌入式系统架构等有很好的帮助。由于该部分内容涉及到MMU硬件、CPU架构、编译链接、OS等知识,学习难度较大。关键字MMU、TLB、多任务OS、地址空间、虚拟内存、虚拟地址/物理地址学习顺序问题的引出、虚拟地址和物理地址、虚拟内存..

2021-03-18 15:44:21 505

原创 7.CPU体系架构-Cache

Cache研究是转正答辩“MIPS BSP研究”中重要的一部分。只可惜当时时间紧,没有能够总结成文档。时隔将近一年,这次编写《CPU体系架构系列》,对于这一部分内容既是总结整理,又是温故知新。概述Cache是用来对内存数据的缓存。CPU要访问的数据在Cache中有缓存,称为“命中” (Hit),反之则称为“缺失” (Miss)。CPU访问它的速度介于寄存器与内存之间(数量级的差别)。实现Cache的花费介于寄存器与内存之间。现在 CPU 的 Cache 又被细分了几层,常见的有 L1 Cache

2021-03-18 15:43:12 575

原创 6.CPU体系架构-存储管理模型

MIPS32中的存储器模型被划分为四个大块,如下表所示:虚拟地址范围 命名 描述 0x0000,0000~0x7fff,ffff(0~2G-1) USEG must be mapped (set page table and TLB)and set cache before use 0x8000,0000~0x9fff,ffff(2G~2.5G-1) KSEG0 directly mapped(no need to set page table and TLB

2021-03-18 15:40:43 383

原创 5.CPU系统架构-函数的调用

在看过了上面的几节之后,在潜意识中你想记住的东西肯定很多了。这个时候,你需要静下心来休息一下在沉淀一下。"Now is a good point to take a break to let this information sink in."下面,我们就看看C语言撰写的程序,在不同的CPU架构下,生成的汇编语言是怎么样的,各有什么特点,这和前面介绍的各种CPU架构的知识是如何联系的。如果你觉得还不够,也很高兴一起来探讨一下在不同的CPU架构下,函数的调用时如何实现的,以及各有什么特点。反汇编文

2021-03-18 15:23:12 266

原创 4.CPU体系架构-指令系统

在学习了处理器的寄存器,寻址方式之后,终于到了指令系统。这可谓千呼万唤始出来。为什么让人如此激动呢,因为指令系统,或者叫做汇编语言,终于和程序员有点关系了。如果一个程序员调试BUG的时候,需要反汇编成汇编语言才得以解决,那么这个BUG肯定可属于千年老妖,该程序员也是万年成仙,具有了抓妖降魔的本事。当然了,仙界也分级别,要看本事有多大,就得看修炼有多深。我们这里所说的指令,就是指汇编语言。请注意区分在寻址方式中讲的机器指令。在这里呢,我们也不打算讲解每一种处理器(X86,MIPS,ARM)的指令集系...

2021-03-18 15:16:25 782

原创 3.CPU体系架构-寻址方式

在这里,主要是要说明什么是寻址方式。以及每一种CPU为什么使用这样的寻址方式。在说明什么是寻址方式之前,首先需要了解指令的构成,或者说指令的编码格式。指令编码格式一条指令(指的是机器码)由操作码(opcode)和操作数(operand)构成。操作数可以是1个,也可以是多个,甚至可以没有。操作码则是每一条指令都必须有。操作码表示该指令要做什么动作,例如跳转,加减等等。操作数则表示操作对象,操作数可能还会分为目的操作数和源操作数。操作数当然是一个数字,该操作数可以由多种来源,例如寄存器,存储器或者...

2021-03-18 15:11:56 425

原创 2.CPU体系架构-寄存器

CPU通用寄存器作为CPU体系架构的一部分,不可或缺。通用寄存器是CPU的算术逻辑运算操作最直接,频繁的位置。对于RISC体系的CPU,算术逻辑运算甚至只能够操作CPU通用寄存器中的数据。我们的目的不在于详尽的说明每一种CPU体系的寄存器情况,而在于将常用而且在不同CPU体系下容易混淆的寄存器做一个总结。下面就以8086处理器,ARM7内核,MIPS32内核为例说明。8086处理器通用寄存器8086处理器,是学习X86处理器的基础(严格意思上来说,8086处理器还不能够算作x86处理器。参考i...

2021-03-18 14:57:06 635

原创 1.CPU体系架构-RISC指令集和CISC指令集

最近一直比较疑惑,RISC指令集以及CISC指令集区别在哪些方面呢?趁机也就补充了相关资料,进行了一些总结。目前CISC(复杂指令集)的代表为X86(CISC),RISC(精简指令集)的代表为ARM、MIPS(RISC)还有新兴的RISCV指令集架构。很长一段时间,我关于处理器的相关知识,都是大学课程《微机系统原理》中的8086,甚至不涉及到x86处理器。在实际项目或者工作中,更多的却是ARM/MIPS等处理器。所以工作过程中,难免疑惑不解,张冠李戴。为什么很多基本知识在面对ARM和MIPS时不再适

2021-03-18 14:52:08 3029 2

转载 LLVM后端流程简介

1.Program Work Flow如果我们要编译opencl/cuda代码,并已经有了一些opencl/cuda kernel,以及在主机端运行的代码。主机端代码调用kernel。如下图所示: 在主机端,执行clang编译主机代码,这和正常编译类似,但是要链接opencl/cuda runtime。对kernel代码, 也会执行clang编译kernel 代码...

2021-03-03 15:12:03 1619 1

转载 Netlist与RTL仿真结果不匹配

综合后的网表功能与RTL不对1、VCS仿真选项+nospecify和+notimingcheck没打开,注意后仿(带sdf)时应该将+nospecify去掉2、有的模块没接上复位信号,用VCS仿真时rstn为高阻,功能可能正确;但是综合工具可能会把这些DFF的复位端口统统接0,这样输出就永远为0,进而就会被工具优化掉3、如果想要工具不优化上述constant型的寄存器,可以将compile_seqmap_propagate_constants变量设置为false4、RTL功能正确,综合后网表仿真存

2021-01-07 16:47:58 3811 1

原创 verilog 并列 连续赋值

当事件发生时,对于代码块中的非阻塞赋值语句,先计算所有非阻塞语句在【事件发生时刻】的值,(即以<=右端表达式的值),最后才把计算出的值赋给<=左边的变量。计算过程是以代码块中语句的书写顺序进行。虽有先后顺序,但<=右端表达式中变量的值均为【事件发生时刻】时的值。 1 2 3 4 5 6 always@(posedgeclk)begin//时间点:clk上升沿事件发生时刻 a<=1;...

2020-11-17 11:44:18 1909

转载 Verilog 1995 VS Verilog 2001

2001年3月IEEE正式批准了Verilog‐2001标准(IEEE1364‐2001),与Verilog‐1995相比主要有以下提高。1、模块声明的扩展(1)Verilog‐2001允许将端口声明和数据类型声明放在同一条语句中,例子如下:(2)Verilog‐2001中增加了ANSIC风格的输入输出端口声明,可以用于module,task和function。例子如下:(3)对于含有parameter的module,例子如下:2、带有初始化的寄存器类型变量声...

2020-11-16 09:43:13 1105

原创 VCS基本选项命令介绍

一:如何执行(编译执行) 1:编译链接生成二进制可执行文件  $vcs source_file[compile_time_options], 例如 vcs +v2k filename.v -debug_all (+2k指2001版本)  compile_time_options 可选项  A:基本可选项  -Mupdate :增量编译,再次编译时只编译改变的文件,提高速率    -R :run aft...

2020-11-12 10:18:36 12345

原创 1.Coresight简介

coresight是ARM公司提出的,用于对复杂的SOC,实现debug和trace的架构。该架构,包含了多个coresight组件。众多的coresight组件,构成了一个coresight系统。我们也可以根据coresight架构,实现自己的coresight组件。每个coresight的组件(component),都要遵循coresight架构的要求。1、 典型的一个coresight的环境以下是一个典型的coresight环境,包含了两个ARM core,一个DSP,和众多的cores.

2020-11-06 11:17:32 2156

原创 RISC-V 编译 Options

These command-line options are defined for RISC-V targets:-mbranch-cost=nSet the cost of branches to roughlyninstructions.-mplt-mno-pltWhen generating PIC code, do or don’t allow the use of PLTs. Ignored for non-PIC. The default is-mpl...

2020-09-30 16:35:53 612

原创 FSDB 波形文件产生以及截取

FSDB波形产生:FSDB:Fast Signal Database 相比较于VCD文件,FSDB文件的大小比VCD波形小5-50倍。各家的仿真器都支持在simulation的过程中,直接生成FSDB文件将VCD文件转换为FSDB文件的三种方式:1) vfast工具2) 在nTrace中使用File---Load simulation Tesults打开3) 在nWave中使用File---Open命令来打开 将Fsdb文件转换为Vcd文件: 1) fsdb2vcd工具,在.

2020-09-22 19:02:51 17002 2

原创 亚稳态发生的原因以及影响

1. 应用背景1.1 亚稳态发生原因 在数字电路系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。这段时间称为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是稳定到...

2020-09-11 10:07:45 8279 3

原创 CPU性能测试基准(EEMBC-CoreMark)

 在嵌入式系统行业用于评价CPU性能指标的标准主要有三种:Dhrystone、MIPS、CoreMark,其中CoreMark是一种新兴流行的嵌入式系统处理器测试基准,被认为是比Dhrystone和MIPS更具有实际价值的测试基准。今天痞子衡就和大家详细聊一聊CoreMark。一、EEMBC协会  在讲CoreMark之前,必须要先提EEMBC(Embedded Microprocessor Benchmark Consortium)即嵌入式微处理器基准评测协会,它是一个非盈利性组织,该组织目前为止

2020-09-09 16:51:24 7150

原创 VirtualBox 虚拟机里网络很慢的解决方法

VirtualBox 升级到6.0.4 后发现这个问题,Mac 主机网速很快,但虚拟机(ubuntu)里网络很慢,首先尝试多种不同的网络连接模式。都不能解决,再回头调试,发现域名解析很慢,问题定位在 DNS 问题。ping 一下百度,15秒钟才通。解决方法网络择默认的NAT 网络地址转换关键的在主机使用VBoxManage modifyvm命令修改natdnshostresolver和natdnsproxy两个参数。$ VBoxManage modifyvm "&...

2020-08-26 18:32:27 10287

转载 Windows10 与Oracle Linux之间文件夹共享及双向拷贝

记录下,Virtualbox下如何实现Windows 10和虚拟机之间文件夹共享及双向拷贝关于双向拷贝1.设置虚拟机为“双向”共享粘贴有的人反应只要设置双向粘贴就可以,但是我的不行,我还需要再给虚拟机安装一下增强功能。需要启动虚拟机,安装菜单项“设备”中的最后一项。安装完增强功能,注意要重启虚拟机,双向拷贝才被启用。关于文件夹共享情况一:Host操作系统:Windows 7Guest操作系统:Windows Server1.首先设置共享文件夹2.虚拟机中的菜单项中,设备-分配...

2020-08-26 18:29:57 734

转载 基于VirtualBox安装Ubuntu图文教程

Linux(Ubuntu)系统安装图文教程目录Linux(Ubuntu)系统安装图文教程 1. 基于Windows10系统的WSL(Windows Subsystem for Linux)安装Ubuntu 启用Linux 子系统功能 WSL中安装Ubuntu 2. 基于VirtualBox虚拟机安装Ubuntu 一. 下载安装VirtualBox 二、安装Ubuntu 创建虚拟机 安装Ubuntu 系统软件 安装VirtualBo.

2020-08-25 18:04:00 3231 1

原创 GVIM的默认初试界面大小、启动位置设置

打开GVIM安装目录下的_vimrc文件,在其中添加配置内容:winpos 100 100 ''设置初始界面位置set lines=25 columns=85 ''设置初始界面大小若要设置代码折叠功能,用空格键控制折叠开关:set foldenableset foldmethod=indentnnoremap @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')...

2020-08-25 10:56:20 3006

原创 基于RISC-V的软件编译脚本

脚本:设置RISC-V工具链riscv_set_env############## RISC-V ##############setenv RISCV_PATH /mnt/Software/FreedomStudio/SiFive/riscv64-unknown-elf-gcc-8.1.0-2018.12.0-x86_64-linux-ubuntu14/set path = ($RISCV_PATH/bin $path)set RISCV_ARCH = rv32imacset RISC

2020-08-20 16:06:52 672

原创 RISC-V riscv64-unknown-elf 编译C文件

riscv64-unknown-elf 为 RISC-V指令集的交叉编译工具以下环境在Liunx ubuntu x86_64 环境下进行,下面示例以生成32位文件为目标来操作使用。 screen // watch IO infos screen /dev/ttyACM0 115200 compile riscv64-unknown-elf-gcc, RISC-V platform's riscv tool-chain.// complie 64-bit fi...

2020-08-20 10:52:36 5390

空空如也

空空如也

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

TA关注的人

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