1. 程式人生 > >Beaglebone Black——理論篇beaglebone black啟動——從串列埠獲得SPL、U-BOOT,TFTP伺服器獲得核心,NFS伺服器掛載根檔案系統

Beaglebone Black——理論篇beaglebone black啟動——從串列埠獲得SPL、U-BOOT,TFTP伺服器獲得核心,NFS伺服器掛載根檔案系統

          一般來講啟動一個系統所需的bootloader(SPL/MLO、u-boot.img)和根檔案系統(/boot下包含核心zImage)要麼是放在NAND Flash,或者是SD卡,或者是eMMC,或者是USB中,那麼還有一種方式,就是所需要的這些檔案全部都不在板子上,而是放在其他的電腦或者說伺服器上。這樣即使板子上沒有eMMC也照樣跑系統!而且由於根檔案系統在NFS伺服器上,使得板子上的系統的“硬碟空間”變得十分充足!

關於一個系統的啟動流程相關參考資料

核心原始碼的說明文件,關於NFS啟動一些需要注意的

https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt

1、ROM-Code如何從串列埠獲取bootloader?

          對於BBB板子來說,當沒有按住boot按鍵時,啟動順序是MMC1、MMC0、UART0、USB0,而按住boot按鍵時啟動順序為SPI0、MMC0、USB0、UART0。由於板子的MMC1已經接有eMMC,所以要想讓ROM-Code從串列埠啟動,那麼斷電時,拔掉SD卡,然後按住boot按鍵,再給板子上電,如果連線上了串列埠除錯線,此時PC機串列埠應該不停的收到字元CCCCCC,這就表示ROM-Code在向串列埠請求SPL檔案(PC機的串列埠除錯工具推薦SecureCRT)。此時用Xmoden協議將SPL檔案從串列埠傳送過去,接著串列埠上會顯示傳送進度和速度。傳送完後串列埠會又會收到字元CCCCCC,這就表示傳送過去的SPL已經執行,並向串列埠請求u-boot.img檔案,此時用Ymoden協議將u-boot.img檔案傳送過去,接下來從串列埠可以看到u-boot已經啟動,但由於沒有核心和根檔案系統,所以u-boot自動停止,顯示出命令列互動介面#u-boot:

          至此ROM-Code和SPL任務完成,接下來控制權轉交給u-boot。

2、u-boot如何從TFTP伺服器獲取核心映象,從NFS伺服器掛載根檔案系統?

        首先要在同一區域網內的一臺PC機上配置TFTP和NFS伺服器,比如可以在虛擬機器ubuntu12.04中配置TFTP和NFS伺服器,注意,虛擬機器和宿主機一定要選擇橋接模式,以使虛擬機器和目標板獲得同一網段的IP。

相關參考:

        以上配置完成後都進行都本機測試tftp localhost、mount -t nfs -o nolock localhost:/nfs/dir/ /mnt/nfs,或者用開發板來測試,以確保配置沒有問題。

        準備工作都做好之後,現在u-boot#命令互動等待使用者輸入,該如何配置環境變數讓u-boot通過TFTP協議下載核心到記憶體,下載到哪個位置?傳遞什麼引數給核心來讓他知道根檔案系統在哪裡?下面來對此進行分析:

         進入u-boot後,輸入printenv,回車,得如下輸出,

