100ask imx6ull mini
来自百问网嵌入式Linux wiki
目录
开始使用
刚拿到IMX6ULL mini开发板时,请参考本网页的视频;涉及板子硬件操作、编译UBOOT/内核/文件系统时参考本网页,其他操作跟IMX6ULL全功能板子是一样的
我们正在把IMX6ULL mini开发板的操作合并进文档里,下周可以发布
启动开发板
启动方式设置
- 启动方式讲解。
启动方式 | 启动位Bit1 | 启动位Bit2 | 启动位Bit3 | 启动位Bit4 | Bootselect示意图 |
---|---|---|---|---|---|
NAND启动模式 | ON | OFF | OFF | ON | |
SD卡启动模式 | OFF | ON | OFF | ON | |
USB下载模式 | OFF | OFF | OFF | OFF |
- 参考上图的启动方式示意图设置开发板启动方式为Nand启动。
连接串口线至电脑
- 使用百问网的USB转串口工具以及配套的插针连接线按照如下图所示连接串口与开发板,注意串口插针线的颜色要与下图保存一致,
- 串口模块与开发板连接成功后,请检查串口当前的电平方式是否为TTL电平方式,
- 如果不是,请参考下图所示,设置电平方式为TTL,之后将USB转串口模块连接至电脑,
- 此时电脑会自动安装串口模块驱动,如果没有自动安装请使用驱动精灵工具来安装。USB串口详细使用介绍
- 使用开发板配套的micro usb数据线连接至上图红色标识的micro usb供电位置,使开发板可以供电,并设置好启动方式。
开发板上电
- 打开串口工具
- 运行资料光盘01_Tools/MobaXterm.exe工具,如果您的电脑上接入了多个串口设备,需打开windwos设备管理器来获取到此USB转串口工具使用的是那个串口号。
- 如下图所示Windows设备管理显示此USB转串口模块的设备号是
COM21
。
- 之后打开MobaXterm.exe工具,参考如下图新建串口会话并设置串口设备以及波特率为115200 校验位和流控都为 None;
- 设置成功后点击OK,接通开发板电源设置好启动方式即可开到如下打印输出信息。
功能测试
应用编程
更新系统
更新SD卡系统
方法一
- 1.安装资料光盘下
01_tools\SD Card Formatter 5.0.1 Setup.exe
软件,安装完成后打开!
- 2.使用SdCardFormatter格式化SD卡,格式化步骤如下如所示!
(1)选择要格式化的SD卡,选中Quick format,点击Format | (2)在弹出的对话框中点击是(Y) | (3)等待格式化完成,在弹出的对话框中点击确定 |
- 3.安装资料光盘下
01_tools/win32diskimager-1.0.0-install.exe
软件,安装完成后打开!
- 4.使用wind32diskimage烧写存放在
02_Images\Sdcard
目录下的sdcard.img
系统镜像文件,烧写步骤如下所示!
(1)选中需要烧写的SD卡设备,点击文件图标选择系统镜像文件,最后点击写入按钮开始烧写 | (2)此时弹出烧写对话框,点击Yes按钮,继续烧写, 等待任务进度执行到100%) | 烧写成功后,弹出写入成功,此时点击OK |
方法二
- 使用百问网独家烧写100ask_imx6ull_tool 工具,工具的实现原理以及详细介绍请参考页面100ask_imx6ull烧写工具设计与使用说明。
-
- 1.运行资料光盘01_tools/百问网烧写工具,启动后如右图所示。
- 2.开发板插入SD卡并将micro usb数据线TYPEA口接到电脑USB接口处,并参考设置启动方式页面设置启动方式为USB下载模式。
- 3.此时设备管理器会自动安装设备驱动,软件设备未连接状态灯也会变亮并显示为设备已连接,如下图所示。
- 4.此时就可以点击下面的更新镜像等选项来更新烧写系统了。
- 如何烧写自己编译后的系统镜像等文件。
- 1.
更新nandflash系统
方式一
- 设置启动方式为usb下载模式进行烧写。
-
- 1.运行资料光盘01_tools/百问网烧写工具,启动后如右上图所示。
- 2.开发板将micro usb数据线TYPEA口接到电脑USB接口处,并参考设置启动方式页面设置启动方式为USB下载模式。
- 3.此时设备管理器会自动安装设备驱动,软件设备未连接状态灯也会变亮并显示为设备已连接,如下图所示。
- 4.此时就可以点击下面的更新镜像等选项来更新烧写系统了。
- 如何烧写自己编译后的系统镜像等文件。
- 1.
配置开发环境
- wamware ubuntu系统镜像如何安装请参考 资料光盘 00_UserManual/嵌入式Linux应用开发完全手册第2版_韦东山全系列视频文档全集Vxxx.pdf
- 如果使用我们提供的vmware ubuntu 虚拟机镜像配置开发环境,只需在在ubuntu联网状态下在终端下执行如下命令即可完成一键配置开发环境 请参考页面 配置ubuntu开发环境。
- 如何您使用的是自行安装的ubuntu 开发环境,我们的脚本会自动新建book用户及相关环境配置。
- 一键配置开发环境脚本,在Ubuntu终端下直接执行,即可配置好Linux开发环境依赖(包含tftpp nfs samba 不包含交叉编译工具链 ARCH CROSS_COMPILE设置)。
国内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工具配置
- 考虑到代码仓库过多,特使用repo工具管理代码,
book@100ask:~$ git clone https://e.coding.net/codebug8/repo.git
book@100ask:~$ mkdir -p 100ask_imx6ull_mini-sdk && cd 100ask_imx6ull_mini-sdk
book@100ask:~/100ask_imx6ull_mini-sdk$ ../repo/repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_mini_linux4.9.88_release.xml --no-repo-verify
book@100ask:~/100ask_imx6ull_mini-sdk$ ../repo/repo sync -j4
-
- 代码会不定时的进行更新同步,用户可以在100ask_imx6ull_mini-sdk目录下使用
../repo/repo sync -c
命令来获取最新源码
- 上面使用的repo管理文件xml为国内coding仓库 https://e.coding.net/weidongshan/manifests.git
- 如果使用Github仓库管理文件xml请查看 https://github.com/100askTeam/manifests/blob/linux-sdk/README.md
- 所有Git仓库地址链接获取页面: 获取所有Git仓库地址链接
- 代码会不定时的进行更新同步,用户可以在100ask_imx6ull_mini-sdk目录下使用
- git常用命令参考(可以在相应的源码目录使用如下git命令查看所有的提交记录,用于学习研究)
使用busybox构建系统
设置工具链
交叉编译工具链主要是用于在ubuntu主机上编译并生成可以在其它平台上运行的系统。设置交叉编译工具主要是设置PATH
ARCH
和CROSS_COMPILE
三个环境变量,下面介绍具体设置方法(3种方法任选一种)。
- 永久生效
如需永久修改,请修改用户配置文件, Ubuntu系统下,修改如下:
vim ~/.bashrc
在行尾添加或修改:
export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- export PATH=$PATH:/home/book/100ask_imx6ull_mini-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_imx6ull_mini-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_imx6ull_mini-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_imx6ull_mini-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
- 定制版uboot特征
- 支持定制的uuu命令
- 支持标准的fastboot功能
- 支持ubifs文件系统
- 支持gpt mbr等分区命
- 100ask imx6ull mini开发板uboot配置文件介绍
配置文件名称 | 配置文件特征简介 |
---|---|
100ask_imx6ull_mini_defconfig | 用于SD卡emmc启动 |
单独烧写uboot
- 编译SD/TF卡版本uboot示例
book@100ask:~$ cd ~/100ask_imx6ull_mini-sdk/Uboot-2018.03
book@100ask:~/100ask_imx6ull_mini-sdk/Uboot-2018.03$ make 100ask_myir_imx6ull_mini_defconfig
book@100ask:~/100ask_imx6ull_mini-sdk/Uboot-2018.03$ make
- 编译后的文件在uboot目录下
u-boot-dtb.imx
文件。
单独烧写uboot
- 单独烧写uboot到SD卡
-
- 请先将SD卡插入电脑,并挂载到ubuntu系统上,如何挂载请参考页面 如何使用VMware连接usb设备,使用
dmesg
命令查看设备节点名称。
- 获取到设备名称后使用dd命令烧写img镜像文件到TF卡中,如下示例 假如插入ubuntu后设备节点为/dev/sdb。
- 请先将SD卡插入电脑,并挂载到ubuntu系统上,如何挂载请参考页面 如何使用VMware连接usb设备,使用
book@100ask:~/100ask_imx6ull_mini-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_imx6ull_mini-sdk$ cd Linux-4.9.88
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ make mrproper
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ make 100ask_imx6ull_mini_defconfig
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ make zImage -jN //这里可以根据CPU个数,来加速编译系统。
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ make dtbs
- 最后生成的内核镜像和设备树文件在如下目录
- 内核文件zImage所在目录:
arch/arm/boot/
- 设备树文件100ask_imx6ull_mini.dtb所在目录:
arch/arm/boot/
- 内核文件zImage所在目录:
- 拷贝内核镜像到开发板系统
- ssh登陆开发板拷贝镜像
- nfs挂载文件系统拷贝内核镜像
- tftp下载内核镜像
- 通过wmware挂载u盘拷贝文件
- 编译内核模块
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules
- 安装内核模块到nfs根文件系统
book@100ask:~/100ask_imx6ull_mini-sdk/linux-4.9.88$ sudo make ARCH=arm INSTALL_MOD_PATH=</media/rootfs> modules_install
参考学习
手动编译rootfs
- 配置busybox配置文件
book@100ask:~/100ask_imx6ull_mini-sdk/Busybox_1.30.0$ cp ../DevelopmentEnvConf/100ask_imx6ull_busybox_config .config
- 编译busybox并安装
book@100ask:~/100ask_imx6ull_mini-sdk/Busybox_1.30.0$ make book@100ask:~/100ask_imx6ull_mini-sdk/Busybox_1.30.0$ make install
- 创建相应得目录及文件并打包压缩成tar.gz
book@100ask:~/100ask_imx6ull_mini-sdk/DevelopmentEnvConf$ sudo ./busybox_build_config.sh
- 安装其它必须库
- 如蓝牙固件 系统模块等。
安装文件系统到目标开发板
- 安装到Sd卡系统内
- 安装到emmc系统内
- nfs网络挂载启动
使用buildroot构建系统
获取源码
- 参考页面[[ | 获取开发板sdk]]
- 配置文件说明
配置文件名称 | 作用简介 |
---|---|
100ask_imx6ull_mini_systemV_defconfig | 用于SD卡启动的文件系统,使用systemV守护服务。 |
- 扩展阅读
- 什么是init进程?
- 什么是systemV守护服务?
- 什么是systemD守护服务?
编译SystenV服务系统
- 100ask_myir_imx6ull_mini_systemV_defconfig,如下为编译步骤
book@100ask:~/100ask_imx6ull_mini-sdk$ cd Buildroot_2019.02
book@100ask:~/100ask_imx6ull_mini-sdk/Buildroot_2019.02$ make clean
book@100ask:~/100ask_imx6ull_mini-sdk/Buildroot_2019.02$ make 100ask_imx6ull_mini_systemV_defconfig
book@100ask:~/100ask_imx6ull_mini-sdk/Buildroot_2019.02$ make all
注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待1 ~ 2个小时。
- 编译后生成文件介绍
buildroot2020.02
├── output
├── images
├── 100ask_imx6ull_mini.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系统