kernel
文章平均质量分 75
linchuanzhi_886
这个作者很懒,什么都没留下…
展开
-
Linux 内核启动过程分析----zImage自解压
要想移植内核,肯定是要知道内核的启动过程的,包括协处理器的操作。这对我们理解ARM工作方式、MMU配置,中断是很有帮助的。最近写代码太少,有时间研究内核了。下面是我个人主观对内核启动过程的分析,如有不同,请提出探讨,共同进步! 上一篇分析过了,uboot引导的uImage,最先执行的函数的是由arch/arm/boot/compressed下的vmlinx.lds文件决定的。它就是_sta原创 2015-04-04 12:01:52 · 1899 阅读 · 1 评论 -
Linux 内核启动过程--head.S(arch/xxx/kernel下的)
由上篇的分析可以知道,uImage是zImage加上64字节的头信息得到的,而zImage又是compressed下的vmlinux经过objcopy得到的,compressed下的vmlinux是由vmlinux.lds、 head.S 和 piggy.gzip.S misc.c编译而成的,其实就是在piggy.gzip中添加了解压代码。piggy.gzip是Image经过gzip -n -f -原创 2015-04-04 18:33:40 · 3143 阅读 · 1 评论 -
内核网络数据发送流程
为了了解TOE,以TCP协议为例子。以arm平台为例.首先看一下系统调用过程。 系统调用的时候会触发软中断,通过swi指令跳转到指定的入口函数。软中断属于arm异常模式的一种。在linux-.3.4 中,异常向量表的定义在entry-armv.S:include “calls.S” .globl __vectors_start__vectors_start: ARM( swi SY原创 2015-05-05 18:15:44 · 832 阅读 · 0 评论 -
platform device driver注册过程
platform设备注册过程。 已/sys/devices/platform/xxxxx 目录下的文件与/sys/bus/platform/xxxxx之间是用软连接对应起来的。 系统每添加一个Kobject文件,就对应一个sys目录下的一个目录。 在系统调用的读文件时候,会判断文件类型,如果是sysfs文件系统,则会根据Kset–查找得到Kobject–>Kobj_type.attribute原创 2017-05-15 11:09:25 · 429 阅读 · 0 评论 -
linux 内核 编译过程
作为一个linux的驱动工程师,总想在简历上写上"熟悉uboot/内核启动流程",可惜万一面试官问道,菜鸟我的实力还不足以应付面试。因此需要把内核启动流程仔细研究一下。uboot的启动过程这里不多说了,根据uboot的bootm执行过程可以知道,uboot在执行了 theKernel (0, machid, bd->bi_boot_params);就把剩下的任务交给了kernel。ker原创 2015-04-03 15:04:55 · 2049 阅读 · 1 评论 -
Omap4470 USB驱动分析之注册过程
平台:OMAP4470,linix3.4,Android4.2平台。 问题: 1. usb host/otg模式切换的时候容易导致系统卡顿,甚至死机。 2. omap4470的usb接了一个usb-Ethernet,正常情况下,omap4470的usb模式应该是host,但是有时候会工作模式不对,重新设置host mode也可让usb-Ethernet工作正原创 2015-09-15 18:21:20 · 1835 阅读 · 0 评论 -
linux tty系统分析
tty_driver_register 注册字符设备,内核提供fops=tty_fops。 tty_fops–>线路规程的方法—>驱动定义的fops,如果是虚拟串口,则直接定义,如果是物理串口则使用内核提供的uart_fops。 如果是物理串口,内核提供是uart_fops会调用uart_start,继而调用port的port->ops->start_tx,这个start_tx是由驱动层提供。原创 2017-05-25 10:55:18 · 438 阅读 · 1 评论 -
内核软中断处理流程
软中断守护进程static __init int spawn_ksoftirqd(void){ void *cpu = (void *)(long)smp_processor_id(); int err = cpu_callback(&cpu_nfb, CPU_UP_PREPARE, cpu);//创建守护进程 BUG_ON(err != NOTIFY_OK); cp原创 2015-05-06 18:54:20 · 1704 阅读 · 1 评论 -
【转】linux中断流程详解
参考 :http://blog.csdn.net/yimu13/article/details/6803957中断早期初始化 1. irq_desc[]struct irq_desc { struct irq_data irq_data; struct timer_rand_state *timer_rand_state; unsigned int __percp原创 2017-05-21 20:05:33 · 369 阅读 · 0 评论 -
Linux内核I2C总线架构
总线是将设备与驱动联系在一起的纽带。 如果一个设备与驱动彼此绑在了一起,通过sys目录下的文件信息能看出其绑定的驱动/设备对象。 如:~# ls /sys/bus/i2c/drivers/ad-7441/ -llrwxrwxrwx 1 root root 0 Jan 1 00:07 2-0070 -> ../../../../devices/platfo原创 2015-03-24 18:33:11 · 2370 阅读 · 1 评论