linux 内核模块编程之环境搭建(一)

这里介绍些关于Tiny6410开发板内核的编译,为后期驱动开发做前期的准备。

开发环境:64位的Ubuntu 14.01虚拟机

目标机:友善之臂Tiny6410开发板

内核:linux-2.6.38-20110325.tar.gz

内核源码下载地址 https://www.kernel.org/pub/linux/kernel/v2.6/ ;

Tiny6410内核下载地址 http://pan.baidu.com/s/1qX2ZBNu


内核结构: 

arch

内核所支持的每种CPU体系,在该目录下都有对应的子目录,每种CPU的子目录又进一步分解为bootmmkernel等子目录,分别包含控制系统,内存管理,系统调用。

mach开头的目录都代表着一种开发板,其他目录为arm系列所共有的。

|--x86  英特尔CPU及与之兼容体系结构的子目录

||--boot 引导程序

|||--compressed 内核解压缩

||--tools 生成压缩内核映像的程序

||--kernel 相关内核特性实现方式,如信号处理、时钟处理

||--lib 硬件相关工具函数

block

部分块设备驱动程序

crypto 

加密、压缩、CRC校验算法 

Documentation

内核的文档

drivers

设备驱动程序

fs 

存放各种文件系统的实现代码。每个子目录都对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统VFS

||--devpts /dev/pts虚拟文件系统

||--ext2 第二扩展文件系统

||--fat MSfat32文件系统

||--isofs ISO9660光盘cd-rom上的文件系统

include

内核所需要的头文件。与平台无关的头文件在include/linux子目录下,与平台相关的头文件则放在相应的子目录下。

lib 

库文件代码

mm

用于实现内存管理中与体系结构无关的部分,与体系结构相关的代码在arch目录下

net

网络协议的实现代码

||--802 802无线通信协议核心支持代码

||--appletalk 与苹果系统连网的协议

||--ax25 AX25无线internet协议

||--bridge 桥接设备

||--ipv4 IP协议族V432位寻址模式

||--ipv6 IP协议族V6

Samples

一些内核编程的范例

Scripts

配置内核的脚本

Security

SElinux的模块

Sound

音频设备的驱动程序

Usr

CPIO命令实现

Virt

内核虚拟机


我使用的开发板如下:

 linux 内核模块编程之环境搭建(一)_第1张图片

 

第一步:搭建交叉编译环境

我使用的是4.5.1的交叉编译器,下载地址如下

arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz

链接:http://pan.baidu.com/s/1hrd2uX2 密码:x7wi

 

下载完之后使用root用户将压缩包解压到/opt目录下,如下:

 

解压完之后,修改/etc/environment,在末尾添加交叉编译器的路径,如下:

 

然后就可以验证交叉编译器是否安装成功了,执行如下命令:

 linux 内核模块编程之环境搭建(一)_第2张图片

看到这样的结果,说明gcc安装成功了,由于我是64的操作系统,所以在这之前需要安装如下插件:
$sudo apt-get install lsb-core 

这样才能正常使用交叉编译器

 

第二步:编译内核

编译Tiny的内核会稍微简单一点,我也忘记我这个内核是从哪里的了,可能是厂家给的,也可能是网上下的,反正就这么放在硬盘里。

解压linux-2.6.38-20110325.tar.gz,如下:

 

 我的板子屏幕尺寸是640x480,所以我应该使用config_mini6410_vga640x480 配置文件。

执行1:$cp config_mini6410_vga640x480 .config

执行2:$make menuconfig

执行3:$make V=s

执行完成后,就可以看到文件arch/arm/boot/zImage了。

 

 这里要说明下,网上很多教程都说要修改Makefile,还有要从arch/arm/路径下拷贝生产.config文件,如下。

 linux 内核模块编程之环境搭建(一)_第3张图片

其实这都是针对编译纯净版内核而言,那么内核就不能使用厂家提供的内核了,因为厂家提供的内核里面集成了很多厂家自己根据板子外围设备编写的驱动程序,这对于学习驱动还是有帮助的,可以先学着如何改驱动。

 

第三步:烧录新编译的内核

这个如何烧录的话,看厂家提供的刷机指南,就好了,这里不多说了!


你可能感兴趣的:(编程,linux,ubuntu,内核,驱动开发)