100ask myir imx6ull mini

来自百问网嵌入式Linux wiki
Wiki讨论 | 贡献2020年5月22日 (五) 17:19的版本

开始使用

100ask myir imx6ull mini.png

启动开发板

启动方式设置

  • 启动方式讲解。
启动方式 启动位Bit1 启动位Bit2 启动位Bit3 启动位Bit4 Bootselect示意图
NAND启动模式 ON OFF OFF ON 100ask myir imx6ull mini nandboot.png
SD卡启动模式 OFF ON OFF ON 100ask myir imx6ull mini sdboot.png
USB下载模式 OFF OFF OFF OFF 100ask myir imx6ull mini usbboot.png
  • 参考上图的启动方式示意图设置开发板启动方式为Nand启动。

连接串口线至电脑

使用百问网的USB转串口工具以及配套的插针连接线按照如下图所示连接串口与开发板,注意串口插针线的颜色要与下图保存一致,
串口模块与开发板连接成功后,请检查串口当前的电平方式是否为TTL电平方式,
如果不是,请参考下图所示,设置电平方式为TTL,之后将USB转串口模块连接至电脑,
此时电脑会自动安装串口模块驱动,如果没有自动安装请使用驱动精灵工具来安装。USB串口详细使用介绍

100ask myir imx6ull mini serial.png

使用开发板配套的micro usb数据线连接至上图红色标识的micro usb供电位置,使开发板可以供电,并设置好启动方式。

开发板上电

  • 打开串口工具
运行资料光盘01_Tools/MobaXterm.exe工具,如果您的电脑上接入了多个串口设备,需打开windwos设备管理器来获取到此USB转串口工具使用的是那个串口号。
如下图所示Windows设备管理显示此USB转串口模块的设备号是 COM21

100ask myir imx6ull mini2.png

之后打开MobaXterm.exe工具,参考如下图新建串口会话并设置串口设备以及波特率为115200 校验位和流控都为 None;

100ask myir imx6ull mini3.png

设置成功后点击OK,接通开发板电源设置好启动方式即可开到如下打印输出信息。

100ask myir imx6ull mini4.png

进入终端

  • 进入系统
开发板上电后,输入root用户名即可登录开发板,如下图所示。

100ask myir imx6ull mini5.png

功能测试

应用编程

更新系统

更新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_defconfig 专门用于myir imx6ull 256MB NAND flash SD卡启动的文件系统,使用busybox init进程文件系统。
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系统