微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > 7 Gbox4418卡片电脑自定义系统(一)uboot\kernel\rootfs

7 Gbox4418卡片电脑自定义系统(一)uboot\kernel\rootfs

时间:10-02 整理:3721RD 点击:

    通过前6篇的试用体验,基本上熟悉了Gbox4418功能特点,接下来,对Gbox4418进行功能特点的应用分析,尽求全面了解这块Gbox4418卡片电脑,为项目的进行,打下一个良好的基础。        官方推荐,最好在Ubuntu 64位的机器下进行开发,本人也不例外,在VMWare Workstation上安装64位的Ubuntu,可能第一次安装不会成功,不过通过百度,都可以解决,在此就不再详述。
一 编译环境搭建
1 安装库文件

    安装好Ubuntu后,进行环境的搭建,主要是系统的升级和库文件的安装。
(1)首先进行系统的升级,不然在安装某些库文件的时候,会失败。

  1. sudo apt-get upgrade
  2. sudo apt-get update

复制代码



(2)其次,安装必要的库文件,主要包括:git git-core gnupg flex bison gperf libsdl-dev libesd0-dev
libwxgtk2.6-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev
genromfs lsb-core libc6-dev-i386 g++-multilib lib32z1-dev lib32ncurses5-dev
u-boot-tools android-tools-fastboot lib32stdc++-4.9-dev lib32z1。同时为了保证能将每一个库文件安装,需要一一安装。具体的命令,如下:

  1. sudo apt-get install git
  2. sudo apt-get install git-core
  3. sudo apt-get install  gnupg
  4. sudo apt-get install  flex
  5. sudo apt-get install  bison
  6. sudo apt-get install  gperf
  7. sudo apt-get install  libsdl-dev
  8. sudo apt-get install libesd0-dev
  9. sudo apt-get install  libwxgtk2.6-dev
  10. sudo apt-get install  libwxgtk2.8-dev
  11. sudo apt-get install build-essential
  12. sudo apt-get install zip
  13. sudo apt-get install  curl
  14. sudo apt-get install libncurses5-dev
  15. sudo apt-get install zlib1g-dev
  16. sudo apt-get install genromfs
  17. sudo apt-get install lsb-core
  18. sudo apt-get install libc6-dev-i386
  19. sudo apt-get install g++-multilib
  20. sudo apt-get install lib32z1-dev
  21. sudo apt-get install lib32ncurses5-dev
  22. sudo apt-get install u-boot-tools
  23. sudo apt-get install android-tools-fastboot
  24. sudo apt-get install lib32stdc++-4.9-dev
  25. sudo apt-get install lib32z1

复制代码


不知为什么,本人有两个库文件没有安装成功,分别为libwxgtk2.6-dev 和lib32stdc++-4.9-dev.
2 修改交叉编译器
    系统升级后,默认的交叉编译器是4.8版本,但 Gbox4418建议的是4.4版本,故为了减少在编译过程中,不必要的麻烦,将交叉编译器将为4.4版本。
(1)操作前的版本,是4.8版本


(2)修改交叉编译器
    依次执行如下命令,即可降低编译器的版本

  1. sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib
  2. cd /usr/bin
  3. sudo mv gcc gcc.bk
  4. sudo ln -s gcc-4.4 gcc
  5. sudo mv g++ g++.bk
  6. sudo ln -s g++-4.4 g++

复制代码


(3)修改后的版本,是4.4版本



3 准备编译源码
    下载官方提供的Linux源码,并将其拖放到Ubuntu桌面,然后解压到当前用户目录下。


  1. cp Desktop/g4418_linux-20160506.tar.bz2 ~/
  2. cd
  3. tar xvf g4418_linux-20160506.tar.bz2

复制代码

   解压完成后,在目录中有4个文件夹:
gcc: 存放的是交叉编译器;
rootfs:存放的是根文件系统;
out:存放的是编译后的镜像文件;
linux:存放uboot,内核源码,一些依赖库、功能库和测试程序;