U-Boot# printenv
arch=arm
autoconf=off
baudrate=115200
board=am335x
board_name=A335BNLT
board_rev=t\
ue
boot_fdt=try
bootcmd=gpio set 53; i2c mw 0x24 1 0x3e; run findfdt; setenv mmcdev 0; setenv bootpart 0:1; run mmcboot;gpio clear 56; gpio clear 55; gpio clear 54; setenv mmcdev 1; setenv bootpart 1:1; run mmcboot;run nandboot;
bootcount=2
bootdelay=1
bootenv=uEnv.txt
bootfile=zImage
bootm_size=0x10000000
bootpart=0:2
bootscript=echo Running bootscript from mmc ...; source ${loadaddr}
console=ttyO0,115200n8
cpu=armv7
device=eth0
dfu_alt_info_emmc=rawemmc mmc 0 3751936
dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw mmc 0x100 0x100;u-boot.img.raw mmc 0x300 0x400;spl-os-args.raw mmc 0x80 0x80;spl-os-image.raw mmc 0x900 0x2000;spl-os-args fat 0 1;spl-os-image fat 0 1;u-boot.img fat 0 1;uEnv.txt fat 0 1
dfu_alt_info_nand=SPL part 0 1;SPL.backup1 part 0 2;SPL.backup2 part 0 3;SPL.backup3 part 0 4;u-boot part 0 5;u-boot-spl-os part 0 6;kernel part 0 8;rootfs part 0 9
dfu_alt_info_ram=kernel ram 0x80200000 0xD80000;fdt ram 0x80F80000 0x80000;ramdisk ram 0x81000000 0x4000000
eth1addr=c8:a0:30:ac:7f:d1
ethact=cpsw
ethaddr=c8:a0:30:ac:7f:cf
fdt_addr_r=0x88000000
fdtaddr=0x88000000
fdtdir=/dtbs
fdtfile=undefined
findfdt=if test $board_name = A335BONE; then setenv fdtfile am335x-bone.dtb; setenv fdtbase am335x-bone; fi; if test $board_name = A335BNLT; then setenv fdtfile am335x-boneblack.dtb; setenv fdtbase am335x-boneblack; fi; if test $board_name = A33515BB; then setenv fdtfile am335x-evm.dtb; fi; if test $board_name = A335X_SK; then setenv fdtfile am335x-evmsk.dtb; fi; if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi; 
gw_ip=192.168.1.1
importbootenv=echo Importing environment from mmc ...; env import -t -r $loadaddr $filesize
kernel_addr_r=0x82000000
loadaddr=0x82000000
loadbootenv=load mmc ${bootpart} ${loadaddr} ${bootenv}
loadbootscript=load mmc ${bootpart} ${loadaddr} ${scriptfile};
loadfdt=echo loading ${fdtdir}/${fdtfile} ...; load mmc ${bootpart} ${fdtaddr} ${fdtdir}/${fdtfile}
loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz
loadrd=load mmc ${bootpart} ${rdaddr} ${bootdir}/${rdfile}; setenv rdsize ${filesize}
mmcargs=setenv bootargs console=${console} ${optargs} ${cape_disable} ${cape_enable} root=${mmcroot} rootfstype=${mmcrootfstype} ${cmdline}
mmcboot=mmc dev ${mmcdev}; if mmc rescan; then gpio set 54;echo SD/MMC found on device ${mmcdev};setenv bootpart ${mmcdev}:1; echo Checking for: /uEnv.txt ...;if test -e mmc ${bootpart} /uEnv.txt; then if run loadbootenv; then gpio set 55;echo Loaded environment from ${bootenv};run importbootenv;fi;if test -n ${cape}; then if test -e mmc ${bootpart} ${fdtdir}/${fdtbase}-${cape}.dtb; then setenv fdtfile ${fdtbase}-${cape}.dtb; fi; echo using: $fdtfile...; fi; echo Checking if uenvcmd is set ...;if test -n ${uenvcmd}; then gpio set 56; echo Running uenvcmd ...;run uenvcmd;fi;echo Checking if client_ip is set ...;if test -n ${client_ip}; then if test -n ${dtb}; then setenv fdtfile ${dtb};echo using ${fdtfile} ...;fi;gpio set 56; echo Running nfsboot ...;run nfsboot;fi;fi; echo Checking for: /${script} ...;if test -e mmc ${bootpart} /${script}; then gpio set 55;setenv scriptfile ${script};run loadbootscript;echo Loaded script from ${scriptfile};gpio set 56; run bootscript;fi; echo Checking for: /boot/${script} ...;if test -e mmc ${bootpart} /boot/${script}; then gpio set 55;setenv scriptfile /boot/${script};run loadbootscript;echo Loaded script from ${scriptfile};gpio set 56; run bootscript;fi; echo Checking for: /boot/uEnv.txt ...;for i in 1 2 3 4 5 6 7 ; do setenv mmcpart ${i};setenv bootpart ${mmcdev}:${mmcpart};if test -e mmc ${bootpart} /boot/uEnv.txt; then gpio set 55;load mmc ${bootpart} ${loadaddr} /boot/uEnv.txt;env import -t ${loadaddr} ${filesize};echo Loaded environment from /boot/uEnv.txt;if test -n ${dtb}; then setenv fdtfile ${dtb};echo Using: dtb=${fdtfile} ...;fi;echo Checking if uname_r is set in /boot/uEnv.txt...;if test -n ${uname_r}; then gpio set 56; echo Running uname_boot ...;setenv mmcroot /dev/mmcblk${mmcdev}p${mmcpart} ro;run uname_boot;fi;fi;done;fi;
mmcdev=0
mmcloados=run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdtaddr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
mmcpart=1
mmcroot=/dev/mmcblk0p2 ro
mmcrootfstype=ext4 rootwait fixrtc
mtdids=nand0=omap2-nand.0
mtdparts=mtdparts=omap2-nand.0:128k(SPL),128k(SPL.backup1),128k(SPL.backup2),128k(SPL.backup3),1792k(u-boot),128k(u-boot-spl-os),128k(u-boot-env),5m(kernel),-(rootfs)
nandargs=setenv bootargs console=${console} ${optargs} root=${nandroot} rootfstype=${nandrootfstype}
nandboot=echo Booting from nand ...; run nandargs; nand read ${fdtaddr} u-boot-spl-os; nand read ${loadaddr} kernel; bootz ${loadaddr} - ${fdtaddr}
nandroot=ubi0:rootfs rw ubi.mtd=7,2048
nandrootfstype=ubifs rootwait=1
netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp
netboot=echo Booting from network ...; setenv autoload no; dhcp; tftp ${loadaddr} ${bootfile}; tftp ${fdtaddr} ${fdtfile}; run netargs; bootz ${loadaddr} - ${fdtaddr}
netmask=255.255.255.0
nfs_options=,vers=3
nfsargs=setenv bootargs console=${console} ${optargs} ${cape_disable} ${cape_enable} root=/dev/nfs rw rootfstype=${nfsrootfstype} nfsroot=${nfsroot} ip=${ip} ${cmdline}
nfsboot=echo Booting from ${server_ip} ...; setenv nfsroot ${server_ip}:${root_dir}${nfs_options}; setenv ip ${client_ip}:${server_ip}:${gw_ip}:${netmask}:${hostname}:${device}:${autoconf}; setenv autoload no; setenv serverip ${server_ip}; setenv ipaddr ${client_ip}; tftp ${loadaddr} ${bootfile}; tftp ${fdtaddr} dtbs/${fdtfile}; run nfsargs; bootz ${loadaddr} - ${fdtaddr}
nfsopts=nolock
nfsrootfstype=ext4 rootwait fixrtc
partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}
ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot} rootfstype=${ramrootfstype}
ramboot=echo Booting from ramdisk ...; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
ramdisk_addr_r=0x88080000
ramroot=/dev/ram0 rw
ramrootfstype=ext2
rdaddr=0x88080000
root_dir=/home/userid/targetNFS
rootpath=/export/rootfs
script=boot.scr
scriptfile=${script}
server_ip=192.168.1.100
soc=am33xx
spiargs=setenv bootargs console=${console} ${optargs} root=${spiroot} rootfstype=${spirootfstype}
spiboot=echo Booting from spi ...; run spiargs; sf probe ${spibusno}:0; sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; bootz ${loadaddr}
spibusno=0
spiimgsize=0x362000
spiroot=/dev/mtdblock4 rw
spirootfstype=jffs2
spisrcaddr=0xe0000
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
stderr=serial
stdin=serial
stdout=serial
uname_boot=setenv bootdir /boot; setenv bootfile vmlinuz-${uname_r}; if test -e mmc ${bootpart} ${bootdir}/${bootfile}; then echo loading ${bootdir}/${bootfile} ...; run loadimage;setenv fdtdir /boot/dtbs/${uname_r}; if test -e mmc ${bootpart} ${fdtdir}/${fdtfile}; then run loadfdt;else setenv fdtdir /usr/lib/linux-image-${uname_r}; if test -e mmc ${bootpart} ${fdtdir}/${fdtfile}; then run loadfdt;else setenv fdtdir /lib/firmware/${uname_r}/device-tree; if test -e mmc ${bootpart} ${fdtdir}/${fdtfile}; then run loadfdt;else setenv fdtdir /boot/dtb-${uname_r}; if test -e mmc ${bootpart} ${fdtdir}/${fdtfile}; then run loadfdt;else setenv fdtdir /boot/dtbs; if test -e mmc ${bootpart} ${fdtdir}/${fdtfile}; then run loadfdt;else setenv fdtdir /boot/dtb; if test -e mmc ${bootpart} ${fdtdir}/${fdtfile}; then run loadfdt;else setenv fdtdir /boot; if test -e mmc ${bootpart} ${fdtdir}/${fdtfile}; then run loadfdt;else echo; echo unable to find ${fdtfile} ...; echo booting legacy ...;run mmcargs;bootz ${loadaddr}; fi;fi;fi;fi;fi;fi;fi; setenv rdfile initrd.img-${uname_r}; if test -e mmc ${bootpart} ${bootdir}/${rdfile}; then echo loading ${bootdir}/${rdfile} ...; run loadrd;if test -n ${uuid}; then setenv mmcroot UUID=${uuid} ro;fi;run mmcargs;bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; else run mmcargs;bootz ${loadaddr} - ${fdtaddr}; fi;fi;
usbnet_devaddr=c8:a0:30:ac:7f:d1
vendor=ti
ver=U-Boot 2014.07-00016-g329fca9 (Jul 28 2014 - 12:35:02)

