自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

申小白

小白工作室

  • 博客(102)
  • 资源 (5)
  • 收藏
  • 关注

原创 linux 下ARC的中断机制

virq (Linux的irq), generic_handle_irq参数是irq号,这个是linux 中断号,irq_to_desc()根据irq号找到对应的struct irq_desc。然后调用irq_desc->handle_irq处理对应的中断, 会先调用idu_cascade_isr的中断处理函数(一级中断函数),这是一个idu提供的标准中断,linux 正常流程会先进入Start_kernel 函数, 然后进入Init_IRQ进行初始化,后面会进入Irqchip_init函数,

2023-02-01 17:36:37 744 1

原创 PCIE 中断映射机制

在Pending Table中,一个Entry由64位组成,其中每一位与MSI-X Table中的一个Entry对应,即Pending Table中的每一个Entry与MSI-X Table的64个Entry对应。基地址指示寄存器,该字段存放MSI-X Table所在的位置,PCIe总线规定,MSI-X Table存放在BAR空间中,该寄存器指示使用BAR0~BAR5寄存器中的哪个空间存放MSI-X Table,该字段由3位构成,3’b000 ~ 3’b101分别对应BAR0 ~ BAR5。

2023-01-16 13:09:34 2693

原创 linux 下对SSD 进行读写测试

需要注意, linux 内部有cache 机制, 这会导致它在寻找磁盘之前到磁盘缓存寻找的方式。如果它发现该资源在缓存中,则该请求不会发送到磁盘。如果我们清理缓存,磁盘缓存就起不到作用了,系统会到磁盘上寻找资源。用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。2:释放dentries和inodes。0:不释放(系统默认值)

2022-09-15 15:20:15 2101

原创 linux下nvme各文件的含义

将/dev/nvme0n1p1 挂载到 /udisk 上。分别用做EFI启动分区、linux根分区,和swap分区。分别挂载于/boot、/根目录、swap交换分区,文件系统类型为vfat、ext4、swap,nvme0n1是你的ssd硬盘的主存储器。nvme0是你的ssd硬盘的主控芯片,然后,通过/udisk 来访问ssd。分区表类型为GPT。

2022-08-23 11:41:58 9555

原创 U-boot下进行gdb 调试

1、编译选项设置添加调试选项-g 保留调试信息,否则不能使用GDB进行调试。例如,对test.c 文件进行调试编译test.c :int main(){ return 0;};gcc test.c -o test -g在 u-boot 中需要在Makefile 中打开 -g 编译选项生成的debug 信息如下, 可以通过 readelf -S u-boot|grep debug来查看。其中 .debug_xxxx 存放的就是调试信息, .rela.debug_xxxx 是记

2022-05-13 14:35:34 1800 2

原创 UAC协议讲解

一、简介UAC是USB Audio Class的缩写,有时也叫UAD,UAD是USB Audio Device的缩写。UAC/UAD定义了在USB规范下实现音频的设备的实现和控制功能,这些功能包括不仅音频数字部分的,也包括模拟部分。这些音频数据(模拟和数字)和用于直接控制音频环境的功能,如音量和音调控制。这个音频设备类不包括操作与音频数据的复制,如磁带传输机制或CD-ROM驱动器控制。UAC 目前的发展已经经历了1.0 ,2.0 到现在的3.0.win10目前只支持到UAC2.0注意:UAC3.0

2022-02-17 17:56:43 12102 1

原创 FAT32详解

FAT32详解1. FAT32文件系统由DBR及其保留扇区,FAT1,FAT2和DATA四个部分组成, 如下图所示DBR及其保留扇区:DBR的含义是DOS引导记录,也称为操作系统引导记录,在DBR之后往往会有一些保留扇区。FAT1:FAT的含义是文件分配表,FAT32一般有两份FAT,FAT1是第一份,也是主FAT。FAT2:FAT2是FAT32的第二份文件分配表,也是FAT1的备份。DATA:DATA也就是数据区,是FAT32文件系统的主要区域,其中包含目录区域。1-1. FAT32文

2021-09-24 17:26:10 9600

原创 BOT 协议解析

