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

来自百问网嵌入式Linux wiki
 
(未显示1个用户的7个中间版本)
第1行: 第1行:
{{MARKDOWN}}
+
[[File:导学.mp4|800px|600px|center]]
#开始使用#
 
##启动开发板##
 
##功能测试##
 
##应用编程##
 
##更新系统##
 
###更新SD卡系统###
 
###更新nandflash系统###
 
#进阶使用#
 
##配置开发环境##
 
##获取开发板sdk##
 
###本地拷贝上传###
 
###在线获取###
 
##使用busybox构建系统##
 
###设置工具链###
 
###手动编译uboot###
 
###手动编LinuxKernel###
 
###手动编译rootfs###
 
###制作系统镜像###
 
###更新文件系统到开发板###
 
  
##使用buildroot构建系统##
+
=  先看上面视频里提到的第1篇、第2篇视频,开始学!=
###获取源码###
+
=开始使用=
###编译SystenV服务系统###
+
'''{{Redtext | 刚拿到百问网IMX6ULL MINI开发板时,请参考本网页的视频;涉及板子硬件操作、编译UBOOT/内核/文件系统时参考本网页,其他操作跟百问网IMX6ULL全功能板子是一样的}}'''<br>
###编译SystenD服务系统###
+
==获取资料==
###更新系统到开发板###
+
* 开发板硬件原理图
###参考/扩展使用###
+
* 开发板sdk源码
 +
* 开发板预编译镜像
 +
 
 +
[[File:100ask_imx6ull_mini.png|500px|thumb|right|100ask  imx6ull mini开发板功能位置示意图]]
 +
==启动开发板==
 +
===启动方式设置===
 +
: 参考开发板背面启动方式表格图。
 +
===连接串口线至电脑===
 +
:使用开发板配套的micro usb数据线连接至上图红色标识的micro usb供电位置,使开发板可以供电,并设置好启动方式。
 +
 
 +
===开发板上电===
 +
*打开串口工具
 +
:运行资料光盘01_Tools/MobaXterm.exe工具,如果您的电脑上接入了多个串口设备,需打开windwos设备管理器来获取到此USB转串口工具使用的是那个串口号。<br>
 +
:如下图所示Windows设备管理显示此USB转串口模块的设备号是 <code>COM21</code>。
 +
[[File:100ask_myir_imx6ull_mini2.png|600px]]<br>
 +
:之后打开MobaXterm.exe工具,参考如下图新建串口会话并设置串口设备以及波特率为115200 校验位和流控都为 None;
 +
[[File:100ask_myir_imx6ull_mini3.png|600px]]<br>
 +
:设置成功后点击OK,接通开发板电源设置好启动方式即可开到如下打印输出信息。
 +
[[File:100ask_myir_imx6ull_mini4.png|600px]]<br>
 +
===进入终端===
 +
*进入系统
 +
:开发板上电后,输入{{redtext |root}}用户名即可登录开发板,如下图所示。
 +
[[File:100ask_myir_imx6ull_mini5.png|600px]]
 +
==功能测试==
 +
==应用编程==
 +
==更新系统==
 +
===更新SD卡系统===
 +
====方法一====
 +
*1.安装资料光盘下<code>01_tools\SD Card Formatter 5.0.1 Setup.exe</code>软件,安装完成后打开!<br>
 +
*2.使用'''SdCardFormatter'''格式化SD卡,格式化步骤如下如所示!
 +
{| class="wikitable"  style="text-align: center;  background-color: rgba(255,255,255,0.2)"
 +
|-
 +
| [[image:100ask_am335x_SD_P_004.png | 300px ]]
 +
| [[image:100ask_am335x_SD_P_005.png  | 300px]]
 +
| [[image:100ask_am335x_SD_P_006.png | 300px ]]
 +
|-
 +
| (1)选择要格式化的SD卡,选中Quick format,点击Format || (2)在弹出的对话框中点击是(Y) || (3)等待格式化完成,在弹出的对话框中点击确定
 +
|}
 +
 
 +
*3.安装资料光盘下<code>01_tools/win32diskimager-1.0.0-install.exe</code>软件,安装完成后打开!<br>
 +
*4.使用'''wind32diskimage'''烧写存放在<code>02_Images\Sdcard </code>目录下的<code> sdcard.img</code> 系统镜像文件,烧写步骤如下所示!<br>
 +
 
 +
{| class="wikitable" style="text-align: center;  background-color: rgba(255,255,255,0.2)"
 +
|-
 +
| [[image:100ask_am335x_SD_p_001.png | 400px  ]]
 +
| [[image:100ask_am335x_SD_p_002.png | 400px ]]
 +
| [[image:100ask_am335x_SD_p_003.png ]]
 +
|-
 +
| (1)选中需要烧写的SD卡设备,点击文件图标选择系统镜像文件,最后点击写入按钮开始烧写 || (2)此时弹出烧写对话框,点击Yes按钮,继续烧写, 等待任务进度执行到100%) || 烧写成功后,弹出写入成功,此时点击OK
 +
