发布时间:2012-12-19 10:52:51
Linux内核在启动的时候需要一些参数,以获得当前硬件的信息或者启动所需资源在内存中的位置等等。这些信息可以通过bootloader传递给内核,比较常见的就是cmdline。以前我在启动内核的时候习惯性的通过uboot传递一个cmdline给内核,没有具体的分析这个过程。最近在分析内核启动过程的时候,重新看了一下内核启动参数的传递过程,彻底解决一下在这方面的疑惑。 一、bootloader与内核的通讯协议 内核的启动参数其实不仅仅包含在了cmdline中,cmdline不过是bootloader传递给内核的信......【阅读全文】
发布时间:2012-12-09 23:25:49
Linux内核ARP的发送函数分析 void arp_send(int type, int ptype, u32 dest_ip,struct net_device *dev, u32 src_ip,unsigned char *dest_hw, unsigned char *src_hw,unsigned char *target_hw)当系统的网络驱动程序收到一个arp包的时候,调用这个函数处理。简单来说,arp_rev发回本机器或者它代理的其他机器的网卡硬件地址(mac address),并且将发送者的网卡硬件地址放在自己的缓存(arp cache)中。实现过程: (1) 分配一个s......【阅读全文】
发布时间:2012-12-09 22:00:06
此情況適用於:先加載devices,後加driver時候 driver_register->bus_add_driver->driver_attach->__driver_attach->driver_match_device-> static inline int driver_match_device(struct device_driver *drv, struct device *dev){ return drv->......【阅读全文】
发布时间:2012-12-09 17:47:30
轉:http://blog.csdn.net/gorilla0123/article/details/6010991 8 of_platform总线上gianfar设备驱动添加,并绑定设备e0024000.ethernet和e0025000.ethernet: /driver/net/gianfar.c module_init(gfar_init); gfar_init à of_register_platform_driver(&gfar_driver) à of_register_driver à driver_register à bus_add_dr......【阅读全文】
发布时间:2012-12-09 17:44:56
1 dtb文件解析,生成资源单项列表。 start_kernel à setup_arch à unflatten_device_tree 该函数可以解析dtb文件,构建一个由device_node结构连接而成的单项链表。如下在此函数执行过后,在内存中会存在一个如下的链表: 后面所有的函数,如果需要从of tree结构上读取设备资料的,都将从这个链表中遍历并读取。 2 Of_platform总线的注册: Arch/powerpc/kernel/of_platform.c postcore_initcall(of_bus_driver_init);......【阅读全文】