"100ask myir imx6ull mini" 修訂間的差異

從 百问网嵌入式Linux wiki
跳到: 導覽搜尋
(启动方式设置)
(未顯示同一使用者於中間所作的 1 次修訂)
行 2: 行 2:
 
[[File:100ask_myir_imx6ull_mini.png|500px|thumb|right]]
 
[[File:100ask_myir_imx6ull_mini.png|500px|thumb|right]]
 
==启动开发板==
 
==启动开发板==
 +
===启动方式设置===
 +
*启动方式讲解。
 +
{| class="wikitable"
 +
|-
 +
!  启动方式 !!  启动位Bit1 !!  启动位Bit2 !! 启动位Bit3 !! 启动位Bit4 !! Bootselect示意图
 +
|-
 +
| {{Redtext| NAND启动模式}}||ON || OFF || OFF ||  ON ||[[File:100ask_myir_imx6ull_mini_nandboot.png | 110px]]
 +
|-
 +
| {{Redtext|SD卡启动模式}} ||  OFF || ON ||OFF || ON ||[[File:100ask_myir_imx6ull_mini_sdboot.png| 110px]]
 +
|-
 +
| {{Redtext|USB下载模式}} || OFF ||OFF ||OFF ||OFF ||[[File:100ask_myir_imx6ull_mini_usbboot.png| 110px]]
 +
|}
 +
*参考上图的启动方式示意图设置开发板启动方式为Nand启动。
 +
 +
===连接串口线至电脑===
 +
 +
===开发板上电===
 +
 +
===进入终端===
 +
 
==功能测试==
 
==功能测试==
 
==应用编程==
 
==应用编程==

於 2020年5月22日 (五) 15:17 的修訂

開始使用

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啟動。

連接串口線至電腦

開發板上電

進入終端

功能測試

應用編程

更新系統

更新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系統


參考/擴展閱讀