发布时间:2012-12-19 11:05:03
研究内核源码和内核运行原理的时候,很总要的一点是要了解内核的初始情况,也就是要了解内核启动过程。我在研究内核的内存管理的时候,想知道内核启动后的页表的放置,页表的初始化等信息,这促使我这次仔细地研究内核的启动代码。 CPU在bootloader的帮助下将内核载入到了内存中,并开始执行。当然,bootloader必须为zImage做好必要的准备: 1. CPU 寄存器的设置:R0=0;R1=Machine ID(即Machine Type Number,定义在linux/arch/arm/tools/mach-types);R2=内......【阅读全文】
发布时间: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......【阅读全文】