您的位置:首页 > 其它

Yocto开发笔记之《快速入门,环境搭建 & 编译》(QQ交流群:519230208)

2015-11-29 13:19 886 查看
开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处。

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/2015
4 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程序在这儿不能运行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: