自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于驱动driver与设备device匹配

driver和device匹配

2023-12-29 10:43:04 474

原创 Linux驱动—实现一个驱动支持多个设备

多设备共用驱动

2023-12-19 10:54:35 65

原创 petalinux中关于manual的设置

petalinux

2023-12-07 10:45:29 116

原创 makefile

当 make 在运⾏⼀个规则时,我们前⾯已经提到 了⽬标和先决条件之间的依赖关系,make 在检查⼀个规则时,采⽤的⽅法是:如果先决条件中相关的⽂件的时间戳⼤于⽬标的时间戳,即先决条件中的⽂件⽐⽬标更新,则知道有变化,那么需要运⾏规则当中 的命令重新构建⽬标。还有就是⼀个规则中⽬标可以有多个,当存在多个⽬标,且这⼀规则是 Makefile 中的第⼀个规则时,如果我们运⾏ make 命令不带任何⽬标,那么规则中的第⼀个⽬标将被视为是缺省⽬标。举例,%.o表示匹配所有的.o文件,注意是用于匹配的。

2023-12-06 18:14:55 65

原创 TMS320C6678开发例程使用手册

DSP6678

2023-03-02 15:45:05 434

原创 DMA在实时图像处理中的应用

DSP中DMA的使用

2022-11-24 17:09:07 664

原创 linux IIC设备驱动开发

linux下IIC驱动

2022-11-10 17:54:57 442

原创 AXI DMA IP核操作流程

AXI DMA 操作

2022-11-01 09:43:48 496

原创 IIC驱动

IIC驱动

2022-10-20 17:51:01 853

原创 uboot的控制台和kernel终端

uboot在运行过程中会初始化部分硬件,包括串口和网卡,串口作为uboot进行交互的控制台,通过PC的串口进行连接,串口的驱动是芯片厂商已经实现的,会有默认的串口,如果需要修改,查看芯片手册,找到要换的串口基地址,然后修改uboot的config文件中关于串口设置,同时修改完config文件之后修改uboot的设备树,要保持一致,config文件是uboot的设置,里面包括设备树文件的文件名等设置。uboot的移植并不是说我们完完全全的从零开始将uboot移植到我们现在...

2022-05-09 23:09:44 635

原创 makefile规范

makefile的格式目标:依赖命令命令在makefile中,可以有多个目标,如果要最终输出多个目标,需要加all,不加的话最终只会输出一个目标,类似clean这种目标,属于伪目标。生成target的流程,如果target不存在的话,那么肯定是根据后面的依赖以及命令,来生成target,这时候如果后面的依赖存在的话,还好说,直接用命令生成target即可,如果后面的依赖项缺失,比如没有main.o中间目标文件,这时候,就会先...

2022-04-22 18:51:52 157

原创 设备树和platfrom驱动

驱动开发,自我理解

2022-03-22 18:23:25 404

原创 FLASH时序图

时序图中,CMD后面跟着的是寄存器地址,表示要读的寄存器,如果是写入的话,表示写的寄存器地址。如果CPU集成了FLASH控制器,则不需要自己实现时序图中的内容,如果没有集成,则需要自己实现,首先要看懂时序图。IO0-IO7是用来发送或者接收数据的,不论是读或者写,都是靠这些IO来进行读写,如何区分读写,根据指令区分,如果区分数据线上发送的是地址还是指令,是根据ALE和CLE以及WE、RE这些使能信号来区分,配合使用。NANDflash详解_holywell的博客-CSDN博客_nandf...

2021-12-16 17:51:54 922

转载 linux 内核驱动--Platform Device和Platform_driver注册过程

从 Linux 2.6 起引入了一套新的驱动管理和注册机制 :Platform_device和Platform_driver。Linux 中大部分的设备驱动,都可以使用这套机制 ,设备用 Platform_device 表示,驱动用 Platform_driver 进行注册。Linux platform driver 机制和传统的 device driver机制 ( 通过 driver_register 函数进行注册 ) 相比,一个十分明显的优势在于 platform 机制将设备...

2021-11-17 21:29:41 942

原创 关于linux驱动加载

