驱动开发_硬件接口
文章平均质量分 77
嵌入式方向:硬件驱动,启动文件编译,寄存器操作,芯片手册,系统驱动。内核原理机制和驱动修改编译开发,设备树语法编写规则,匹配原理。IIC/串口/SPI/网口/EtherCAT等接口驱动。Candance,底层硬件原理,PCB制板,芯片手册,测量仪器使用。重在点滴积累,学无止境。
寒听雪落
软件著作权申报45天包下证,两位数价格,可联系
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
内核调试方法
本文介绍了Linux内核驱动程序的多种调试方法:1)使用printk()输出调试信息;2)通过GDB设置断点进行内核级调试;3)利用Kdump捕获和分析崩溃转储;4)使用bpftrace等动态调试工具监控内核行为;5)借助QEMU等仿真器调试硬件相关驱动;6)分析系统日志;7)应用静态代码分析工具;8)测试模块加载/卸载功能。这些方法为驱动开发提供了全面的调试手段,从简单日志输出到复杂硬件模拟,有效提升了开发效率。原创 2025-08-13 14:51:54 · 97 阅读 · 0 评论 -
linux驱动中amba框架的作用
一些芯片的设备树上的很多片内外设的compatible属性为compatible = "arm,primecell",且在内核源码中找不到compatible匹配的驱动,这是因为这些驱动使用了arm提供的amba协议。它提供了多种规范,如高性能的AHB、低功耗的APB和高带宽的AXI,使得设计人员可以根据系统的要求选择合适的总线协议。综上所述,ARM选择采用AMBA的主要原因是为了提供一种标准化、可扩展且高性能的片上互连解决方案,简化系统设计、提高数据传输效率,并为设计者提供更大的灵活性和行业支持。原创 2024-05-23 19:10:25 · 303 阅读 · 1 评论 -
mil-std-1553B和powerlink介绍
MIL-STD-1553B(GJB 289A)是一种应用于航空航天电子设备间通信的共享式总线通信协议,以总线式拓扑结构连接最多31个终端设备互联(因为1553B设计了二十位字长,其中留给终端的地址位只有五位,即从00000B-11111B,所以1553B最多支持31个终端),传输速率为1Mbps,在航空电子总线网络中占有重要地位,在舰船、坦克、导弹及卫星等运动平台上也有广泛的应用(字长度20比特,数据有效长度16比特)。每个从站设备都有唯一的节点号,该节点号是用来区分网络中的设备,取值范围为1-239。原创 2024-05-19 14:45:50 · 461 阅读 · 0 评论 -
使用modinfo对比内核版本号
例如,modinfo -k 5.4.0-91-generic mymodule。模块名称是modinfo命令的必需参数,应该提供有效的模块名称作为命令的参数。如果要查询的模块不在默认的模块目录中,可以使用-d选项指定模块所在的目录。例如,modinfo -d /path/to/modules mymodule。使用-b选项可以只显示模块文件的基本名称,而不显示完整路径。例如,modinfo -0 -F description,author mymodule | xargs -0 echo。原创 2024-03-04 18:00:11 · 450 阅读 · 0 评论 -
理解系统内核linux phy驱动
PHY设备驱动是基于device、driver、bus的连接方式,驱动涉及如下几个重要部分: 总线 - sturct mii_bus (mii stand for media independent interface) 设备 - struct phy_device 驱动 - struct phy_driver。PHY驱动函数驱动功能:函数名称 功能描述soft_reset 执行 phy 的软件复位config_init 在 phy 复位后将 phy 配置为一个既定的状态。原创 2023-11-21 13:58:33 · 1154 阅读 · 0 评论 -
嵌入式linux内核工作机制
(1)进程管理:内核负责创建和销毁进程,并处理它们与外部世界的联系(输入和输出). 不同进程间通讯(通过信号, 管道,或者进程间通讯原语)对整个系统功能 来说是基本的, 也由内核处理. 另外, 调度器,控制进程如何共享 CPU, 是进程管理的一部分. 更通常地, 内核的进程管理活动实现了多个进程在 一个单个或者几个 CPU 之上的抽象.注意:装载在休眠进程的容器的个数基于进程的个数,一个进程对应一个容器,一个小鸡,一般定义初始化这个容器的时候,它都是局部变量。软中断的优先级高于进程;进程之间有优先级之分;原创 2023-11-29 10:21:58 · 538 阅读 · 0 评论 -
JTAG下载配置
投板不用再需要焊接FT232HL这个器件了。开发一个板子可以不用EMMC且不用SD卡且不用串口。直接就设计上去,如果批量的就不再焊接。这个USB口是JTAG,比如黑金开发板的下载器,HS3还简单便宜一些,FT232HL太贵了。首次使用内置JTAG,需要用批处理一下。USB插入后,运行一下这个软件,最好在cmd下去运行。另外一种就是直接接xilinx JTAG下载器盒子进行下载,比如正点原子开发板。JTAG除了用FT232HL外,还有没有经济一点的方案?成功后会有提示,jtag才能正常使用。原创 2023-12-01 06:30:00 · 1630 阅读 · 0 评论 -
DDR3内容相关
比如 bank address 位宽为 3,Row address 位宽为 14,Column address 为 10,4,DDR3走线阻抗与端接电阻问题,xilinx推荐走线阻抗–DDR3单端40,差分80。数据怎么存入到 DDR3:先指定一个 Bank 地址,再指定行地址,最后指定列地址。DDR3 容量计算:bank 数量 × 行数量 ×列数量 × 存储单元容量。②时钟上升沿和下降沿都。则容量为:2^3 × 2^14 × 2^12 × 16bit。2、DDR3 的存储:bank、行地址和列地址。原创 2023-11-15 08:49:27 · 476 阅读 · 0 评论 -
DMA驱动相关
应用层和驱动配合大致流程:FPGA-->产生一个DMA中断(pl中断),唤醒读数线程,告诉驱动有数据需要传输-->应用层调用驱动申请一个合适的DMA通道-->应用层调用read函数(在read函数中完成dev->dmamem的传输)读取DMA(dmamem)数据缓存的数据到用户空间。一,DMA相关定义(fpga、wait_queue 、device、interrupt、 dma_request_channel 函数、dma_start_transfer函数、poll、read,platform总线)原创 2023-11-14 14:35:45 · 1590 阅读 · 0 评论 -
Altium Designer原理图转Candance原理图
1, 使用工具:Altium Designer 19、OrCAD16.6 使用Altium Designer 19打开一个AD创建的PCB工程,File——Open——Project——PCB Project 或者使用Altium Designer 19新建一个PCB工程,File——New——Project——PCB Project2,将要导出的原理图添加在该PCB工程下,然后有选中工程文件右键进行编译,将Altium Designer原理图另存为“Advanced ...原创 2020-08-02 10:43:15 · 5770 阅读 · 0 评论 -
linux iic省略驱动操作寄存器
输入命令: i2ctransfer -y -f 0 w2@0x1d 0x00 0x20 r3。> i2cget -f -y 0 0x40 0 (这个器件地址是0x40,读 0寄存器)> i2cset -y 0 0x50 0x00 0x10 (往0地址上写0x10)先写入0xaa: i2cset -f -y 0 0x78 0x6b 0xaa。0x00 0x22, 共同组成0x0020这个寄存器的地址。/再读取出来:i2cget -f -y 0 0x78 0x6b。0x00 0x02,表示寄存器地址。原创 2022-10-14 20:20:27 · 850 阅读 · 0 评论 -
Cadence 原理图栅格设置步骤
1、打开DSN原理图,在菜单栏Options选项下的Preferences。2、CANDANCE原理图栅格有两种显示效果,一种是点状,一种是线状,选择Grid Display,设置如下:visible:栅格显示开关;Grid Display:Dots是点状设置,Lines是线状设置;Grid spacing:是栅格的间距设置。...原创 2020-08-02 10:07:23 · 21292 阅读 · 5 评论 -
linux SPI驱动开发
SPI中断的步骤:linux内核分离思想的实现基于platform机制原理第一步:向内核注册SPI总线以及SPI主机控制器;第二步:向内核申请一个SPI主机控制器的空间,注册我们要用的主机控制器;第三步:向内核注册SPI设备,以及构造file_operation结构体;重点关注struct platform_device和struct platform_driver这两个结构体。底层简历连接以后用户空间就可以通过open、write、read、ioctl函数来操作字符设备spidev了。原创 2021-06-06 01:32:45 · 2024 阅读 · 0 评论 -
常用的硬件接口简介
1,RS232/RS422/RS485RS232是绝对电压,必须接地,因为电子的回路;RS422/RS485是相对电压,可以不用接地,最好还是接地;<1>发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点全双工(即只用一对收、发设备)通讯而设计,RS-232适合本地设备之间的通信。(1) DCD 载波检测(2)RXD 接收数据(3)TXD 发送数据(4)DTR 数据终端原创 2021-05-20 23:36:33 · 5350 阅读 · 0 评论 -
petalinux添加设备驱动
1,在/home/alinx/linux-xlnx-xilinx-v2017.4/drivers/dma/xilinx/中添加驱动程序xilinx_dma.c。select与depends on是相反的逻辑关系。在Kconfig中,发现 XILINX_DMA。2,在makefile中添加。3,在kconfig中添加。那么只有在B选中才能选A。那么只要选中A就会选中B。原创 2020-04-08 01:10:56 · 3742 阅读 · 4 评论 -
linux下网络设备驱动开发
物理层->数据链路层->网络层->传输层->会话层->表示层->应用层。网卡驱动是包含在网络驱动中的一环,属于网络接口层,包括数据链路层和物理层。也是网络驱动中唯一与硬件相关的部分,对于底层驱动开发只需要关心硬件相关的内容,其他的都是纯软件的概念。 网卡驱动需要实现两个部分,一是上层交互数据收发,二是结合具体硬件处理数据。网络接口层中又可以细分四层:网络协议接口层、网络设备接口层、讴备驱动功能层、网络设备和媒介层。网络协议接口层负责对上层发送或接收数据,设备驱动层负责对硬件发送或接收数据数,网络设备接口层原创 2021-11-17 02:39:05 · 7900 阅读 · 0 评论 -
lcd fb0设备和触摸驱动调试
1,电阻式触摸屏:在智能手机出现前,都是使用电阻式触摸屏,电阻式触摸屏利用压力感应进行触点检测控制,需要直接应力接触,通过检测电阻来定位触摸位置。4,产品 ID 寄存器(0X8140~0X8143)这里总共由 4 个寄存器组成,用于保存产品 ID,对于 GT9147,这 4 个寄存器读出来就是:9,1,4,7 四个字符(ASCII 码格式)。GT9147的IIC 地址,可以是 0x14 或者 0x5D,当复位结束后的 5ms 内,如果INT是高电平,则使用0x14作为地址,否则使用 0x5D作为地址。原创 2023-05-25 21:11:03 · 1838 阅读 · 0 评论 -
Cadence Capture自带元件库说明
Cadence 16.6X自带元件库存放路径:X:\Cadence\Cadence_SPB_16.6\tools\capture\libraryAMPLIFIER.OLB共182个零件,存放模拟放大器,IC,如MAX457,LM386。ARITHMETIC.OLB共182个零件,存放逻辑运算IC,如74HC147,54HC147。ATOD.OLB共618个零件,存放A/D转换IC,如AD7580,ADC08031。CONNECTOR.OLB共816个零件,存放连接器,如CONN PWR原创 2020-08-02 10:15:23 · 4349 阅读 · 1 评论 -
Cadence PCB设置封装库路径的方法
1.在“Setup”下拉栏下选择最后一项“User Preferences”,在“paths”中选择“Library”,里面有三个指标需要关心:“devpath”、“padpath”、“psmpath”。2. 最好把焊盘文件和封装文件放在一个文件夹下,按如下设置 (1)“devpath”:这是第三方网表(other方式导出的网表),这项可以不管; (2)“padpath”:PCB封装的焊盘存放的路径; (3)“psmpath”:PCB封装焊盘中使用的Flash文件、PC...原创 2020-08-02 09:52:17 · 12716 阅读 · 0 评论 -
硬件驱动中platform机制及其设备树
这样就形成了驱动的分离,一边是SOC的硬件资源,另一边是用户设备,它们通过统一的接口来连接。驱动分离的思想带来了许多好处,linux长久的发展中,省去了很多冏余的代码,SOC厂家根据统一的接口提供SOC片上外设的驱动,设备厂家也根据结构统一的接口提供设备的驱动,用户需要选择好SOC和外设,就能径方便的关联到一起。这样的思想也延续到了单个SOC中,片上驱动和设备驱动通过总线协议来关联。当我们往内核中添加驱动时,总线就会查找对应的设备,添加设备时就去查找对应的驱动。 这就是linux 中的bus、driver、原创 2022-05-14 21:18:30 · 1670 阅读 · 0 评论 -
Cadence 电源端口的网路标号设置显示与隐藏
Cadence电源端口的网路标号打开与隐藏网络标示1,在绘制原理图时,在放置一些电源端口总是会发现GND端口没有显示网络标识; 要是整个原理图工程只一个GND网络,此时GND的网络端口显示与不显示都是一样的。 如果原理图中有很多个不同的GND网络时,GND端口没有显示出来将会不方便设计原理图,容易当成是同一个网络; 如果我们区分那些是模拟地和数字地,就要把GND端口的网络显示出来,从而提高原理图的可读性。 如图所示就是软件默认隐藏网络标标示GND端口。...原创 2020-08-02 09:39:02 · 4644 阅读 · 0 评论 -
嵌入式设备树语法总结和of函数
ARM内核Linux3.0 以前是没有设备树的,那时ARM Linux使用者们用C语言的数据结构来描述板子的设备,每一个设备就对应到一个描述文件。实际上单独编译驱动是可以的,但是,为了统一操作步骤就都用 petalinux-build命令了) 设备树就是设备树结构体,树是个形象的比喻,以系统总线为主干,其它挂在在系统总 线上的如 I2C,SPI,GPIO 控制器等设备为分支,而那些挂载在主干上的分支又有它们自身挂载的设备,such as I2C上挂载了EEPROM、RTC等,这种树干分叉结构就如同树一般。原创 2020-09-27 01:33:12 · 1299 阅读 · 1 评论 -
linux IIC设备驱动开发
1、通过module_i2c_driver注册对应的I2C驱动,此时内核会遍历挂载在I2C总线上的设备,通过总线的match方法对驱动和设备进行匹配,匹配原则可以是1、基于设备树of_driver_match_device方法,对应的结构为定义的驱动结构体是否含有of_match_table成员 2、基于id_table的匹配,对应为驱动是否定义id_table成员 3、基于名字的匹配,匹配原则为驱动的name是否和设备的name相同 4、基于ACPI风格的匹配,使用较少。参数msgs是需要发送的数据。原创 2021-11-28 14:08:50 · 2461 阅读 · 1 评论 -
Cadence SPB16. 6 安装流程
1.首先下载CadenceAllegroSPBorCAD16.6安装包下载之后运行其中的setup.exe,然后先安装第一项LicenseManager一直按next或install,直到被询问license时,单击cancel,然后选是和finish。2,安装Product Installtion直接点next跳过这一步安装完成后,点Exit退出3.按ctrl+alt+delete打开任务管...原创 2020-07-31 10:06:23 · 4703 阅读 · 0 评论 -
TCS3200颜色检测传感器
1,LED 测试仪是一个测量系统,能够实现快速和自动测试 LED 的颜色和亮度。每个 LED 分析仪能同时测量多达 20 个通道的不同颜色和强度的 LED 光源。从光纤 采集光源,进行测量和分析。该装置是专为 LED 和液晶显示器等设计的自动测试装置。...原创 2021-05-31 01:15:21 · 2572 阅读 · 0 评论 -
linux中的阻塞IO驱动和非阻塞NIO驱动
IO操作的两个阶段先查询再读写,而非阻塞IO在查询阶段的处理和阻塞 IO不同。应用程序需要迕行 IO 操 作前,先发起查询,驱劢程序根据数据情况返回查询结果,如果返回查询结果NG,应用程序就不执行读写操作了。如果应用程序非要读写的话,就继续去查询,直到驱动程序返回数据准备完成,才会做下一步的读写操作。非阻塞IO的处理方式是轮询。linux 中提供了应用程序的轮询机制和相应的驱动程序系统调用。驱动程序中的poll函数。等待待队列也就是进程组成的队列,linux 在系统执行会根据不同的状态把进程分成不同的队列。原创 2022-05-15 17:56:54 · 1397 阅读 · 0 评论 -
ARM linux双网口桥接路由设置
情形一:一个ARM板子有两个网口,eth0和eth1,分别连了A电脑和B电脑,可以直接从A电脑 ping B电脑 互通解决办法#!/bin/shIP=$1MASK=$2ifconfig eth0 0.0.0.0ifconfig eth1 0.0.0.0brctl addbr br0brctl addif br0 eth0brctl addif br0 eth1brctl showifconfig br0 $IP netmask $MASKbrctl setagein.原创 2020-05-21 13:43:31 · 5066 阅读 · 0 评论 -
TR组件基础内容
1,定义T/R组件一端接天线,一端接中频处理单元就构成一个无线收发系统。其功能就是对信号进行放大、移相、衰减。T/R组件一般包括收发两个支路,单元电路应包括:本振、上下变频、滤波器、低噪声放大器、功率放大器、双工电路等。射频放大器技术指标功率放大器主要指标衰减器2,要控制的参数:WYD060074-6移相器控制HGC238数控衰减器控制HMC472ALP4E数控衰减器控制HGC241-8PD数控衰减器控制AD9117原创 2020-10-16 22:01:07 · 21426 阅读 · 0 评论 -
LAN5016逻辑分析仪使用
软件启动后,将显示类似下图的主界面,软件的详细使用说明请见第四章节,此处仅对软件界面进行简要说明。原创 2021-07-30 01:02:09 · 729 阅读 · 0 评论 -
嵌入式块设备内核驱动
释放磁盘扇区缓存。明确:linux系统分用户空间(用户态)和内核空间(内核态)分配一个gendisk结构体,队列request_queue_t,设置gendisk 结构体的成员注册 gendisk 结构体。用户空间的软件在运行的时候,CPU的工作模式为USER模式,这些软件在运行时,处于用户空间;运行用户空间的软件不能直接访问硬件外设的物理地址 如果要访问硬件外设,必须首先将硬件外设的物理地址映射到用户空间的虚拟地址上用户空间的软件不能直接访问内核空间的代码,地址和数据,用户空间和内核空间的访问必须通过原创 2020-06-22 23:38:31 · 1203 阅读 · 0 评论 -
电阻的分类和选型
一般情况下以流经二级管的电流为 2 至 3mA 就可以满足正常发光的要求,以台湾亿光 0603 封装 LED 为例, 由下图的数据手册可得,二极管上的管压降正常为 2V ,在上述电路中, 电 源电压为 5V,,因此我们的电阻阻值为 R=3V/3mA=1k。因为此时电阻上的压降为 3V ,根据 P=U2/ R=9/ 1000=0.009W , 由于 0603 电阻的功耗为 0.1W ,,因此 0603 的电阻功耗,满足此时的需求。导体的电阻通常用字母R表示,电阻的单位是欧姆,简称欧,符号为Ω。原创 2020-09-24 21:33:18 · 6357 阅读 · 1 评论 -
Cadence 将原理图导出PDF格式
1,安装“adobe pdf 虚拟打印机”软件2,打开Cadence .DSN原理图文件,菜单栏File中选择Print setup3,打印设对话框中找到安装的虚拟打印机名称,设置打印纸张方向,大小4,设置完打印属性打开File菜单栏下的Print 或者 按住"Ctrl+P”进行打印。5,Prin对话框中保持默认选项,直接点击确定进行打印输出软件会弹出PDF文件保存对话框,选择路径保存...原创 2020-08-02 12:25:29 · 21298 阅读 · 1 评论 -
Cadence Allegro中设置字体和大小
1,设置丝印字体的粗细方式 选择Setup菜单栏下Design Parameter选项选择Text选项,然后再选择Setup Text Sizes字体字号设置操作步骤如图Height:字符高度Width:字符宽度Line Space:字符行间距Photo Width:字符丝印线text blk:字体编号Char Space:字符字体间的间距2,修改丝印字体方式选择Edit菜单栏的change命令在右边Options侧边栏中,调整Text .原创 2020-08-02 12:15:55 · 11570 阅读 · 0 评论 -
linux内核中断机制及中断驱动
1, 计算机为什么有中断机制? 由于外设的处理速度远远慢于CPU的处理速度 为了保证CPU和外设的数据通信正确,一般呢首先可能考虑使用轮询机制(轮询就是死等),如果轮询的时间过程长,会大大降低CPU的利用率(CPU不能干其他的事情,只能等待当前这个硬件)此时还可以考虑使用中断机制,当CPU发现设备没有准备就绪, CPU干其他的事情(比如做一个算法)一旦外设准备好了,外设会给CPU发...原创 2020-03-28 19:58:47 · 1496 阅读 · 0 评论 -
EMI器件原理及应用
一,EMI定义: Electromagnetic interference( 电磁干扰)。 一般可分为传导型的电磁干扰 ,也就是说干扰噪声沿着电导体、电线、印刷电路的线路或者变压器、电感、电容、半导体以及电阻器等电子元件传输。 辐射型电磁干扰( RFI) ) —电噪声 ,它像磁场或无线电波一样通过空气或自由空间传输。电磁干扰源:大部分电气和电子设备都会产生电磁干扰,而且会受电磁干扰影响。它无处不在,其中包含交流电动机、荧光灯/ / 镇流器、调光器、微波炉、微处理器以及开关型电源。开关型电源中大部分传导型电原创 2020-07-30 00:08:57 · 12341 阅读 · 0 评论 -
Cadence 设置交互式布局方法
1,FILE ->open ->Design ->.dsn 开头的文件;然后选中这个要打开的.dsn文件2,打卡菜单栏Options选项下的Preferences3,在Preferences对话框中勾选Enable Intertool Communication选项。原创 2020-08-02 00:53:16 · 3257 阅读 · 0 评论 -
Cadence 如何创建元件库与元件
1,打开Candance,选择菜单File—New—Library,创建元件库2,软件会创建一个带olb后缀路径的库文件夹,选中元件库文件(新建olb后缀文件),右键选择New Part新建元件3创建ZYNQ芯片为例Name:新建元件的名称,如ZYNQ,LM324、8050等。Part Reference Prefix:新建元件的序号开头字母,如L、U、R、C等。PCB Footprint:新建元件的封装名,如SOP16、S0T23、R0603等。Multiple - Part原创 2020-08-02 11:20:10 · 14111 阅读 · 1 评论 -
EEPROM,NAND,NOR,QSPI FLASH的区别
EEPROM:全称电可擦除可编程只读存储器。PROM,可以自己写入一次,要是写错了,只能换一片,后来出现可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下;后来EEPROM出现可以随意的修改ROM中的内容,掉电后数据不丢失,可以擦写100w次,这种ROM的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。目前EEPROM都是几十字节到几百千字节的,绝少有超过512。采用GPIO方式,无地址线,但是有数据线, 不能运行程序又分三类:SLC,MLC,TLCW25Q128JVSI原创 2021-12-11 11:21:37 · 7263 阅读 · 0 评论 -
示波器显示读取串口数据
1G/S :示波器能够使用的最大采样速率为1G样本/秒,就是说示波器在时间最小档位是的采样率是每秒采集1G个数据点,时间档位越大用到的采样率越小。100MHZ:示波器模拟前端的带宽。100M正弦波输入示波器时,进过模拟前端后信号幅度衰减为输入时的70.7%。波特率115200,说明每个byte 1/115200=8.6ns。TTL传给示波器数据是:00 FF 00 00 00 00 AA。空闲位是高,起始位是低,然后是串口的八位数据,然后停止位是高。原则是采样率要是示波器带宽的5倍以上。原创 2020-06-23 00:00:52 · 4667 阅读 · 1 评论 -
Cadence导出Excel格式BOM表
1.打开需要导BOM的 .DSN文件原理图。2.点击工具栏Tools,再点击Bill of Materials > Open in Excel (✔)> OK。勾选Open in Excel,Header填写:Item\tQuantity\tReference\tPart,Combined property string填写{Item}\t{Quantity}\t{Reference}\t{Value}。可以根据需要调整Item,Quantity,Reference,Value.原创 2020-08-02 00:42:08 · 10254 阅读 · 0 评论
分享