简介USB Mass storage Device协议即海量存储设备协议适用于硬盘,U盘等大容量存储设备。协议使用的接口端点有BulkIn、BulkOut端点。BOT 的传输流程如下:CBW指令格式CBW(Command Block Wrapper)的长度为31个字节,具体定义如下图:dCBWSignature:CBW的标识,固定值:43425355h (little endian)。dCBWTag:主机发送的一个命令块标识,设备需要原样作为dCSWTag(CSW中的一部分)再发送给Ho

2021-09-22 18:56:42 1102

原创 Linux 文件属性以及修改

Linux 文件属性Linux 文件或目录的属性主要包括:文件或目录的节点、种类、权限模式、链接数量、所归属的用户和用户组、最近访问或修改的时间等内容。具体情况如下:通过 ls -lih 可以知道文件属性,具体形式如下:第一列:inode第二列:文件种类和权限;第三列: 硬链接个数;第四列: 属主;第五列:所归属的组;第六列:文件或目录的大小;第七列和第八列:最后访问或修改时间;第九列:文件名或目录名inode 的值是:10227361文件类型:文件类型是d,表示这是一个是目

2021-08-23 11:01:18 1793

原创 安装Numpy

1)、安装Python3.4版本以上,因为这样会自带pip(包管理器的安装)检查Python版本。打开cmd,输入Python2)、去下载numpyhttps://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy3)、下载后将numpy放在Python安装目录下的scripts中4)、打开控制台cmd,进入到python\Scripts目录下,5)、我们在命令窗口输入:Python -m pip install -U pip (用于更新 pip)

2021-08-04 11:15:43 20629

原创 USB 协会认证简介

1、USB-IF协会认证:USB IF全称USB Implementers Forum,是由一群开发通用串行总线规范的公司创立的非营利性组织。USB-IF组织的成立旨在推广通用串行总线技术并提供相应的技术规范,以促进高质量的USB外设(设备)的开发,使符合规范的产品顺利通过兼容性测试。所以为了表明产品通过USB协会规范,必须申请USB-IF协会认证。2、简介:USB协会认证:USB-IF是一个非营利性组织,于1990年代初由一小组领先的技术公司创立。该组织现在拥有超过700家成员公司,其在相关领域的各

2021-03-31 09:07:40 2193

原创 ARM 常见问题总结

1、relocation truncated to fit: R_ARM_THM_CALL against symbol 'xxx'可能的原因有几种:1、第一种就是如下文所说,超出b/bl 跳转范围,这个可以看编译出来的code 地址来确认。2、第二种可能是code 所在的section 属性有问题例如下面这段汇编:test 在 .startup section中,Test2 在 .text section中test 会调用Test2, 编译过程中会报错:relocation truncate

2020-12-30 18:06:09 4197

原创 存储卡的发展史

一、简介存储卡(memory card), 或称快闪存储卡、闪卡,是一种固态电子快闪存储器数据存储设备,多为卡片或者方块状。它一般是使用Flash memory(快闪存储器)芯片作为储存介质。主要用于数字相机、PDA和笔记本电脑、音乐播放器、掌上游戏机和其他电子设备。它能提供可重复读写,无需外部电源的存储形式。也有非固态的存储卡。二、历史1980年, 一个默默无闻的东芝工程师申请了一个叫做simultaneously erasable EEPROM的专利。可能连舛冈富士雄博士本人,也不清楚这个专利的

2020-11-30 11:00:05 6515

原创 USB2.0 reset 的几种情况

USB2.0 reset 的几种情况1、USB2.0 ResetUSB2.0 reset, 是将D+ 和 D- 同时拉低, 进入SE0 状态。reset 时间:按照spec 规定7.1.75 正常是10-20ms, 需要注意的是如果是root hub 时间则规定为最少50ms(这50ms 可以不连续,但是如果不连续,每个reset 信号之间的间隔时间应该小于3ms)HUB 如果收到host 发送的setFeature (portreset), 可以对device发送reset 信号。2、 R

2020-10-16 13:13:33 6427

转载 IC 后端仿真: process corner 和 PVT

1、工艺角(Process Corner)与双极晶体管不同,在不同的晶片之间以及在不同的批次之间,MOSFETs 参数变化很大。为了在一定程度上减轻电路设计任务的困难,工艺工程师们要保证器件的性能在某个范围内。 如果超过这个范围,就将这颗IC报废了,通过这种方式来保证IC的良率。传统上,提供给设计师的性能范围只适用于数字电路并以“工艺角”(Process Corners)的形式给出。其思想是:把NMOS和PMOS晶体管的速度波动范围限制在由四个角所确定的矩形内。这四个角分别是:快NFET和快PFET,

