我是靠谱客的博主 生动草丛,最近开发中收集的这篇文章主要介绍s5pv210内核的编译与配置,即基本问题的解决笔记,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

关于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)sede"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内核的编译与配置,即基本问题的解决笔记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部