Environment size: 8541/131068 bytes

既然是研究如何將網路檔案系統NFS掛載為根檔案系統,那麼把其中59-63行的環境變數摘取出來進行分析,為了便於閱讀和分析,整理成如下格式:

#定義變數nfs_options的值為,vers=3
nfs_options=,vers=3

#定義變數nfsargs為一個動作,該動作設定bootargs啟動引數內容包括
#(1)console:用於讓核心列印輸出資訊,Documentation/serial-console.txt找到相關描述
#(2)root:用於說明根檔案系統是基於NFS。
#(3)rootfstype:指定根檔案系統型別,此處指定的是ext4
#(4)nfsroot:指定根檔案系統所在NFS伺服器的IP以及伺服器上的路徑
#(5)ip:本目標板IP(必須的,其他可不寫)、TFTP和NFS伺服器IP、閘道器IP、子網掩碼、主機名、網絡卡裝置、

nfsargs=
setenv bootargs console=${console} ${optargs} ${cape_disable} ${cape_enable} 
                root=/dev/nfs rw 
                rootfstype=${nfsrootfstype} 
                nfsroot=${nfsroot} 
                ip=${ip} ${cmdline}

#定義變數nfsboot為一系列動作,動作之間以;隔開
nfsboot=
echo Booting from ${server_ip} ...; //回顯資訊“從伺服器IP處啟動系統...”
setenv nfsroot ${server_ip}:${root_dir}${nfs_options}; //指定根檔案系統所在NFS伺服器的IP以及伺服器上的路徑
setenv ip ${client_ip}:${server_ip}:${gw_ip}:${netmask}:${hostname}:${device}:${autoconf}; //設定IP
setenv autoload no; //僅僅對相關配置進行查詢(比如本機被分配到的IP地址),而不會同時產生去通過TFTP下載任何映象的動作。
setenv serverip ${server_ip};//設定TFTP和NFS伺服器IP地址,兩個伺服器可以在配置同一臺電腦上,一般屬於這種情況,但也可以配置在不同的電腦上。 
setenv ipaddr ${client_ip};//本機目標板地址 
tftp ${loadaddr} ${bootfile}; //從TFTP伺服器的目錄中下載bootfile檔案放到記憶體loadaddr處
tftp ${fdtaddr} dtbs/${fdtfile}; //從TFTP伺服器的dtbs/目錄下載fdtfile檔案,存放到記憶體的fdtaddr處
run nfsargs; //執行nfsargs定義的一系列動作,解釋見上。
bootz ${loadaddr} - ${fdtaddr}//bootz表示執行記憶體中的zImage檔案,後面跟三個引數,第一個引數表示核心在記憶體中的地址,第二個引數表示initrd的地址,如果沒有initrd就用"-"表示,第三個表示裝置樹二進位制檔案記憶體地址

