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

来自百问网嵌入式Linux wiki
 
(未显示2个用户的16个中间版本)
第1行: 第1行:
 +
[[File:IMX6ULL初学者快速指南.mp4|800px|600px|center]]
 
=开始使用=
 
=开始使用=
[[File:100ask_myir_imx6ull_mini.png|500px|thumb|right]]
+
'''{{Redtext | 刚拿到IMX6ULL mini开发板时,请参考本网页的视频;涉及板子硬件操作、编译UBOOT/内核/文件系统时参考本网页,其他操作跟IMX6ULL全功能板子是一样的}}'''<br>
 +
'''{{Redtext | 我们正在把IMX6ULL mini开发板的操作合并进文档里,下周可以发布}}'''<br>
 +
[[File:100ask_myir_imx6ull_mini.png|500px|thumb|right|100ask myir imx6ull mini开发板功能位置示意图]]
 
==启动开发板==
 
==启动开发板==
 
===启动方式设置===
 
===启动方式设置===
第86行: 第89行:
 
*使用百问网独家烧写100ask_imx6ull_tool 工具,'''工具的实现原理以及详细介绍请参考页面[[100ask_imx6ull_tool]]'''。
 
*使用百问网独家烧写100ask_imx6ull_tool 工具,'''工具的实现原理以及详细介绍请参考页面[[100ask_imx6ull_tool]]'''。
 
:*1.运行资料光盘01_tools/百问网烧写工具,启动后如右图所示。
 
:*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.
 
===更新nandflash系统===
 
===更新nandflash系统===
 +
====方式一====
 +
*设置启动方式为usb下载模式进行烧写。
 +
:*1.运行资料光盘01_tools/百问网烧写工具,启动后如右上图所示。
 +
:*2.开发板将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_mini8.png]]
 +
:*4.此时就可以点击下面的更新镜像等选项来更新烧写系统了。
 +
 +
*如何烧写自己编译后的系统镜像等文件。
 +
:*1.
  
 
==配置开发环境==
 
==配置开发环境==
第176行: 第194行:
  
 
===手动编译u-boot===
 
===手动编译u-boot===
*编译100ask_imx6ull开发板uboot命令
+
*定制版uboot特征
 +
::支持定制的uuu命令
 +
::支持标准的fastboot功能
 +
::支持ubifs文件系统
 +
::支持gpt mbr等分区命
 +
 
 +
*100ask myir imx6ull mini开发板uboot配置文件介绍
 +
{| class="wikitable"
 +
|-
 +
! 配置文件名称 !! 配置文件特征简介
 +
|-
 +
| 100ask_myir_imx6ull_mini_defconfig || 用于SD卡emmc启动
 +
|-
 +
| 100ask_myir_imx6ull_mini_nand_defconfig || 用于nandflash启动
 +
|}
 +
====单独烧写uboot====
 +
*编译nandflash版本uboot示例
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
book@100ask:~$ cd ~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03
 
book@100ask:~$ cd ~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03
第182行: 第216行:
 
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03$ make
 
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03$ make
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
:编译后的文件在uboot目录下 <code>u-boot-dtb.imx</code>文件。
 +
 +
*编译SD/TF卡版本uboot示例
 +
<syntaxhighlight lang="bash">
 +
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_defconfig
 +
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03$ make
 +
</syntaxhighlight>
 +
:编译后的文件在uboot目录下 <code>u-boot-dtb.imx</code>文件。
 +
 +
====单独烧写uboot====
 
*单独烧写uboot到SD卡
 
*单独烧写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>命令查看设备节点名称。
第187行: 第232行:
 
  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
 
  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卡启动方式(启动方式请参考开发板背面)
 +
  
 
*单独烧写uboot到nandflash
 
*单独烧写uboot到nandflash
  
 
+
====设置网络挂载====
 
*nand flash下设置nfs启动系统命令
 
*nand flash下设置nfs启动系统命令
  
第198行: 第244行:
  
 
*参考/扩展学习
 
*参考/扩展学习
:*[[UBoot|uboot用户手册]]
+
:<categorytree mode=all background*color:white;">Uboot</categorytree>
:*[[UBootCmdFDT | uboot下fdt设备树操作命令使用详解]]
 
:*[[UBootCmdGroupDownload | uboot下下载命令使用详解]]
 
:*[[UBootCmdGroupEnvironment | uboot下环境变量命令使用详解]]
 
:*[[UBootCmdGroupExec | uboot下执行控制命令使用详解]]
 
:*[[UBootCmdGroupFlash | uboot下Flash内存命令使用详解]]
 
:*[[UBootCmdGroupInfo | uboot下info命令使用详解]]
 
:*[[UBootCmdGroupMemory | uboot下内存命令使用详解]]
 
:*[[UBootCmdGroupMisc | uboot下混杂设备命令使用详解]]
 
:*[[UBootCmdGroupSpecial | uboot下特殊命令使用详解]]
 
