概述
关于s5pv210
记录独立编译内核那些走过的坑
1.如何选择内核版本,
选CPU BOARD最接近板子的 ,如我的板子是smart210, 源码中arch/arm/configs/下的官方配置 有s5pv210_defconfig 是支持的,
如果不知道是否支持完善,选最新的,再配置编译,使得运行能看到内核串口信息。 //有串口信息就成功了大半(它表示CPU基本支持,且方便后续调试)
2.下载linux内核,在这里我用的3.8.3
- 1)Ubuntu联网状态 在ubuntu系统终端输入: wget
https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.3.tar.xz
2)没联网可在官网下载好包放进共享文件夹。 内核下载官网:www.kernel.org
还有其他版本可供选择
3.内核的编译与配置
-
1)$wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.3.tar.xz
安装包下载2)解压
$sudo tar vxf linux-3.8.3.tar.xz
3)进入linux内核顶层目录,进行配置清除$ cd linux-3.8.3
$make distclean
4)修改Makefile,指定交叉编译工具
$ sudo vim Makefile
修改:ARCH ?= $(SUBARCH) CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%) 为: ARCH ?= arm CROSS_COMPILE ?= arm-none-linux-gnueabi-
err:
在这里遇到过最坑的一件事就是make不能用了,我那叫一个懵啊,后来想破脑袋折腾了很久才知道原来修改Makefile时候ARCH ?= arm后面多了一个空格所以出现下面如图情况
所以呀……把arm后面的空格去掉就好了……c(๑╹◡╹)ノ"""很气有木有?
-
5)$make s5pv210_defconfig 导入配置
选最接近我们板子的官方配置(配置列表见 arch/arm/configs/ )
也可采用 $ sudo cp arch/arm/configs/s5pv210_defconfig .config 的方式导入。
5) $make menuconfig 配置内核
System Type —>
(1) S3C UART to use for low-level messages 设置为0,原因是我们默认配置的串口位com0如果出现 your display too small 的错,
如图所示
你把串口窗口放大,就能看到菜单界面了。如果出现
$sudo make menuconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o *** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' requires the ncurses libraries. *** *** Install ncurses (ncurses-devel) and try again. *** make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1 make: *** [menuconfig] 错误 2
安装
$ sudo apt-get install libncurses5-dev
or
$ sudo apt-get install libncurses*
6)按默认配置初步编译内核
-
$make uImage 问题1: 如果出现
*** Error during update of the configuration.make[2]: *** [silentoldconfig] 错误 1 make[1]: *** [silentoldconfig] 错误
2 make: ***
没有规则可以创建“include/config/kernel.release”需要的目标“include/config/auto.conf”。
停止。开始没搞懂,目标 auto.conf 也存在啊,而且不是 root
所有的,普通用户直接编译应该也没问题啊,上网一查,说是root问题,又切换到root 编译,果然…可能之前用root 编译,有其他文件
已经是root所有了,知道原因后,解决这个问题的方法就很显然了: 1、切回到root去make kernel。
2、change整个kernel目录下所有文件及文件夹的权限和owner: chown -R hm:hm
android-kernel-samsung-dev 简单而言,把整个文件权限改过。 问题二 交叉编译工具找不到
-
原因是没有设置交叉编译环境,两种解决办法: (1)先打开一个超级用户权限的shell:
命令:sudo –s
在当前shell下,设置环境变量:
命令:gedit /etc/profile
在文件末端加上 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin,并保存。
执行source /etc/profile 这是避免重新启动ubuntu而又使刚刚修改的环境变量生效的方法。
-
(2)在makefile中将CROSS_COMPILE?=arm-none-linux-gnueabi-改为CROSS_COMPILE?=/opt/FriendlyARM/toolchaek/4.4.3/bin/arm-none-linux-gnueabi-
即交叉编译工具安装地址
7)修改加载地址和入口地址
vim scripts/Makefile.lib
将 UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR) 修改为 UIMAGE_ENTRYADDR ?= $(shell echo ( U I M A G E L O A D A D D R ) ∣ s e d − e " s / . . (UIMAGE_LOADADDR)|sed -e "s/.. (UIMAGELOADADDR)∣sed−e"s/..$/40/")
10.烧写内核到sd卡
dd iflag=sync oflag=sync if=uImage of=/dev/sdb seek=1000
运行下程序,卡死在 starting kernel 。。。
make menuconfig 查看 重新配置
System Type —> (0) S3C UART to use for low-level messages
S5PV210 Machines —>[*] SMDKV210
再加一个错误 o(╥﹏╥)o
在编译内核过程中在最后生成内核报:
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
make[2]: Warning: File `arch/arm/boot/compressed/…/Image’ has modification time 0.75 s in the future
LZO arch/arm/boot/compressed/piggy.lzo
/bin/sh: 1: lzop: not found
make[2]: *** [arch/arm/boot/compressed/piggy.lzo] Error 1
make[1]: *** [arch/arm/boot/compressed/vmlinux] Error 2
make: *** [uImage] Error 2
度娘一下,说是缺少lzop ,
那么就安装下:
sudo apt-get install lzop
正在读取软件包列表… 有错误!
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/cn.archive.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packages
E: 无法解析或打开软件包的列表或是状态文件。
还报错误,依然度娘:
sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update
sudo apt-get install lzop
然后再编译内核,完美解决。
Image arch/arm/boot/uImage is ready 提示都准备好了c( • ̀ω•́ )✧ 完美
最后
以上就是生动草丛为你收集整理的s5pv210内核的编译与配置,即基本问题的解决笔记的全部内容,希望文章能够帮你解决s5pv210内核的编译与配置,即基本问题的解决笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复