#定義變數nfsopts的值為nolock
nfsopts=nolock

#定義變數nfsrootfstype的值為ext4 rootwait fixrtc
nfsrootfstype=ext4 rootwait fixrtc

        從以上環境變數可以得出,這幾個變數均是為了nfsboot而服務的,也就是說進入u-boot命令列後,我們輸入run nfsboot,那麼nfsboot裡面的動作(回顯資訊、設定環境變數、下載核心映象、裝置樹二進位制檔案、設定啟動引數、執行映象檔案)全部都會被執行。那麼系統也就自動開始啟動了。

        為了確保所有相關的環境變數都是正確無誤的,現在u-boot下面從nfsboot入手把各個尚未知的環境變數依次打印出來,檢視一下情況如何,得到結果如下,

----------------------------------------------------------------------------------------------------------------------------------------------------------

U-Boot# printenv server_ip root_dir client_ip gw_ip netmask hostname device autoconf loadaddr bootfile fdtaddr fdtfile
server_ip=192.168.1.100                //實際中我的TFTP、NFS伺服器都在虛擬機器中,虛擬機器IP192.168.1.106
root_dir=/home/userid/targetNFS     //NFS伺服器的目錄為/home/username/zynfs/
## Error: "client_ip" not defined      //目標板連線在同一個區域網中,獲得的IP為192.168.1.105
gw_ip=192.168.1.1                        //路由器IP為192.168.1.1,故此項無需在設定
netmask=255.255.255.0                 //子網掩碼也正確,故此項無需在設定
## Error: "hostname" not defined    //主機名無需設定留空即可
device=eth0                                 //u-boot預設已經設定好,設定為目標板系統的第一塊乙太網網絡卡,故此項無需設定
autoconf=off                                //保留預設設定,故此項無需設定
loadaddr=0x82000000                   //保留預設設定,故此項無需設定
bootfile=zImage                           //保留預設設定,故此項無需設定,如果想用其他名字自己,記得到時候TFTP伺服器目錄下的檔名與此保持一致,否則會找不到核心
fdtaddr=0x88000000                     //保留預設設定,故此項無需設定
fdtfile=undefined                         //u-boot沒有設定,需要手動設定,可以先執行run findfdt,該命令讀取板子資訊,根據板子資訊自動設定好fdtfile。如何讀取的請printenv findfdt