一般情况下,非热插拔设备,在内核启动初始化后进行设备device加载,加载到内核,不需要手动添加,只需要在config中进行勾选,后续进行驱动加载时进行匹配,因为已经有了device设备,也包含了硬件资源,只需要在驱动中通过api获取调用。但是对于热插拔设备,device需要自己手动写代码进行添加,以及后续驱动的编写,这些只针对platfrom总线方式的驱动。传统的device、driver不需要考虑,因为在驱动程序中进行写死硬件资源,不需要使用api获取。...

2021-11-17 21:15:59 631

原创 linux驱动关于platfrom的device以及driver

(带设备树)驱动加载时,是利用设备树里的compatible去进行设备跟驱动的匹配,设备树在内核加载之后会自动将节点转化为platform_device这种格式,同时把名字放到of_node这个地方。利用compatible进行匹配。不带设备树的驱动加载时,可以用name名字去匹配,probe函数中是有device注册的函数的。linux驱动中,自动加载驱动是在执行完insmod指令之后,手动加载驱动的顺序是先insmod,然后在mknode,之后再d...

2021-11-12 17:45:32 3329

原创 ARM启动说明

ARM启动时,32位地址总线能寻址4G地址,芯片启动时总是从0地址启动,所以总线上的0地址是作为映射用的,映射启动代码,并不是内存中的实际0地址,总线上的所有地址都是作为一个映射,都是由硬件设计去分配的。...

2021-11-11 17:40:35 2741

转载 ARM中的几种地址

从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行 接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上的某个匹配接口对接……于是总线上出现了各种设备:内存、硬盘,鼠标、键盘,显示 器…… 对于CPU而言,如果它要发数据到某个设备,其实是发到对应的接口,接口电路里有多个寄存器(也称为端口),访问设备实际上是访问相关的端口,所有的信息 会由接口转给它的设备。那么CPU...

2021-06-09 20:46:02 2263

原创 ARM物理地址

ARM启动时,32位地址总线能寻址4G地址,芯片启动时总是从0地址启动,所以总线上的0地址是作为映射用的,映射启动代码,并不是内存中的实际0地址,总线上的所有地址都是作为一个映射,都是由硬件设计去分配的。物理地址是从地址总线上传来的地址,经过MMU(MMU作为硬件可选择的一部分)由虚拟地址转化之后形成的地址。32位CPU一共可寻址4GB,这4GB并不是全部分配给内存,有一部分要分配给总线使用(总线上挂着很多外设),一般是低地址给内存,高地址给总线,外设使用的是总线地址,CPU使用的是物理地址(独立编制)。没

2021-06-09 20:45:04 793 1

原创 C语言知识

1.static关键字的作用:1)在函数中,静态变量在调用过程中保持值不变,只初始化一次。2)在.c文件中,静态变量和静态函数只在此文件内起作用,在其他文件没有用。2.引用和指针的区别:1)引用是变量的别名,实际上就是直接在操作该变量,而指针是通过指针变量指向一个对象,间接操作该对象,2)引用必须进行初始化,而指针可以不初始化。3)不存在指向空的引用,但是存在指向空的指针...

2021-06-05 21:26:39 87

原创 内存编址(地址总线上)

ARM下编址只有统一编址,IO端口跟内存空间统一进行编址,访问IO端口时,跟访问内存一样的方式进行访问,但是只是一个地址,并不会通过物理内存来访问外设的IO端口,所以不带操作系统时huo

2021-06-05 21:25:54 363

原创 总线寻址说明

在32位操作系统中,可寻址范围为4GB,因为操作系统都是从0开始寻址,RAM跟ROM的绝对物理地址也是从0开始,所以操作系统需要进行地址映射,保证系统只有一个0地址,这个工作由操作系统完成,按照规则分配好,我们只需要学习这个规则,知道内存中的地址分配,但是像flash跟SATA这类外存设备,都不是CPU可直接访问的,都需要通过一个相应控制器去访问,所以地址不是直接映射在CPU地址空间里的,CPU只需要映射很小的一块地址作为IO映射(寄存器)。访问时告诉控制器读写命令以及地址,然后外存设备会返回相应的数据,.

2021-05-30 20:13:02 679

转载 STM32串口中断

