首页 > 系统相关 >中端知识和工具+字符设备和块设备+LMA和VMA+gdb查看系统调用+vim查看指定文件链接的autocmd+linux编辑二进制文件+特殊覆盖率定义

中端知识和工具+字符设备和块设备+LMA和VMA+gdb查看系统调用+vim查看指定文件链接的autocmd+linux编辑二进制文件+特殊覆盖率定义

时间:2024-02-17 16:22:54浏览次数:40  
标签:文件 查看 clock s0 li v0 WIDTH vim 时钟

中端知识和工具

https://www.cnblogs.com/yjw951012/p/12865036.html

抖动(Jitter)和偏移(skew)

信号周期的长度总会有一定变化,从而导致下一个沿的到来时间不确定。这种不确定就是抖动(jitter)。
因时钟线长度不同或负载不同,导致时钟到达相邻单元的时间不同,这个时间上的偏差就叫时钟偏移SKEW。

setup和hold的计算

建立时间(Setup time):触发器时钟上升沿到来前数据保持稳定的时间。
保持时间(Hold time):触发器时钟上升沿到来后数保持据稳定的时间。
image
△T=Tskew
T1=REG1检测到时钟后内部延时+组合逻辑延时最后到达REG2的时间
Tcycle=CLK的周期
Ts=数据在CLK2上升沿到达前维持的时间
Ts = Tcycle + Tskew-T1
Th=数据在CLK上升沿到达后维持的时间
Th = T1 – Tskew
如果Ts>setup time(触发器),Th>hold time(触发器)则数据能正常写入,由这个条件可以看出,Tskew与T1起着关键作用,而正之前所说如果使用全局时钟则Tskew会很小,可以忽略不计。
(引用链接的其它地方,存在矛盾,不能确定正确性,不再计算)

时间裕量Slack

关键路径(critical path):从输入到输出中延时最大的那条路径。
到达时间(arrival time):信号从参考的时间起到达某特点位置的时间。
需求时间(required time):信号到达的最晚的时间。

用需求时间减去到达时间得到的结果就是时间裕量(slack =required time- arrival time)。
如果是正数则说明路径延时满足需求,如果是负数则说明延时不满足。其中比较重要的时Hold Time Slack。

create_generated_clock

https://blog.csdn.net/weixin_37584728/article/details/116641215
在数字 IC 设计中,芯片中各个模块的工作频率可能都不太一样。因此有了时钟产生电路(clock generation)。这个电路含有时钟切换电路,时钟分频,倍频电路以及 clock reset 电路。通常我们通过 create_generated_clock 来定义时钟分频和倍频电路后的时钟。

create_generated_clock 是用来说明 generated clock 与 source clock 的相位(边沿)关系。同时根据 source clock 找到 master clock 以及 source clock 和 master clock 的关系, 最终会确定 generated clock 和 master clock 的相位(边沿)关系。

create_clock -period 10 CLK

create_generated_clock -name CLKdiv2 \
-divide_by 2 \
-source CLK \
[get_pins Udiv/Q]

set_clock_groups

Set Clock Groups (set_clock_groups)约束使您能够指定设计中的哪些时钟是不相关的。

字符设备和块设备

字符设备指那些必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。块设备可以按任意顺序进行访问,以块为单位进行操作,如硬盘、eMMC等。
Flash的编程原理都是只能将1写为0,而不能将0写为1。因此在Flash编程之前,必须将对应的块擦
除,而擦除的过程就是把所有位都写为1的过程,块内的所有字节变为0xFF。

LMA和VMA

https://blog.csdn.net/shenjin_s/article/details/88893762
LMA: 加载地址,如加载到RAM中等,在嵌入式中,有可能是在ROM中(这时LMA!=VMA)
VMA: 虚拟地址,就是程序运行时的地址,一般就是内存地址,如要把ROM中的数据加载到RAM中运行。
链接脚本默认是VMA地址,LMA地址通过LOAD ADDR指令中写死指定。