----------------------------------------------------------------------------------------------------------------------------------------------------------

那麼根據以上分析,對需要設定的環境變數進行手動更改或者設定,同時為了確保更改生效,改完後在printenv看一下設定是否成功,如下,

U-Boot# setenv server_ip 192.168.1.106 
U-Boot# setenv client_ip 192.168.1.105
U-Boot# setenv root_dir /opt/ti-sdk-am335x-evm-07.00.00.00/targetNFS/
U-Boot# run findfdt
U-Boot# printenv server_ip client_ip root_dir fdtfile
server_ip=192.168.1.106
client_ip=192.168.1.105
root_dir=/opt/ti-sdk-am335x-evm-07.00.00.00/targetNFS/
fdtfile=am335x-boneblack.dtb
現在的準備工作已經萬事俱備,只欠東風!接下來讓u-boot來執行nfsboot的動作吧,run nfsboot。

實際的操作參見對應的實踐篇。

相關推薦

Beaglebone Black——理論beaglebone black啟動——串列獲得SPLU-BOOTTFTP伺服器獲得核心NFS伺服器掛載檔案系統

          一般來講啟動一個系統所需的bootloader(SPL/MLO、u-boot.img)和根檔案系統(/boot下包含核心zImage)要麼是放在NAND Flash,或者是SD卡,或者是eMMC,或者是USB中,那麼還有一種方式,就是所需要的這些檔案全部

