“100ask myir imx6ull mini”的版本间的差异

来自百问网嵌入式Linux wiki
跳转至: 导航搜索
获取开发板sdk
编译nandflash文件系统
(未显示同一用户的3个中间版本)
第61行: 第61行:
 
  export ARCH=arm
 
  export ARCH=arm
 
  export CROSS_COMPILE=arm-linux-gnueabihf-
 
  export CROSS_COMPILE=arm-linux-gnueabihf-
  export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
+
  export PATH=$PATH:/home/book/100ask_myir_mini_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
 
 执行完成后使用如下命令使其生效
 
 执行完成后使用如下命令使其生效
 
  book@100ask:~$ source ~/.bashrc
 
  book@100ask:~$ source ~/.bashrc
第67行: 第67行:
 
 执行完“export”命令后,该设置只对当前终端有效
 
 执行完“export”命令后,该设置只对当前终端有效
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
book@100ask:~$ export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
+
book@100ask:~$ export PATH=$PATH:/home/book/100ask_myir_mini_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
 
book@100ask:~$ export ARCH=arm
 
book@100ask:~$ export ARCH=arm
 
book@100ask:~$ export CROSS_COMPILE=arm-linux-gnueabihf-
 
book@100ask:~$ export CROSS_COMPILE=arm-linux-gnueabihf-
第74行: 第74行:
 
Make编译时指定ARCH架构 CROSS_COMPILE交叉编译工具链
 
Make编译时指定ARCH架构 CROSS_COMPILE交叉编译工具链
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
book@100ask:~$ export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
+
book@100ask:~$ export PATH=$PATH:/home/book/100ask_myir_mini_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
 
book@100ask:~$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
 
book@100ask:~$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
 
</syntaxhighlight>
 
</syntaxhighlight>
第83行: 第83行:
 
Using built-in specs.
 
Using built-in specs.
 
COLLECT_GCC=arm-linux-gnueabihf-gcc
 
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/6.2.1/lto-wrapper
+
COLLECT_LTO_WRAPPER=/home/book/100ask_myir_mini_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/6.2.1/lto-wrapper
 
Target: arm-linux-gnueabihf
 
Target: arm-linux-gnueabihf
 
Configured with: /home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/snapshots/gcc-linaro-6.2-2016.11/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libstdcxx-pch --disable-libmudflap --with-cloog=no --with-ppl=no --with-isl=no --disable-nls --enable-c99 --enable-gnu-indirect-function --disable-multilib --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --enable-multiarch --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/sysroots/arm-linux-gnueabihf --enable-lto --enable-linker-build-id --enable-long-long --enable-shared --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran,lto --enable-checking=release --disable-bootstrap --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabihf --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu
 
Configured with: /home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/snapshots/gcc-linaro-6.2-2016.11/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libstdcxx-pch --disable-libmudflap --with-cloog=no --with-ppl=no --with-isl=no --disable-nls --enable-c99 --enable-gnu-indirect-function --disable-multilib --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --enable-multiarch --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/sysroots/arm-linux-gnueabihf --enable-lto --enable-linker-build-id --enable-long-long --enable-shared --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran,lto --enable-checking=release --disable-bootstrap --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabihf --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu
第94行: 第94行:
 
*编译100ask_imx6ull开发板uboot命令
 
*编译100ask_imx6ull开发板uboot命令
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
book@100ask:~$ cd ~/100ask_imx6ull-sdk/Uboot-2017.03
+
book@100ask:~$ cd ~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03
book@100ask:~/100ask_imx6ull-sdk/Uboot-2017.03$ make mx6ull_14x14_evk_defconfig
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03$ make 100ask_myir_imx6ull_mini_nand_defconfig
book@100ask:~/100ask_imx6ull-sdk/Uboot-2017.03$ make
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03$ make
 
</syntaxhighlight>
 
</syntaxhighlight>
*单独烧写uboot
+
*单独烧写uboot 到SD卡
 
