![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 74
CaesarX
这个作者很懒,什么都没留下…
展开
-
linux-I2C驱动
linux的I2C体系结构分为3个组成部分: (1) I2C核心原创 2014-05-03 20:39:36 · 1151 阅读 · 0 评论 -
GPIO模拟I2C
之前在学习I2C驱动,想了想应该先深刻理解下I2C协议。个人觉得理解I2C协议最好的方法就是实践,而最好的实践方式就是用GPIO来模拟I2C协议进行试验,直观深刻。 先看下I2C时序图: 根据时序图,用两个gpio分别模拟sda和scl即可。在这之前自然需要先对gpio进行输入输出的配置。这里只从写数据角度来描述这一过程。读数据同理即知。 先配置gpio,包括sda、scl、供电gp原创 2014-05-04 22:34:19 · 6635 阅读 · 1 评论 -
I2C驱动实例解析
简单的说,i2c驱动也就三步吧,注册i2c设备,注册i2c设备驱动,创建sysfs文件供上层调用。 1. 注册i2c设备。 先定义一个i2c_board_info static struct i2c_board_info __initdata xxxx_i2c_info[] = { { I2C_BOARD_INFO("XXX原创 2014-05-05 21:52:19 · 4311 阅读 · 0 评论 -
设备模型
对于驱动开发来说,设备模型的理解是根本,毫不夸张得说,理解了设备模型,再去看那些五花八门的驱动程序,你会发现自己站在了另一个高度,从而有了一种俯视的感觉,就像凤姐俯视知音和故事会,韩峰同志俯视女下属。 顾名而思义就知道设备模型是关于设备的模型,既不是任小强们的房模,也不是张导的炮模。对咱们写驱动的和不写驱动的人来说,设备的概念就是总线和与其相连的各种设备了。电脑城的IT工作者都会知道设备是通转载 2014-06-04 21:42:47 · 712 阅读 · 0 评论 -
linux进程调度
一:Linux进程的四大要素 1:一段供进程执行的程序,该程序可以被多个进程执行。 2:独立的内核堆栈。 3:进程控制快(task_struct:有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度。同时,这个结构还记录着进程所占用的各项资源。 4:独立的存储空间:即拥有专有的用户空间,除了前面的内核空间还有用户空间。 线程:只有前三条,没有第四条。 内核线程:完全没有用转载 2014-06-04 21:45:34 · 631 阅读 · 0 评论 -
GPIO模拟SPI
上次用gpio模拟i2c理解i2c协议,同样的,我用gpio模拟spi来理解spi协议。 我用的是4线spi,四线分别是片选、时钟、命令/数据、数据。 数据在时钟上升沿传递,数据表示的是数据还是命令由命令/数据线决定。 开始条件: void spi_start(void) { gpio_config(GPIO_CS, GPIO_OUTPUT); udelay(SPI_SPEED原创 2014-05-24 11:04:56 · 3716 阅读 · 0 评论 -
start_kernel()分析(一)
从某种意义上,函数start_kernel就好像一般可执行程序中的主函数main,系统进入这个函数之前已经进行了一些最低限度的初始化,再往前研究就涉及很多硬件相关及编程语言了,这里是较高层次的初始化,基本是C代码,一直想搞清楚内核的初始化流程,好对整个linux内核有更深理解。分析程序习惯性的找main函数,那么就从这个start_kernel看看。 这个函数在init/main.c: a原创 2014-06-09 22:14:32 · 10067 阅读 · 1 评论 -
linux内核源代码的C语言代码
看内核代码时,有些语言成分或者说编程技巧平常没见过更没用过,这里先记下一些: 1. 关于保留字前后都加上“__”,比如__inline__,其实等价于inline。C语言支持一些属性描述符,而gcc同样支持不少这样的描述符,这些描述符的使用等于在C语言中增加了一些新的保留字,此时,原来的C语言中这些词可能并不是保留字,一旦老的代码中刚好有变量名与此描述符一样,就会冲突。为了解决这个问题,原创 2014-06-10 21:38:44 · 3843 阅读 · 0 评论 -
解析 Linux 中的 VFS 文件系统机制
点击打开链接转载 2015-01-06 20:53:48 · 933 阅读 · 0 评论