:*[[UBootStorageDevices | uboot下存储设备操作命令使用详解]]
 
:*[[How_to_boot_the_kernel_via_TFTP_from_U-Boot | 如何从U-Boot通过TFTP引导内核]]
 
:*[[How_to_update_U-Boot_on_an_SD_card | 如何在SD卡上更新U-Boot]]
 
:*[[How_to_use_USB_mass_storage_in_U-Boot |如何在U-Boot中使用USB大容量存储]]
 
  
 
===手动编译Linux kernel===
 
===手动编译Linux kernel===
第235行: 第268行:
 
*安装内核模块到nfs根文件系统
 
*安装内核模块到nfs根文件系统
 
  book@100ask:~/100ask_myir_mini_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
 +
 +
====参考学习====
 +
<categorytree mode=all background*color:white;">Linux_Operating_System</categorytree>
  
 
===手动编译rootfs===
 
===手动编译rootfs===
第261行: 第297行:
 
==使用buildroot构建系统==
 
==使用buildroot构建系统==
 
===获取源码===
 
===获取源码===
:参考页面[[100ask_imx6ull#.E8.8E.B7.E5.8F.96.E5.BC.80.E5.8F.91.E6.9D.BFsdk | 获取开发板sdk]]
+
:参考页面[[ | 获取开发板sdk]]
 
*配置文件说明
 
*配置文件说明
 
{| class="wikitable"
 
{| class="wikitable"
第272行: 第308行:
 
|-
 
|-
 
|100ask_myir_imx6ull_mini_systemV_defconfig  || 用于SD卡启动的文件系统,使用systemV守护服务。
 
|100ask_myir_imx6ull_mini_systemV_defconfig  || 用于SD卡启动的文件系统,使用systemV守护服务。
|-
 
|100ask_myir_imx6ull_systemD_defconfig || 用于SD卡启动的文件系统,使用systemD守护服务。
 
 
|}
 
|}
 
*扩展阅读
 
*扩展阅读
第327行: 第361行:
 
└── zImage <--内核镜像
 
└── zImage <--内核镜像
 
</syntaxhighlight>
 
</syntaxhighlight>
===编译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内核的常用命令
第367行: 第379行:
 
:*buildroot下单独编译某个软件包
 
:*buildroot下单独编译某个软件包
 
  make <pkg>-rebuild
 
  make <pkg>-rebuild
 +
 +
 
===更新系统到开发板===
 
===更新系统到开发板===
 
===如何烧写===
 
===如何烧写===
第385行: 第399行:
 
*[[Buildroot_Bootloaders | 如何为目标单板安装uboot]]
 
*[[Buildroot_Bootloaders | 如何为目标单板安装uboot]]
 
*[[Buildroot_FilesystemImages | 如何为目标单板生成指定的文件系统镜像]]
 
*[[Buildroot_FilesystemImages | 如何为目标单板生成指定的文件系统镜像]]
 +
<categorytree mode=all background*color:white;">Buildroot</categorytree>

2020年5月29日 (五) 17:19的最新版本

开始使用

刚拿到IMX6ULL mini开发板时,请参考本网页的视频;涉及板子硬件操作、编译UBOOT/内核/文件系统时参考本网页,其他操作跟IMX6ULL全功能板子是一样的
我们正在把IMX6ULL mini开发板的操作合并进文档里,下周可以发布

100ask myir imx6ull mini开发板功能位置示意图

启动开发板

启动方式设置

  • 启动方式讲解。
启动方式 启动位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卡系统

方法一

  • 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.

更新nandflash系统

方式一

  • 设置启动方式为usb下载模式进行烧写。
  • 1.运行资料光盘01_tools/百问网烧写工具,启动后如右上图所示。
  • 2.开发板将micro usb数据线TYPEA口接到电脑USB接口处,并参考设置启动方式页面设置启动方式为USB下载模式。
  • 3.此时设备管理器会自动安装设备驱动,软件设备未连接状态灯也会变亮并显示为设备已连接,如下图所示。
100ask myir imx6ull mini8.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设置)。

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

  • 定制版uboot特征
支持定制的uuu命令
支持标准的fastboot功能
支持ubifs文件系统
支持gpt mbr等分区命
  • 100ask myir imx6ull mini开发板uboot配置文件介绍
配置文件名称 配置文件特征简介
100ask_myir_imx6ull_mini_defconfig 用于SD卡emmc启动
100ask_myir_imx6ull_mini_nand_defconfig 用于nandflash启动

单独烧写uboot

  • 编译nandflash版本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目录下 u-boot-dtb.imx文件。
  • 编译SD/TF卡版本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_defconfig
book@100ask:~/100ask_myir_mini_imx6ull-sdk/Uboot-2018.03$ make
编译后的文件在uboot目录下 u-boot-dtb.imx文件。

单独烧写uboot

  • 单独烧写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

手动编译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守护服务。
  • 扩展阅读
    • 什么是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					<--内核镜像

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系统