【ARM】Linux驱动移植

本文详细介绍了ARM平台下Linux驱动的移植步骤,包括修改kconfig、配置内核、编译内核得到驱动模块,以及注册和操作字符设备的过程。同时讨论了设备号的分配、错误处理、文件操作结构体的设置等关键点,并提供了相应的代码调用关系和资源链接。
摘要由CSDN通过智能技术生成

文章目录


#1驱动模块移植过程
##1.1模块的第一种编译方法——改kconfig

  • 第一步:改kconfig

文件在:Drivers/char/kconfig;
tristate三态表示可以编译在模块<M>
bool表示只能被选择编[*]或不编[ ]
这里写图片描述

  • 第二步:配置内核

make menuconfig后会自动生成供编译的.config文件。

wuchengbing@ubuntu:~/linux/kernel-2.6.13$ make menuconfig

 Device Drivers  --->  Character devices  ---> 
 
  [*] S3C2410 RTC Driver                                         │ │  
  <M> QQ2440/mini2440 LEDs Driver                                │ │  
  <M> QQ2440/mini2440 PWM beeper Driver                          │ │  
  <M> QQ2440/mini2440 Hello Module sample                        │ │  
  <M> QQ2440 Buttons                         

这里写图片描述
如果make menuconfig没有出来该选项,可先cp config_n35 .config->make-> make menuconfig,然后成生如下.config文件。

wuchengbing@ubuntu:~/linux/kernel-2.6.13$ gedit .config
# CONFIG_WATCHDOG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
CONFIG_S3C2410_RTC=y
CONFIG_QQ2440_LEDS=m
CONFIG_QQ2440_PWM_BEEPER=y
CONFIG_QQ2440_HELLO_MODULE=m
… …

如果选择是[*],即yes,则该驱动在系统运行自动加载;如果选择是<M>,则要使用该驱动要手工加载。

  • 第三步:编译内核得到驱动模块

make,后生成对应的驱动模块.ko文件。

wuchengbing@ubuntu:~/linux/kernel-2.6.13$make
… …
  LD      vmlinux
  SYSMAP  System.map
  SYSMAP  .tmp_System.map
  OBJCOPY arch/arm/boot/Image
  Kernel: arch/arm/boot/Image is ready
  AS      arch/arm/boot/compressed/head.o
  GZIP    arch/arm/boot/compressed/piggy.gz
  AS      arch/arm/boot/compressed/piggy.o
  CC      arch/arm/boot/compressed/misc.o
  LD      arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
  Building modules, stage 2.
  MODPOST
  CC      drivers/char/mini2440_backlight.mod.o
  LD [M]  drivers/char/mini2440_backlight.ko
  CC      drivers/char/qq2440_buttons.mod.o
  LD [M]  drivers/char/qq2440_buttons.ko
  CC      drivers/char/qq2440_hello_module.mod.o
  LD [M]  drivers/char/qq2440_hello_module.ko
  CC      drivers/char/qq2440_leds.mod.o
  LD [M]  drivers/char/qq2440_leds.ko
  CC      drivers/char/qq2440_pwm.mod.o
  LD [M]  drivers/char/qq2440_pwm.ko
wuchengbing@ubuntu:~/linux/kernel-2.6.13$

qq2440_leds.ko

wuchengbing@ubuntu:~/linux/kernel-2.6.13$ ls driver/char/
…
-rw-rw-r-- 1 wuchengbing wuchengbing 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值