个人认为如果是操作系统已经启动的情况,LMA和VMA应该是操作系统管理copy过程,所反汇编出的elf文件具有lma和vma字段。如果是嵌入式那种,应该是裸核固件自己定死LMA和VMA的地址(只是写在link.ld文件,还要和汇编开头的固件配合),自己做copy。
https://blog.csdn.net/suz_cheney/article/details/24586745

典型的bootloader(加载器)搬运代码如链接所示:
https://www.cnblogs.com/ironx/p/4963018.html

点击查看代码
.extern    _fbss
  .extern    _ebss
  .extern     main
  .section ".boot","ax"
  .set noreorder
  .set noat
  .globl  _start
  .ent    _start

#define DRAM_BASE    0xa0000000
#define DRAM_SIZE    0x00001800

#boot start
_start:
    li    s0, 0xffff
    li    s1, 0xffff
    li    v0, 0xffff
    li    v1, 0xffff
    li    a0, 0xffff
        li      a1, 0xffff
    li    a2, 0xffff
    li    a3, 0xffff
        nop
#copy .data to dram
_copy_data:
    li    s0, _fdata
    li    s1, _edata
    li    v0, DRAM_BASE
1:    lw      v1, 0(s0)
    sw    v1, 0(v0)
    addiu    s0, 4
    addiu    v0, 4
    blt    s0, s1, 1b
#clear bss
clear_bss:
    li    s0, _fbss
    li    s1, _ebss
    li    v0, 0
1:    sw    v0, 0(s0)
    addiu   s0, 4
    blt    s0, s1, 1b
    nop
clr_num:
           li      v0, 0xa0001800
           move     sp, v0
    jal    main
    nop
loop:
    la    v0, loop
    j       v0
    nop
         .set    reorder
          .end    _start

gdb查看系统调用

https://www.kancloud.cn/wizardforcel/gdb-tips-100/146744
装载完毕后,马上使用catch syscall,重新跑一遍,随后在使用bt之前查看。
具体执行步骤如下:

  1. 编写c程序
  2. 编译c程序,带着-g选项。
  3. gdb装载程序
  4. 执行catch syscall
  5. 执行r
  6. 执行where
  7. 多次执行s
  8. 查看调用栈。

vim查看指定文件链接的autocmd

https://yyq123.github.io/learn-vim/learn-vi-49-01-autocmd.html

:autocmd filetypedetect * *.htm

linux编辑二进制文件

https://zhuanlan.zhihu.com/p/510387133

  1. xxd bin bin.dump 将file转换为可编辑格式,并输出到文件file.dump中。
  2. 使用编辑器编辑文件。
  3. xxd -r bin.dump > bin 修改即成功。

特殊覆盖率定义

大部分定义可以通过新建变量、函数的处理方式,实现覆盖率的各种自定义

onehot coverage

想要覆盖data域段里所有的onehot字段。
方法1:建立数组,然后创建bins。encoding本身的数字作为bins的值。

logic[WIDTH-1:0] encoding[WIDTH] ;
logic[WIDTH-1:0] data;
covergroup onehot_cg(int width);
	onehot_cp: covergroup data{
    //这里onehot的每个子bins中都是有效的场景<6'b1><6'b10><6'b100> ... <6'b10_0000>
		bins onehot[width] = encoding;  
	} 
endgroup
//encoding构造onehot数组 //需要在covergroup new之前定义好数组场景
onhot_cg = new(WIDTH);
foreach(encoding[i]) encoding[i] = 1<<i; 

power-of-two coverage

一个位宽为WIDTH的数,所有power-of-two状态,例如:4‘bit的数: 只关心:4’b0000, 4’b001?, 4’b01??, 4’b1???,其中?表示0/1/x/z任意值。
使用iff的方法,限定覆盖率和覆盖点:

