日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

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

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

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

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

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

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

移植Buildroot前,需要先了解i.mx6體系結(jié)構(gòu),本文移植基于米爾科技的i.mx6ulx開(kāi)發(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等等;我們所開(kāi)發(fā)的應(yīng)用程序也會(huì)包含在文件系統(tǒng)之中,并且將使用到文件系統(tǒng)所提供的基本命令和各種標(biāo)準(zhǔn)庫(kù)以及第三方庫(kù)等;

制作文件系統(tǒng):有很多方法,Buildroot和Yocto只是一個(gè)輔助框架,其本身已經(jīng)設(shè)定好編譯環(huán)境,且支持多種平臺(tái),可以很方便的幫助用戶為特定的平臺(tái)制作文件系統(tǒng)。當(dāng)然也可以自行手動(dòng)建立,文件系統(tǒng)無(wú)非就是一堆文件的集合,自行手動(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目錄,主要是配置共享庫(kù),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 版本;但編譯過(guò)程中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前需打開(kāi)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ù)來(lái)配置即可;
  • Target packages中是一些開(kāi)源軟件,自行根據(jù)需要來(lái)配置;
  • 至此,配置完畢;

    第三步:

    make all編譯;

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

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






    總結(jié)

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

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