欢迎来到天天文库
浏览记录
ID:41032440
大小:30.00 KB
页数:4页
时间:2019-08-14
《添加驱动程序的步骤》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、为相应的设备写好基本驱动程序并向VFS(virtualfilesystem)注册即可,当上层应用要使用该设备时,VFS就会调用相应的设备函数。设备驱动程序可以归为以下3类:1块设备(block)以块为单位,允许随机访问,多用缓存技术2字符设备(char)以字节为单位,只能按顺序访问,不用缓存3网络接口(net)设备号:系统用主设备号(MAJOR)和次设备号(MINOR)来唯一标示一般设备相同主设备号表示同一类设备,次设备号表示同类设备的个数,在(/dev目录)下有相应的文件,这样字符设备和块设备都可以通过文件操作的系统调用完成。字符设备的驱动程序通过在device_s
2、truct数据结构的chrdevs向量中增加一项的方法来向内核注册自己注册:intresultresult=register_chrdev(主设备号,设备名,&结构体)(GPIO_MAJOR_NR,DEVICE_NAME,&gpio_fops)字符设备驱动驱动程序编译进内核的步骤:1在uClinux-dist/linux2.4.x/drivers/char目录下编写驱动程序(gpio.h,gpio.c)2修改uClinux-dist/linux2.4.x/dirvers/char/Config.in,在适当的位置添加一行:bool'gpiotestsupport'CO
3、NFIG_GPIO在makemenuconfig时看见的是gpiotestsupport选择这个时,既配置了CONFIG_GPIO3修改uClinux-dist/linux2.4.x/dirvers/char/Makefile在适当的位置添加一行:obj-$(CONFIG_GPIO)+=gpio.o4在uClinux-dist/linux2.4.x/dirvers/char/mem.c中添加初始化#ifdefCONFIG_GPIOexternintgpio_init(void);//在内核启动的时候对GPIO驱动程序进行注册#endif在这个函数中int__initc
4、hr_dev_init(void){#ifdefCONFIG_GPIOgpio_init();//在内核启动的时候对GPIO驱动程序进行注册#endif}测试(应用)程序的编写和添加内核配置makeclean清除之前编译好的makemenuconfigvendor/ProductSelection-->厂商和产品的选择选择samsung44b0Kernel/Library/DefaultsSelection内核和库的选择--Kernelislinux-2.4.x(uClibc)LibcVersion压缩的libc的库[]Defaultallsettings(losec
5、hanges)[*]CustomizeKernelSettings内核的设定,添加驱动程序[*]CustomizeVendor/UserSettings根文件系统,ramfs内核配置目录:Codematurityleveloptions-->代码成熟度[]还在开发阶段的[]Loadablemodulesupport-->[]EnableLoadablemodulesupport内核模块的支持SystemType-->系统类型(Samsung)ARMsystemtype[]Generatebigendiancode大小端的选择[*]Setflash/sdramsizea
6、ndbaseaddr选择存储器的大小(0c000000)(S)DRAMBaseAddress(00800000)(S)DRAMSize(00000000)FLASHBaseAddress(00200000)FLASHSize2M(RAM)Kernelexecutesfrom(S3C44B0X-MBA44)BoardInplementationGeneralsetup-->通用设定[]Supporthot-pluggabledevices热拔插[*]Networkingsupport网络的支持[]SystemVIPC进程间通信[]Reducedmemoryfootpri
7、nt[]BSDProcessAccouting[]Sysct1support[*]NMFPEmathemulation模拟数字协处理器(ELF)Kernelcore(/proc/kcore)format内核格式[*]SupportuClinuxFLATformatbinaries对没有MMU的处理器的支持[*]SupportFLATformatcompressedbinaries[]RISCOSpersonality[]Compiled-inKernelBootParameter[*]TimerandCPUusageLEDs[*]TimerLED[*
此文档下载收益归作者所有