目录
配置交叉编译工具链
读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启动内核,然后给内核传递参数。