日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

使用Buildroot为Nxp i.mx6ul制作文件系统

發(fā)布時(shí)間:2024/10/12 91 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Buildroot为Nxp i.mx6ul制作文件系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

隨著神U s3c2440,6410的停產(chǎn),NXP 針對(duì)中國市場(chǎng)推出低成本方案i.mx6ul,可用于商業(yè)級(jí)和工業(yè)級(jí)應(yīng)用,10年超長供貨周期,市場(chǎng)很有潛力。

官方只支持Yocto,但個(gè)人感覺Yocto太多龐大且太復(fù)雜,而工業(yè)市場(chǎng)業(yè)務(wù)并不是特別負(fù)責(zé),需要用到的軟件包有限,且在特定的一個(gè)范圍。工業(yè)市場(chǎng)

對(duì)穩(wěn)定性要求較高,并不需很大的靈活度。

本文將介紹使用Buildroot為i.mx6制作文件系統(tǒng),相對(duì)來說Buildroot較為簡單,容易理解,且有接近2千種包支持,穩(wěn)定性也不是問題。

移植Buildroot前,需要先了解i.mx6體系結(jié)構(gòu),本文移植基于米爾科技的i.mx6ulx開發(fā)板,256MB Nand,256MB RAM,支持SD卡;

i.mx6ul 為Cortex-A7架構(gòu),支持Neon;

前序:

在制作文件系統(tǒng)之前,先了解一下幾個(gè)基本概念。

Uboot:引導(dǎo)操作系統(tǒng)之用;

Linux Kernel:內(nèi)核,主要關(guān)注其穩(wěn)定性,其中接口驅(qū)動(dòng)最為重要,一般使用官方的Release包,因?yàn)楣俜皆跇?biāo)準(zhǔn)的Kernel之上針對(duì)自家芯片做了一系列的優(yōu)化工作,且有很多廠商的應(yīng)用案例,其穩(wěn)定性得到了一定的驗(yàn)證;不建議使用標(biāo)準(zhǔn)的kernel,尤其是接口驅(qū)動(dòng)穩(wěn)定性得不到保證。

文件系統(tǒng):可以看成一系列基本命令的集合,如:ps,insmod,netstat,iptables,ifconfig等等;我們所開發(fā)的應(yīng)用程序也會(huì)包含在文件系統(tǒng)之中,并且將使用到文件系統(tǒng)所提供的基本命令和各種標(biāo)準(zhǔn)庫以及第三方庫等;

制作文件系統(tǒng):有很多方法,Buildroot和Yocto只是一個(gè)輔助框架,其本身已經(jīng)設(shè)定好編譯環(huán)境,且支持多種平臺(tái),可以很方便的幫助用戶為特定的平臺(tái)制作文件系統(tǒng)。當(dāng)然也可以自行手動(dòng)建立,文件系統(tǒng)無非就是一堆文件的集合,自行手動(dòng)編譯,打包即可;只是比較耗費(fèi)精力,穩(wěn)定性和移植性也得不到保證;所以一般情況下,我們會(huì)選用Buildroot等框架輔助我們建立文件系統(tǒng);