串口设置的一般步骤可以总结为如下几个步骤: 1)  串口时钟使能,GPIO时钟使能。 2)  设置引脚复用器映射:调用GPIO_PinAFConfig函数。 3)  GPIO初始化设置:要设置模式为复用功能。 4)  串口参数初始化:设置波特率,字长,奇偶校验等参数。 5)  开启中断并且初始化NVIC,使能中断(如果需要开启中断才需要这个步骤)。 6)  使能串口。 7)  编写中断

2017-10-21 22:02:38 2098

转载 设备文件相关函数

1、在Linux2.6内核中一个字符设备用cdev结构来描述,其定义如下:[cpp] view plain copy print?/*include/linux/cdev.h*/  /*include/linux/cdev.h*/[cpp] view plain copy print?struct cdev {          struct kobject kobj;          stru

2017-10-17 21:20:15 212

转载 iotcl函数

大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。一、在用户空间,使用ioctl系统调用来控制设备,原型如下:[cpp] view plain copy print?int ioctl(int fd,unsigned long cmd,…);  /* fd:文件描述符 cmd:控制命令 …:可选参数:插入*argp,具体内容依赖于cmd */  int ioctl(int f

2017-10-13 17:04:26 633

转载 字符驱动

从上一篇我们看到了字符驱动的三个重要结构,那我现在跟大家详细的说说 struct file_operations 这个文件操作方法的数据结构。其实这结构中包含了用户空间所需要的大部分的系统调用函数指针,因此如何 我们应该如何去实现这些函数的策略呢?这就应该跟用户空间函数所实现的函数功能相对应,去实现这些函数 策略。本博客重点描述几个重要的比如 ope

2017-10-13 13:50:18 194

转载 内存空间和用户空间

A.INTRODUCTION     (32位系统)                 Linux 简化了分段机制,使得虚拟地址(逻辑地址)与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G(2^32)。      Linux内核将这4G字节的空间分为两部分。将最高的 1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G字节(从

2017-10-13 13:41:40 4932

转载 字符设备驱动

Linux内核分析(五)昨天我们对linux内核的子系统进行简单的认识,今天我们正式进入驱动的开发,我们今后的学习为了避免大家没有硬件的缺陷,我们都会以虚拟的设备为例进行学习,所以大家不必害怕没有硬件的问题。今天我们会分析到以下内容:1.      字符设备驱动基础2.      简单字符设备驱动实现3.      驱动测试 l  字符设备基础1.       字符设备描述结构在l

2017-10-12 22:07:09 2232

转载 文章标题

转自:http://hi.baidu.com/grdd/blog/item/2d799d0adc2b7b1895ca6bde.html 内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义: linux-2.6.22/include/linux/cdev.hstruct cdev {   struct kobject kobj;          // 每个 cdev 都是一个 k

2017-10-12 22:06:43 122

转载 文章标题

mknod - make block or character special filesmknod [OPTION]… NAME TYPE [MAJOR MINOR]    option 有用的就是 -m 了    name   自定义    type   有 b 和 c 还有 p    主设备号    次设备号主设备号是由linux/major.h定义的,如下定义了一个DOC设备: #defi

2017-10-12 22:05:18 122

转载 文章标题

TFTP协议是简单文件传输协议,基于UDP协议,没有文件管理、用户控制功能。TFTP分为服务器端程序和客户端程序,在主机上通常同时配置有TFTP服务端和客户端。相关阅读:Ubuntu下tftp服务搭建http://www.linuxidc.com/Linux/2012-08/67933.htmTFTP服务器配置 http://www.linuxidc.com/Linux/2012-07/64

2017-10-11 22:09:26 150

转载 文章标题

总体来说,嵌入式Linux内核和根文件的引导与PC机差不多。嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我 们将内核和根文件系统直接烧入到Flash中(包括NOR和NAND flash),这种方法的缺点是在内核和根文件系统出现修改时我们就不得不得重新对flash进行擦除和烧写工作,这个非常耗时,在产品开发调试阶段非常 不适合,只有在最终成品时才比较适用。哪在开发阶段采

2017-10-11 22:05:52 117

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-10-11 21:53:11 165

实例解析linux内核I2C体系结构

IIC驱动,linux下IIC驱动结构

2022-10-24

空空如也

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

TA关注的人

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