|}
 +
====方法二====
 +
:[[File:100ask_myir_imx6ull_mini6.png|650px|thumb|frameless|right|
 +
{| style="text-align:left; background-color: rgba(255,255,255,0.2)"
 +
|-
 +
|
 +
{{redtext|红色框1位置}} '''选择设备'''用来选择需要烧写的设备都有哪些,这里只支持烧写SD/TF EMMC NAND三种。
 +
|-
 +
|
 +
{{redtext|红色框2位置}} 表示烧写默认的镜像文件,分别有烧写整个系统,内核镜像,设备树文件,和uboot。
 +
|-
 +
|{{redtext|红色框3位置}} 表示需要烧写的裸机文件对话框,点击选择裸机文件后,即可烧写裸机文件到指定设备。
 +
|-
 +
|{{redtext|红色框4位置}} 用于上传用户自己的文件到文件系统中,目前只支持上传'''设备类型为 SD/TF EMMC设备'''。
 +
|-
 +
|{{redtext|红色框6位置}} 用于显示设备连接状态以及烧写系统所用固件运行状态。
 +
|-
 +
|{{redtext|红色框7位置}} 用于显示烧写打印信息。
 +
|}
 +
 
 +
]]
 +
*使用百问网独家烧写100ask_imx6ull_tool 工具,'''工具的实现原理以及详细介绍请参考页面[[100ask_imx6ull_tool]]'''。
 +
:*1.运行资料光盘01_tools/百问网烧写工具,启动后如右图所示。
 +
