“MYZR-LS1012A-EK200 Linux-4.1.35 编译参考手册”的版本间的差异
小 (Admin移动页面MY-LS1012A-EK200 Linux-4.1.35 编译参考手册至MYZR-LS1012A-EK200 Linux-4.1.35 编译参考手册,不留重定向) |
|||
(未显示同一用户的5个中间版本) | |||
第3行: | 第3行: | ||
## **下载相关文件** | ## **下载相关文件** | ||
#### 交叉编译工具链 | #### 交叉编译工具链 | ||
− | **LS1012A系列**:打开网盘到 ** | + | **LS1012A系列**:打开网盘到 **MY-LS1012A-EK200 -> 03_交叉编译工具**,下载**fsl-qoriq-glibc-x86_64-aarch64-toolchain-2.0.sh**。 |
#### 源码 | #### 源码 | ||
− | **rcw**: 打开网盘到 ** | + | **rcw**: 打开网盘到 **MY-LS1012A-EK200 -> 02_源码**,下载 **rcw.tar.bz2**。 |
− | **u-boot**:打开网盘到 ** | + | **u-boot**:打开网盘到 **MY-LS1012A-EK200 -> 02_源码**,下载 **u-boot-2016.09.tar.bz2**。 |
− | **Kernel**:打开网盘到 ** | + | **Kernel**:打开网盘到 **MY-LS1012A-EK200 -> 02_源码**,下载 **linux-4.1.35.tar.bz2**。 |
− | **ppa**: 打开网盘到 ** | + | **ppa**: 打开网盘到 **MY-LS1012A-EK200 -> 02_源码**,下载 **ppa.tar.bz2**。 |
<br> | <br> | ||
+ | |||
+ | ## **安装交叉编译工具链** | ||
+ | * 执行安装 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | ./fsl-qoriq-glibc-x86_64-aarch64-toolchain-2.0.sh (不要安装到/opt目录) | ||
+ | |||
+ | =====> Output: | ||
+ | Freescale i.MX Release Distro SDK installer version 4.1.15-2.1.0 | ||
+ | ================================================================ | ||
+ | Enter target directory for SDK (default: /opt/fsl-imx-x11/4.1.15-2.1.0): | ||
+ | =====> Input: | ||
+ | /home/myzr/my-work/03_toolchain/fsl-qoriq/2.0/ | ||
+ | =====> Output: | ||
+ | You are about to install the SDK to "/home/myzr/my-work/03_toolchain/fsl-qoriq/2.0". Proceed[Y/n]? | ||
+ | =====> Input: | ||
+ | y | ||
+ | =====> Output: | ||
+ | Extracting SDK...............................................................................................................................................................done | ||
+ | Setting it up...done | ||
+ | SDK has been successfully set up and is ready to be used. | ||
+ | Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g. | ||
+ | $ . /home/myzr/my-work/03_toolchain/fsl-qoriq/2.0/environment-setup-aarch64-fsl-linux | ||
+ | </pre> | ||
+ | * 修改配置文件 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | echo "unset LDFLAGS" >> ~/my-work/03_toolchain/fsl-qoriq/2.0/environment-setup-aarch64-fsl-linux | ||
+ | </pre> | ||
+ | * source 工具链配置文件 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | source /home/myzr/my-work/03_toolchain/fsl-qoriq/2.0/environment-setup-aarch64-fsl-linux | ||
+ | </pre> | ||
+ | * 检验交叉编译工具安装 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | $CC -v | ||
+ | |||
+ | =====> Output: | ||
+ | Using built-in specs. | ||
+ | COLLECT_GCC=aarch64-fsl-linux-gcc | ||
+ | COLLECT_LTO_WRAPPER=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/libexec/aarch64-fsl-linux/gcc/aarch64-fsl-linux/4.9.3/lto-wrapper | ||
+ | Target: aarch64-fsl-linux | ||
+ | Configured with: /home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/work-shared/gcc-linaro-4.9-r2015.03/gcc-linaro-4.9-2015.03/configure --build=x86_64-linux --host=x86_64-fslsdk-linux --target=aarch64-fsl-linux --prefix=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr --exec_prefix=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr --bindir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/aarch64-fsl-linux --sbindir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/aarch64-fsl-linux --libexecdir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/libexec/aarch64-fsl-linux --datadir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/share --sysconfdir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/etc --sharedstatedir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/com --localstatedir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/var --libdir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/lib/aarch64-fsl-linux --includedir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/include --oldincludedir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/include --infodir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/share/info --mandir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/sysroots/x86_64-nativesdk-fslsdk-linux --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --enable-multilib --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=aarch64-fsl-linux- --without-local-prefix --enable-target-optspace --enable-lto --enable-libssp --disable-bootstrap --disable-libmudflap --with-system-zlib --with-linker-hash-style=gnu --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --enable-cheaders=c_global --with-gxx-include-dir=/not/exist/usr/include/c++/4.9.3 --with-build-time-tools=/home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/sysroots/x86_64-linux/usr/aarch64-fsl-linux/bin --with-sysroot=/not/exist --with-build-sysroot=/home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/sysroots/ls1012ardb --enable-poison-system-directories --with-mpfr=/home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/sysroots/x86_64-nativesdk-fslsdk-linux --with-mpc=/home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/sysroots/x86_64-nativesdk-fslsdk-linux --enable-nls --enable-__cxa_atexit | ||
+ | Thread model: posix | ||
+ | gcc version 4.9.3 20150311 (prerelease) (Linaro GCC 4.9-2015.03) | ||
+ | </pre> | ||
+ | |||
+ | <br> | ||
+ | ## **RCW编译** | ||
+ | ### 编译前的准备 | ||
+ | * 创建编译工作目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | mkdir ~/my-work/02_source/ -p | ||
+ | </pre> | ||
+ | * 解压源码包到工作目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | tar jxf rcw.tar.bz2 -C ~/my-work/02_source/ | ||
+ | </pre> | ||
+ | |||
+ | ### 编译rcw目标文件 | ||
+ | * 进入源码目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | cd ~/my-work/02_source/rcw | ||
+ | </pre> | ||
+ | |||
+ | * 执行编译 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | make | ||
+ | |||
+ | =====> Output: | ||
+ | make[1]: Entering directory `/home/linyn/MY-LS1012A/my-test/reslese/rcw/ls1012a-ek200' | ||
+ | python2 ../rcw.py -i N_SSNP_3305/rcw_800.rcw -o N_SSNP_3305/rcw_800.bin | ||
+ | /home/linyn/MY-LS1012A/my-test/reslese/rcw/ls1012a-ek200/../qspi_swap.sh /home/linyn/MY-LS1012A/my-test/reslese/rcw/ls1012a-ek200/../qspi_swap_list.txt | ||
+ | N_SSNP_3305/rcw_800.bin N_SSNP_3305/rcw_800.bin.swapped 8 | ||
+ | |||
+ | make[1]: Leaving directory `/home/linyn/MY-LS1012A/my-test/reslese/rcw/ls1012a-ek200' | ||
+ | |||
+ | </pre> | ||
+ | **Note: 如果有提示 “cc1: error”,通常是交叉编译工具的配置没生效,可以按前面 “交叉编译工具链安装” 中的 “source 工具链配置文件” 操作一次后再执行此步骤。** | ||
+ | |||
+ | * rcw 目标文件 | ||
+ | **rcw_800.bin.swapped** 即目标文件。 | ||
+ | |||
+ | <br> | ||
+ | ## **u-boot编译** | ||
+ | ### 编译前的准备 | ||
+ | * 创建编译工作目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | mkdir ~/my-work/02_source/ -p | ||
+ | </pre> | ||
+ | * 解压源码包到工作目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | tar jxf u-boot-2016.09.tar.bz2 -C ~/my-work/02_source/ | ||
+ | </pre> | ||
+ | |||
+ | ### 编译u-boot目标文件 | ||
+ | * 进入源码目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | cd ~/my-work/02_source/u-boot-2016.09 | ||
+ | </pre> | ||
+ | * 清除配置 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | ./ek200_build.sh clean | ||
+ | |||
+ | =====> Output: | ||
+ | ============Start build clean============ | ||
+ | CLEAN scripts/basic | ||
+ | CLEAN scripts/kconfig | ||
+ | CLEAN .config | ||
+ | ====Build clean ok!==== | ||
+ | </pre> | ||
+ | * 生成目标开发板的 .config 文件 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | ./ek200_build.sh config | ||
+ | |||
+ | =====> Output: | ||
+ | ============Start build config============ | ||
+ | HOSTCC scripts/basic/fixdep | ||
+ | HOSTCC scripts/kconfig/conf.o | ||
+ | SHIPPED scripts/kconfig/zconf.tab.c | ||
+ | SHIPPED scripts/kconfig/zconf.lex.c | ||
+ | SHIPPED scripts/kconfig/zconf.hash.c | ||
+ | HOSTCC scripts/kconfig/zconf.tab.o | ||
+ | HOSTLD scripts/kconfig/conf | ||
+ | # | ||
+ | # configuration written to .config | ||
+ | # | ||
+ | ====Build config ok!==== | ||
+ | </pre> | ||
+ | * 执行编译 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | ./ek200_build.sh uboot | ||
+ | |||
+ | =====> Output: | ||
+ | SHIPPED dts/dt.dtb | ||
+ | CAT u-boot-dtb.bin | ||
+ | COPY u-boot.dtb | ||
+ | COPY u-boot.bin | ||
+ | ====Build uboot ok!==== | ||
+ | </pre> | ||
+ | ### 全局编译 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | ./ek200_build.sh all | ||
+ | |||
+ | =====> Output: | ||
+ | SHIPPED dts/dt.dtb | ||
+ | CAT u-boot-dtb.bin | ||
+ | COPY u-boot.dtb | ||
+ | COPY u-boot.bin | ||
+ | ====Build uboot ok!==== | ||
+ | =========build all ok========= | ||
+ | </pre> | ||
+ | **Note: 如果有提示 “cc1: error”,通常是交叉编译工具的配置没生效,可以按前面 “交叉编译工具链安装” 中的 “source 工具链配置文件” 操作一次后再执行此步骤。** | ||
+ | |||
+ | * u-boot 目标文件 | ||
+ | **ls1012a-ek200-uboot.bin** 即目标文件。 | ||
+ | |||
+ | ## **PPA编译** | ||
+ | ### 编译前的准备 | ||
+ | * 创建编译工作目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | mkdir ~/my-work/02_source/ -p | ||
+ | </pre> | ||
+ | * 解压源码包到工作目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | tar jxf ppa.tar.bz2 -C ~/my-work/02_source/ | ||
+ | </pre> | ||
+ | |||
+ | ### 编译PPA目标文件 | ||
+ | * 进入源码目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | cd ~/my-work/02_source/ppa/soc-ls1012 | ||
+ | </pre> | ||
+ | |||
+ | * 执行编译 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | make rdb-fit | ||
+ | |||
+ | =====> Output: | ||
+ | mkimage -f build/src/ppa.its build/obj/ppa.itb | ||
+ | FIT description: PPA Firmware | ||
+ | Created: Fri Nov 1 10:58:17 2019 | ||
+ | Image 0 (firmware@1) | ||
+ | Description: PPA Firmware: Version 0.2 | ||
+ | Created: Fri Nov 1 10:58:17 2019 | ||
+ | Type: Firmware | ||
+ | Compression: uncompressed | ||
+ | Data Size: 88064 Bytes = 86.00 kB = 0.08 MB | ||
+ | Architecture: AArch64 | ||
+ | Load Address: unavailable | ||
+ | Default Configuration: 'config@1' | ||
+ | Configuration 0 (config@1) | ||
+ | Description: Boot PPA firmware | ||
+ | Kernel: unavailable | ||
+ | </pre> | ||
+ | **Note: 如果有提示 “cc1: error”,通常是交叉编译工具的配置没生效,可以按前面 “交叉编译工具链安装” 中的 “source 工具链配置文件” 操作一次后再执行此步骤。** | ||
+ | |||
+ | * ppa 目标文件 | ||
+ | **ppa.itb** 即目标文件。 | ||
+ | |||
+ | ## **内核编译** | ||
+ | ### 编译前的准备 | ||
+ | * 创建编译工作目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | mkdir ~/my-work/02_source/ -p | ||
+ | </pre> | ||
+ | * 解压源码包到工作目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | tar xf linux-4.1.35.tar.bz2 -C ~/my-work/02_source/ | ||
+ | </pre> | ||
+ | ### 编译内核目标文件 | ||
+ | * 进入内核源码目录 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | cd ~/my-work/02_source/linux-4.1.35 | ||
+ | </pre> | ||
+ | * 清除配置 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | ./ek200_build.sh clean | ||
+ | |||
+ | =====> Output: | ||
+ | ============Start build clean============ | ||
+ | CLEAN scripts/basic | ||
+ | CLEAN scripts/dtc | ||
+ | CLEAN scripts/genksyms | ||
+ | CLEAN scripts/kconfig | ||
+ | CLEAN scripts/mod | ||
+ | CLEAN scripts | ||
+ | CLEAN include/config include/generated arch/arm64/include/generated | ||
+ | CLEAN .config .config.old .version Module.symvers | ||
+ | ====Build clean ok!==== | ||
+ | </pre> | ||
+ | |||
+ | * 编译内核目标文件 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | ./ek200_build.sh kernel | ||
+ | |||
+ | =====> Output: | ||
+ | SYSMAP System.map | ||
+ | OBJCOPY arch/arm64/boot/Image | ||
+ | Image Name: Linux-4.1.35(MYZR) | ||
+ | Created: Mon Nov 4 11:59:34 2019 | ||
+ | Image Type: AArch64 Linux Kernel Image (uncompressed) | ||
+ | Data Size: 14014976 Bytes = 13686.50 kB = 13.37 MB | ||
+ | Load Address: 80080000 | ||
+ | Entry Point: 80080000 | ||
+ | ====Build kerenl ok!==== | ||
+ | </pre> | ||
+ | * 内核目标文件 | ||
+ | **EK200_IMAGE/uImage-ek200** 即内核目标文件 | ||
+ | |||
+ | ### 编译设备树目标文件 | ||
+ | * 执行编译命令 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | ./ek200_build.sh dtb | ||
+ | |||
+ | =====> Output: | ||
+ | Warning (reg_format): "reg" property in /pfe@04000000/ethernet@0 has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1) | ||
+ | Warning (reg_format): "reg" property in /pfe@04000000/ethernet@1 has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1) | ||
+ | Warning (ranges_format): "ranges" property in /pfe@04000000 has invalid length (32 bytes) (parent #address-cells == 2, child #address-cells == 2, #size-cells == 1) | ||
+ | Warning (avoid_default_addr_size): Relying on default #address-cells value for /pfe@04000000/ethernet@0 | ||
+ | Warning (avoid_default_addr_size): Relying on default #size-cells value for /pfe@04000000/ethernet@0 | ||
+ | Warning (avoid_default_addr_size): Relying on default #address-cells value for /pfe@04000000/ethernet@1 | ||
+ | Warning (avoid_default_addr_size): Relying on default #size-cells value for /pfe@04000000/ethernet@1 | ||
+ | ====Build dtb ok!==== | ||
+ | </pre> | ||
+ | * 设备树目标文件 | ||
+ | **EK200_IMAGE/ls1012a-ek200.dtb** 即内核目标文件 | ||
+ | |||
+ | ### 编译内核模块包 | ||
+ | * 执行编译 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | ./ek200_build.sh modules | ||
+ | |||
+ | =====> Output: | ||
+ | INSTALL drivers/staging/fsl_ppfe/pfe.ko | ||
+ | INSTALL net/802/p8022.ko | ||
+ | INSTALL net/802/psnap.ko | ||
+ | INSTALL net/802/stp.ko | ||
+ | INSTALL net/bridge/br_netfilter.ko | ||
+ | INSTALL net/bridge/bridge.ko | ||
+ | INSTALL net/llc/llc.ko | ||
+ | DEPMOD 4.1.35-rt41 | ||
+ | ====Build modules ok!==== | ||
+ | </pre> | ||
+ | * 内核模块目标文件 | ||
+ | **EK200_IMAGE/modules.tar** 即内核目标文件 | ||
+ | ### 全局编译 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | ./ek200_build.sh all | ||
+ | |||
+ | </pre> | ||
+ | <br/> | ||
+ | |||
+ | |||
+ | ## **Linux C程序编译** | ||
+ | ### 准备源码 | ||
+ | 打开网盘到 **5_MY-Demo -> MY-Linux-C-Demo**,下载 **hello.c** 文件,并复制到虚拟机。 | ||
+ | ### 编译目标文件 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | $CC hello.c -o hello.out | ||
+ | </pre> | ||
+ | **Note: 如果有“未找到命令”的信息,是因为交叉编译工具链的配置没有生效,可以按前面 “交叉编译工具链安装” 中的 “source 工具链配置文件” 操作一次后再执行此步骤** | ||
+ | ### 运行Linux C目标程序 | ||
+ | * 把编译得到的 hello.out 复制到开发板上 | ||
+ | * 在开发板上运行Linux C目标程序 | ||
+ | <pre> | ||
+ | =====> Input: | ||
+ | chmod +x ./hello.out | ||
+ | ./hello.out | ||
+ | |||
+ | =====> Output: | ||
+ | MYZR Technology Co.,Ltd. | ||
+ | |||
+ | Web: http://www.myzr.com.cn/ | ||
+ | Wiki: http://wiki.myzr.com.cn/ | ||
+ | BBS: http://bbs.myzr.com.cn/ | ||
+ | |||
+ | Tel: 0756-3628023/3628021 | ||
+ | E-mail: service@myzr.com.cn | ||
+ | </pre> | ||
+ | |||
+ | <br> | ||
+ | <br> | ||
+ | -------------------------------------------------------------------------------- | ||
+ | <pre> | ||
+ | -------------------------------------------------------------------------------- | ||
+ | * 珠海明远智睿科技有限公司 | ||
+ | * ZhuHai MYZR Technology CO.,LTD. | ||
+ | * Latest Update: 2019/11/08 | ||
+ | * Supporter: Tang Bin | ||
+ | -------------------------------------------------------------------------------- | ||
+ | </pre> |
2020年10月22日 (四) 16:31的最新版本
目录
下载相关文件
交叉编译工具链
LS1012A系列:打开网盘到 MY-LS1012A-EK200 -> 03_交叉编译工具,下载fsl-qoriq-glibc-x86_64-aarch64-toolchain-2.0.sh。
源码
rcw: 打开网盘到 MY-LS1012A-EK200 -> 02_源码,下载 rcw.tar.bz2。
u-boot:打开网盘到 MY-LS1012A-EK200 -> 02_源码,下载 u-boot-2016.09.tar.bz2。
Kernel:打开网盘到 MY-LS1012A-EK200 -> 02_源码,下载 linux-4.1.35.tar.bz2。
ppa: 打开网盘到 MY-LS1012A-EK200 -> 02_源码,下载 ppa.tar.bz2。
安装交叉编译工具链
- 执行安装
=====> Input: ./fsl-qoriq-glibc-x86_64-aarch64-toolchain-2.0.sh (不要安装到/opt目录) =====> Output: Freescale i.MX Release Distro SDK installer version 4.1.15-2.1.0 ================================================================ Enter target directory for SDK (default: /opt/fsl-imx-x11/4.1.15-2.1.0): =====> Input: /home/myzr/my-work/03_toolchain/fsl-qoriq/2.0/ =====> Output: You are about to install the SDK to "/home/myzr/my-work/03_toolchain/fsl-qoriq/2.0". Proceed[Y/n]? =====> Input: y =====> Output: Extracting SDK...............................................................................................................................................................done Setting it up...done SDK has been successfully set up and is ready to be used. Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g. $ . /home/myzr/my-work/03_toolchain/fsl-qoriq/2.0/environment-setup-aarch64-fsl-linux
- 修改配置文件
=====> Input: echo "unset LDFLAGS" >> ~/my-work/03_toolchain/fsl-qoriq/2.0/environment-setup-aarch64-fsl-linux
- source 工具链配置文件
=====> Input: source /home/myzr/my-work/03_toolchain/fsl-qoriq/2.0/environment-setup-aarch64-fsl-linux
- 检验交叉编译工具安装
=====> Input: $CC -v =====> Output: Using built-in specs. COLLECT_GCC=aarch64-fsl-linux-gcc COLLECT_LTO_WRAPPER=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/libexec/aarch64-fsl-linux/gcc/aarch64-fsl-linux/4.9.3/lto-wrapper Target: aarch64-fsl-linux Configured with: /home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/work-shared/gcc-linaro-4.9-r2015.03/gcc-linaro-4.9-2015.03/configure --build=x86_64-linux --host=x86_64-fslsdk-linux --target=aarch64-fsl-linux --prefix=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr --exec_prefix=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr --bindir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/aarch64-fsl-linux --sbindir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/bin/aarch64-fsl-linux --libexecdir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/libexec/aarch64-fsl-linux --datadir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/share --sysconfdir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/etc --sharedstatedir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/com --localstatedir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/var --libdir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/lib/aarch64-fsl-linux --includedir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/include --oldincludedir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/include --infodir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/share/info --mandir=/opt/fsl-qoriq/2.0/sysroots/x86_64-fslsdk-linux/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/sysroots/x86_64-nativesdk-fslsdk-linux --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --enable-multilib --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=aarch64-fsl-linux- --without-local-prefix --enable-target-optspace --enable-lto --enable-libssp --disable-bootstrap --disable-libmudflap --with-system-zlib --with-linker-hash-style=gnu --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --enable-cheaders=c_global --with-gxx-include-dir=/not/exist/usr/include/c++/4.9.3 --with-build-time-tools=/home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/sysroots/x86_64-linux/usr/aarch64-fsl-linux/bin --with-sysroot=/not/exist --with-build-sysroot=/home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/sysroots/ls1012ardb --enable-poison-system-directories --with-mpfr=/home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/sysroots/x86_64-nativesdk-fslsdk-linux --with-mpc=/home/linyn/ls1012/QorIQ-SDK-V2.0-20160527-yocto/build_ls1012ardb/tmp/sysroots/x86_64-nativesdk-fslsdk-linux --enable-nls --enable-__cxa_atexit Thread model: posix gcc version 4.9.3 20150311 (prerelease) (Linaro GCC 4.9-2015.03)
RCW编译
编译前的准备
- 创建编译工作目录
=====> Input: mkdir ~/my-work/02_source/ -p
- 解压源码包到工作目录
=====> Input: tar jxf rcw.tar.bz2 -C ~/my-work/02_source/
编译rcw目标文件
- 进入源码目录
=====> Input: cd ~/my-work/02_source/rcw
- 执行编译
=====> Input: make =====> Output: make[1]: Entering directory `/home/linyn/MY-LS1012A/my-test/reslese/rcw/ls1012a-ek200' python2 ../rcw.py -i N_SSNP_3305/rcw_800.rcw -o N_SSNP_3305/rcw_800.bin /home/linyn/MY-LS1012A/my-test/reslese/rcw/ls1012a-ek200/../qspi_swap.sh /home/linyn/MY-LS1012A/my-test/reslese/rcw/ls1012a-ek200/../qspi_swap_list.txt N_SSNP_3305/rcw_800.bin N_SSNP_3305/rcw_800.bin.swapped 8 make[1]: Leaving directory `/home/linyn/MY-LS1012A/my-test/reslese/rcw/ls1012a-ek200'
Note: 如果有提示 “cc1: error”,通常是交叉编译工具的配置没生效,可以按前面 “交叉编译工具链安装” 中的 “source 工具链配置文件” 操作一次后再执行此步骤。
- rcw 目标文件
rcw_800.bin.swapped 即目标文件。
u-boot编译
编译前的准备
- 创建编译工作目录
=====> Input: mkdir ~/my-work/02_source/ -p
- 解压源码包到工作目录
=====> Input: tar jxf u-boot-2016.09.tar.bz2 -C ~/my-work/02_source/
编译u-boot目标文件
- 进入源码目录
=====> Input: cd ~/my-work/02_source/u-boot-2016.09
- 清除配置
=====> Input: ./ek200_build.sh clean =====> Output: ============Start build clean============ CLEAN scripts/basic CLEAN scripts/kconfig CLEAN .config ====Build clean ok!====
- 生成目标开发板的 .config 文件
=====> Input: ./ek200_build.sh config =====> Output: ============Start build config============ HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/zconf.lex.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf # # configuration written to .config # ====Build config ok!====
- 执行编译
=====> Input: ./ek200_build.sh uboot =====> Output: SHIPPED dts/dt.dtb CAT u-boot-dtb.bin COPY u-boot.dtb COPY u-boot.bin ====Build uboot ok!====
全局编译
=====> Input: ./ek200_build.sh all =====> Output: SHIPPED dts/dt.dtb CAT u-boot-dtb.bin COPY u-boot.dtb COPY u-boot.bin ====Build uboot ok!==== =========build all ok=========
Note: 如果有提示 “cc1: error”,通常是交叉编译工具的配置没生效,可以按前面 “交叉编译工具链安装” 中的 “source 工具链配置文件” 操作一次后再执行此步骤。
- u-boot 目标文件
ls1012a-ek200-uboot.bin 即目标文件。
PPA编译
编译前的准备
- 创建编译工作目录
=====> Input: mkdir ~/my-work/02_source/ -p
- 解压源码包到工作目录
=====> Input: tar jxf ppa.tar.bz2 -C ~/my-work/02_source/
编译PPA目标文件
- 进入源码目录
=====> Input: cd ~/my-work/02_source/ppa/soc-ls1012
- 执行编译
=====> Input: make rdb-fit =====> Output: mkimage -f build/src/ppa.its build/obj/ppa.itb FIT description: PPA Firmware Created: Fri Nov 1 10:58:17 2019 Image 0 (firmware@1) Description: PPA Firmware: Version 0.2 Created: Fri Nov 1 10:58:17 2019 Type: Firmware Compression: uncompressed Data Size: 88064 Bytes = 86.00 kB = 0.08 MB Architecture: AArch64 Load Address: unavailable Default Configuration: 'config@1' Configuration 0 (config@1) Description: Boot PPA firmware Kernel: unavailable
Note: 如果有提示 “cc1: error”,通常是交叉编译工具的配置没生效,可以按前面 “交叉编译工具链安装” 中的 “source 工具链配置文件” 操作一次后再执行此步骤。
- ppa 目标文件
ppa.itb 即目标文件。
内核编译
编译前的准备
- 创建编译工作目录
=====> Input: mkdir ~/my-work/02_source/ -p
- 解压源码包到工作目录
=====> Input: tar xf linux-4.1.35.tar.bz2 -C ~/my-work/02_source/
编译内核目标文件
- 进入内核源码目录
=====> Input: cd ~/my-work/02_source/linux-4.1.35
- 清除配置
=====> Input: ./ek200_build.sh clean =====> Output: ============Start build clean============ CLEAN scripts/basic CLEAN scripts/dtc CLEAN scripts/genksyms CLEAN scripts/kconfig CLEAN scripts/mod CLEAN scripts CLEAN include/config include/generated arch/arm64/include/generated CLEAN .config .config.old .version Module.symvers ====Build clean ok!====
- 编译内核目标文件
=====> Input: ./ek200_build.sh kernel =====> Output: SYSMAP System.map OBJCOPY arch/arm64/boot/Image Image Name: Linux-4.1.35(MYZR) Created: Mon Nov 4 11:59:34 2019 Image Type: AArch64 Linux Kernel Image (uncompressed) Data Size: 14014976 Bytes = 13686.50 kB = 13.37 MB Load Address: 80080000 Entry Point: 80080000 ====Build kerenl ok!====
- 内核目标文件
EK200_IMAGE/uImage-ek200 即内核目标文件
编译设备树目标文件
- 执行编译命令
=====> Input: ./ek200_build.sh dtb =====> Output: Warning (reg_format): "reg" property in /pfe@04000000/ethernet@0 has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1) Warning (reg_format): "reg" property in /pfe@04000000/ethernet@1 has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1) Warning (ranges_format): "ranges" property in /pfe@04000000 has invalid length (32 bytes) (parent #address-cells == 2, child #address-cells == 2, #size-cells == 1) Warning (avoid_default_addr_size): Relying on default #address-cells value for /pfe@04000000/ethernet@0 Warning (avoid_default_addr_size): Relying on default #size-cells value for /pfe@04000000/ethernet@0 Warning (avoid_default_addr_size): Relying on default #address-cells value for /pfe@04000000/ethernet@1 Warning (avoid_default_addr_size): Relying on default #size-cells value for /pfe@04000000/ethernet@1 ====Build dtb ok!====
- 设备树目标文件
EK200_IMAGE/ls1012a-ek200.dtb 即内核目标文件
编译内核模块包
- 执行编译
=====> Input: ./ek200_build.sh modules =====> Output: INSTALL drivers/staging/fsl_ppfe/pfe.ko INSTALL net/802/p8022.ko INSTALL net/802/psnap.ko INSTALL net/802/stp.ko INSTALL net/bridge/br_netfilter.ko INSTALL net/bridge/bridge.ko INSTALL net/llc/llc.ko DEPMOD 4.1.35-rt41 ====Build modules ok!====
- 内核模块目标文件
EK200_IMAGE/modules.tar 即内核目标文件
全局编译
=====> Input: ./ek200_build.sh all
Linux C程序编译
准备源码
打开网盘到 5_MY-Demo -> MY-Linux-C-Demo,下载 hello.c 文件,并复制到虚拟机。
编译目标文件
=====> Input: $CC hello.c -o hello.out
Note: 如果有“未找到命令”的信息,是因为交叉编译工具链的配置没有生效,可以按前面 “交叉编译工具链安装” 中的 “source 工具链配置文件” 操作一次后再执行此步骤
运行Linux C目标程序
- 把编译得到的 hello.out 复制到开发板上
- 在开发板上运行Linux C目标程序
=====> Input: chmod +x ./hello.out ./hello.out =====> Output: MYZR Technology Co.,Ltd. Web: http://www.myzr.com.cn/ Wiki: http://wiki.myzr.com.cn/ BBS: http://bbs.myzr.com.cn/ Tel: 0756-3628023/3628021 E-mail: service@myzr.com.cn
-------------------------------------------------------------------------------- * 珠海明远智睿科技有限公司 * ZhuHai MYZR Technology CO.,LTD. * Latest Update: 2019/11/08 * Supporter: Tang Bin --------------------------------------------------------------------------------