2020-10-09 17:48:44 15190 1

原创 Eject U盘底层解析

Eject U盘底层解析1、插上U 盘OS 会发送SCSI PREVENT ALLOW MEDIUM REMOVAL将设置成 Volume removal shall be prevented。目的是告诉U盘, 我不同意remove 你就不可以remove。这里有人可能要奇怪了,U盘怎么会自己去remove 呢? 实际上,这个SCSI 是由OS 发下来的, 而不是由U盘的driver 发下来的,这个SCSI是OS为了防止driver 自行remove U盘而设计的。格式如下:需要关注的是PRE

2020-09-27 17:22:21 1020

原创 MULTIPLE CALL TO SEGMENT

WARNING L15: MULTIPLE CALL TO SEGMENT1、什么是Function Multiple Call Warning关于这个问题Keil C 给出的解释如下:简单来说,某一个函数被Main 函数调用的时候,这个时候发生了中断,在中断中这个函数被再次调用,这个时候就会导致之前的传参,临时变量被替换掉。需要讲一下,C51 由于堆栈空间很小,因此它利用一种 Overlay 的机制,将函数中的变量不存放在堆栈中,而是固定在memory 空间中。这种方式好处是节省堆栈空间。坏处就是函

2020-09-14 19:47:24 6109 1

原创 Keil C51编译/链接/优化

Keil C51编译/链接/优化一、C51编译库及代码优化技术如下图所示:可以根据优化等级的需要选择相应的库文件。通过Keil ->Target 下 Memory Model / code Rom size 来进行配置SMALL:所有变量都被定义在8051单片机的片内RAM中,对这种变量的访问速度最快。另外,堆栈也必须位于片内RAM中,而堆栈的长度是很重要的,实际栈长取决与不同函数的嵌套深度。采用SMALL编译模式与定义变量时指定data存储器类型具有相同效果。COMPACT:所有变

2020-07-08 19:42:41 4071

原创 8051 code bank 原理介绍

8051 code bank 原理介绍一个标准的8051器件能寻址64KB的代码地址空间。对于超过64KB的代码,单片机系统通常采用代码分页(CODE BANKING)的方式来扩展程序空间。如何扩展:下面介绍一下一种结合硬件来实现的方法,采用特殊功能寄存器(SFR)的方式。硬件设置:硬件上通SFR 操纵port 的bit 来实现。软件设置:新建工程是需要将STARTUP.A51和L51_BANK.A51加进去,其中STARTUP.A51是新建功能是自动添加,L51_BANK.A51是手动添加

2020-06-23 19:28:10 3637

原创 IC设计基础

IC设计基础1、稳压电源:LDO 和 DC-DC可以把稳压电源想象成为如下的一种情形:当试图从一个直径较大的自来水管中取出连续不断的且较小的水流时,可以采用两种策略:一种是使用一个转接阀门,并将阀门开启在较小位置,这就是线性电源的工作原理(可以将阀门看作晶体管)。线性电源的电压调整晶体管上承受着很大的“压力”(具体的表现是转换为热能的形式散耗);或者,可以改进一下,让大水管的水流到一个比较...

2020-03-18 13:29:41 1762

原创 USB2.0 HUB

一、USB2.0 HUB的架构USB2.0 HUB 需要支持的功能:1、连接行为2、电源管理3、设备的连接/移除检测4、总线错误检测和恢复5、HS/FS/LS 设备的支持从结构上看,hub 主要由三个部分组成,分别是:HUB Repeater、Hub Controller、Transcation Translator。二、数据转发往Downstream 方向:Upstrea...

2020-03-18 11:09:42 3966

原创 EMMC Packed Command

Packed Commands - Packed Write and Packed Read在实际应用场景中,通常会对 eMMC Device 有很多随机数据读取和写入操作,这些随机读写的目标地址往往都不是连续的,每一个随机读写都需要通过一个独立的读写流程来实现。在 eMMC 4.5 及以后的标准中,引入了 Packed Commands 机制,将多个地址不连续的数据写入请求封装到一个 Mul...

2020-02-13 14:09:43 1819

原创 Billboard介绍