:*2.开发板插入SD卡并将micro usb数据线TYPEA口接到电脑USB接口处,并参考[[100ask_myir_imx6ull_mini#.E5.90.AF.E5.8A.A8.E6.96.B9.E5.BC.8F.E8.AE.BE.E7.BD.AE|设置启动方式]]页面设置启动方式为USB下载模式。
 +
:*3.此时设备管理器会自动安装设备驱动,软件设备未连接状态灯也会变亮并显示为设备已连接,如下图所示。
 +
::[[File:100ask_myir_imx6ull_mini9.png]]
 +
:*4.此时就可以点击下面的更新镜像等选项来更新烧写系统了。
 +
 
 +
*如何烧写自己编译后的系统镜像等文件。
 +
:*1.
 +
==配置开发环境==
 +
:wamware ubuntu系统镜像如何安装请参考 资料光盘 '''00_UserManual/嵌入式Linux应用开发完全手册第2版_韦东山全系列视频文档全集Vxxx.pdf'''
 +
:如果使用我们提供的vmware ubuntu 虚拟机镜像配置开发环境,只需在在ubuntu联网状态下在终端下执行如下命令即可完成一键配置开发环境 请参考页面[[Configuring_ubuntu | 配置ubuntu开发环境]]。
 +
:如何您使用的是自行安装的ubuntu 开发环境,我们的脚本会自动新建book用户及相关环境配置。
 +
*一键配置开发环境脚本,在Ubuntu终端下直接执行,即可配置好Linux开发环境依赖(包含tftpp nfs samba  不包含交叉编译工具链 ARCH CROSS_COMPILE设置)。
 +
国内coding地址({{Redtext |推荐使用此地址}})
 +
<syntaxhighlight lang="Bash">
 +
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
 +
</syntaxhighlight>
 +
 
 +
==获取开发板sdk==
 +
===在线获取===
 +
*以下操作在已经配置好开发环境得ubuntu系统终端下执行(注意:如下操作需要ubuntu可以上网)
 +
:*git邮箱账号和用户名配置
 +
<syntaxhighlight lang="bash">
 +
book@100ask:~$ git config --global user.email "you@example.com"
 +
book@100ask:~$ git config --global user.name "Your Name"
 +
</syntaxhighlight>
 +
:初次使用,需要配置用户名和邮箱才可以进行代码同步,用户名和邮箱根据自己情况设定,也可以随意设定
 +
 
 +
:*考虑到代码仓库过多,特使用repo工具管理代码, <br>
 +
::repo工具配置
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
::{{redtext|代码会不定时的进行更新同步,用户可以在100ask_imx6ull_mini-sdk目录下使用<code>  ../repo/repo sync -c </code>命令来获取最新源码}}
 +
:*上面使用的repo管理文件xml为国内coding仓库 https://e.coding.net/weidongshan/manifests.git
 +
:*如果使用Github仓库管理文件xml请查看 https://github.com/100askTeam/manifests/blob/linux-sdk/README.md
 +
:*所有Git仓库地址链接获取页面:[[ Get_all_Git_repository_address_links |  获取所有Git仓库地址链接]]
 +
*git常用命令参考(可以在相应的源码目录使用如下git命令查看所有的提交记录,用于学习研究)
 +
:*[[How to use the git log command]]
 +
:*[[How to use the git branch command]]
 +
:*[[How to use the git reset command]]
 +
:*[[How to install the git]]
 +
:*[[How to config the git]]
 +
:*[[How to submit a git pull request]]
 +
 
 +
==使用busybox构建系统==
 +
 
 +
===设置工具链===
 +
交叉编译工具链主要是用于在ubuntu主机上编译并生成可以在其它平台上运行的系统。设置交叉编译工具主要是设置<code>PATH</code> <code>ARCH</code>和<code>CROSS_COMPILE</code>三个环境变量,下面介绍具体设置方法(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”命令后,该设置只对当前终端有效
 +
<syntaxhighlight lang="bash">
 +
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-
 +
</syntaxhighlight>
 +
* 手动指定
 +
Make编译时指定ARCH架构 CROSS_COMPILE交叉编译工具链
 +
<syntaxhighlight lang="bash">
 +
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-
 +
</syntaxhighlight>
 +
 
 +
* 验证
 +
<syntaxhighlight lang="bash">
 +
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:~$
 +
</syntaxhighlight>
 +
 
 +
===手动编译u-boot===
 +
*定制版uboot特征
 +
::支持定制的uuu命令
 +
::支持标准的fastboot功能
 +
::支持ubifs文件系统
 +
::支持gpt mbr等分区命
 +
 
 +
*100ask  imx6ull mini开发板uboot配置文件介绍
 +
{| class="wikitable"
 +
|-
 +
! 配置文件名称 !! 配置文件特征简介
 +
|-
 +
| 100ask_imx6ull_mini_defconfig || 用于SD卡emmc启动
 +
|}
 +
 
 +
====单独烧写uboot====
 +
 
 +
*编译SD/TF卡版本uboot示例
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
:编译后的文件在uboot目录下 <code>u-boot-dtb.imx</code>文件。
 +
 
 +
====单独烧写uboot====
 +
*单独烧写uboot到SD卡
 +
:*请先将SD卡插入电脑,并挂载到ubuntu系统上,如何挂载请参考页面[[How to use vmware usb connection device| 如何使用VMware连接usb设备]],使用<code>dmesg</code>命令查看设备节点名称。
 +
::获取到设备名称后使用dd命令烧写img镜像文件到TF卡中,如下示例 假如插入ubuntu后设备节点为/dev/sdb。
 +
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 开发板内核
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
*最后生成的内核镜像和设备树文件在如下目录
 +
:*内核文件'''zImage'''所在目录:<code>arch/arm/boot/ </code>
 +
:*设备树文件'''100ask_imx6ull_mini.dtb'''所在目录:<code>arch/arm/boot/</code>
 +
*拷贝内核镜像到开发板系统
 +
*: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
 +
 
 +
====参考学习====
 +
<categorytree mode=all background*color:white;">Linux_Operating_System</categorytree>
 +
 
 +
===手动编译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
 +
 
 +
*安装其它必须库
 +
:如蓝牙固件 系统模块等。
 +
 
 +
 
 +
===制作系统镜像===
 +
*参考[[How_to_create_EXT4_images | 如何创建Ext4系统镜像 ]]
 +
 
 +
 
 +
===安装文件系统到目标开发板===
 +
*安装到Sd卡系统内
 +
*安装到emmc系统内
 +
*nfs网络挂载启动
 +
 
 +
==使用buildroot构建系统==
 +
===获取源码===
 +
:参考页面[[ | 获取开发板sdk]]
 +
*配置文件说明
 +
{| class="wikitable"
 +
|-
 +
! 配置文件名称 !! 作用简介
 +
|-
 +
|100ask_imx6ull_mini_systemV_defconfig  || 用于SD卡启动的文件系统,使用systemV守护服务。
 +
|}
 +
*扩展阅读
 +
**什么是init进程?
 +
**什么是systemV守护服务?
 +
**什么是systemD守护服务?
 +
 
 +
===编译SystenV服务系统===
 +
*100ask_myir_imx6ull_mini_systemV_defconfig,如下为编译步骤
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
'''注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待1 ~ 2个小时。'''
 +
:*编译后生成文件介绍
 +
<syntaxhighlight lang="bash" >
 +
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 <--内核镜像
 +
</syntaxhighlight>
 +
 
 +
===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目录,让后参考如上页面[[100ask_imx6ull#.E6.9B.B4.E6.96.B0SD.E5.8D.A1.E7.B3.BB.E7.BB.9F | 更新SD卡系统]]来烧写最新编译的sd卡系统。
 +
*如何使用10ask_imx6ull烧写工具烧写nand flash系统
 +
 
 +
 
 +
===参考/扩展阅读===
 +
*[[Buildroot | Buildroot简介]]
 +
*[[How to add a new package to buildroot | 如何添加一个自己的包到buildroot]]
 +
*[[Buildroot_TargetOptions | 如何配置TargetOptions(目标架构选择) ]]
 +
*[[Buildroot_BuildOptions| 如何配置buildroot构建选项]]
 +
*[[Buildroot_Toolchain | 如何为目标单板配置工具链]]
 +
*[[Buildroot_SystemConfiguration | 如何为目标单板配置系统配置参数]]
 +
*[[Buildroot_Kernel |如何为目标单板安装内核镜像]]
 +
*[[Buildroot_TargetPackages | 如何安装相应的软件包到目标单板内]]
 +
*[[Buildroot_Bootloaders | 如何为目标单板安装uboot]]
 +
*[[Buildroot_FilesystemImages | 如何为目标单板生成指定的文件系统镜像]]
 +
<categorytree mode=all background*color:white;">Buildroot</categorytree>
 +
 
 +
[[Category:MPUBoard]]

2024年6月27日 (四) 07:12的最新版本

先看上面视频里提到的第1篇、第2篇视频,开始学!

开始使用

刚拿到百问网IMX6ULL MINI开发板时,请参考本网页的视频;涉及板子硬件操作、编译UBOOT/内核/文件系统时参考本网页,其他操作跟百问网IMX6ULL全功能板子是一样的

获取资料

  • 开发板硬件原理图
  • 开发板sdk源码
  • 开发板预编译镜像
文件:100ask imx6ull mini.png
100ask imx6ull mini开发板功能位置示意图

启动开发板

启动方式设置

参考开发板背面启动方式表格图。

连接串口线至电脑

使用开发板配套的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卡系统

方法一

  • 1.安装资料光盘下01_tools\SD Card Formatter 5.0.1 Setup.exe软件,安装完成后打开!
  • 2.使用SdCardFormatter格式化SD卡,格式化步骤如下如所示!
100ask am335x SD P 004.png 100ask am335x SD P 005.png 100ask am335x SD P 006.png
(1)选择要格式化的SD卡,选中Quick format,点击Format (2)在弹出的对话框中点击是(Y) (3)等待格式化完成,在弹出的对话框中点击确定
  • 3.安装资料光盘下01_tools/win32diskimager-1.0.0-install.exe软件,安装完成后打开!
  • 4.使用wind32diskimage烧写存放在02_Images\Sdcard 目录下的 sdcard.img 系统镜像文件,烧写步骤如下所示!
100ask am335x SD p 001.png 100ask am335x SD p 002.png 100ask am335x SD p 003.png
(1)选中需要烧写的SD卡设备,点击文件图标选择系统镜像文件,最后点击写入按钮开始烧写 (2)此时弹出烧写对话框,点击Yes按钮,继续烧写, 等待任务进度执行到100%) 烧写成功后,弹出写入成功,此时点击OK

方法二

红色框1位置 选择设备用来选择需要烧写的设备都有哪些,这里只支持烧写SD/TF EMMC NAND三种。
红色框2位置 表示烧写默认的镜像文件,分别有烧写整个系统,内核镜像,设备树文件,和uboot。
红色框3位置 表示需要烧写的裸机文件对话框,点击选择裸机文件后,即可烧写裸机文件到指定设备。
红色框4位置 用于上传用户自己的文件到文件系统中,目前只支持上传设备类型为 SD/TF EMMC设备
红色框6位置 用于显示设备连接状态以及烧写系统所用固件运行状态。
红色框7位置 用于显示烧写打印信息。
  • 1.运行资料光盘01_tools/百问网烧写工具,启动后如右图所示。
  • 2.开发板插入SD卡并将micro usb数据线TYPEA口接到电脑USB接口处,并参考设置启动方式页面设置启动方式为USB下载模式。
  • 3.此时设备管理器会自动安装设备驱动,软件设备未连接状态灯也会变亮并显示为设备已连接,如下图所示。
100ask myir imx6ull mini9.png
  • 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工具配置
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 命令来获取最新源码
  • 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_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卡
获取到设备名称后使用dd命令烧写img镜像文件到TF卡中,如下示例 假如插入ubuntu后设备节点为/dev/sdb。
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/
  • 拷贝内核镜像到开发板系统
    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系统