:*请先将SD卡插入电脑,并挂载到ubuntu系统上,如何挂载请参考页面[[How to use vmware usb connection device| 如何使用VMware连接usb设备]],使用<code>dmesg</code>命令查看设备节点名称。
 
:*请先将SD卡插入电脑,并挂载到ubuntu系统上,如何挂载请参考页面[[How to use vmware usb connection device| 如何使用VMware连接usb设备]],使用<code>dmesg</code>命令查看设备节点名称。
 
::获取到设备名称后使用dd命令烧写img镜像文件到TF卡中,如下示例 假如插入ubuntu后设备节点为/dev/sdb。
 
::获取到设备名称后使用dd命令烧写img镜像文件到TF卡中,如下示例 假如插入ubuntu后设备节点为/dev/sdb。
  book@100ask:~/100ask_imx6ull-sdk/Uboot-2017.03$  dd if=u-boot-dtb.imx of=/dev/sdb bs=1k seek=1 conv=fsync
+
  book@100ask:~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03$  dd if=u-boot-dtb.imx of=/dev/sdb bs=1k seek=1 conv=fsync
 
::烧写成功后,需要将SD卡插入开发板内,并设置为SD卡启动方式(启动方式请参考开发板背面)
 
::烧写成功后,需要将SD卡插入开发板内,并设置为SD卡启动方式(启动方式请参考开发板背面)
* nfs 启动系统
+
 
 +
* 单独烧写uboot到nandflash
 +
 
 +
 
 +
*nand flash下设置nfs启动系统命令
 +
 
 +
 
 +
*SD卡下设置nfs 启动系统 命令
 +
 
  
 
*参考/扩展学习
 
*参考/扩展学习
 
 
:*[[UBoot|uboot用户手册]]
 
:*[[UBoot|uboot用户手册]]
 
:*[[UBootCmdFDT | uboot下fdt设备树操作命令使用详解]]
 
:*[[UBootCmdFDT | uboot下fdt设备树操作命令使用详解]]
第125行: 第132行:
 
*编译100ask_imx6ull 开发板内核
 
*编译100ask_imx6ull 开发板内核
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
book@100ask:~/100ask_imx6ull-sdk$ cd Linux-4.9.88
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk$ cd Linux-4.9.88
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make mrproper
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Linux-4.9.88$ make mrproper
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make 100ask_imx6ull_defconfig
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Linux-4.9.88$ make 100ask_myir_imx6ull_mini_defconfig
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make zImage -jN //这里可以根据CPU个数,来加速编译系统。  
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Linux-4.9.88$ make zImage -jN //这里可以根据CPU个数,来加速编译系统。  
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make dtbs
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Linux-4.9.88$ make dtbs
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
*最后生成的内核镜像和设备树文件在如下目录
 +
:*内核文件'''zImage'''所在目录:<code>arch/arm/boot/ </code>
 +
:*设备树文件'''100ask_myir_imx6ull_mini.dtb'''所在目录:<code>arch/arm/boot/</code>
 
*拷贝内核镜像到开发板系统
 
*拷贝内核镜像到开发板系统
 
*:ssh登陆开发板拷贝镜像
 
*:ssh登陆开发板拷贝镜像
第138行: 第148行:
  
 
*编译内核模块
 
*编译内核模块
  book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules
+
  book@100ask:~/100ask_myir_mini_imx6ull-sdk/Linux-4.9.88$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules
 
*安装内核模块到nfs根文件系统
 
*安装内核模块到nfs根文件系统
  book@100ask:~/100ask_imx6ull-sdk/linux-4.9.88$ sudo make ARCH=arm INSTALL_MOD_PATH=</media/rootfs>  modules_install
+
  book@100ask:~/100ask_myir_mini_imx6ull-sdk/linux-4.9.88$ sudo make ARCH=arm INSTALL_MOD_PATH=</media/rootfs>  modules_install
  
 
===手动编译rootfs===
 
===手动编译rootfs===
 
*配置busybox配置文件
 