第一步:

  • 下載Buildroot包:從Buildroot官網(wǎng)下載 https://buildroot.org/download.html
  • 第二步:

  • make menuconfig 配置相關(guān)選項(xiàng)
  • CPU架構(gòu)配置,i.mx6ul為小端格式,Cortex-a7架構(gòu),浮點(diǎn)運(yùn)算EABIHf,VFPv4Target Architecture (ARM (little endian)) ---> x x Target Binary Format (ELF) ---> x x Target Architecture Variant (cortex-A7) ---> x x Target ABI (EABIhf) ---> x x Floating point strategy (VFPv4-D16) ---> x x ARM instruction set (ARM) --->
  • Build Options: 編譯選項(xiàng)主要是package下載位置,默認(rèn)dl目錄,主要是配置共享庫,shared onlygcc optimization level (optimize for size) ---> x x build code with Stack Smashing Protection (None) --->x x libraries (shared only) --->
  • Toolchain: 交叉編譯工具鏈,使用NXP 官方提供的即可。根據(jù)實(shí)際情況設(shè)定gcc version和kernel header version;
  • gcc version可以在主機(jī)上使用arm-linux-gnueabihf -v查看rget/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu Thread model: posix gcc version 4.9.3 20141031 (prerelease) (Linaro GCC 2014.11)
  • kernel header version在工具鏈目錄的xxx/libc/include/linux/version.h;cat /opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/libc/usr/include/linux/version.h #define LINUX_VERSION_CODE 200960 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
    200960 轉(zhuǎn)換為Hex格式0x31100;即3.11.0 版本;但編譯過程中Buildroot貌似會(huì)自動(dòng)判斷Linux Version,我的主機(jī)自動(dòng)判斷是3.17,因此我選擇3.17版本;此處還有待考察;

    Toolchain type (External toolchain) ---> x xx x *** Toolchain External Options *** x xx x Toolchain (Custom toolchain) ---> x xx x Toolchain origin (Pre-installed toolchain) ---> x xx x (/opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/) Toolchain path x xx x ($(ARCH)-linux-gnueabihf) Toolchain prefix x xx x External toolchain gcc version (4.9.x) ---> x xx x External toolchain kernel headers series (3.17.x) ---> x xx x External toolchain C library (glibc/eglibc) ---> 注意使能MMU[*] Enable MMU support
  • System configuration:主要是些hostname,banner,busybox,password,console等一些配置(buildrootbywind) System hostname x xx x (Welcome to Buildroot by wind) System banner x xx x Passwords encoding (md5) ---> x xx x Init system (BusyBox) ---> x xx x /dev management (Dynamic using devtmpfs + eudev) ---> x xx x (system/device_table.txt) Path to the permission tables x xx x [ ] support extended attributes in device tables x xx x [ ] Use symlinks to /usr for /bin, /sbin and /lib x xx x [*] Enable root login with password x xx x (123456) Root password x xx x /bin/sh (bash) ---> x xx x [*] Run a getty (login prompt) after boot ---> 需要注意的地方有2點(diǎn):bash 和 tty的選擇; nxp的tty默認(rèn)是/dev/ttymxc0;
    選擇Bash前需打開Show packages that are alse provideed by busybox; 位于Target Package 下 -*- BusyBox x xx x (package/busybox/busybox.config) BusyBox configuration file to use? x xx x () Additional BusyBox configuration fragment files x xx x [*] Show packages that are also provided by busybox tty配置為:
    --- Run a getty (login prompt) after boot x xx x (/dev/ttymxc0) TTY port x xx x Baudrate (keep kernel default) ---> x xx x (vt100) TERM environment variable x xx x () other options to pass to getty
  • 剩下就是Filesystem image配置:主要選擇文件系統(tǒng)類型,以及相關(guān)參數(shù)
    Ext2/3/4支持:[*] ext2/3/4 root filesystem x xx x ext2/3/4 variant (ext4) ---> x xx x () filesystem label x xx x (60M) exact size x xx x (0) exact number of inodes (leave at 0 for auto calculation) x xx x (5) reserved blocks percentage x xx x (-O ^64bit) additional mke2fs options x xx x Compression method (no compression) --
  • tar 和Ubifs支持,我的板子為256M Nand,使用ubifs,因此必須選擇 [*] tar the root filesystem x xx x Compression method (no compression) ---> x xx x () other random options to pass to tar x xx x [*] ubifs root filesystem x xx x (0x1f800) logical eraseblock size x xx x (0x800) minimum I/O unit size x xx x (2048) maximum logical eraseblock count x xx x ubifs runtime compression (lzo) ---> x xx x Compression method (no compression) ---> UBI文件系統(tǒng)主要參數(shù)根據(jù)實(shí)際NAND參數(shù)來配置即可;
  • Target packages中是一些開源軟件,自行根據(jù)需要來配置;
  • 至此,配置完畢;

    第三步:

    make all編譯;

    輸出結(jié)果位于output/images 下

    燒寫文件系統(tǒng):具體燒寫方式請(qǐng)見我另一篇博文 對(duì)于ARM的啟動(dòng),系統(tǒng)升級(jí),燒寫過程和文件系統(tǒng)等方面的總結(jié)分析






    總結(jié)

    以上是生活随笔為你收集整理的使用Buildroot为Nxp i.mx6ul制作文件系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。