BillBoard起源:USB-IF协会在2014年公布了Power Delivery v2.0的规格,同时也在原本的USB Class定义了新的分类Billboard Device Class v1.0。什么是Billboard?首先我们要了解一下Type-C:USB-C即USB Type-C型接口,是USB协会最新推出的接口,相比传统USB接口,USB-C具有结构纤细、支持正反插、高电...

2020-01-22 16:26:14 15797 4

原创 Gdbinit 无法调用的问题

1、.gdbinit 文件是什么:gdb在启动的时候,会在你的当前工作目录下查找 ".gdbinit" 这个文件,并把它的内容作为gdb命令进行解释,所以如果我把脚本命名为".gdbinit",这样在启动的时候就会处理一些你常用的命令。注意:这里当前工作目录是提示 ~的目录,一般是/home/xxx。如何查看该目录:1、cd ~ 切到当前工作目录2、pwd 查看该目录的路径...

2019-11-22 11:24:42 3724

原创 IC 常见封装介绍

DIP:双列直插封装(dual in-line package)如图:SOP:(Small Out-Line Package小外形封装)是一种很常见的元器件形式。如图:SSOP:(Shrink Small-Outline Package)即窄间距小外型塑封。如图:TSOP:(Thin Small Outline Package),即薄型小尺寸封装。如图:QFP:(Plast...

2019-11-19 11:12:29 6728

原创 ARM:FreeRTOS系统栈和任务栈

ARM:FreeRTOS系统栈和任务栈背景:ARM 有两个栈指针PSP和MSP, 通过Control 寄存器来决定SP(R13)使用哪个栈。我们下面谈论的系统栈和任务栈,就和这两个栈指针有关。FreeRTOS 任务栈FreeRTOS不同于裸机每个TASK都有一个任务栈。FreeRTOS的任务栈是在任务创建的时候从FreeRTOSConfig.h 定义的Heap 空间中申请:#define...

2019-11-15 17:22:18 5654

原创 GDB常用命令

GDB常用命令参数列表命令命令缩写命令说明listl显示多行源代码breakb设置断点,程序运行到断点的位置会停下来runr开始运行程序infoi描述程序的状态displaydisp跟踪查看某个变量,每次停下来都显示它的值steps执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句nextn...

2019-11-08 17:54:39 192

原创 USB发展历程

USB 简介USB(Universal Seiral Bus,通用串行总线)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人计算机和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域。——————在 1994 年,Compaq,DEC,IBM,Intel,Microsoft,NEC 和 Nortel 七大公司,为...

2019-10-18 15:46:04 4747

原创 编译器与解释器的区别

编译器与解释器的区别编译器就是一个程序,它可以阅读以某一种语言(源语言)编写的程序,并将该程序翻译成一个等价的、用另一种语言(目标语言)编写成的程序。如果目标程序是一个可执行的机器语言程序,那么它就可以被用户调用,处理输入并产生输出。解释器是另种语言处理器,它并不通过翻译的方式生成目标程序,而是从用户的角度看,解释器直接利用用户提供的输入来执行源程序中的指定的操作。在计算机科学中,解释器...

2019-10-17 07:55:56 634 1

原创 MinGW 下如何使 .bashrc 生效

MinGW 下如何使 .bashrc 生效最近,在win10 下安装了MinGW, 想通过 .bashrc 来 激活环境变量,发现MinGW根本不会执行.bashrc 文件。熟悉Linux的都知道,在进入SHELL时,一共有四种方式添加环境变量与添加自定义命令,如下:文件位置用途优先级补充说明/etc/profile通用环境信息,首用户登录执行1会从/etc/p...

2019-10-09 14:54:56 1278

原创 Cortex-M3 .s 启动文件分析

Cortex-M3 .s启动文件分析下面是startup_.s文件的源代码, 该文件主要完成三项工作:堆栈以及堆的初始化、定位中断向量表、调用Reset Handler a) 堆栈以及堆的初始化工作;/*;//-------- <<< Use Configuration Wizard in Context Menu >>> ----------------...

2019-08-19 16:24:56 646

原创 gcc之 objdump用法

objdump 常见用法如下:如果想要解析 app.elf的文件信息,可以用如下格式objdump -t app.elf //输出目标文件的符号表()objdump -h app.elf //输出目标文件的所有段概括()objdump -f app.elf //显示objfile中每个文件的整体头部摘要信息objdump -r app.elf //显示文件的重定位...

2019-08-15 10:18:10 1698

原创 C语言之类型定义(typedef)

typedef讲解typedef关键字的作用是可以用于给数据类型定义一个别名举个例子,比如说你的名字叫 列夫·尼古拉耶维奇·托尔斯泰 ,我嫌弃这个名字太长了,所以给你取一个别名,叫 托尔斯泰 ,以后我叫 托尔斯泰 的时候你就知道在叫你了。下面对 typedef 几种用法进行讲解:1、typedef创建结构体别名当你定义了一个结构体时,每次创建一个结构体都要使用struct+结构体名的...

2019-08-14 11:43:26 3612

原创 CPRM 技术

CPRM 技术:CPRM技术该技术也称为录制媒介内容保护技术,它将媒介与录制相联系。该技术的加密原理是,在每张空白的可录写光盘上有一个64比特盘片ID放置在BCA上。当受保护的内容被刻录到盘片上时, 它可由盘片ID得到的56位密码进行加密。需要访问光盘信息时,则从BCA中读取盘片ID,然后生成盘片内容解密所需要的密钥。如果盘片内容被复制到其他媒介,那么盘片ID将会丢失或出错,数据将无法解密。...

2019-07-29 17:02:29 1244

原创 半导体存储器的分类

半导体存储器的分类从制造工艺的角度可把半导体存储器分为双极型、CMOS型、HMOS型等;从应用角度上可将其分为两大类: 随机读写存储器(RAM),又称随机存取存储器;只读存储器(ROM)。...

2019-07-04 07:52:28 8711

原创 git 获取标签对应的版本

git 获取标签对应的版本git clone 整个仓库后使用,以下命令就可以取得该 tag 对应的代码了 git checkout tag_name 但是,这时候 git 可能会提示你当前处于一个“detached HEAD" 状态。因为 tag 相当于是一个快照,是不能更改它的代码的。如果要在 tag 代码的基础上做修改,你需要一个分支:git checkout -b branch...

2019-05-21 18:40:23 5166

转载 Linux下命令行对磁盘测速

测试方式:使用dd指令,对磁盘进行连续写入,不使用内存缓冲区,每次写入8k的数据,总共写入20万次,产生1.6G大小的文件。测试指令:dd if=/dev/zero of=/data01/test.dbf bs=8k count=200000 conv=fdatasync正确的使用dd进行磁盘读写速度测试dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,...

2019-05-13 09:19:13 6995

原创 USB 中OHCI、UHCI、EHCI、XHCI controller解释

所以,这里就简单列一下各种xHCI(也包括真正的xHCI)的基本含义吧。简单地讲,OHCI、UHCI都是USB1.1的接口标准,而EHCI是对应USB2.0的接口标准,最新的xHCI是USB3.0的接口标准。OHCI(Open Host Controller Interface)是支持USB1.1的标准,但它不仅仅是针对USB,还支持其他的一些接口,比如它还支持Apple的火线(Firewi...

2019-05-08 11:03:51 11896

原创 union类型

最新,在学习嵌入式底层代码,看到一些union的使用,这边做一个总结:struct和union的重要区别:struct为每个字段在不同的偏移处分配存储空间,而Union则将所有的字段重叠在内存中的相同偏移处。联合类型的用途:1、创建别名。别名是内存对象原名之外的其他名字。比如在程序中经常会用到将一个数据类型强制转换为另一个类型,这个操作可以使用联合来代替。比如typedef union...

2019-04-28 09:30:17 756

转载 GCC的连接脚本--LD 学习笔记

GCC的连接脚本学习笔记连接脚本将我整整蒙了1天零一个上午,做了很多实验,看了人家不少例子代码勉强能驾驭了,让linker按照我想要的来处理,做个笔记。1,什么叫输入段,什么叫输出段不知道怎么回事,我对GCC系列的输入和输出两个单词总是进入思维死角,很简单就是 input section 和 output section,这里不是说翻译的问题,我觉得是一种思考的方式的问题。我的问题就...

2019-03-29 15:44:20 2582 1

gd-2.0.32 tar.gz

很实用

2015-02-02

PHP-5.4.5.tar.gz

PHP-5.4.5.tar.gz

2014-12-02

12864中文资料

非常详细的12864中文资料.....................

2012-10-30

锁存器应用

锁存器应用

2012-10-30

空空如也

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

TA关注的人

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