*配置busybox配置文件
  book@100ask:~/100ask_imx6ull-sdk/Busybox_1.30.0$ cp ../DevelopmentEnvConf/100ask_imx6ull_busybox_config  .config  
+
  book@100ask:~/100ask_myir_mini_imx6ull-sdk/Busybox_1.30.0$ cp ../DevelopmentEnvConf/100ask_imx6ull_busybox_config  .config  
 
*编译busybox并安装
 
*编译busybox并安装
  book@100ask:~/100ask_imx6ull-sdk/Busybox_1.30.0$ make
+
  book@100ask:~/100ask_myir_mini_imx6ull-sdk/Busybox_1.30.0$ make
  book@100ask:~/100ask_imx6ull-sdk/Busybox_1.30.0$ make install  
+
  book@100ask:~/100ask_myir_mini_imx6ull-sdk/Busybox_1.30.0$ make install  
  
 
*创建相应得目录及文件并打包压缩成tar.gz
 
*创建相应得目录及文件并打包压缩成tar.gz
  book@100ask:~/100ask_imx6ull-sdk/DevelopmentEnvConf$ sudo ./busybox_build_config.sh
+
  book@100ask:~/100ask_myir_mini_imx6ull-sdk/DevelopmentEnvConf$ sudo ./busybox_build_config.sh
  
 
*安装其它必须库
 
*安装其它必须库
 
:如蓝牙固件 系统模块等。
 
:如蓝牙固件 系统模块等。
 
 
  
  
第173行: 第181行:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! 配置文件 !!  含义
+
! 配置文件 名称 !!  作用简介
 
|-
 
|-
| 100ask_imx6ull-nfs_defconfig  || 专门用 于nfs启动 使 用的 文件系统
+
|100ask_myir_imx6ull_mini_nandflash_defconfig  || 专门用 于myir imx6ull 256MB NAND flash ubi文件系统, 使 用busybox init进程 文件系统
 
|-
 
|-
|100ask_imx6ull_defconfig || 默认 文件系统 版本(包含除qt以外所有工具)
+
|100ask_myir_imx6ull_mini_systemV_defconfig ||  用于SD卡启动的 文件系统,使用systemV守护服务。
 
|-
 
|-
|100ask_imx6ull-qt_defconfig || 包含Qt5.11 文件系统 版本
+
|100ask_myir_imx6ull_systemD_defconfig || 用于SD卡启动的 文件系统,使用systemD守护服务。
 
|}
 
|}
 +
*扩展阅读
 +
**什么是ubi文件系统?
 +
**什么是init进程?
 +
**什么是systemV守护服务?
 +
**什么是systemD守护服务?
 +
===编译nandflash文件系统===
 +
*以编译100ask_myir_imx6ull_mini_nandflash_defconfig系统镜像为例,如下为编译步骤
 +
<syntaxhighlight lang="bash">
 +
book@100ask:~/100ask_myir_mini_imx6ull-sdk$ cd Buildroot_2019.02
 +
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make clean
 +
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make 100ask_myir_imx6ull_mini_nandflash_defconfig
 +
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make all
 +
</syntaxhighlight>
 +
'''注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待数小时。'''
 +
:*编译后生成文件介绍
 +
<syntaxhighlight lang="bash" >
 +
buildroot2019.02
 +
├── output
 +
├── images
 +
├── 100ask_myir_imx6ull_mini.dtb <--设备树文件
 +
├── rootfs.tar
 +
├── rootfs.tar.bz2 <--打包并压缩的根文件系统,用于NFSROOT启动
 +
├── rootfs.ubi <--nandflash文件系统ubi格式镜像
 +
├── rootfs.ubifs
 +
├── u-boot-dtb.imx <--u-boot镜像
 +
└── zImage <--linux内核镜像
 +
</syntaxhighlight>
 +
 
===编译SystenV服务系统===
 
