第一步:加压安装交叉编译器
Tar xzvf arm-linux-gcc-4.4.3 –C
加入环境变量
Vi /root/.bashrc
加入export PATH=$PATH: /opt/FriendlyARM/toolschain/4.4.3/bin
最后生效
第二步:解压内核压缩包并编译内核
Tar xzvf linux-2.6.32.2.tar.gz
Cd linux-2.6.32.2
Make distclean
Cp config_mini2440_x35 .config
Make menuconfig
保留原有配置项 、保存退出
Make zImage
编译完成后最后一行: kernel: arch/arm/boot/zImage is ready
这应该编译成功了吧
第三步 :进入驱动程序里面
修改makefile里面的内核路径
KERNELDIR ?=/ home/mini2440/linux-2.6.32.2
然后保存
Make
出现错误提示:
[root@localhost driver]# make
make -C /home/mini2440/kernel/linux-2.6.32.2 M=/home/mini2440/work/dirver/beep/driver modules
make[1]: Entering directory `/home/mini2440/kernel/linux-2.6.32.2'
CC [M] /home/mini2440/work/dirver/beep/driver/beep_drv.o
/home/mini2440/work/dirver/beep/driver/beep_drv.c:27:29: mach/regs-clock.h: No such file or directory
/home/mini2440/work/dirver/beep/driver/beep_drv.c:28:29: plat/regs-timer.h: No such file or directory
/home/mini2440/work/dirver/beep/driver/beep_drv.c:30:28: mach/regs-gpio.h: No such file or directory
/home/mini2440/work/dirver/beep/driver/beep_drv.c: In function `beep_stop':
/home/mini2440/work/dirver/beep/driver/beep_drv.c:65: error: implicit declaration of function `s3c2410_gpio_cfgpin'
/home/mini2440/work/dirver/beep/driver/beep_drv.c:65: error: implicit declaration of function `S3C2410_GPB'
/home/mini2440/work/dirver/beep/driver/beep_drv.c:65: error: `S3C2410_GPIO_OUTPUT' undeclared (first use in this function)
/home/mini2440/work/dirver/beep/driver/beep_drv.c:65: error: (Each undeclared identifier is reported only once
/home/mini2440/work/dirver/beep/driver/beep_drv.c:65: error: for each function it appears in.)
/home/mini2440/work/dirver/beep/driver/beep_drv.c:66: error: implicit declaration of function `s3c2410_gpio_setpin'
/home/mini2440/work/dirver/beep/driver/beep_drv.c: In function `beep_start':
/home/mini2440/work/dirver/beep/driver/beep_drv.c:74: error: implicit declaration of function `s3c2410_gpio_pullup'
/home/mini2440/work/dirver/beep/driver/beep_drv.c:75: error: `S3C2410_GPIO_OUTPUT' undeclared (first use in this function)
make[2]: *** [/home/mini2440/work/dirver/beep/driver/beep_drv.o] 错误? 1
make[1]: *** [_module_/home/mini2440/work/dirver/beep/driver] 错误? 2
make[1]: Leaving directory `/home/mini2440/kernel/linux-2.6.32.2'
make: *** [modules] 错误? 2
自己看了下,应该是这三行出现问题
/home/mini2440/work/dirver/beep/driver/beep_drv.c:27:29: mach/regs-clock.h: No such file or directory
/home/mini2440/work/dirver/beep/driver/beep_drv.c:28:29: plat/regs-timer.h: No such file or directory
/home/mini2440/work/dirver/beep/driver/beep_drv.c:30:28: mach/regs-gpio.h: No such file or directory
是找不见头文件 很奇怪的问题的。帮忙看看,谢谢了
还有就是我的宿主机的内核版本是:2.6.33.3 也是fedora的
头文件没有改
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/input.h>
#include <linux/init.h>
#include <linux/serio.h>
#include <linux/delay.h>
#include <linux/clk.h>
#include <linux/miscdevice.h>
#include <linux/gpio.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
#include <mach/regs-clock.h>
#include <plat/regs-timer.h>
#include <mach/regs-gpio.h>
#include <linux/cdev.h>