至此,Linux QT 源码包安装完成。
二 编译系统
    编译系统,主要是操作源码包下的mk.sh文件,故有必要认识下该文件,其部分源码如下所示,即脚本根据不同的参数输入,执行不同的操作,当编译uboot时,输入的参数应为u;当编译内核时,输入的参数应为k;当编译根文件系统时,输入的参数应为r。

  1. setup_environment()
  2. {
  3.         LANG=C
  4.         PATH=${BS_DIR_TOP}/out/host/linux-x86/bin:$PATH;
  5.         cd ${BS_DIR_TOP};
  6.         mkdir -p ${BS_DIR_RELEASE} || return 1
  7. }

  8. build_bootloader_uboot()
  9. {
  10.         # Compiler uboot
  11.         cd ${BS_DIR_UBOOT} || return 1
  12.         make distclean CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_BOOTLOADER} || return 1
  13.         make ${BS_CONFIG_BOOTLOADER_UBOOT} CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_BOOTLOADER} || return 1
  14.         make -j${threads} CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_BOOTLOADER} || return 1

  15.         # Copy bootloader to release directory
  16.         cp -v ${BS_DIR_UBOOT}/ubootpak.bin ${BS_DIR_RELEASE}
  17.         cp -v ${BS_DIR_UBOOT}/env.txt ${BS_DIR_RELEASE}
  18.         cp -v ${BS_DIR_UBOOT}/s5p4418-sdmmc.sh ${BS_DIR_RELEASE}

  19.         echo "^_^ uboot path: ${BS_DIR_RELEASE}/ubootpak.bin"
  20.         return 0
  21. }

  22. build_kernel()
  23. {
  24.         # Compiler kernel
  25.         cd ${BS_DIR_KERNEL} || return 1
  26.         make ${BS_CONFIG_KERNEL} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} || return 1
  27.         make -j${threads} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} || return 1
  28.         make -j${threads} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} uImage || return 1

  29.         # Copy uImage to release directory
  30.         cp -v ${BS_DIR_KERNEL}/arch/arm/boot/uImage ${BS_DIR_RELEASE}

  31.         echo "^_^ kernel path: ${BS_DIR_RELEASE}/uImage"

  32.         # generate boot.img
  33.         cd ${BS_DIR_TOP} || return 1
  34.         echo 'boot.img ->' ${BS_DIR_RELEASE}
  35.         # Make boot.img with ext4 format, 64MB
  36.         cp -v ${BS_DIR_RELEASE}/uImage ${BS_DIR_TARGET}/boot
  37.         mkuserimg.sh -s ${BS_DIR_TARGET}/boot ${BS_DIR_TARGET}/boot.img ext4 boot 67108864

  38.         cp -av ${BS_DIR_TARGET}/boot.img ${BS_DIR_RELEASE} || return 1;

  39.         return 0
  40. }

  41. build_rootfs()
  42. {
  43.         # Compiler rootfs
  44.         cd ${BS_DIR_ROOTFS} || return 1
  45.         make ${BS_CONFIT_ROOTFS} || return 1
  46.         make || return 1

  47.         # Copy image to release directory
  48.         cp -v ${BS_DIR_ROOTFS}/output/images/rootfs.ext4 ${BS_DIR_RELEASE}/qt-rootfs.img
  49. }

复制代码


1 编译Uboot
执行mk.sh -u




2 编译内核
执行mk.sh -k




3 编译根文件系统
执行mk.sh -r
这里要说的是,在官方提供的参考手册中,编译根文件系统时,要求输入的是b参数,可见没有更新,应为r


在编译过程中,还是出错了,好在很快定位到出错的原因。


虽然上面提示说是找不到makeinfo 这个软件包,但事实上,是缺少 texinfo 这个包,安装即解决


最后编译的信息如下。




三 总结
1 库文件
库文件有两个(libwxgtk2.6-dev 和lib32stdc++-4.9-dev)没有安装成功,而官方应该提示安装texinfo
2 文档和源码
文档和源码,有此地方不匹配,除了上面提到的编译根文件系统的参数外,还有uboot部分
3 好在,官方提供的源码是“一站式服务”,只要拥有源码,“一键”即可编译uboot、kernel和rootfs,而不需要用户分别进行配置

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top