
底层驱动
文章平均质量分 88
袁海璐
不要想着站在巨人的肩膀上,你要想想巨人走了,你是什么。
展开
-
Linux USB Gadget驱动 part1数据传输
内核gadget驱动主要有两个作用,第一是实现真实usb从设备,常见的UAC、UVC、大容量存储设备等;第二是虚拟一些USB设备,例如Hub、光驱、键盘等。本文作为Linux USB Gadget驱动的第一篇,先介绍下如gadget驱动做简单的数据传输,顺便分析下udc驱动,以便于后面的上层驱动出现问题更好的定位问题。1、注册function 内核为了层次分明的描述一个复合设备(在同一个配置下,有多个interface,实现不同的功能即为复合设备,比如usb声卡有一个UAC...原创 2021-08-18 21:02:46 · 2972 阅读 · 0 评论 -
USB2.0基础知识总结
目录1、协议层:1.1、域分类1.2 、USB传输方式:1、协议层:域和包定义:包是一次传输的单位,每个包由多个域组成; USB中是按照LSB进行字节传输;1.1、域分类 1.1.1: 同步域(SYNC field) 所有的包都开始于同步域,在低速和全速通信中SYNC field用7个0和1个1来表示。 由于USB2.0使用了NRZI编码(0用翻转来表示,1用不翻转表示),所以00000001就是上图那样。...原创 2020-11-29 17:57:26 · 4160 阅读 · 0 评论 -
实现简单的内存管理
1 源码:源码已经提交github,内存管理github链接,欢迎一起讨论。2 实现过程该代码实现了在固定地址空间上进行内存的分配与释放。在操作系统启动时刻指定固定的地址作为mymlloc()操作的Heap空间,也可以直接定义数组。在嵌入式系统中,最好指定固定的地址,方便进行管理以及问题的排查。2.1 内存控制块定义struct free_block_t{ unsigned long size; unsigned char *start; unsigned char *en原创 2020-07-13 21:38:15 · 789 阅读 · 0 评论 -
linux驱动程序中设备树、device、driver之间的关系
linux驱动程序中设备树、device、driver之间的关系驱动程序的一般形式1、platform_driver2、platform_device驱动程序的一般形式下面是一个简单的驱动程序框架:#include <linux/fs.h>#include <linux/init.h>#include <linux/mm.h>#include <...原创 2020-03-29 15:44:02 · 4498 阅读 · 0 评论 -
Power PC 与 zynq数据交互(基于LocalBus)
Power PC 与 zynq数据交互(基于LocalBus)1、 Power PC 地址空间映射:实现 Power PC LocalBus控制外部设备,首先要把Power PC的effective address 映射到 device address,这里需要搞清楚两个重要的概念:第一个是LAW,第二个是Power PC的内存管理单元MMU。Power PC为了实现灵活性,实现了地址空间的可...原创 2019-12-14 14:16:05 · 2278 阅读 · 2 评论 -
从FPGA视角来看DMA中断
题外话从学习一些高档的单片机就能看到DMA的作用。DMA可以让外设不经过CPU的干预,直接把数据搬运到内存。这样做不仅仅是体现在不需要CPU干涉,而且能够极大的提高外设数据的吞吐量。举个简单的例子,我们需要用AD转换器去采集50Hz的交流信号,假设采样率是1024次/T。那么需要的AD转换器的采样率是50*1024=51200。在非突发,并行采集的条件下,AD转换器每秒需要中断CPU 51200...原创 2019-11-09 15:47:10 · 4793 阅读 · 2 评论 -
AIX-stream FIFO 实现CPU与FPGA数据流交互
AIX-stream FIFO 实现CUP与FPGA数据流交互基于地址形式的交互与基于流形式的交互AXI-stream FIFO数据读写测试AXI-stream总线读写协议AXI-FIFO与CPU数据交互PS发送数据,PL读取实验基于地址形式的交互与基于流形式的交互上周许老师说,内容我看不太懂,但是你要认真写,不然别人看不明白还不如不写。看了下前面的确实很笼统,接下来按照许老师说的,认真写。...原创 2019-11-02 16:08:14 · 10974 阅读 · 3 评论 -
zynq pl i2c控制器驱动程序
明确一下关系:adapter--对应的是soc上实际的iic控制器;struct i2c_adapter {struct module *owner; //所属模块unsigned int id; //algorithm的类型,定义于i2c-id.h,unsigned int class;const struct i2...原创 2019-10-26 15:52:28 · 1448 阅读 · 1 评论 -
USB网卡驱动分析(rt8152)
USB网卡驱动分析(rt8152)USB设备驱动程序分析USB总线和USB设备USB设备匹配方式思考网络设备驱动程序分析网卡设备驱动分析USB+网卡驱动linux 源码中rt8152驱动程序分析总结USB设备驱动程序分析最近一直在搞zynq的PL部分,为了保持对驱动程序的敏感度,看着源码分析一下rt8152的驱动程序。之前学单片机一直想着给单片机装一个USB网卡,但是一直没有思路。今天突然想到...原创 2019-10-26 15:51:02 · 6916 阅读 · 0 评论 -
zynq7000之AXI-Lite
1、为什么写这个?今天是中秋节最后一天,放肆的玩了两天以后还是要努力工作的。作为底软开发人员,会在ARM侧操作FPGA的相关接口就够了。但是好奇心驱使我看了一天FPGA。2、这个东东有啥用?AXI总线在zynq7000系列SOC中用作PS(这不是photoshop)和PL之前通信(别的任何系列,任何东西,我都不知道)。这里只讨论AXI-Lite。字面上来看是轻量级的意思。本意也确实如此,它一...原创 2019-09-15 23:16:15 · 736 阅读 · 0 评论 -
对linux用户空间DMA的分析(和单片机一样简单)
一般情况下,对外设的操作包括轮训方式、中断方式,对于数据量很大的情况会用到DMA操作。本文介绍一种在用户空间实现DMA操作的方法来获取AXI总线上的数据,FPGA部分暂时不详细说明,之后会有专题来介绍。首先要明白几个Linux的机制: 1、UIO机制,该机制可以在用户空间操作内核空间的IO设备,这里用来实现中断信号的上报。 2、/dev/mem ,该设备能够直接映射Linux物理内...原创 2019-08-18 16:47:59 · 2672 阅读 · 0 评论 -
vxvorks学习4(字符设备驱动)
1、VxWorks设备驱动结构首先在终端输入iosFdShow,此命令用来显示已经打开的设备信息。fd 是设备描述符,open函数返回以后供read, write等函数使用。name 设备的名字。drv 对应的驱动程序索引。在终端输入 devs:drv 对应上一幅图中的drv。name 设备名称。在终端输入iosDrvShow可以看到,该表通过drv索引到7个函数。以上...原创 2019-08-05 15:38:07 · 609 阅读 · 0 评论