zoukankan      html  css  js  c++  java
  • Yocto开发笔记之《快速入门,环境搭建 & 编译》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处。

    QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样

    ========================================================

    主机系统:Ubuntu 14.04

    开发板子:freescale 6ul,http://freescale.github.io/#contributing

    Yocto :  www.yoctoproject.org/ 

    IDE:eclipse

    ========================================================

    工程获取、编译:

    1. FQ:

        教程:https://www.jsqgreen.com/shiyong/67.html,

        网关:a.jpgjsq.com

    2. Host工具

    # sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib 
      build-essential chrpath socat libsdl1.2-dev
    # sudo apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html 
      docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils 
      libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc
    # sudo apt-get install u-boot-tools

     3. repo

    # mkdir ~/bin (this step may not be needed if the bin folder already exists)
    # curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    # chmod a+x ~/bin/repo
    # export PATH=~/bin:$PATH

    # git config --global user.name "Your Name"
    # git config --global user.email "Your Email"
    # git config --list

    # mkdir fsl-release-bsp
    # cd fsl-release-bsp
    # repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.14.38-6UL_ga
    # repo sync

     4. comlipe project

    # MACHINE=imx6ulevk source fsl-setup-release.sh -b <build dir>
    # bitbake fsl-image-gui

    ========================================================

    烧写《i.MX_Linux_User's_Guide.pdf》

    Image结构

    1. Bootloader (U-boot) ---> U-boot-[platform]-[board]_[machine_configeration].imx
    2. Linux kernel image (zImage) ---> 3.14.38,所有平台一致
    3. A Device tree file --->
      配置:arch/arm/boot/dts ---> *.dts
      zImage: [kernel]-[platform]-[board][configuration].dtb
    4. A root file system (rootfs) ---> Busy common libs, fundermental element

    Image Layout (boot from SD/MMC) (4G flash need)

    0x400      0x09FFC00 bytes    RAW    u-boot
    0xa00000    500Mbytes        FAT      kernel image & *.dtb
    0x25800000    Remaning space      ext3/ext4   rootfs

     SD卡烧写

    # cat proc/partitions     // 查看
    # sudo dd if=<.sdcard image> of=/dev/sdx bs=1M conv=fsync    // 烧写到sdcard

     ========================================================

    ========================================================

    纪录

    bitbake编译命令

    # bitbake -c cleansstate u-boot
    # bitbake -c path u-boot  // 如此才可以从本地编译,否则会从网上fetch代码
    # bitbake -e u-boot | grep ^S= // 获取u-boot的代码路径,进入后可以修改
    # bitbake -c compile -f u-boot >> log.txt  //将输出结果显示在log.txt中
    # bitbake u-boot
    
    # bitbake
    -c cleansstate virtual/kernel # bitbake -c patch virtual/kernel # bitbake -e virtual/kernel | grep ^S=
    # update KERNEL_DEFCONFIG variable in meta-fsl-ppc/conf/machine/<machine>.conf // 修改kernel defconfig
    # update KERNEL_DEVICETREE variable in meta-fsl-ppc/conf/machine/<machine>.conf // 修改dts
    # bitbake -c menuconfig virtual/kernel
    # screen -r devshell
    # bitbake
    # bitbake
    -c menuconfig virtual/kernel # screen -r devshell # bitbake -c compile -f virtual/kernel # bitbake virtual/kernel # bitbake -b imx-test_3.10.17-1.0.0 -c compile -f # bitbake -b imx-test_3.10.17-1.0.0 -c install # bitbake recipe -c listtasks // 查看task列表
    make clean  // 删除大多数的编译生成文件, 但是会保留内核的配置文件.config, 还有足够的编译支持来建立扩展模块
    make mrproper  // 删除所有的编译生成文件, 还有内核配置文件, 再加上各种备份文件
    make distclean  // mrproper 删除的文件, 加上编辑备份文件和一些补丁文件。
    
    执行make mrproper, 会先执行make clean, 执行make distclean之前, 会先执行make mrproper。

    包的位置

    # bitbake -e virtual/kernel | grep ^S=
    S="/media/summer/fsl-release-bsp/build-x11/tmp/work/imx6ulevk-poky-linux-gnueabi/linux-imx/3.14.38-r0/git"

    ====================================================================

    理解 shared state cache

    Poky通过scratch编译所有的东西,除非bitbake认为某个recipe不需要重新编译。shared state cache存放了一些中间产物,当bitbake编译内容时,先查看这个文件夹中有没有需要的中间文件。这个文件随着编译次数增多变大,我们时刻记住要定时清空它。当我们需要从scratch重新编译的时候,我们可以删除build/tmp文件夹,这样会通过sstate-cache加速编译过程,也可以把sstate-cache也删除掉,这样不会有cache文件被复用。

    # ./scripts/sstate-cache-management.sh --remove-duplicated -d --cache-dir=<path to sstate-cached>  // this removes the duplicated and old data from the cache

     ====================================================================

    Yocto Project complier:

    1. ubuntu has "sudo" installed

    2. needed packages:

     $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib 
         build-essential chrpath socat libsdl1.2-dev xter
    3.1 Host packages
    A Yocto Project build requires that some packages be installed for the build that are documented under the Yocto Project. You can go to Yocto Project Quick Start and check for the packages that must be installed for your build machine.
    Essential Yocto Project host packages are:
    Freescale Yocto Project User's Guide, Rev. L3.14.38_6ul-ga, 09/20154 Freescale Semiconductor, Inc.
    Yocto Project Setup
    $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib 
      build-essential chrpath  socat  libsdl1.2-dev
    i.MX layers host packages for a Ubuntu 12.04 or 14.04 host setup are:
    $ sudo apt-get install libsdl1.2-dev xterm  sed cvs subversion coreutils texi2html 
    docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils 
    libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc
    i.MX layers host packages for a Ubuntu 12.04 host setup only are:
    $ sudo apt-get install uboot-mkimage
    i.MX layers host packages for a Ubuntu 14.04 host setup only are:
    $ sudo apt-get install u-boot-tools
    The configuration tool uses the default version of grep that is on your build machine. If there is a different version of grep in your path, it may cause builds to fail. One workaround is to rename the special version to something not containing "grep".

     3. 获取工程代码

      $ git clone git://git.yoctoproject.org/poky
         Cloning into 'poky'...
         remote: Counting objects: 226790, done.
         remote: Compressing objects: 100% (57465/57465), done.
         remote: Total 226790 (delta 165212), reused 225887 (delta 164327)
         Receiving objects: 100% (226790/226790), 100.98 MiB | 263 KiB/s, done.
         Resolving deltas: 100% (165212/165212), done.
      $ git checkout jethro

      因为我们要获取板子对应的工程,所以不用以上方式,直接按照开发板的快速指南,下载repo,直接run.

    4. Initialize the build enviroment

      $ source oe-init-build-env

    =======================================================

    summer@summer-ThinkPad-X230:~/fsl-community-bsp$ . ./setup-environment fsl_linux_project/

    Welcome to Freescale Community BSP

    The Yocto Project has extensive documentation about OE including a
    reference manual which can be found at:
        http://yoctoproject.org/documentation

    For more information about OpenEmbedded see their website:
        http://www.openembedded.org/

    You can now run 'bitbake <target>'

    Common targets are:
        core-image-minimal
        meta-toolchain
        meta-toolchain-sdk
        adt-installer
        meta-ide-support

    编译问题纪录:

    没有lsusb、file等命令

    之前的helloworld程序在这儿不能运行

  • 相关阅读:
    十分钟构建双十一交互分析大盘
    数字IT基础-数据采集总线
    阿里云文件存储(NAS)助力业务系统承载双十一尖峰流量
    如何在网络视听行业建一扇内容安全大门?
    Frost & Sullivan权威报告:阿里云再次领跑云WAF大中华区市场
    赋能时空云计算,阿里云数据库时空引擎Ganos上线
    点播转码相关常见问题及排查方式
    《边缘云计算技术及标准化白皮书》
    内存性能的正确解读
    《倡议书——节约用电,从我做起》
  • 原文地址:https://www.cnblogs.com/alanfang/p/5004591.html
Copyright © 2011-2022 走看看