系统移植 编译uboot和linux源码及驱动配置
目录
写在前面:若是有些命令执行失败,前面添加sudo后再执行
uboot源码获取和编译:
Linux源码获取和编译
关于驱动配置
uboot源码获取和编译:获取网址:Index of /pub/u-boot/
》1.下载自己想用的源码放到linux目录下(自己随意决定目录)
》2.解压文件包
作者按照自己的压缩包进行解压
sudo tar -xvf u-boot-2014.07-netok.tar.bz2 解压安装包
解压后得到此文件
》3.确认Makefile文件
在u-boot-2014.07目录下执行
sudo vi Makefile
进入Makefile文件,找到下面位置修改成自己用的编译链工具
198 ifeq (arm,arm)199 CROSS_COMPILE ?= arm-none-linux-gnueabi- 200 endif》4.进行uboot编译
-》1.开发板环境设置
make _config
注1:为当前使用的开发板的名字
注2:执行该命令的前提是uboot源码支持该开发板
注3:该命令必须在uboot源码的顶层目录下执行
作者选择的fs6818_config,所以执行:
make fs6818_config
-》2.执行编译
make /make all (编译的时间比较长)
注1:该命令必须在uboot源码的顶层目录下执行
注2:该命令执行后在uboot源码顶层目录下生成u-boot.bin
-》3.清除编译过程中产生文件(可选操作)
make clean
make distclean
完成上述操作就拿到了我们系统移植需要的u-boot.bin
Linux源码获取和编译获取网址:The Linux Kernel Archives
》1.下载自己想用的源码放到linux目录下(自己随意决定目录)
》2.解压文件包
作者按照自己的压缩包进行解压
sudo tar -xvf kernel-3.4.39-ok.tar.xz 解压安装包
解压后得到此文件
》3.确认Makefile文件
在源码顶目录下执行
sudo vi Makefile 进入Makefile文件
将对应位置设置为如下图所示
195 ARCH ?= arm196 CROSS_COMPILE ?= arm-none-linux-gnueabi-》4.进行内核编译
-》1.选择硬件平台
要想确认是否支持自己硬件平台可使用下面方法
方法1:
在源码顶目录下执行
make help
得到以下信息:
fs6818_defconfig - Build for fs6818
方法2:
进入arch/arm/configs/目录
发现以下文件fs6818_defconfig ,所以PLATFORM=fs6818
支持作者使用的硬件平台执行下面命令
make fs6818_defconfig
-》2.内核编译
在源码顶目录下执行
make uImage 编译源码
注:若是编译出现下面错误
解决方法:在第一个试验,uboot源码获取中,在uboot源码下有个mkimage文件
将此文件复制到 /usr/bin下
sudo cp ./tools/mkimage /usr/bin 不可直接复制,自己根据场景决定
-》3.内核位置
/home/hq/temp/kernel-3.4.39/arch/arm/boot这是作者内核位置
完成上述操作就拿到了我们系统移植需要的uImage
关于驱动配置执行命令:make menuconfig
实际开发中随内核进行菜单选项的配置,都是使用make menuconfig命令
执行不成功原因:
问题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
原因:终端的字体太大,缩小一点
基础操作
esc键是退出
enter键是进入
空格键是切换选项状态