===编译SystenV服务系统===
* 以编译100ask_imx6ull_defconfig系统镜像为例 ,如下为编译步骤
+
*100ask_myir_imx6ull_mini_systemV_defconfig ,如下为编译步骤
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
book@100ask:~/100ask_imx6ull-sdk$ cd Buildroot_2019.02
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk$ cd Buildroot_2019.02
book@100ask:~/100ask_imx6ull-sdk/Buildroot_2019.02$ make clean
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make clean
book@100ask:~/100ask_imx6ull-sdk/Buildroot_2019.02$ make 100ask_imx6ull_defconfig
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make 100ask_myir_imx6ull_mini_systemV_defconfig
book@100ask:~/100ask_imx6ull-sdk/Buildroot_2019.02$ make all
+
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make all
 
</syntaxhighlight>
 
</syntaxhighlight>
 
'''注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待1 ~ 2个小时。'''
 
'''注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待1 ~ 2个小时。'''
第205行: 第241行:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
===编译SystenD服务系统===
 
===编译SystenD服务系统===
 
+
*100ask_myir_imx6ull_systemD_defconfig,如下为编译步骤
 +
<syntaxhighlight lang="bash">
 +
book@100ask:~/100ask_myir_mini_imx6ull-sdk$ cd Buildroot_2019.02
 +
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make clean
 +
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make 100ask_myir_imx6ull_systemD_defconfig
 +
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make all
 +
</syntaxhighlight>
 +
'''注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待1 ~ 2个小时。'''
 +
:*编译后生成文件介绍
 +
<syntaxhighlight lang="bash" >
 +
buildroot2019.02
 +
├── output
 +
├── images
 +
├── 100ask_imx6ull-14x14.dtb <--设备树文件
 +
├── rootfs.ext2 <--ext2格式根文件系统
 +
├── rootfs.ext4 -> rootfs.ext2 <--ext2格式根文件系统
 +
├── rootfs.tar <--打包并压缩的根文件系统,用于NFSROOT启动
 +
├── rootfs.tar.gz
 +
├── sdcard.img <--完整的SD卡系统镜像
 +
├── u-boot-dtb.imx <--u-boot镜像
 +
└── zImage <--内核镜像
 +
</syntaxhighlight>
 
===buildroot常用编译命令===
 
===buildroot常用编译命令===
 
*buildroot对于Linux内核的常用命令
 
*buildroot对于Linux内核的常用命令
第227行: 第284行:
 
*如何烧写SD卡系统
 
*如何烧写SD卡系统
 
