小米路由相关工具链
来自Jack's Lab
(版本间的差异)
(→概述) |
|||
第7行: | 第7行: | ||
Cortex-A9 为 ARMv7 指令集,多媒体引擎NEON (SIMD指令)和浮点部件VFP 为可选实现 | Cortex-A9 为 ARMv7 指令集,多媒体引擎NEON (SIMD指令)和浮点部件VFP 为可选实现 | ||
− | + | BCM4709 没有带 neon 和 vfp | |
<br><br> | <br><br> |
2014年7月22日 (二) 10:11的版本
目录 |
1 概述
工具链,即编译、调试等相关的工具,如 gcc, g++, as, ld, strip, gdb, objcopy, objdump, gprof, strings ...
小米路由 R1D(带硬盘版)主核心 BCM4709 内的处理器是两个 ARM Cortex-A9 核
Cortex-A9 为 ARMv7 指令集,多媒体引擎NEON (SIMD指令)和浮点部件VFP 为可选实现
BCM4709 没有带 neon 和 vfp
2 小米官方工具链
官方放出了一个工具链包: http://bigota.miwifi.com/xiaoqiang/sdk/toolchain/xiaomi_toolchain.zip
基于 crosstool-NG 1.19.0 构建,参数如下:
comcat@jackslab:/work/openwrt/xiaomi/toolchain$ ./arm-xiaomi-linux-uclibcgnueabi/bin/arm-xiaomi-linux-uclibcgnueabi-gcc -v Using built-in specs. COLLECT_GCC=./arm-xiaomi-linux-uclibcgnueabi/bin/arm-xiaomi-linux-uclibcgnueabi-gcc COLLECT_LTO_WRAPPER=/work/openwrt/xiaomi/toolchain/arm-xiaomi-linux-uclibcgnueabi/bin/../libexec/gcc/arm-xiaomi-linux-uclibcgnueabi/4.8.2/lto-wrapper Target: arm-xiaomi-linux-uclibcgnueabi Configured with: /home/lijiqi/crossng/xq/.build/src/gcc-linaro-4.8-2013.06-1/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-xiaomi-linux-uclibcgnueabi --prefix=/home/lijiqi/x-tools/arm-xiaomi-linux-uclibcgnueabi --with-sysroot=/home/lijiqi/x-tools/arm-xiaomi-linux-uclibcgnueabi/arm-xiaomi-linux-uclibcgnueabi/sysroot --enable-languages=c,c++ --with-arch=armv7-a --with-cpu=cortex-a9 --with-tune=cortex-a9 --with-float=soft --with-pkgversion='crosstool-NG 1.19.0' --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --with-gmp=/home/lijiqi/crossng/xq/.build/arm-xiaomi-linux-uclibcgnueabi/buildtools --with-mpfr=/home/lijiqi/crossng/xq/.build/arm-xiaomi-linux-uclibcgnueabi/buildtools --with-mpc=/home/lijiqi/crossng/xq/.build/arm-xiaomi-linux-uclibcgnueabi/buildtools --with-isl=/home/lijiqi/crossng/xq/.build/arm-xiaomi-linux-uclibcgnueabi/buildtools --with-cloog=/home/lijiqi/crossng/xq/.build/arm-xiaomi-linux-uclibcgnueabi/buildtools --with-libelf=/home/lijiqi/crossng/xq/.build/arm-xiaomi-linux-uclibcgnueabi/buildtools --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-target-optspace --disable-multilib --with-local-prefix=/home/lijiqi/x-tools/arm-xiaomi-linux-uclibcgnueabi/arm-xiaomi-linux-uclibcgnueabi/sysroot --enable-c99 --enable-long-long Thread model: posix gcc version 4.8.2 20130603 (prerelease) (crosstool-NG 1.19.0)
3 Broadcom 官方工具链
Broadcom 为 BCM4709 发布的 SDK 带有相关工具链:hndtools-arm-linux-2.6.36-uclibc-4.5.3
comcat@jackslab:/work/openwrt/xiaomi/toolchain/arm-neon-vfp-test$ /opt/brcm-arm/bin/arm-brcm-linux-uclibcgnueabi-gcc -v Using built-in specs. COLLECT_GCC=/opt/brcm-arm/bin/arm-brcm-linux-uclibcgnueabi-gcc COLLECT_LTO_WRAPPER=/opt/brcm-arm/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin/../libexec/gcc/arm-brcm-linux-uclibcgnueabi/4.5.3/lto-wrapper Target: arm-brcm-linux-uclibcgnueabi Configured with: /projects/toolchains_build/buildroot-2012.02-brcm/output/toolchain/gcc-4.5.3/configure --prefix=/projects/hnd/tools/linux/hndtools-arm-linux-2.6.36-uclibc-4.5.3 --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-brcm-linux-uclibcgnueabi --enable-languages=c,c++ --with-sysroot=/projects/hnd/tools/linux/hndtools-arm-linux-2.6.36-uclibc-4.5.3/arm-brcm-linux-uclibcgnueabi/sysroot --with-build-time-tools=/projects/hnd/tools/linux/hndtools-arm-linux-2.6.36-uclibc-4.5.3/arm-brcm-linux-uclibcgnueabi/bin --disable-__cxa_atexit --enable-target-optspace --disable-libgomp --with-gnu-ld --disable-libssp --disable-multilib --disable-tls --enable-shared --with-gmp=/projects/hnd/tools/linux/hndtools-arm-linux-2.6.36-uclibc-4.5.3 --with-mpfr=/projects/hnd/tools/linux/hndtools-arm-linux-2.6.36-uclibc-4.5.3 --with-mpc=/projects/hnd/tools/linux/hndtools-arm-linux-2.6.36-uclibc-4.5.3 --enable-threads --disable-decimal-float --with-float=soft --with-abi=aapcs-linux --with-arch=armv7-a --with-tune=cortex-a9 --with-pkgversion='Buildroot 2012.02' --with-bugurl=http://bugs.buildroot.net/ Thread model: posix gcc version 4.5.3 (Buildroot 2012.02)
4 CodeSourcery工具链
嵌入式领域专业工具链调优商
$ ./arm-2013.11/bin/arm-none-eabi-gcc -v Using built-in specs. COLLECT_GCC=./arm-2013.11/bin/arm-none-eabi-gcc COLLECT_LTO_WRAPPER=/work/openwrt/xiaomi/toolchain/arm-2013.11/bin/../libexec/gcc/arm-none-eabi/4.8.1/lto-wrapper Target: arm-none-eabi Configured with: /scratch/astubbs/arm-eabi-lite/src/gcc-4.8-2013.11/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-eabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} -D__CS_SOURCERYGXX_MAJ__=2013 -D__CS_SOURCERYGXX_MIN__=11 -D__CS_SOURCERYGXX_REV__=24' --enable-languages=c,c++ --disable-shared --enable-lto --with-newlib --with-pkgversion='Sourcery CodeBench Lite 2013.11-24' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-headers=yes --with-sysroot=/opt/codesourcery/arm-none-eabi --with-build-sysroot=/scratch/astubbs/arm-eabi-lite/install/opt/codesourcery/arm-none-eabi --with-gmp=/scratch/astubbs/arm-eabi-lite/obj/pkg-2013.11-24-arm-none-eabi/arm-2013.11-24-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/astubbs/arm-eabi-lite/obj/pkg-2013.11-24-arm-none-eabi/arm-2013.11-24-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/astubbs/arm-eabi-lite/obj/pkg-2013.11-24-arm-none-eabi/arm-2013.11-24-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/astubbs/arm-eabi-lite/obj/pkg-2013.11-24-arm-none-eabi/arm-2013.11-24-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/astubbs/arm-eabi-lite/obj/pkg-2013.11-24-arm-none-eabi/arm-2013.11-24-arm-none-eabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/astubbs/arm-eabi-lite/install/opt/codesourcery/arm-none-eabi/bin --with-build-time-tools=/scratch/astubbs/arm-eabi-lite/install/opt/codesourcery/arm-none-eabi/bin SED=sed Thread model: single gcc version 4.8.1 (Sourcery CodeBench Lite 2013.11-24)
5 WindRiver工具链
也是 CodeSourcery 提供
$ host-cross/usr/bin/toolchain/cortexa9t-nvfp-wrswrap-linux-gnueabi-gcc -v Using built-in specs. COLLECT_GCC=/work/wrs/workspace/qemuarma9-soft-std/bitbake_build/tmp/sysroots/x86_64-linux/usr/bin/toolchain/arm-wrs-linux-gnueabi-gcc COLLECT_LTO_WRAPPER=/work/wrs/wrlinux-5.0/layers/wr-toolchain/4.6a-132/bin/../libexec/gcc/arm-wrs-linux-gnueabi/4.6.3/lto-wrapper Target: arm-wrs-linux-gnueabi Configured with: /scratch/astubbs/wrs4.6a/132/src/gcc-4.6-wrs/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-wrs-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-mode=thumb --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics}}}' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Wind River Linux Sourcery CodeBench 4.6a-132' --with-bugurl=support@windriver.com --disable-nls --prefix=/opt/windriver/wrlinux/arm --with-sysroot=/opt/windriver/wrlinux/arm/arm-wrs-linux-gnueabi/libc --with-build-sysroot=/scratch/astubbs/wrs4.6a/132/arm/install/arm-wrs-linux-gnueabi/libc --with-gmp=/scratch/astubbs/wrs4.6a/132/arm/obj/pkg-4.6a-132-arm-wrs-linux-gnueabi/wrs-linux-4.6a-132-arm-wrs-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/astubbs/wrs4.6a/132/arm/obj/pkg-4.6a-132-arm-wrs-linux-gnueabi/wrs-linux-4.6a-132-arm-wrs-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/astubbs/wrs4.6a/132/arm/obj/pkg-4.6a-132-arm-wrs-linux-gnueabi/wrs-linux-4.6a-132-arm-wrs-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-ppl=/scratch/astubbs/wrs4.6a/132/arm/obj/pkg-4.6a-132-arm-wrs-linux-gnueabi/wrs-linux-4.6a-132-arm-wrs-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/astubbs/wrs4.6a/132/arm/obj/pkg-4.6a-132-arm-wrs-linux-gnueabi/wrs-linux-4.6a-132-arm-wrs-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-libelf=/scratch/astubbs/wrs4.6a/132/arm/obj/pkg-4.6a-132-arm-wrs-linux-gnueabi/wrs-linux-4.6a-132-arm-wrs-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --enable-libgomp --disable-libitm --disable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/astubbs/wrs4.6a/132/arm/install/arm-wrs-linux-gnueabi/bin --with-build-time-tools=/scratch/astubbs/wrs4.6a/132/arm/install/arm-wrs-linux-gnueabi/bin SED=sed Thread model: posix gcc version 4.6.3 (Wind River Linux Sourcery CodeBench 4.6a-132)