Cubieboard 3编译驱动教程

本文档详细介绍了如何在Ubuntu12.04 64位环境下搭建Cubieboard 3的交叉编译环境,包括安装所需软件包、获取内核源码和编译内核及驱动。主要涉及gcc-arm-linux-gnueabi工具链,通过git克隆获取内核源码和配置文件,并使用make menuconfig选择驱动,最后编译内核模块。
摘要由CSDN通过智能技术生成

本文档主机操作系统为 Ubuntu12.04 64 位,gcc-arm-linux-gnueabi 版本为 4.6


一 交叉编译环境搭建 

$sudo apt-get update 
$sudo apt-get upgrade 

$sudo apt-get install ia32-libs 

$sudo apt-get install ncurses-dev 
$sudo apt-get install build-essential git u-boot-tools 
$sudo apt-get install texinfo texlive ccache zlib1g-dev gawk bison flex gettext uuid-dev 
$sudo apt-get install build-essential u-boot-tools uboot-mkimage 
$sudo apt-get install binutils-arm-linux-gnueabihf gcc-arm-linux-gnueabi 
$sudo apt-get install gcc-arm-linux-gnueabihf cpp-arm-linux-gnueabihf 
$sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev 
$sudo apt-get install git wget fakeroot kernel-package zlib1g-dev libncurses5-dev 


二 .获取内核源码

使用 Cubieboard1,Cubieboard2,Cubietruck:
$git clone https://github.com/cubieboard/linux-sdk-kernel-source linux-sunxi
获取内核配置 kernel_config 
$git clone https://github.com/cubieboard/linux-sdk-card-products products

三. 编译
 3.1.编译内核自带的驱动
以 ct-linaro-server 的为例
$cp products/ct/ct-linaro-server/kernel_defconfig linux-sunxi/arch/arm/configs/ 
$cd linux-sunxi/
$make mrproper
$make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- kernel_defconfig
$make ARCH=arm menuconfig

选择要编译的驱动

$make ARCH=arm  CROSS_COMPILE=arm-linux-gnueabi- -j4 uImage

编译内核吗没报错,则进入到需要的编译模块 如。

$ cd drives/spi/

$ make -c /work/sdk/linux-sunxi  M='pwd' modules ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf

-C 后面使用内核源码目录 linux-sunxi 的绝对路径
编译生 spi-sun7i.ko,spidev.ko。当然这两个驱动在 kernel_defconfig 被指定为“M”模块

注意:
不要用 gcc-arm-linux-gnueabihf 4.8 版本编译的内核 ,使用命令:arm-linux-gnueabihf-gcc 
-v 查看版本

$cp products/ct/ct-linaro-server/kernel_defconfig linux-sunxi/arch/arm/configs/ 
$cd linux-sunxi/
$make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- kernel_defconfig
$make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 uImage 


编译添加的驱动
$cp products/ct/ct-linaro-server/kernel_defconfig linux-sunxi/arch/arm/configs/ 
$cd linux-sunxi/
$make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- kernel_defconfig
$make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 uImage 


也需要编译成功编译内核,才可以开始编译自己要添加进去的驱动
假设要编译的驱动为 hello.c ,内容为:
#include <linux/init.h> 
#include <linux/module.h> 
static int hello_init(void) 

 printk( "Hello, world/n"); 
 return 0; 

static void hello_exit(void) 

 printk( "Goodbye, world/n"); 

MODULE_LICENSE("GPL"); 
module_init(hello_init); 
module_exit(hello_exit);

在同目录下,创建名为 Makefile 文件,内容如下:
ifneq ($(KERNELRELEASE),) 
obj-m:=hello.o 
else 
KERNELDIR:=/work/sdk/linux-sunxi 
PWD:=$(shell pwd) 
default: 
 $(MAKE) ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -C $(KERNELDIR) M=$
(PWD) modules 
clean: 
 rm -rf *.o *.mod.c *.mod.o *.ko .*.cmd modules.order Module.symvers .tmp_versions 
endif

注意:修改 KERNELDIR:= 后面应修改成自己的内核源码目录路径。obj-m:= 后面应为驱动名
字,后缀.o 。 $(MAKE) 前面为 Tab 缩进。
$make 
生成文件如下

hello.ko

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值