bit[WIDTH-1:0] data;
covergroup power_of_two_cg(int width) with function sample(
  int idx , bit[WIDTH-1:0] value);
	//关键是mask如何计算
	coverpoint idx iff(
    value[idx]==1 &&
    ((value & ({WIDTH{1'b1}} << idx+1 )) == {WIDTH{1'b0}})
  ){ 
		bins all[] = {[0:WIDTH-1]};
	}
endgroup

duty cycle coverage

以1的个数作为覆盖率点位

bit[WIDTH-1:0] data;
covergroup duty_cycle_cg(int width) with function sample(int num);
	coverpoint num{
		bins all[] = {[0:width]};
	}
endgroup
duty_cycle_cg = new(WIDTH);
duty_ctcle_cg.sample($countones(data));

covergroup在class中不能定义成数组。

标签:文件,查看,clock,s0,li,v0,WIDTH,vim,时钟
From: https://www.cnblogs.com/bai2022/p/18017939

相关文章

  • Linux下查看文件的最后修改时间
    查看文件的详细信息statabc.txtFile:abc.txtSize:15Blocks:8IOBlock:4096regularfileDevice:fd06h/64774dInode:262168Links:1Access:(0776/-rwxrwxrw-)Uid:(0/root)Gid:(0/root)Access:2024......
  • .NET 8 中 使用 IFormFile 上传大文件报错解决方案
    前言:项目中使用IFormFile写了一个上传文件的api,测试小文件时正常,当上传大文件(几十兆)时如下报错:使用默认的http启动,如下提示使用IIS启动,如下报错Error:RequestEntityTooLarge原因:.NET官方出于安全考虑,对body的大小做了限制,超出了限制就会form转化失败,导致我们Reuest.......
  • nfs文件共享
    原理:NetworkFileSystem网络文件共享系统是一种分布式文件系统,允许网络中不同操作系统的计算机之间共享文件,通信基于TCP/IP协议簇,可以将远程的计算机磁盘挂载到本地,读写文件像本地磁盘一样操作。NFS在文件传送或信息传送过程中依赖于RPC(RemoteProcedureCall,远程过程调用)协......
  • pyinstaller系列之四:如何设置打包出来的文件的版本信息
    开始之前,先介绍.spec文件。.spec文件在执行打包命令后会自动创建。在执行命令的当前目录下应该就可以直接看到。以labelme.spec为例,长这个样子:#-*-mode:python-*-#vim:ft=pythonimportsyssys.setrecursionlimit(5000)#requiredonWindowsa=Analysi......
  • ant 引入cdn 和解决首页访问出现很多预加载文件的问题
    vue.config.jsmodule.exports={//解决首页访问出现很多预加载文件的问题chainWebpack:config=>{//移除prefetch插件config.plugins.delete('prefetch')//或者//修改它的选项://config.plugin('prefetch').tap(options=>{//......
  • DVWA-File Upload(文件上传漏洞)
    FileUpload文件上传漏洞是通过上传文件功能,上传一些可执行的脚本文件,且服务器端没有对上传的文件进行严格的校验或者在服务器端没有对上传的文件进行安全策略的配置,导致文件能成功上传到服务器上,且能够解析执行。DVWA-FileUpload的级别:--low--medium--high......
  • 【WPF】Xaml调用.resx资源文件,多语言翻译
    参考文章:https://blog.csdn.net/u010839204/article/details/103932044本文在该文章的基础上进行了“改进” 这个是基类库,基本处理均在基类库里面完成。须注意StringResources.resx名字和StringResourcesExtension前部分名字须保持一致。类 StringResourcesExtension:nam......
  • GMT转SHP文件
    GMT是GMT开源绘图软件的数据格式,SHP是常用矢量空间数据交互格式,使用GDAL的ogr2ogr工具可实现两者的相互转换。本文为源GIS为您分享GMT转SHP的操作方法。一、GMT简介GMT是开源免费的脚本命令绘图软件,无参数界面,常用于绘制科研二三维地图。其他数据格式后缀名*.gmt。GMT中文......
  • C++文件输入输出的简单实现(Debug)
    1.前言:        文件输入输出是个很有用的东西,有时比赛时要有:要求使用文件输入输出,还有时候……    遇到这种时间限制非常恶心的题目:手动测试会有误差……    文件输入输出是个很好的选择!2.写法:C    C语言的写法有点复杂,涉及文件指针,本文不......
  • DVWA-File inclusion(文件包含漏洞)
    FileInclusion,文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。PHP中包含文件函数介绍:Inc......