目录

配置交叉编译工具链

读README

配置内核源码支持当前的硬件平台

驱动配置

内核编译

编译:

问题:

解决问题的方法:

测试内核


配置交叉编译工具链

打开内核源码顶层目录的Makefile,

hq@Ubuntu:~/fs6818_uboot/kernel-3.4.39$ vi Makefile

195ARCH?=

196CROSS_COMPILE?=

修改为:

195ARCH?=arm

196CROSS_COMPILE?=arm-none-linux-gnueabi-

读README

拿到内核源码之后,应该先清除,内核源码中的中间文件

makeclean

makedistclean

makemrproper–》清除更干净

配置内核源码支持当前的硬件平台

方法1:

makehelp

得到以下信息:

fs6818_defconfig-Buildforfs6818

方法2:

进入arch/arm/configs/目录

发现以下文件fs6818_defconfig,所以PLATFORM=fs6818.

让当前的内核支持自己的硬件平台,应该执行makefs6818_defconfig

驱动配置

执行命令:makemenuconfig

实际开发中随内核进行菜单选项的配置,都是使用makemenuconfig命令

ESC退出,↑↓←→ 选择内容 ,enter键进入

问题1:

第一次使用makemenuconfig需要安装图形化界面的工具

配置之前需要安装图形图(makemeuconfig):

sudoapt-getinstalllibncurses5-dev

问题2:

出现以下错误:

cripts/kconfig/mconfKconfig

YourdisplayistoosmalltorunMenuconfig!

Itmustbeatleast19linesby80columns.

make[1]:***[menuconfig]Error1

make:***[menuconfig]Error2

原因:终端的字体太大,缩小一点

内核编译

编译:

makeuImage

timemakeuImage-jx

-time:回显编译的时间

-jx:使用多线程的方式进行编译,x可以是2,4,6,8

问题:

在编译的过程中可能出现如下错误:

“mkimage”commandnotfound-U-Bootimageswillnotbebuilt

make[1]:***[arch/arm/boot/uImage]Error1

make:***[uImage]Error2

错误的原因:找不到mkimage命令,根据提示分析出来mkimage应该存在uboot源码目录中

uboot源码必须进行编译之后才会有mkimage可执行程序

解决问题的方法:

将uboot源码的tools目录下的mkimage,

相对路径:sudocpmkimage/usr/bin

拷贝到到ubuntu的/use/bin目录下:绝对路径

sudocp./tools/mkimage/usr/bin

uboot目录ubuntu目录

再次对内核源码进行编译即可通过。

测试内核

将arch/arm/boot/目录下的uImage拷贝到tftpboot目录下,

测试uImage是否可以正常启动,并且挂载根文件系统(重启开发板,自动方式:先将uImage下载到内存里面,然后bootcmd启动内核,然后给内核传递参数。