beaglebone black tftpnfs掛載檔案系統

原文連結: http://blog.csdn.net/zy812248258/article/details/39291835 我的板子是beaglebone black  rev.c 啟動方式: 在win下用am335x-evm-01.00.00.00.img.zip裡的

NFS啟動Linux並掛載檔案系統

要搞嵌入式NFS確實必不可少,否則每次都要重啟煩都煩死。這裡總結在NFS建立過程中遇到的幾個問題。 下面記錄幾個遇到的問題 VFS: Cannot open root device “

u-boot通過nfs伺服器下載核心並且啟動核心,掛載檔案系統的方法

http://www.linuxidc.com/Linux/2013-08/89154.htm http://blog.csdn.net/sinat_31500569/article/details/53120530 參考連結 首先要在電腦上安裝nfs伺服器 1.執行命令

《Linux啟動過程分析》核心掛載檔案系統

說明:本文基於Linux2.6.29核心分析;其他核心版本僅供參考。   前邊通過原始碼情景分析,看過了匯流排、裝置、驅動及其發現機制,Linux2.6核心udev裝置節點建立相關;對於檔案系統,一直望而生畏,但核心學習、這部分又不可能繞的過去。目前對VFS中使用的has

[置頂] 《Linux啟動過程分析》核心掛載檔案系統 http://blog.csdn.net/tankai19880619/article/details/12093239

說明:本文基於Linux2.6.29核心分析;其他核心版本僅供參考。   前邊通過原始碼情景分析,看過了匯流排、裝置、驅動及其發現機制,Linux2.6核心udev裝置節點建立相關;對於檔案系統,一直望而生畏,但核心學習、這部分又不可能繞的過去。目前對VFS中使用的hash表還未做研究,它在dent

BeagleBone Black 移植U-Boot (2 MLOU-Boot)

原文:jexbat.com/categories/BeagleBone/ 什麼是 U-Boot 熟悉嵌入式開發的應該都聽過它,U-boot 就是啟動系統前的一段載入程式,雖然是載入程式,但是功能非常強大。 這一篇主要講解如何從無到有執行 U-Boot,關於 U-Boot 引導 Linux

怎樣網路上核心檔案系統啟動開發板

首先在ubuntu虛擬機器上要有nfs伺服器 1.啟動開發板uboot,輸入 下面的命令 set bootargs console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.19:/work/nfs_root/tmp/fs_mini

initramfs檔案系統啟動Linux

origin: http://blog.chinaunix.net/uid-26969690-id-3207803.html開發環境:Fedora 9 交叉編譯工具鏈:arm-linux-gcc 4.3.2 with EABI嵌入式Linux核心版本:2.6.29.4-Fr

