随笔分类 - 嵌入式Linux驱动
内核定时器使用简单流程
摘要:1.定义数据结构:timer_list,并初始化器成员 2.注册到内核:init_timer 3.直接启动内核定时器:add_timer 4.mod_timer:刷新定时器时间,并启动内核定时器
阅读全文
posted @ 2017-03-02 23:25
Mr_ox
等待队列使用简单流程
摘要:1.声明等待队列头:DECLARE_WAIT_QUEUE_HEAD 2.阻塞:wait_event 3.唤醒:wake_up
阅读全文
posted @ 2017-03-02 23:23
Mr_ox
杂设备驱动模型编写简单流程
摘要:1.注册杂设备:misc_register 2.定义杂设备数据结构,并对其初始化 3.注销咋设备:misc_deregister
阅读全文
posted @ 2017-03-02 23:22
Mr_ox
中断程序编写简单流程
摘要:1.向内核注册中断:request_irq 2.确定中断号(BSP包提供) tq2440中直接使用IRQ_EINT4 tiny4412中使用gpio_to_irq(EXYNOS4_GPX3(2)) 3.编写中断服务程序:注意其返回值类型irqreturn_t
阅读全文
posted @ 2017-03-02 23:20
Mr_ox
Linux输入子系统
摘要:1.概述 输入设备是典型的字符设备,一般工作机制是:底层在按键,触摸等动作发生时产生一个中断,然后cpu通过SPI\IIC或者外部存储器总线读取键值,坐标等数据,放入一个缓冲区,字符设备驱动管理该缓冲区,而驱动的read接口让用户可以读取键值,坐标等数据。 Linux系统中,输入子系统由输入子系统设
阅读全文
posted @ 2017-02-19 10:27
Mr_ox
Linux下clock子系统
摘要:常用API: 1.struct clk *clk_get(struct device *dev, const char *id):从一个时钟list链表中以dev或者字符id名称查找一个时钟clk结构体 2.void clk_put(struct clk *clk):该函数与clk_get函数对应,
阅读全文
posted @ 2017-02-17 16:37
Mr_ox
平台设备驱动模型
摘要:1.总线驱动模型简介 - 在Linux2.6的设备驱动模型中,关心总线、设备和驱动三个实体。总线将设备和驱动绑定。 - 在嵌入式系统里,SOC系统中集成的独立的外设控制器、挂接在SOC内存空间的外设等却不依附于此类总线。基于该背景,Linux发明了一种虚拟总线,称为platform总线,相应的设备称
阅读全文
posted @ 2017-02-17 15:45
Mr_ox
内核定时器
摘要:1.概述 内核定时器是内核用来控制在未来某个时间点,调度执行某个函数的一种机制。 2.相关数据结构 struct timer_list 3.内核定时器函数 - DEFINE_TIMER:静态定义并初始化定时器 - TIMER_INITIALIZER(_function, _expires, _dat
阅读全文
posted @ 2017-02-17 15:20
Mr_ox
内核工作队列
摘要:1.概述 Linux中的工作队列机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程,并可以根据当前系统cpu的个数创建线程的数量。工作队列是一中将工作推后执行的形式。把工作推后,交由一个内核线程执行。允许被重新调度,甚至是睡眠。共分为三种形式: - 共享工作队列:Lin
阅读全文
posted @ 2017-02-17 11:37
Mr_ox
非阻塞I/O和阻塞I/O
摘要:1.简介 等待队列实现在事件上的条件等待:希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制权。可用于: - 中断处理 - 进程同步 - 定时 2.等待队列头数据结构 3.进程状态 - TASK_TUNNING:可运行状态 - TASK_INTERRUPTIBLE:可中断睡眠状态 - TAS
阅读全文
posted @ 2017-02-17 11:03
Mr_ox
Linux中断驱动程序
摘要:1.中断概念 中断时一种电信号,由硬件设备产生,然后再由中断控制器向处理器发送相应的信号。处理器一经检测到该信号,便中断自己当前正在处理的工作,转而去处理中断。此后,处理器会通知操作系统已经产生中断。不同的设备,对应的中断不同,而每个中断都通过一个唯一的数字标识,这些值通常被称为中断请求线。 2.L
阅读全文
posted @ 2017-02-17 11:03
Mr_ox
3.字符设备led驱动
摘要:1.硬件原理图 由图可知,led1,led2,led3,led4,分别对应GPB5,GPB6,GPB7,GPB8,由s3c2440芯片手册可得到如下图所示,分别配置GPBCON和GPBDAT即可 2.open接口 int first_chrdev_open(struct inode *inode,
阅读全文
posted @ 2017-02-16 19:50
Mr_ox
2.字符设备驱动开发
摘要:1.Linux设备驱动特点 在Linux系统中,一切硬件、软件设备都视为文件。 设备驱动程序功能: - 初始化和释放设备 - 把数据从内核传递到硬件和从硬件读取数据 - 读取应用程序传送给设备文件的数据和回送应用程序请求的数据 - 检测和处理设备出现的错误 2.Linux系统3大类设备特点 - 字符
阅读全文
posted @ 2017-02-16 18:22
Mr_ox
1.Linux内核模块编程
摘要:1.模块加载程序结构 - 模块加载函数: static int _init init_function(void); module_init(init_function); - 模块卸载函数: static void _exit exit_function(void); module_exit(ex
阅读全文
posted @ 2017-02-16 16:04
Mr_ox
2017-01-26--编译busybox总结
摘要:错误一: 1.问题:make命令版本过高,出现该错误 2.解决:参考http://www.linuxidc.com/Linux/2012-01/52368.htm 将makefile中的 config %config: scripts_basic outputmakefile FORCE 修改为 %
阅读全文
posted @ 2017-02-13 18:11
Mr_ox
2017-01-26--编译Linux内核2.6.30版本报错解决
摘要:错误一: 1.解决参考:http://blog.csdn.net/u010445505/article/details/39299855 2.下载得到文件__gnu_mcount_nc_patch.patch.gz后,使用命令:gzip -dc __gnu_mcount_nc_patch.patch
阅读全文
posted @ 2017-01-26 19:26
Mr_ox
2016-12-04---tiny412平台下的iconv库的移植问题
摘要:使用iconv库函数进行utf-8转gb2312时,移植iconv库
阅读全文
posted @ 2016-12-04 19:37
Mr_ox