Linux启动过程中硬件模块的加载
前言:我觉得我的文章相对来说都是比较浅显的。一些初学者可以看看,对于高手来说,如果你们不吝啬时间的话,希望也能帮我看看,指点一下其中的错误。这也是我到这里来和大家交流的目的。
阅读Linux内核启动代码的直接动力是我想编写RTL8019AS的网卡驱动程序(2.4.18内核只支持了CS8900A)。既然要写驱动,我就想知道它是怎么样被加载的,好奇心驱使我先去搞定这个问题。
拿到2.4.18的软件包,一万多个文件,我不知怎么下手。所幸手头有这么三件工具助我入门:
1,一块移植好linux的开发板,通过它可以看到linux启动过程打印的消息。
2, google,网上关于linux的资料真是太多了!!!
3, Windows文件搜索引擎,通过它可以知道在那些文件中打印出那些消息。
很快,我就找到了linux启动的总的入口,/arch/arm/boot/compressed/head.s。
head.s完成的工作主要是底层寄存器、MMU的一些设定以及kernel的解压缩。汇编文件中调用的C代码大多位于该目录下misc.c文件,比如decompress_kernel。
当然,这部分不是重点,head执行完毕以后就跳到start_kernel(),这才是我们的重点所在,这个函数位于文件/init/main.c中。这个文件是启动的主线!!!
在start_kernel中,依次执行各个初始话函数,这里具体我没有看,一直到最后rest_init(),在这个函数里启动了一个init线程,而主线程自己则进入了IDLE状态。所以我们关心一下init线程做了什么事情,看文件最后init函数。
在这个函数里面,先lock_kernel,然后调用do_basic_setup,在这个函数里面又是一堆的初始化,有一个函数要引起我们的注意:do_initcalls。看看它干了什么:(这之后的东西在下文文件系统中讲解)
static void __init do_initcalls(void)
{
initcall_t *call;
call = &__initcall_start;
do {
(*call)( );
&nb
相关文档:
=============安装和登陆命令========================================
Mount:挂载命令。把存储介质指定成系统中的某个目录,比如挂载光驱mount /dev/cdrom把CDROM挂载,可在目录/mnt/cdrom下查看内容。同样可以挂载盘符,比如mount -t vfat /dev/uba1 /mnt,就可以切换到/mnt目录下查看内容。
umount:卸载命令,比如u ......
当今,在设计嵌入式产品的图形用户界面时,用到的工具主要有以下几种:
1. Qt/Embedded
Qt是Trolltech公司发布的一个跨平台的C++图形界面应用程序框架。它实际上是一个类库,里面包括了大量的可重用的类,其中既有按钮、窗口等这些可见类,也有定时器这样的不可见类和一些抽象类。Qt是完全面向对象,拥有良好的扩展性与稳 ......
软件安装命令
1. tar
tar 命令的基本用法为:
tar [选项] 文件名
常用的选项包括
-c 创建一个新的档案文件
-t 查看档案文件的内容
-x 分解档案文件的内容
-f 指定档案文件的名称
-v 显示过程信息
-z 采用压缩方式
举例
1 tar -czf oracle.tar.gz /u01/app/oracle /etc/oratab /home/oracl ......
linux命令行下用Fetion飞信发送免费短信
一、最新版本2009
通过linux命令行来发送短信的方法,觉得甚是好用,适用运维监控。这里向大家推荐的是飞信机器人的软件,支持linux、命令行下的飞信、完全免费(目前为止); 官网地址: http://www.it-adv.net/
环境 debian lenny
下载最新linux版本客户端 http://bbs.it-ad ......
一.去除embedded linux 的开机光标:
在内核的当前目录进入到drivers/video/console/fbcon.c文件
将static void fb_flashcursor(void *private) 里的内容注释掉,使之变成空函数
二.设置LINUX内核启动LOGO
(1)让内核支持启动LOGO
在内核目录中 ......