:请将编译后的 '''output/images/sdcard.img'''文件使用FileZilla等工具拷贝到widows目录,让后参考如上页面[[100ask_imx6ull#.E6.9B.B4.E6.96.B0SD.E5.8D.A1.E7.B3.BB.E7.BB.9F | 更新SD卡系统]]来烧写最新编译的sd卡系统。
 
:请将编译后的 '''output/images/sdcard.img'''文件使用FileZilla等工具拷贝到widows目录,让后参考如上页面[[100ask_imx6ull#.E6.9B.B4.E6.96.B0SD.E5.8D.A1.E7.B3.BB.E7.BB.9F | 更新SD卡系统]]来烧写最新编译的sd卡系统。
*如何使 用mfgtools 写buildroot生成的系统镜像
+
*如何使 用10ask_imx6ull 工具 烧写nand flash 系统
:使用mfgtools 烧写buildroot编译好的系统请先将'''output/images/'''目录下 '''u-boot-dtb.imx zImage 100ask_imx6ull-14x14.dtb rootfs.tar.bz2''' 这4个文件使用FileZilla等 工具 拷贝到资料光盘 '''02_Images\Emmc\100ask_imx6ull-mfgtools\Profiles\Linux\OS Firmware\files'''目录下,替换原有的文件,让后参考[[100ask_imx6ull#.E6.9B.B4.E6.96.B0emmc.E7.B3.BB.E7.BB.9F | 更新emmc 系统]]来更新emmc系统。
+
 
  
 
===参考/扩展阅读===
 
===参考/扩展阅读===

2020年5月21日 (四) 13:04的版本

开始使用

启动开发板

功能测试

应用编程

更新系统

更新SD卡系统

更新nandflash系统

配置开发环境

wamware ubuntu系统镜像如何安装请参考 资料光盘 00_UserManual/嵌入式Linux应用开发完全手册第2版_韦东山全系列视频文档全集Vxxx.pdf
如果使用我们提供的vmware ubuntu 虚拟机镜像配置开发环境,只需在在ubuntu联网状态下在终端下执行如下命令即可完成一键配置开发环境 请参考页面 配置ubuntu开发环境
如何您使用的是自行安装的ubuntu 开发环境,我们的脚本会自动新建book用户及相关环境配置。
  • 一键配置开发环境脚本,在Ubuntu终端下直接执行,即可配置好Linux开发环境依赖(包含tftpp nfs samba 不包含交叉编译工具链 ARCH CROSS_COMPILE设置)。

GIthub地址

wget --no-check-certificate -O Configuring_ubuntu.sh https://raw.githubusercontent.com/100askTeam/DevelopmentEnvConf/master/Configuring_ubuntu.sh && sudo chmod +x Configuring_ubuntu.sh && sudo ./Configuring_ubuntu.sh

国内coding地址(推荐使用此地址)

wget --no-check-certificate -O Configuring_ubuntu.sh https://weidongshan.coding.net/p/DevelopmentEnvConf/d/DevelopmentEnvConf/git/raw/master/Configuring_ubuntu.sh && sudo chmod +x Configuring_ubuntu.sh && sudo ./Configuring_ubuntu.sh

获取开发板sdk

在线获取

  • 以下操作在已经配置好开发环境得ubuntu系统终端下执行(注意:如下操作需要ubuntu可以上网)
  • git邮箱账号和用户名配置
book@100ask:~$ git config --global user.email "you@example.com"
book@100ask:~$ git config --global user.name "Your Name"
初次使用,需要配置用户名和邮箱才可以进行代码同步,用户名和邮箱根据自己情况设定,也可以随意设定
  • 考虑到代码仓库过多,特使用repo工具管理代码,
repo工具配置
book@100ask:~$  git clone https://e.coding.net/codebug8/repo.git
book@100ask:~$ mkdir -p 100ask_myir_mini_imx6ull-sdk && cd 100ask_myir_mini_imx6ull-sdk
book@100ask:~/100ask_myir_mini_imx6ull-sdk$  ../repo/repo init -u  https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_myir-imx6ull_mini_linux4.9.88_release.xml  --no-repo-verify
book@100ask:~/100ask_myir_mini_imx6ull-sdk$  ../repo/repo sync -j4
代码会不定时的进行更新同步,用户可以在100ask_myir_mini_imx6ull-sdk目录下使用 ../repo/repo sync -c 命令来获取最新源码
  • git常用命令参考(可以在相应的源码目录使用如下git命令查看所有的提交记录,用于学习研究)

使用busybox构建系统

设置工具链

交叉编译工具链主要是用于在ubuntu主机上编译并生成可以在其它平台上运行的系统。设置交叉编译工具主要是设置PATH ARCHCROSS_COMPILE三个环境变量,下面介绍具体设置方法(3种方法任选一种)。

  • 永久生效

如需永久修改,请修改用户配置文件, Ubuntu系统下,修改如下:

vim ~/.bashrc

在行尾添加或修改:

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_myir_mini_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin

执行完成后使用如下命令使其生效

book@100ask:~$ source ~/.bashrc
  • 临时生效

执行完“export”命令后,该设置只对当前终端有效

book@100ask:~$ export PATH=$PATH:/home/book/100ask_myir_mini_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
book@100ask:~$ export ARCH=arm
book@100ask:~$ export CROSS_COMPILE=arm-linux-gnueabihf-
  • 手动指定

Make编译时指定ARCH架构 CROSS_COMPILE交叉编译工具链

book@100ask:~$ export PATH=$PATH:/home/book/100ask_myir_mini_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
book@100ask:~$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  • 验证
book@100ask:~$ arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/book/100ask_myir_mini_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/6.2.1/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/snapshots/gcc-linaro-6.2-2016.11/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libstdcxx-pch --disable-libmudflap --with-cloog=no --with-ppl=no --with-isl=no --disable-nls --enable-c99 --enable-gnu-indirect-function --disable-multilib --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --enable-multiarch --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/sysroots/arm-linux-gnueabihf --enable-lto --enable-linker-build-id --enable-long-long --enable-shared --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran,lto --enable-checking=release --disable-bootstrap --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabihf --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu
Thread model: posix
gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) 
book@100ask:~$

手动编译u-boot

  • 编译100ask_imx6ull开发板uboot命令
book@100ask:~$ cd ~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03$ make 100ask_myir_imx6ull_mini_nand_defconfig
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03$ make
  • 单独烧写uboot到SD卡
获取到设备名称后使用dd命令烧写img镜像文件到TF卡中,如下示例 假如插入ubuntu后设备节点为/dev/sdb。
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03$   dd if=u-boot-dtb.imx of=/dev/sdb bs=1k seek=1 conv=fsync
烧写成功后,需要将SD卡插入开发板内,并设置为SD卡启动方式(启动方式请参考开发板背面)
  • 单独烧写uboot到nandflash


  • nand flash下设置nfs启动系统命令


  • SD卡下设置nfs启动系统命令


  • 参考/扩展学习

手动编译Linux kernel

  • 编译100ask_imx6ull 开发板内核
book@100ask:~/100ask_myir_mini_imx6ull-sdk$ cd Linux-4.9.88
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Linux-4.9.88$ make mrproper
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Linux-4.9.88$ make 100ask_myir_imx6ull_mini_defconfig
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Linux-4.9.88$ make zImage -jN //这里可以根据CPU个数,来加速编译系统。 
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Linux-4.9.88$ make dtbs
  • 最后生成的内核镜像和设备树文件在如下目录
  • 内核文件zImage所在目录:arch/arm/boot/
  • 设备树文件100ask_myir_imx6ull_mini.dtb所在目录:arch/arm/boot/
  • 拷贝内核镜像到开发板系统
    ssh登陆开发板拷贝镜像
    nfs挂载文件系统拷贝内核镜像
    tftp下载内核镜像
    通过wmware挂载u盘拷贝文件
  • 编译内核模块
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Linux-4.9.88$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules
  • 安装内核模块到nfs根文件系统
book@100ask:~/100ask_myir_mini_imx6ull-sdk/linux-4.9.88$ sudo make ARCH=arm INSTALL_MOD_PATH=</media/rootfs>  modules_install

手动编译rootfs

  • 配置busybox配置文件
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Busybox_1.30.0$ cp ../DevelopmentEnvConf/100ask_imx6ull_busybox_config  .config 
  • 编译busybox并安装
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Busybox_1.30.0$ make
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Busybox_1.30.0$ make install 
  • 创建相应得目录及文件并打包压缩成tar.gz
book@100ask:~/100ask_myir_mini_imx6ull-sdk/DevelopmentEnvConf$ sudo ./busybox_build_config.sh
  • 安装其它必须库
如蓝牙固件 系统模块等。


制作系统镜像

安装文件系统到目标开发板

  • 安装到Sd卡系统内
  • 安装到emmc系统内
  • nfs网络挂载启动

使用buildroot构建系统

获取源码

参考页面 获取开发板sdk
  • 配置文件说明
配置文件名称 作用简介
100ask_myir_imx6ull_mini_nandflash_defconfig 专门用于myir imx6ull 256MB NAND flash ubi文件系统,使用busybox init进程文件系统。
100ask_myir_imx6ull_mini_systemV_defconfig 用于SD卡启动的文件系统,使用systemV守护服务。
100ask_myir_imx6ull_systemD_defconfig 用于SD卡启动的文件系统,使用systemD守护服务。
  • 扩展阅读
    • 什么是ubi文件系统?
    • 什么是init进程?
    • 什么是systemV守护服务?
    • 什么是systemD守护服务?

编译nandflash文件系统

  • 以编译100ask_myir_imx6ull_mini_nandflash_defconfig系统镜像为例,如下为编译步骤
book@100ask:~/100ask_myir_mini_imx6ull-sdk$ cd Buildroot_2019.02
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make clean
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make 100ask_myir_imx6ull_mini_nandflash_defconfig
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make all

注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待数小时。

  • 编译后生成文件介绍
 
buildroot2019.02
	├── output
		├── images
			├── 100ask_myir_imx6ull_mini.dtb	<--设备树文件
			├── rootfs.tar
			├── rootfs.tar.bz2					<--打包并压缩的根文件系统,用于NFSROOT启动
			├── rootfs.ubi						<--nandflash文件系统ubi格式镜像
			├── rootfs.ubifs
			├── u-boot-dtb.imx					<--u-boot镜像
			└── zImage							<--linux内核镜像

编译SystenV服务系统

  • 100ask_myir_imx6ull_mini_systemV_defconfig,如下为编译步骤
book@100ask:~/100ask_myir_mini_imx6ull-sdk$ cd Buildroot_2019.02
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make clean
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make 100ask_myir_imx6ull_mini_systemV_defconfig
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make all

注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待1 ~ 2个小时。

  • 编译后生成文件介绍
 
buildroot2019.02	
	├── output
		├── images	
			├── 100ask_imx6ull-14x14.dtb	<--设备树文件	
			├── rootfs.ext2					<--ext2格式根文件系统
			├── rootfs.ext4 -> rootfs.ext2		<--ext2格式根文件系统	
			├── rootfs.tar					<--打包并压缩的根文件系统,用于NFSROOT启动
			├── rootfs.tar.gz
			├── sdcard.img					<--完整的SD卡系统镜像
			├── u-boot-dtb.imx				<--u-boot镜像
			└── zImage					<--内核镜像

编译SystenD服务系统

  • 100ask_myir_imx6ull_systemD_defconfig,如下为编译步骤
book@100ask:~/100ask_myir_mini_imx6ull-sdk$ cd Buildroot_2019.02
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make clean
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make 100ask_myir_imx6ull_systemD_defconfig
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Buildroot_2019.02$ make all

注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待1 ~ 2个小时。

  • 编译后生成文件介绍
 
buildroot2019.02	
	├── output
		├── images	
			├── 100ask_imx6ull-14x14.dtb	<--设备树文件	
			├── rootfs.ext2					<--ext2格式根文件系统
			├── rootfs.ext4 -> rootfs.ext2		<--ext2格式根文件系统	
			├── rootfs.tar					<--打包并压缩的根文件系统,用于NFSROOT启动
			├── rootfs.tar.gz
			├── sdcard.img					<--完整的SD卡系统镜像
			├── u-boot-dtb.imx				<--u-boot镜像
			└── zImage					<--内核镜像

buildroot常用编译命令

  • buildroot对于Linux内核的常用命令
  • buildroot下单独编译内核
make  linux-rebuild
  • 运行内核make menuconfig配置选项界面
 make linux-menuconfig   
  • 保存内核最新的配置文件
 make linux-savedefconfig   
  • 更新内核配置文件到 100ask_imx6ull_defconfig
make linux-update-defconfig   
  • buildroot下其它常用操作
  • buildroot下编译时显示详细信息
make V=1 <pkg>
  • buildroot下单独编译u-boot
make uboot-rebuild
  • buildroot下单独编译某个软件包
make <pkg>-rebuild

更新系统到开发板

如何烧写

  • 如何烧写SD卡系统
请将编译后的 output/images/sdcard.img文件使用FileZilla等工具拷贝到widows目录,让后参考如上页面 更新SD卡系统来烧写最新编译的sd卡系统。
  • 如何使用10ask_imx6ull烧写工具烧写nand flash系统


参考/扩展阅读