JZ2440設定開發板啟動或使用NFS作為檔案系統啟動

進入u-boot介面,選擇q退出主介面,進入 OpenJTAG>  1、從開發板根檔案系統正常啟動:    OpenJTAG> set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console

ramdisk檔案系統啟動Linux成功及使用initramfs啟動linux

下面兩篇文章是ARM9論壇上的講解ramdisk檔案系統的很不錯的文章 今天做了個試驗,讓Linux2.6.29.4從ramdisk根檔案系統啟動成功,總結一下。 其中涉及的內容較多,很多東西不再詳述,如需深入研究請查閱相關資料(百度或谷歌一下一大堆)。 開發環境:Fedo

U-boottftp伺服器啟動掛載NFS檔案系統

在uboot輸入設定下面的變數: # mac address可以使用uboot目錄tools下的gen_eth_addr工個來產生 setenv ethaddr <mac address>

TI OMAPL138E Linux移植 (Davinci) (資源獲取+串列啟動UBoot+網路啟動Linux與檔案系統

Date: 2018-02-08【1、從實際硬體上獲取主晶片型號為TI的OMAPL138E 】,所屬系列為OMAPL1,編譯預設配置為davinci或者da850。《以下內容失效》《《《2、登陸TI官方WiKi網站wiki.ti.com,在網頁下方找到General Info

LinkIt Smart 7688 源碼構建 bootloader (U-Boot

fig mil labs 技術分享 路徑 中文環境 問題 png 準備 操作系統:Ubuntu 16.04 LTS 以下操作均在普通用戶權限下執行:(註意不能含有中文路徑) 一.下載 U-Boot 源碼 創建工作目錄: $:mkdir LinkIt_Smart_mt7

uboot設定bootargs啟動檔案系統

u-bootargs bootargs是環境變數中的重中之重,甚至可以說整個環境變數都是圍繞著bootargs來設定的。bootargs的種類非常非常的多,我們平常只是使用了幾種而已,感興趣的可以看看這篇文章說的很全:http://blog.chinaunix.net/u2/79570/

0到1燒寫u-boot詳細教程

拿到一塊嶄新的ARM開發板基本是一臉懵逼,想著怎麼用串列埠與之通訊,怎麼把u-boot.bin檔案燒寫進入。很多人在這裡就止步了其實這裡很簡單,接下來就給大家講解一下。 一.開發環境:         主機:Ubuntu12.04  

移植好uboot和基於initramfs檔案系統Linux核心的開發板的啟動過程

我們移植好uboot和Linux核心之後,當我們重啟之後,開發板首先做的事情就是將nandflash前4K的內容複製到SRAM中去,由於SRAM只有4K大小,所以我們必須將初始化CPU、記憶體、中斷、關閉開門狗以及nandflash中uboot拷貝到SDRAM中的的程式都放

cramfs檔案系統製作啟動總結

cramfs啟動根檔案系統 Cramfs:Compressed ROM File System   Cramfs是Linux的創始人 Linus Torvalds參與開發的一種只讀的壓縮檔案系統。它也基於MTD驅動程式。   cramfs擁有以下一些特性:  採用實時解壓

基於創龍omapl138開發板如何將除錯口串列2改到串列1

課題組定製的開發板上有三個串列埠,平時除錯用的是串列埠二,通過USB TO UART2轉換後可以用usb線進行除錯,日常用的時候比較方便,但是近期因為要做實驗,實驗裝置在水下,基於目前的條件,要通過一條五十米的長纜來將宿主機與開發板相連進行除錯,usb線的傳輸距

移植u-boot-2011.03到S3C2440(utu2440)的方法與步驟###8. u-boot引導啟動nand flash中核心檔案系統cramfs和使用者檔案系統yaffs2支援

rivers/rtc/hctosys.c: unable to open rtc device (rtc0)uncorrectable error : <3>uncorrectable error : <3>end_request: I/O error, dev mtdblock2,