
Linux内核
文章平均质量分 76
__2017__
七分实践,三分理论。
展开
-
OpenWrt编译系统(3)之深入探究库依赖错误:Package XXX is missing dependencies for the following libraries
原文迁移至:OpenWrt编译系统(3)之深入探究库依赖错误:Package XXX is missing dependencies for the following libraries原创 2019-01-09 20:07:35 · 3098 阅读 · 0 评论 -
SDIO驱动(8)Host驱动实现
看C/C++的源码,我们从main函数开始,因为这是代码的入口;在driver的世界里,这个功能的担当是module_init原创 2017-05-17 21:42:16 · 2361 阅读 · 0 评论 -
SDIO驱动(14)card的CIS读取及解析
sdio card CIS read&parse原创 2017-05-30 11:33:39 · 5614 阅读 · 0 评论 -
SDIO驱动(13)card的初始化
SDIO card的初始化原创 2017-05-29 17:24:51 · 7846 阅读 · 1 评论 -
SDIO驱动(5)sdio总线上的probe
sdio总线上driver和设备的match成功只是软件之间的”切口“,但是硬件的连通性、能不能工作还不知道,所以要probe探测一下。原创 2017-05-07 17:19:22 · 6131 阅读 · 0 评论 -
Android定时开机及其实现流程
开(关)机原理,以低电平为例:1、平时,电平为高2、按下按键,电平为低;3、电源管理(硬件PM)部分对低电平处理:低电平一直持续n秒,认为是开(关)机信号4、进行开(关)机要实现定时开(关)机,只需要定时时间到来后产生PM需要的开机信号(持续n秒的低电平)即可。既要定时,又要产生电平信号,在设备中由RTC这个部件完成。原创 2016-06-19 13:26:19 · 9953 阅读 · 1 评论 -
SDIO驱动(9)Host注册
如果系统支持debugfs,在/sys/kernel/debug/下有host的目录,可以查询host的信息。目录名称就是dev_set_name(&host->class_dev, "mmc%d", host->index)设置的device name。原创 2017-05-19 16:32:10 · 2038 阅读 · 0 评论 -
Linux驱动中remove和shutdown的区别
remove/shutdown回调时机:(1)卸载驱动的时候,remove调用;(2)设备移除的时候,与设备关联的驱动需要移除,remove调用;(3)系统关机/重启的时候,shutdown调用.原创 2017-05-17 21:24:14 · 7408 阅读 · 0 评论 -
Android 获取USB设备的类型
现在有USB设备插入Android系统,那么如何得知插入的设备类型?是USB打印机,U盘,还是USB鼠标?USB组织类型规定Linux对USB设备类型定义HAL层和Framework层五、APP层原创 2015-12-26 19:45:35 · 25009 阅读 · 11 评论 -
SDIO驱动(6)命令的构建和发送
MMC子系统是主从式的架构,数据的传输由host通过命令进行请求和发送。这里分析命令的构建和发送。原创 2017-05-07 22:14:37 · 6439 阅读 · 2 评论 -
SDIO驱动(4)sdio总线上driver和设备的match
一条总线上有一个设备链表klist_devices,记录挂在此bus上的device;一个驱动链表klist_drivers,记录挂在此bus上的driver。当注册新设备或者新驱动的时候, 总线上的match回调函数得到调用进行驱动/设备的匹配。原创 2017-05-07 11:11:33 · 4254 阅读 · 3 评论 -
SDIO驱动(11)Host是如何把数据发出去的
通过“SDIO驱动(10)Host的operations实现”的s3cmci_send_command函数知道了命令的发送方式,接下来分析数据的发送实现原创 2017-05-26 16:16:49 · 1747 阅读 · 0 评论 -
SDIO驱动(1)从驱动模型的角度看Host驱动
SDIO驱动Host端实现1、SDIO起源于SD标准,专注于实现数据收发2、SDIO应用广泛,常用设备如:WiFi、GSP、Camera等3、由于MMC、SD、SDIO溯本同源,所以在Linux中统一归于mmc原创 2017-03-27 22:05:56 · 4418 阅读 · 0 评论 -
SDIO驱动(15)使用DMA传输数据1
硬件支持的数据传输方式:Normal:tasklet_init(&host->pio_tasklet, pio_tasklet, (unsigned long) host);最终调用pio_tasklet()函数完成数据的收发。DMA:即Direct Memory Access,在数据的传输的过程中不需要CPU直接参与。CPU坐镇中央、发号施令,具体的数据“搬运”工作由DMA这原创 2017-07-02 14:24:30 · 4464 阅读 · 0 评论 -
OpenWrt编译系统(2)之lunch函数的细节
原文迁移至:OpenWrt编译系统(2)之lunch函数的细节原创 2019-01-09 20:05:44 · 594 阅读 · 0 评论 -
OpenWrt/Android编译系统
原文迁移至:OpenWrt编译系统(1)之make之前OpenWrt编译系统(2)之lunch函数的细节OpenWrt编译系统(3)之深入探究库依赖错误:Package XXX is missing dependencies for the following libraries...原创 2018-12-12 21:59:02 · 1086 阅读 · 0 评论 -
Linux内核好文推荐
http://www.wowotech.net这时2017年遇到的最好的博客网站,博客内容专注于Linux内核各个子系统的论述,着重分析解释框架及其背后的思想,当然也有示例佐证。首先,这里有知识:其次,这里的问答及讨论氛围也相当友好,重点突出,阅读他们也不失愉悦。其实非常想专注于做某一方面的事情,做到“知行合一”。毕竟学海无涯、余生短暂、又无天赋,就退而求术业专攻。毕竟,做出一件事很容易,而要做好...原创 2018-02-10 08:49:18 · 658 阅读 · 0 评论 -
R16开发板tina音频系统测试及tinyalsa移植
一、硬件上面红框是耳机插口,下面红框是Speaker插口。首先,接上Speaker后,在Android 4.4上,耳机和Speaker都可以正常工作;但是,烧录R16开发板tina系统LCD调试编译的最新Tina系统,不工作。二、调试表面上,执行命令:# cat cards /proc/asound/cards 0 [audiocodec ]: a原创 2018-01-19 18:19:26 · 2780 阅读 · 1 评论 -
linux的进程优先级
为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情。因为有的进程相对重要,而有的进程则没那么重要。转载 2017-12-03 20:43:20 · 1585 阅读 · 0 评论 -
ARM下的原子操作实现原理
本文的重点是学习C内嵌汇编的语法和ldrex/strex指令。原创 2017-10-14 17:26:57 · 5740 阅读 · 2 评论 -
进程间通信(3)本地socket
进程间通信(3)socket关于socket的基本知识参见Linux Socket编程。本文通过分析Telephony子系统学习Android如何使用本地socket进行IPC的。一、socket的创建在网络通信的世界中,socket通过"IP+协议+端口"连接彼此。1、socket声明在init.rcsocket rild stream 660 root radio字段规原创 2017-09-17 20:05:45 · 1610 阅读 · 0 评论 -
进程间通信(2)共享内存
进程间通信(2)共享内存原创 2017-09-16 11:59:44 · 721 阅读 · 0 评论 -
进程间通信(1)进程及通信需求来源
进程间通信(1)进程及通信需求来源一、进程在涉及进程间通信之前,我们需要稍叙下进程的概念。多角度看待进程:1、从操作系统的角度:进程是一段正在运行的程序,包括:一段可执行的代码一些必需的资源,如堆栈空间、文件、信号、内存等等2、从用户的角度:对用户来说是不存在进程概念的,用户看到就是一个个独立运行的应用程序,如浏览器、播放器等。3、从进程创建原创 2017-09-16 11:52:22 · 509 阅读 · 0 评论 -
Linux内核Notifier机制
notifier是kernel的一种异步通信机制,用于告知某些模块产生了一个事件event。notifier涉及:1,publisher,类比于server、provider等概念,负责:提供一个notifier head链表供subscriber注册handler遍历head链表逐一告知subscriber发生了某个事件2,subscriber,类比于client原创 2017-07-24 15:06:52 · 5742 阅读 · 1 评论 -
SDIO驱动(16)使用DMA传输数据2
DMA控制器驱动框架中的第二个函数:s3c24xx_dma_order_set(&s3c2440_dma_order);参数s3c2440_dma_order是一个全局变量,抽象的是下图物理channel和逻辑channel及其互相关系:static struct s3c24xx_dma_order __initdata s3c2440_dma_order = { .channe原创 2017-07-02 17:25:34 · 2179 阅读 · 0 评论 -
SDIO驱动(2)Host注册流程
1、SDIO Host端注册2、SDIO card 扫描流程原创 2017-04-04 17:59:51 · 2112 阅读 · 0 评论 -
SDIO驱动(10)Host的operations实现
在“SDIO驱动(9)Host驱动probe实现”中简单介绍了host操作card的接口mmc_host_ops一些成员函数的作用,接下来分析下各个函数的实现。原创 2017-05-24 15:59:56 · 1381 阅读 · 0 评论 -
SDIO驱动(7)sdio总线结尾
1、uevent是什么?user event的缩写,用于kernel和user之间热插拔事件通信的机制。2、通信如何实现?内核中的netlink模块,即socket通信。3、典型例子:udev,Android等。原创 2017-05-12 14:47:44 · 1273 阅读 · 0 评论 -
从sys/power/state分析并实现S3C2416的睡眠和唤醒
ARM S3C2416的睡眠与唤醒,调试与测试。经过各种颠倒黑白颠三倒四的尝试都失败后,灵机一闪,既然是cat后没反应,那就沿着cat /sys/power/state调用的函数从上到下,一步一步查。指导思想有了,那就顺蔓摸瓜的进行调试。原创 2014-11-17 18:09:33 · 9901 阅读 · 2 评论 -
S3C2416睡眠的底层实现
本文分析S3C2416睡眠的底层实现,分两个部分:1、CPU相关的实现过程2、内核怎么把睡眠唤醒的功能加入注释说的很清楚,配置这两个寄存器的目的,一是用于U-boot启动时判断是否为唤醒式重启,二是获取唤醒恢复后的运行地址。关于第一点,对照u-boot就可以十分清楚的理解。原创 2014-11-22 22:40:33 · 2176 阅读 · 0 评论 -
Linux的驱动模块管理:modprobe
modprobe和depmod机制的目的是让Linux模块的管理更加便捷,不论是对终端用户、管理员还是发行版的维护者。原创 2014-10-15 21:58:14 · 1862 阅读 · 0 评论 -
linux下华为HSPA模块MU609的驱动问题
一、硬件由于MU609在注册网路时电流很大,所以在电路设计方面,一定注意提供给模块足够大的电流。对于需要设置的引脚,在用CPU控制时,一定记得设置相应的电平。二、软件原创 2014-11-10 19:05:26 · 4345 阅读 · 0 评论 -
Linux系统中rcS文件深入分析
rcS文件中主要完成mount文件系统原创 2014-05-24 17:08:50 · 12556 阅读 · 0 评论 -
Linux驱动程序的模块参数
模块参数模块参数就是用户在系统启动或挂载模块时指定的参数值,相对于驱动程序它是全局变量。 通过module_param()定义模块参数:module_param(name, type, perm);name – 即为参数名Type – 参数的类型,可以是byte(存放在char型变量中)、short、ushort、int、uint、long、ulong、charp(ch原创 2014-04-27 12:16:31 · 1104 阅读 · 0 评论 -
Debian Linux网络配置
网络配置好后,Debian系的apt-get、aptitude等命令才能发挥它们强大的功能;有了网络,Linux才能被称其为Linux。Debian Linux网络配置:1、配置IP,编辑/etc/network/interfaces若为固定IP,配置如下:auto lo eth0iface lo inet loopbackiface eth0 inet stati原创 2014-03-14 14:18:29 · 1436 阅读 · 0 评论 -
theKernel参数解析
void (*theKernel)(int zero, int arch, uint params);theKernel是一函数指针,它指向kernel的启动地址,对于uImage格式的内核,kernel=image_header_t结构体的ih_ep值theKernel = (void (*)(int, int, uint))ntohl(hdr->ih_ep);这里存在一个转原创 2014-03-28 17:53:26 · 3502 阅读 · 0 评论 -
Linux“飞跑”
笔记本操作系统:Win 7 Vmware:VMware-workstation-full-10.0.1-1379776Linux:debian-7.4.0-i386Board:GT2440 网线:自制交叉网线 Linux :2.6.31U-Boot:u-boot-2010.06BusyBox: BusyBox 1.15.2文件系统:yaffs2交叉编译器:arm-linux原创 2014-03-27 12:09:32 · 1297 阅读 · 0 评论 -
Linux 驱动—LCD学习三:知识拓展篇
平台: Linux :2.6.31 交叉编译器:arm-linux-v4.3.3 在我们根据Fra原创 2014-05-06 11:48:25 · 973 阅读 · 0 评论 -
Linux 驱动—LCD学习二:驱动框架(帧缓冲)篇
Linux 驱动—LCD学习二:驱动框架篇原创 2014-05-04 15:26:56 · 2579 阅读 · 0 评论 -
Linux 3.6 配置S3C2416支持模拟U盘
环境:PC: debian-7.6.0ARM CPU: S3c2416Linux: 3.6.0busybox: busybox-1.20.2原创 2014-11-13 18:07:03 · 2314 阅读 · 0 评论