嵌入式爱好者

查看: 4683|回复: 8

怎样开机自动加载驱动

[复制链接]
zdh 该用户已被删除
发表于 2012-7-18 12:42:29 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

zdh 该用户已被删除
 楼主| 发表于 2012-7-18 12:44:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

13

主题

75

帖子

368

积分

发表于 2012-7-18 18:17:58 | 显示全部楼层
本帖最后由 飞凌-chongzi 于 2012-7-20 09:03 编辑

回复 2# zdh


   Linux系统在启动的最后阶段会创建init进程,这个进程会读取根文件系统中的启动脚本/etc/inittab并执行里面的相关命令。所以如果你想要在启动的时候就加载驱动,那么需要修改根文件系统中的/etc/inittab文件。如我制作的根文件系统中的/etc/inittab

~ >: cat /etc/inittab
# /etc/inittab
#
# Copyright (C) 2011 GuoWenxue <guowenxue@gmail.com QQ:281143292>
#
# Note: BusyBox init doesn't support runlevels.  The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use sysvinit.
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# id        == tty to run on, or empty for /dev/console.
#              If specified, then /dev/$id device must exist
# runlevels == ignored, busybox doesn't support it
# action    == one of sysinit, respawn, askfirst, wait, and once
# process   == program to run

# Startup the system
# mount all the file systems specified in /etc/fstab
::sysinit:/bin/mount -a     挂载/etc/fstab中指定的需要开机挂载的文件系统

#Use mdev as hotplug to auto mount USB storage or SD card   使用mdev来动态创建设备节点和自动挂载U盘和SD卡设备
::sysinit:/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
::sysinit:/sbin/mdev -s


#make shm, pts support
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mkdir -p /dev/shm
::sysinit:/bin/mount -t devpts devpts /dev/pts

#Mount our apps/info partition
#null::wait:/bin/mount -o sync,noatime,ro -t jffs2 /dev/mtdblock3 /apps
#null::wait:/bin/mount -o sync,noatime,ro -t jffs2 /dev/mtdblock4 /info
null::wait:/usr/sbin/sysmnt    挂载我们的应用程序分区

#Set hostname
null::sysinit:/bin/hostname -F /etc/hostname


#Initialize the user account files  初始化登录用的密码文件
null::wait:/usr/sbin/initpwd

#Enable console logon   初始化串口登录
null::respawn:/sbin/getty -L ttyS0 115200 vt100

null::sysinit:/bin/mkdir -p /tmp/logs
null::sysinit:/bin/mkdir -p /tmp/stat

# install drivers  这里开始加载设备驱动,/info/install是一个shell脚本(参考下面的),他不在根文件系统中,主要是方便添加新的驱动
null::wait:/info/install

# now run any rc scripts执行/etc/init.d/rcS脚本,用来启动需要开机启动的应用程序
null::wait:/etc/init.d/rcS

# system daemon
null::respawn:/sbin/syslogd -n
null::respawn:/sbin/klogd -n

# Stuff to do before rebooting
null::shutdown:/bin/umount /apps
null::shutdown:/bin/umount /info
null::shutdown:/bin/killall klogd
null::shutdown:/bin/killall syslogd
null::shutdown:/bin/umount -a -r
#null::shutdown:/sbin/swapoff -a

这里是系统启动时安装驱动的脚本
~ >: cat /info/install
#!/bin/sh

version=`uname -r`
DRV_PATH=/lib/modules/$version/

# register drivers
insmod $DRV_PATH/at91_led.ko
insmod $DRV_PATH/at91_button.ko
insmod $DRV_PATH/at91_buzzer.ko
insmod $DRV_PATH/at91_gsm.ko
insmod $DRV_PATH/at91_iso7816.ko
insmod $DRV_PATH/usb_gsm.ko

~ >:
该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

0

主题

0

帖子

3

积分

发表于 2012-7-19 17:49:03 | 显示全部楼层
如果楼主说的是insmod *.ko这种方法的话,有下面的方法可以解决
1、 在文件系统/etc/profile 文件中添加 insmod *.ko,就会自动执行这条,这个是当前路径,根目录,确定你的ko文件路径
2、 或者是在/etc/init.d/rcS 文件中添加

这两个文件中的内容都是板子启动时要执行的,
还可以添加自动挂载SD卡,等到做成产品时还要自动运行程序
点评回复 支持 反对

使用道具 举报

zdh 该用户已被删除
 楼主| 发表于 2012-7-24 13:00:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

0

主题

0

帖子

3

积分

发表于 2012-7-25 11:18:54 | 显示全部楼层
其实这个跟你在终端 输入 insmod  *.ko效果是一样的,相对路径就是把*.ko跟rcS文件放同一个文件夹;
绝对路径可以随便放了,比如放到根目录 insmod /*.ko就行了
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-12-26 10:01

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表