目录
配置交叉编译工具链
读README
配置内核源码支持当前的硬件平台
驱动配置
内核编译
编译:
问题:
解决问题的方法:
测试内核
配置交叉编译工具链
打开内核源码顶层目录的Makefile,
hq@Ubuntu:~/fs6818_uboot/kernel-3.4.39$ vi Makefile
195 ARCH ?=
196 CROSS_COMPILE ?=
修改为:
195 ARCH ?= arm
196 CROSS_COMPILE ?= arm-none-linux-gnueabi-
读README
拿到内核源码之后,应该先清除,内核源码中的中间文件
make clean
make distclean
make mrproper --》清除更干净
配置内核源码支持当前的硬件平台
方法1:
make help
得到以下信息:
fs6818_defconfig - Build for fs6818
方法2:
进入arch/arm/configs/目录
发现以下文件fs6818_defconfig ,所以PLATFORM=fs6818.
让当前的内核支持自己的硬件平台,应该执行make fs6818_defconfig
驱动配置
执行命令:make menuconfig
实际开发中随内核进行菜单选项的配置,都是使用make menuconfig命令
ESC退出,↑↓←→ 选择内容 ,enter键进入
问题1:
第一次使用make menuconfig 需要安装图形化界面的工具
配置之前需要安装图形图(make meuconfig):
sudo apt-get install libncurses5-dev
问题2:
出现以下错误:
cripts/kconfig/mconf Kconfig
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.
make[1]: *** [menuconfig] Error 1
make: *** [menuconfig] Error 2
原因:终端的字体太大,缩小一点
内核编译
编译:
make uImage
time make uImage -jx
-time:回显编译的时间
-jx:使用多线程的方式进行编译,x可以是2,4,6,8
问题:
在编译的过程中可能出现如下错误:
"mkimage" command not found - U-Boot images will not be built
make[1]: *** [arch/arm/boot/uImage] Error 1
make: *** [uImage] Error 2
错误的原因:找不到mkimage命令,根据提示分析出来mkimage应该存在uboot源码目录中
uboot源码必须进行编译之后才会有mkimage可执行程序
解决问题的方法:
将uboot源码的tools目录下的mkimage,
相对路径:sudo cp mkimage /usr/bin
拷贝到到ubuntu的/use/bin目录下:绝对路径
sudo cp ./tools/mkimage /usr/bin
uboot目录 ubuntu目录
再次对内核源码进行编译即可通过。
测试内核
将arch/arm/boot/目录下的uImage拷贝到tftpboot目录下,
测试uImage是否可以正常启动,并且挂载根文件系统(重启开发板,自动方式:先将uImage下载到内存里面,然后bootcmd启动内核,然后给内核传递参数。