分类: 嵌入式
2010-03-15 23:13:56
驱动加载:1.静态加载 (系统启动时自动的加载动内核,自动的注册设备并创建设备接点,系统启动后应用程序可以直接运行)
2.动态加载(既模块加载,系统启动时不会进行加载驱动程序,需要人为手动加载,就是说系统启动后我们的应用程序不能直接应用驱动,而是我门必须手动的用insmod命令去加载)
其中动态加载我们又可以分为三种去研究;
1. 加载驱动后,我们自己去创建主设备号,从设备号,利用cat /proc/devices 去查看主设备号是否重复,然后根据应用程序中使用的设备名称用mknod 命令去创建设备接点。
2. 加载驱动后,驱动程序会利用register_chrdev()函数自动产生主设备号去在内核中注册设备,我们利用cat /proc/devices命令和驱动程序中注册的设备名去查询主设备号和从设备号后,在根据应用程序使用的设备名,去利用mknod去创建。(利用驱动中注册的设备名是查询自动生成的主设备号,驱动中的设备名称不一定要和创建的设备接点名相同,他们之间可以用主设备号 去关联,而应用程序的设备名称则必须和创建的设备接点名相同)
3. 加载驱动后,驱动程序利用devfs系统,这个系统可以自动的产生主设备号,然后自动的创建设备接点。我们只要用加载驱动后,直接运行应用程序就行了。