|
一、典型linux驱动代码包含?
驱动程序的注册和注销、
设备的打开和释放、
设备的读写、
设备的控制操作、
设备的中断或轮询处理。
二、BootLoader
Bootloader操作系统内核运行之前运行的一段小程序。
常见的BootLoader有:U-Boot、vivi、Blob、RedBoot、ARPBoot等
三、编写驱动文件和加载
lsmod 命令可以查看已经加载的模块。
Insmod XXX.ko 把驱动文件编译成的XXX.ko加载到内核系统。
mknod /dev/drivers c 253 0 (其中 c 表示是字符设备, 253是主设备号, 0 是次设备号)。
四、移植linux操作系统
1、选择硬件平台 (ARM、PowerPC、MIPS等)
2、配置、编译linux内核。
3、通过BootLoad下载启动内核。
编译的时候要选择需要的编译器,如果用交叉编译器的话,需要在linux-2.6.10根目录的Makefile文件中做修改,修改例如:
ARCH ?= arm
CROSS_COMPILE ?=/交叉编译器的目录/arm-linux-
五、根文件系统
Linux引导启动时,默认的文件系统是根文件系统,用户进程都要从根文件中读取后运行。
常见的根文件系统的文件系统有:
CramFS、Romfs、Yaffs、Jffs2等。
其中CramFS、Romfs是只读的,大家较少使用,他们的优点是安全些。
六、linux内核升级过程
2.4到2.6为例:
1、在linux内核代码的根目录下执行 make menuconfig进行配置,(添加Buslogic)。
2、执行make编译内核代码。
3、执行make module_install命令。
4、把内核目录中的drivers/scsi/Buslogic.o 拷贝到 /lib/modules/2.6.10/kernel/drivers/scsi目录中。
5、执行make install命令。
6、打开/etc目录下的grub.conf文件,修改kernel /vmlinuz-2.6.10 ro root= LABEL=/ 为kernel /vmlinuz-2.6.10 ro root=/dev/hda2,另外还建议修改default=1为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)。
7、重启linux,启动后使用 uname –r 确认启动的内核版本。
|
|