随笔分类 -  linux驱动

jz2440烧写开发板uboot,内核和文件系统等的相关命令
摘要:下载文件{ftpget -u 1 -p 1 192.168.2.110 a.out a.outnfs 30000000(destination) 192.168.2.109:/home/fs/work/kernel/linux-2.6.22.6/arch/arm/boot/uImage(source 阅读全文

posted @ 2018-05-14 16:01 拉风摊主 阅读(334) 评论(0) 推荐(0) 编辑

u-boot分析1:Nandflash、Norflash启动
摘要:了解u-boot之前首先了解下Bootloader,简单说Bootloader就是一段小程序,它在系统上电时开始运行,初始化硬件设备,准备好软件环境,最后调用操作系统内核。 u-boot全称:Universal Boot Loader,即通用Bootloader,遵循GPL条款,开放源码。 支持多种 阅读全文

posted @ 2018-04-30 22:14 拉风摊主 阅读(947) 评论(0) 推荐(0) 编辑

35、在编译Linux内核中增加程序需要完成以下3项工作
摘要:在编译Linux内核中增加程序需要完成以下3项工作: 将编写的源代码拷入Linux内核源代码的相应目录。 在目录的Kconfig文件中增加关于新源代码对应项目的编译配置选项 在目录的Makefile文件中增加对新源代码的编译条目 下面给出在内核中新增驱动代码目录和子目录的实例 将编写的源代码拷入Li 阅读全文

posted @ 2018-04-25 17:04 拉风摊主 阅读(306) 评论(0) 推荐(0) 编辑

34、uevent机制说明
摘要:class_device_create(4.3.2内核是device_create->device_create_vargs->device_register->device_add->kobject_uevent下面的差不多一样) class_device_register class_devic 阅读全文

posted @ 2018-04-16 22:02 拉风摊主 阅读(257) 评论(0) 推荐(0) 编辑

33、内核驱动程序理解
摘要:1、理解总线,一般顶层总线是platfrom平台总线,然后在平台总线上套一层另外的总线; 2、我们在写驱动的时候,需要了解内核中相对应的框架,一般都是框架的最后都是相关总线左右两边对比,支持就调用driver的probe函数,其做自己的事情 阅读全文

posted @ 2018-04-05 22:17 拉风摊主 阅读(256) 评论(0) 推荐(0) 编辑

32、应用调试之编写输入模拟器
摘要:1. 产品要经过测试才能发布,一般都是人工操作,比如手机触摸屏、遥控器2. 操作过程中发现错误,要再次复现,找到规律,修改程序3. 能否在驱动程序里把所有的操作记录下来,存为文件 当出错时,可以通过文件里的数据来"复现"输入 input_event上报的时候保存数据 1、使用之前仿照printk写的 阅读全文

posted @ 2018-03-31 13:50 拉风摊主 阅读(135) 评论(0) 推荐(0) 编辑

30、应用调试之配置内核输出应用程序的段错误信息
摘要:应用程序在执行的时候,如果驱动程序出现问题,会打印oops或者堆栈分析信息,也是是从在内核态下会打印错信息,而如果应用程序本身有问题,其执行时在用户态,只会提示段错误信息,这时候需要修改内核,让其支持应用出错时打印更多信息,根据oops信息搜索“”“Unable to handle kernel ” 阅读全文

posted @ 2018-03-31 13:47 拉风摊主 阅读(358) 评论(0) 推荐(0) 编辑

31、应用调试之自制系统调用、编写进程查看器
摘要:应用程序调用的read、open这些函数是glibc实现的,在调用的时候从用户态切换为内核态,其实质就是执行一条swi指令,并带有一个value,swi指令执行的时候会产生一个异常,CPU会跳到异常处理函数(vector_swi)去执行,会根据导致异常的指令里面的value调用对应的函数,比如sys 阅读全文

posted @ 2018-03-31 13:47 拉风摊主 阅读(166) 评论(0) 推荐(0) 编辑

29、应用调试之使用GDB来调试应用程序
摘要:说明:gdb可以实现源代码单步调试 原理: 1、gdb在PC机上运行,gdbserver在arm开发板上运行,gdbserver在开发板上相当于父进程,应用相当于子进程,PC上gdb发命令给gdbserver,gdbserver在发命令给应用子进程 2、gdb在运行的时候需要一个带有调试信息的app 阅读全文

posted @ 2018-03-31 13:46 拉风摊主 阅读(189) 评论(0) 推荐(0) 编辑

28、应用调试之strace命令来跟踪系统调用
摘要:strace是个工具,在使用时需要先按照,见韦东山书籍: 1、tar xjf starce-4.5.15.tar.bz2 2、cd strace-4.5.15/ 3、patch -p1 < ../strace-fix-arm-bad-syscall.patch 4、./configure --hos 阅读全文

posted @ 2018-03-31 13:44 拉风摊主 阅读(497) 评论(0) 推荐(0) 编辑

27、驱动调试之修改系统时钟中断定位系统僵死问题
摘要:该调试方法用于处理运行驱动的时候系统进入僵死状态,即无反应了,也不能输出信息 利用每时每刻系统时钟都会尝试中断的原理来处理,在该中断函数中加入打印一些信息保存信息来定位僵死的原因(中断发生的时候会保存现场,找到现场就知道僵死的函数地址) (2.6的内核中断总入口函数是asm_do_IRQ(),其形参 阅读全文

posted @ 2018-03-30 20:21 拉风摊主 阅读(224) 评论(0) 推荐(0) 编辑

25、驱动调试之打印到proc虚拟文件
摘要:1、dmesg指令是通过读/proc/kmsg来获取打印信息,也可以通过cat /proc/kmsg打印; 说明:kmsg是环形缓存区,只能读一次 2、内核中fs/proc目录下有相关文件,比如proc_misc.c,在入口函数中可以看到(4.3.2内核改到kmsg.c文件中) #ifdef CIN 阅读全文

posted @ 2018-03-30 20:19 拉风摊主 阅读(280) 评论(0) 推荐(0) 编辑

26、驱动调试之根据oops信息和堆栈确定出错的代码
摘要:a.驱动作为模块:1. 根据pc值确定该指令属于内核还是外加的模块pc=0xbf000018 它属于什么的地址?是内核还是通过insmod加载的驱动程序?先判断是否属于内核的地址: 看System.map确定内核的函数的地址范围:c0004000~c03265a4 <System.map文件在内核m 阅读全文

posted @ 2018-03-30 20:19 拉风摊主 阅读(420) 评论(0) 推荐(0) 编辑

24、驱动调试之printk
摘要:1、uboot跳转到内核启动的时候通过环境变量 console设置控制台 (console = ttySAC0表示输出到串口,并从串口结束输入,也可以设置console=tty1,表示输出到LCD,从inputevent接受输入事件) 2、内核用printk打印,printk肯定要调用硬件函数,其通 阅读全文

posted @ 2018-03-30 20:18 拉风摊主 阅读(297) 评论(0) 推荐(0) 编辑

22、DMA驱动程序框架
摘要:一、使用DMA的优点及DMA支持的请求源(请求源是启动DMA传输的事件,可以认为是触发。它可以是软件,也可以是中断,或者外部事件) 1、DMA优点是其进行数据传输时不需要CPU的干涉,可以大大提高CPU的工作效率。 3、S3C2440有四个DMA,每个DMA支持的工作方式基本相同,但支持的DMA请求 阅读全文

posted @ 2018-03-28 21:21 拉风摊主 阅读(364) 评论(0) 推荐(0) 编辑

21、IIS声卡驱动程序
摘要:声卡芯片的数据通道一般都是IIS接口,但是控制音量等控制信息的接口都不相同 (新内核在linux-3.4.2\sound\soc\codecs\uda134x.c) uda134x_codec_probe snd_soc_register_codec snd_soc_register_dais sn 阅读全文

posted @ 2018-03-27 21:37 拉风摊主 阅读(316) 评论(0) 推荐(0) 编辑

20、RTC驱动程序
摘要:drivers\rtc\rtc-s3c.c s3c_rtc_init platform_driver_register s3c_rtc_probe rtc_device_register("s3c", &pdev->dev, &s3c_rtcops, THIS_MODULE) rtc_dev_pre 阅读全文

posted @ 2018-03-26 23:40 拉风摊主 阅读(196) 评论(0) 推荐(0) 编辑

19、2.6之后的内核字符设备驱动程序
摘要: 阅读全文

posted @ 2018-03-26 23:25 拉风摊主 阅读(128) 评论(0) 推荐(0) 编辑

18.1 IIC驱动程序(基于3.4.2内核)
摘要:驱动使用smbus提供的IIC读写函数可以参考smbus-protocol.txt文档;应用层直接使用IIC读写函数读写IIC设备,应用层读写函数是由i2c-tools这个库提供的(编译的使用和应用程序放在同一目录就可以了),这个库调用的底层实际上是有驱动中i2c-dev.c提供的open、ioct 阅读全文

posted @ 2018-03-24 22:51 拉风摊主 阅读(339) 评论(0) 推荐(0) 编辑

18、IIC总线驱动程序
摘要:i2c_s3c2410.c是内核自带dev层(adapt)驱动程序,知道怎么发收数据,不知道含义 在与i2c_s3c2410.c(在其probe函数中的s3c24xx_i2c_init函数会初始化iic控制器)上层目录中chip目录下则是各个驱动程序,就是IIC总线框架的driver层 i2c_ad 阅读全文

posted @ 2018-03-23 23:49 拉风摊主 阅读(352) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示