zoukankan      html  css  js  c++  java
  • [Freescale]E9学习笔记-LTIB安装配置

    转自:http://blog.csdn.net/girlkoo/article/details/44535979

    LTIB: Linux Target Image Builder

    Freescale提供了I.MX6的BSP开发包,可以在Freescale的官网下载到。为了与天嵌提供的版本一致,本文使用的BSP版本是:L3.0.35_4.1.0_130816_source,这版本的内核是3.0.35版本的,u-boot是2009.8版本的。使用这个版本的BSP可以充分使用天嵌提供的源码包,参考天嵌的源码包进行移植,之后如果有时间的话再来移植下较新版本的u-boot和kernel。本主要讲如何在64位的ubuntu-12.04 LTS搭建LTIB开发环境。

    1. LTIB安装

    LTIB安装还是非常方便的,下面是具体的步骤:

    Step1. 下载Freescale官方BSP

    我是用的BSP版本:L3.0.35_4.1.0_130816_source.tar.gz。这个版本的内核是3.0.35的,天嵌提供的内核版本与这个版本的BSP是一致的,最好把相应的文档也下载下来,文档包名称是:L3.0.35_4.1.0_docs.tar.gz。这两个文件可以Freescale官网找到的,不过Freescale最近更新了BSP,如果找不到这个版本可以到我的网盘下载,csdn上传不了这么大的文件,链接地址如下:

    I.MX6 BSP共享资料

    Step2. 解压BSP安装包

    1 tar zxf L3.0.35_4.1.0_130816_source.tar.gz  

    Step3. 安装LTIB

    1 cd L3.0.35_4.1.0_130816_source  
    2 ./install   

    然后根据提示,接受协议并指定安装路径,路径可以根据自己的情况设定,本文设置顶的路径如下:

    1 /home/girlkoo/Projects/L3.0.35_4.1.0   

    安装需要几分钟时间,请耐心等待。。。

    2. LTIB编译

    尽管Freescale给出了详细的配置文档,但在64位ubuntu12.04上编译LTIB时还是遇到了各种各样的问题,怕遗忘,记录在这里与大家分享。下面是编译过程中遇到的各种问题及解决方案。

    Step1. 安装依赖包

    LTIB编译依赖一些应用程序,这里将需要安装的文件整理到脚本中,其实是从BSP的文档中摘出来的,详细内容如下:

     1 #!/bin/bash  
     2 # Install packages needed by LTIB  
     3 sudo aptitude -y install gettext libgtk2.0-dev rpm bison m4 libfreetype6-dev  
     4 sudo aptitude -y install libdbus-glib-1-dev liborbit2-dev intltool  
     5 sudo aptitude -y install ccache ncurses-dev zlib1g zlib1g-dev gcc g++ libtool  
     6 sudo aptitude -y install uuid-dev liblzo2-dev  
     7 sudo aptitude -y install tcl dpkg  
     8 sudo aptitude -y install asciidoc texlive-latex-base dblatex xutils-dev  
     9 # Packages required for 64-bit Ubuntu  
    10 # Do "uname -a" and see if the word "x86_64" shows up.  
    11 if uname -a|grep -sq 'x86_64'; then  
    12 sudo aptitude -y install ia32-libs libc6-dev-i386 lib32z1  
    13 fi  
    14 # The following recommended for Linux development.  
    15 # They are not required by LTIB.  
    16 sudo aptitude -y install gparted emacs22-nox openssh-server  
    17 sudo aptitude -y install nfs-common nfs-kernel-server lintian  
    18 sudo aptitude -y install git-core git-doc git-email git-gui gitk  
    19 sudo aptitude -y install diffstat indent tofrodos fakeroot doxygen uboot-mkimage  
    20 sudo aptitude -y install sendmail mailutils meld atftpd sharutils  
    21 sudo aptitude -y install manpages-dev manpages-posix manpages-posix-dev linux-doc  
    22 sudo aptitude -y install vnc4server xvnc4viewer  
    23 sudo aptitude -y install texinfo   

    将以上指令保存到文本文件,如auto_install.sh,并未auto_install.sh天加可执行权限:

    1 chmod a+x auto_install.sh   

    然后执行该脚本即可: 

    1 ./auto_install.sh  

    执行时会要求输入密码。如果提示aptitude找不到的话可以考虑使用apt-get,也可以安装该指令,安装完重新执行上面的auto_install.sh, 网上盛传该使用该指令来管理软件依赖比apt-get更好用,安装方法如下:

    1 sudo apt-get install aptitude   

    脚本执行的时间比较长,可能需要半小时左右,请耐心等待。

    :安装这些包的时候,由于源不好,可能下载会有问题,可以参照《i.MX6 Ubuntu12.04上编译LTIB.pdf》中更新sourcelist.

    Step2. 安装补丁

    Freescale提供这套BSP时是基于ubuntu9.04的,现在使用的是ubuntu12.04,系统检测软件包是否安装时是变化,可以通过如下patch来解决此问题:

     1 #!/usr/bin/env bash  
     2   
     3 # get the patch tarball and untar it  
     4 wget -O ubuntu-ltib-patch.tgz https://community.freescale.com/servlet/JiveServlet/downloadBody/93454-102-3-2834/ubuntu-ltib-patch.tgz  
     5 tar -xzvf ubuntu-ltib-patch.tgz  
     6   
     7 # execute the script which do the patching  
     8 ltibDir=`pwd`  
     9 cd ubuntu-ltib-patch  
    10 ./install-patches.sh $ltibDir   

    将以上指令保存为补丁文件patch-ltib-ubuntu12.04.sh,并位置添加可执行权限: 

    1 chmod a+x patch-ltib-ubuntu12.04.sh   

    该补丁脚本拷贝到ltib的安装目录下(本文是/home/girlkoo/Projects/L3.0.35_4.1.0/ltib),然后执行该脚本:

    1 ./patch-ltib-ubuntu12.04.sh   

    补丁安装非常快,不过依赖网络,如果网速不好可以按照指令分别执行。

    Step3. 添加sudo

    执行命令:

    1 sudo visudo  

    在root    ALL=(ALL:ALL) ALL的后面或者文件的末尾添加如下内容:

    1 girlkoo ALL = NOPASSWD: /usr/bin/rpm, /opt/freescale/ltib/usr/bin/rpm  

    当然,girlkoo要换成自己的用户名。
    然后按ctrl+O将以上内容保存,使用默认文件名称即可,直接回车,然后ctrl+X退出。

    (这儿没明白要什么样的结果, 我的做法是sudo visudo,更改后,保存,退出

    Step4. 检查系统路径

    检查/usr/include目录下是否有sys目录,如果没有则执行如下命令:

    1 cd /usr/include  
    2 sudo ln -s x86_64-linux-gnu/sys sys  

    Step5. 编译LTIB

    编译LTIB本身很简单,只需要切换到LTIB的安装目录并执行如下指令:

    1 ./ltib   

    但编译过程会下载文件,因此速度比较慢,能节省时间的方法是将解压的安装包中pkgs文件内的各个文件(大约1G)拷贝到/opt/freescale/pkgs目录下,这样就能省掉很大一部分,只需要下载几个patch,具体操作如下:(下面这个路径是不是有误?应为:cd L3.0.35_4.1.0_130816_source/pkgs)

    1 cd L3.0.35_4.1.0_130816_source/ltib  
    2 cp * /opt/freescale/pkgs/  
    3 cd /opt/freescale/pkgs  
    4 chmod a-x *  

    然后LTIB安装目录下执行LTIB的编译指令即可,即:

    1 ./ltib   

    我将同步后的pkgs文件夹放到了百度云盘,如果遇到文件下载失败的情况可以到我的网盘下载相应的文件,然后复制到/opt/freescale/pkgs目录下即可。网盘的地址是:

    I.MX6 BSP共享资料

    出错处理

    • 根据ltib中log可知是permission denied, 于是进入root权限,但是提示无法进入,cannot execute **: no such file or directory. 于是vi /etc/passwd, 修改root:x:0:0:root:/root:**到oot:x:0:0:root:/root:/bin/bash,会提示./ltib不应该在root权限下做
    • 再看log,也提示在编译m4的时候出问题了。于是到log文件中所提示的config配置文件中关掉M4的编译(注:打开为y, 关掉为not set和内核相同,这里不能修改格式,如添加注释,否则会出现识别不出,TODO:待check)

    当所有文件都齐备时,就可以进入如下界面

    如果能看到这个界面,LTIB就快完成了,下面来看下如何选择这些配置项。这是第一个选项界面,下面开始简单的配置:

    (1) 第一个界面

    1 Platform choice (Freescale iMX reference boards)  --->  

    即保持默认即可,直接保存并退出。 

    (2) 第二个界面

    1 Selection (imx6q)  --->  

    将Selection选择为imx6q,然后保存并退出。

    (3) 第三个界面

    1 board (mx6q_sabresd)  --->  

    将board选择为mx6q_sabresd,然后保存并退出。
    之后就看到LTIB开始自动导出开始编译代码了。现在编译的才是我们需要的u-boot, kernel等工程,这些都是freescale的工程师维护的,所以一般不会出错,我编译的过程中没有遇到错误。

    至此,就完成了LTIB环境的搭建,下篇文章我们就开始移植u-boot。有任何问题欢迎留言讨论。

    编译完之后会在LTIB的安装路径下,生成rootfs,并且在rootfs/boot/下有编译生成的uboot和kernel镜像, 和rootfs通层的生成了jffs2文件系统镜像

    关键的几个路径

    • /home/girlkoo/Projects/L3.0.35_4.1.0: ltib安装目录,注意和源码目录区分
    • /opt/freescale/pkgs/: 工具链的目录

    安装LTIB的几个认识:

    问题

    1. 按照上面的方法,准备移植uboot, 但是在board/freescale下面都没有imx6的相关板载信息,哪里出错了?

  • 相关阅读:
    Code Forces Gym 100886J Sockets(二分)
    CSU 1092 Barricade
    CodeChef Mahesh and his lost array
    CodeChef Gcd Queries
    CodeChef GCD2
    CodeChef Sereja and LCM(矩阵快速幂)
    CodeChef Sereja and GCD
    CodeChef Little Elephant and Balance
    CodeChef Count Substrings
    hdu 4001 To Miss Our Children Time( sort + DP )
  • 原文地址:https://www.cnblogs.com/aaronLinux/p/5858377.html
Copyright © 2011-2022 走看看