![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linuxDriver
wuye110
这个作者很懒,什么都没留下…
展开
-
ds5 debug arm64 模拟器
ds5 debug arm64 模拟器0)编译版本依赖install autoconf automake libtool1)工具加载符号表el3断点在el2入口2)b el2:0x800800003)加载符号表el2add-symbol-file /home/xzf/share/runninglinuxkernel_4.0-rlk_basic/vmlinux -0xFFFF7FFF80000000//0x80080000-0xFFFF80000008000info file4)加载符原创 2022-04-23 11:35:37 · 253 阅读 · 0 评论 -
Linux_2.6内核配置说明
Code maturity level options代码成熟度选项Prompt for development and/or incomplete code/drivers显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择General setup常规设置Local version - append to kernel release转载 2013-02-28 14:22:37 · 780 阅读 · 0 评论 -
LDD3读书笔记-----高级字符驱动操作
1. ioctl 接口在用户空间, ioctl 系统调用有下面的原型:int ioctl(int fd, unsigned long cmd, ...); ioctl 驱动方法有和用户空间版本不同的原型:int (*ioctl) (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long ar原创 2013-02-28 13:17:53 · 657 阅读 · 0 评论 -
LDD3读书笔记----调试技术
内核编程带有它自己的, 独特的调试挑战性. 内核代码无法轻易地在一个调试器下运行, 也无法轻易的被跟踪, 因为它是一套没有与特定进程相关连的功能的集合. 内核代码错误也特别难以重现, 它们会牵连整个系统与它们一起失效, 从而破坏了大量的能用来追踪错误的证据.内核中的调试支持这里, 我们列出用来开发的内核应当激活的配置选项. 除了另外指出的, 所有的这些选项都在 "kernel hackin原创 2013-02-28 14:10:20 · 775 阅读 · 0 评论 -
理解Proc 文件系统
摘要:Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。尽管在各种硬件平台上的 Linux 系统的 /proc 文件系统的基本概念都是相同的,但本文只讨论基于 intel x86 架构的 Linux /proc 文件系统。/proc --- 一个虚拟文件系统/proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息转载 2013-03-02 22:17:01 · 653 阅读 · 0 评论 -
linux内核常用宏实例总结-----持续更新
/* Force a compilation error if condition is true */#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])如果条件为真则引起一个编译时错误。使用实例:static int __init spidev_init(void){ int s原创 2013-02-25 03:10:22 · 739 阅读 · 0 评论 -
eeprom注册到I2c总线上的调试信息
模块加载方式:反应i2c驱动加载和卸载的过程,可以结合代码分析注册流程。[root@utu-Linux]\$ insmod eeprom.ko[root@utu-Linux]\$ cat /proc/kmsg i2c-core: driver [eeprom] registeredi2c-adapter i2c-0: found normal entry for adapter原创 2013-03-28 23:28:55 · 1395 阅读 · 0 评论 -
基于2.6.35内核的OV9650摄像头驱动移植
作者:冯利美,华清远见嵌入式学院讲师。一、 移植环境:【移植环境】1、 主机:Ubuntu 10.10发行版2、 目标机:FS_S5PC100平台3、 交叉编译工具:arm-none-linux-gnueabi-4.5.14、 摄像头模块:OV96505、Linux文件系统:rootfs. cramfs.6、内核:linux-2.6.35-farsigt二、 内转载 2013-04-02 23:54:18 · 2315 阅读 · 1 评论 -
OV9650 移植
作者:冯利美,华清远见嵌入式学院讲师。一、 移植环境:【移植环境】1、 主机:Ubuntu 10.10发行版2、 目标机:FS_S5PC100平台3、 交叉编译工具:arm-none-linux-gnueabi-4.5.14、 摄像头模块:OV96505、Linux文件系统:rootfs. cramfs.6、内核:linux-2.6.35-farsigt二、 内转载 2013-04-02 23:55:28 · 5793 阅读 · 0 评论 -
linux v4l2 设备驱动
v4l2简介 Video for Linux Two:V4L2的是V4L的第二个版本。原来的V4L被引入到Linux内核2.1.x的开发周期后期。Video4Linux2修正了一些设计缺陷,并开始出现在2.5.X内核。Video4Linux2驱动程序包括Video4Linux1应用的兼容模式,但实际上,支持是不完整的,并建议V4L2的设备使用V4L2的模式。现在,该项目的DVB-原创 2012-12-27 09:27:16 · 1053 阅读 · 0 评论 -
E: Sub-process /usr/bin/dpkg returned an error code (1)解决方案
终端输入 cd /var/lib/dpkg sudo mv info{,.bak} sudo mkdir info sudo dpkg --configure -a sudo apt-get install -f line 1: syntax error: "(" unexpected编译器使用了gcc而非arm-linu原创 2013-03-05 21:45:15 · 774 阅读 · 0 评论 -
./configure: /bin/sh^M: bad interpreter: No such file or directory
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。 解决:利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。原创 2013-04-10 19:37:07 · 1758 阅读 · 0 评论 -
pl011_init
static int __init pl011_init(void){ int ret; printk(KERN_INFO "Serial: AMBA PL011 UART driver\n"); ret = uart_register_driver(&amba_reg); if (ret == 0) { ret = amba_driver_regis原创 2017-11-20 22:12:44 · 1343 阅读 · 0 评论 -
LDD3读书笔记----中断处理
一个中断不过是一个硬件在它需要处理器的注意时能够发出的信号. Linux 处理中断非常类似它处理用户空间信号的方式. 对大部分来说, 一个驱动只需要为它的设备中断注册一个处理函数, 并且当它们到来时正确处理它们.中断注册int request_irq(unsigned int irq,irqreturn_t (*handler)(int, void *, struct pt_regs *)原创 2013-02-28 09:01:44 · 723 阅读 · 0 评论 -
linux/arch/arm/kernel/head.S
/* * linux/arch/arm/kernel/head.S * * Copyright (C) 1994-2002 Russell King * Copyright (c) 2003 ARM Limited * All Rights Reserved * * This program is free software; you can redistrib原创 2013-02-26 23:09:32 · 1278 阅读 · 0 评论 -
start_kernel()函数分析
asmlinkage void __init start_kernel(void) { char * command_line; extern struct kernel_param __start___param[], __stop___param[]; smp_setup_processor_id(); //空转载 2013-02-27 11:33:56 · 807 阅读 · 0 评论 -
linux SPI code
内核提供,位于drivers\spi\spi.c/* * spi.c - SPI init/core code * * Copyright (C) 2005 David Brownell * * This program is free software; you can redistribute it and/or modify * it under the term原创 2012-12-22 17:05:25 · 989 阅读 · 0 评论 -
clk_get函数实现,Linux内核时钟框架
(1) 对应外设时钟的开启struct clk=clk_get(NULL,"adc");clk.enable();之后adc对应的时钟位就能时能。struct clk *clk_get(struct device *dev, const char *id){ .......... list_for_each_entry(p, &clocks, list转载 2012-12-27 10:35:04 · 652 阅读 · 0 评论 -
Linux 音频设备驱动(宋宝华书)
第十七章 Linux 音频设备驱动本章导读在Linux 中,先后出现了音频设备的两种框架OSS 和ALSA,本节将在介绍数字音频设备及音频设备硬件接口的基础上,展现OSS 和ALSA 驱动的结构。17.1~17.2 节讲解了音频设备及PCM、IIS 和AC97 硬件接口。17.3 节阐述了Linux OSS 音频设备驱动的组成、mixer 接口、dsp 接口及用户空间编程方法。转载 2012-12-28 14:34:25 · 4588 阅读 · 1 评论 -
Linux下的platform总线驱动
一.Platform设备驱动概念主要讲解平台设备驱动的模型和基本概念,同时因为驱动加载的方式有动态加载和静态加载两种方式,这里我们分别对动态加载和静态加载两种情况下,如何使用平台设备和驱动加以叙述。最后使用mini2440开发板,运用Platform和device_attribute机制,编写按键驱动代码和测试代码。我们知道linux内核中常见的的总线有I2C总线,PCI总线,串口总线,S转载 2012-12-21 13:49:19 · 732 阅读 · 0 评论 -
Linux中IIC总线驱动分析
1.1 Linux的I2C驱动框架Linux内核的I2C总线驱动程序框架如图1所示:图1.I2C总线驱动程序框架Linux的I2C体系结构分为3个组成部分:I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(即“al2gorithm”)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。这部分是与平台无关的。与其对应的是Lin转载 2012-12-21 14:28:17 · 919 阅读 · 0 评论 -
device_init_wakeup()
要认识device_init_wakeup(),首先需要知道两个概念:can_wakeup和should_wakeup。这两个家伙从哪里来的?看struct device结构体,里面有一个成员struct dev_pm_info power,来看一看struct dev_pm_info,来自include/linux/pm.h文件:265 struct dev_pm_info { 2转载 2013-03-04 09:52:12 · 1976 阅读 · 0 评论 -
gpio_request gpio_set_value __gpio_set_value
int gpio_request(unsigned gpio, const char *label) gpio则为你要申请的哪一个管脚,label则是为其取一个名字1、一般gpio_request封装了mem_request(),起保护作用,最后要调用mem_free之类的。主要是告诉内核这地址被占用了。当其它地方调用同一地址的gpio_request就会报告错误,转载 2013-03-04 09:57:01 · 1207 阅读 · 0 评论 -
linux中 likely与unlikely
看内核时总遇到if(likely( )){}或是if(unlikely( ))这样的语句,最初不解其意,现在有所了解,所以也想介绍一下。likely() 与 unlikely()是内核(我看的是2.6.22.6版本,2.6的版本应该都有)中定义的两个宏。位于/include/linux/compiler.h中,具体定义如下:#define likely(x) __builtin_e转载 2013-02-20 11:13:32 · 578 阅读 · 0 评论 -
LDD3读书笔记------总线, 设备, 和驱动,类
总线一个总线是处理器和一个或多个设备之间的通道. 为设备模型的目的, 所有的设备都通过一个总线连接。设备模型表示在总线和它们控制的设备之间的实际连接.在 Linux 设备模型中, 一个总线由 bus_type 结构代表, 定义在 . 这个结构看来象:struct bus_type { char *name; struct subsystem subsys; struct k原创 2013-02-27 11:05:16 · 637 阅读 · 0 评论 -
LDD3读书笔记-----Linux 设备模型
2.6 设备模型2.6 设备模型提供了这个抽象. 现在它用在内核来支持广泛的任务, 包括:电源管理和系统关机 这些需要一个对系统的结构的理解. 例如, 一个 USB 宿主适配器不可能被关闭, 在处理所有的连接到这个适配器的设备之前. 这个设备模型使能了一个按照正确顺序的系统硬件的遍历.与用户空间的通讯 sysfs 虚拟文件系统的实现被紧密地捆绑进设备模型, 并且暴露它所原创 2013-02-27 10:17:03 · 671 阅读 · 0 评论 -
LDD3读书笔记------时间, 延时, 和延后工作
测量时间流失使用 jiffies 计数器j = jiffies; /* read the current value */内核输出 4 个帮助函数来转换以 jiffies 表达的时间值, 到和从这些结构:#include unsigned long timespec_to_jiffies(struct timespec *value);void jiffies_to_ti原创 2013-02-28 10:00:28 · 762 阅读 · 0 评论 -
LDD3读书笔记----内存映射
1.Linux 中的内存管理Linux 是, 当然, 一个虚拟内存系统, 意味着用户程序见到的地址不直接对应于硬件使用的物理地址. 虚拟内存引入了一个间接层, 它允许了许多好事情. 有了虚拟内存, 系统重运行的程序可以分配远多于物理上可用的内存; 确实, 即便一个单个进程可拥有一个虚拟地址空间大于系统的物理内存. 虚拟内存也允许程序对进程的地址空间运用多种技巧, 包括映射成员的内存到设备内存.原创 2013-02-28 13:18:33 · 777 阅读 · 0 评论 -
linux SPI总线驱动
一.SPI子系统综述 SPI子系统从上到下分为:spi设备驱动层,核心层和master驱动层。其中master驱动抽象出spi控制器的相关操作,而spi设备驱动层抽象出了用户空间调用的相关函数。 主控制器(master)和主控制器驱动将挂载到platform总线上。在platform_driver的probe函数中将注册spi_master,同时将会获取在板级信息原创 2012-12-21 21:46:46 · 1041 阅读 · 0 评论