對(duì)于嵌入式系統(tǒng)移植的簡(jiǎn)單總結(jié)

對(duì)于嵌入式系統(tǒng)移植的簡(jiǎn)單總結(jié)

姓名:張猛

引用自:http://blog.csdn.net/dream_bin123/article/details/78001533

【嵌牛導(dǎo)讀】:從最初的什么都不知道绿聘,到現(xiàn)在板子跑上系統(tǒng)癌瘾,調(diào)通網(wǎng)口這一路上感覺(jué)也是挫折起伏便瑟,這里就把自己和隊(duì)友在進(jìn)行系統(tǒng)燒寫(xiě)過(guò)程的一些理解和一些資料總結(jié)了一下,分享出來(lái),希望大家一起共同進(jìn)步糊余。

【嵌牛鼻子】:嵌入式,內(nèi)核,u-boot

【嵌牛提問(wèn)】:內(nèi)核啟動(dòng)參數(shù)詳解豫缨、參數(shù)為什么這么設(shè)置

【嵌牛正文】:

1查看內(nèi)核啟動(dòng)參數(shù)

在uboot界面中輸入printenv怠肋,即可查看啟動(dòng)參數(shù)靠益。

示例:

jz2440:

1.OpenJTAG>?printenv

2.bootcmd=nand?read.jffs2?0x30007FC0?kernel;?bootm?0x30007FC0

3.bootdelay=2

4.baudrate=115200

5.ethaddr=08:00:3e:26:0a:5b

6.ipaddr=192.168.7.17

7.serverip=192.168.7.11

8.netmask=255.255.255.0

9.mtdids=nand0=nandflash0

10.mtdparts=mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)

11.bootargs=noinitrd?root=/dev/mtdblock3?init=/linuxrc?console=ttySAC0

12.bootatgs=noinitrd?root=/dev/nfs?nfsroot=192.168.7.21:/home/book/workspace/jz2440/systems/firstbusybox?ip=192.168.7.17:192.168.7.21:192.168.7.1:255.255.255.0::eth0:off?init=/linuxrc?console=ttySAC0

13.console=ttySAC0

14.filesize=791340

15.bootargs=console=ttySAC0,115200?root=/dev/mtdblock3?rootfstype=jffs2

16.stdin=serial

17.stdout=serial

18.stderr=serial

19.partition=nand0,0

20.mtddevnum=0

21.mtddevname=bootloader

22.Environment?size:?742/131068?bytes

hi3518e淘寶:

1.hisilicon?#?printenv

2.baudrate=115200

3.bootfile="uImage"

4.da=mw.b?0x82000000?ff?1000000;tftp?0x82000000?u-boot.bin.img;sf?probe?0;flwrite

5.du=mw.b?0x82000000?ff?1000000;tftp?0x82000000?user-x.cramfs.img;sf?probe?0;flwrite

6.dr=mw.b?0x82000000?ff?1000000;tftp?0x82000000?romfs-x.cramfs.img;sf?probe?0;flwrite

7.dw=mw.b?0x82000000?ff?1000000;tftp?0x82000000?web-x.cramfs.img;sf?probe?0;flwrite

8.dc=mw.b?0x82000000?ff?1000000;tftp?0x82000000?custom-x.cramfs.img;sf?probe?0;flwrite

9.up=mw.b?0x82000000?ff?1000000;tftp?0x82000000?update.img;sf?probe?0;flwrite

10.ua=mw.b?0x82000000?ff?1000000;tftp?0x82000000?upall_verify.img;sf?probe?0;flwrite

11.tk=mw.b?0x82000000?ff?1000000;tftp?0x82000000?uImage;?bootm?0x82000000

12.dd=mw.b?0x82000000?ff?1000000;tftp?0x82000000?mtd-x.jffs2.img;sf?probe?0;flwrite

13.ipaddr=192.168.1.10

14.serverip=192.168.1.107

15.netmask=255.255.255.0

16.ethaddr=00:12:12:22:b4:71

17.HWID=8043420004048425

18.bootargs=mem=38M?console=ttyAMA0,115200?root=/dev/mtdblock2?rootfstype=jffs2?mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)

19.bootcmd=sf?probe?0;sf?read?0x82000000?0x100000?0x300000;bootm?0x82000000

20.bootdelay=5

21.stdin=serial

22.stdout=serial

23.stderr=serial

24.verify=n

25.ver=U-Boot?2010.06-svn?(Mar?27?2014?-?11:56:37)

26.

27.Environment?size:?1179/65532?bytes

hi3518e自己:

1.hisilicon?#?printenv

2.bootdelay=1

3.baudrate=115200

4.ethaddr=00:00:23:34:45:66

5.ipaddr=192.168.1.10

6.serverip=192.168.1.2

7.netmask=255.255.255.0

8.bootfile=uImage

9.bootcmd=sf?probe?0;sf?read?0x82000000?0x100000?0x400000;bootm?0x82000000

10.bootargs=mem=32M?console=ttyAMA0,115200?root=/dev/mtdblock2?rootfstype=jffs2?mtdparts=hi_sfc:1M(boot),4M(kernel),9M(rootfs)

11.stdin=serial

12.stdout=serial

13.stderr=serial

14.verify=n

15.ver=U-Boot?2010.06?(Jun?01?2017?-?02:38:54)

16.

17.Environment?size:?424/262140?bytes

2主要的啟動(dòng)參數(shù)有bootargs、bootcmd

2.1 bootargs

示例:jz2440:

bootargs=console=ttySAC0,115200root=/dev/mtdblock3 rootfstype=jffs2

bootatgs=noinitrdroot=/dev/nfsnfsroot=192.168.7.21:/home/book/workspace/jz2440/systems/firstbusybox

ip=192.168.7.17:192.168.7.21:192.168.7.1:255.255.255.0::eth0:offinit=/linuxrc console=ttySAC0

hi3518e淘寶:

bootargs=mem=38Mconsole=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)

hi3518e自己:

bootargs=mem=32Mconsole=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2mtdparts=hi_sfc:1M(boot),4M(kernel),9M(rootfs)

詳解:

console=ttySAC0:

console=ttySAC0使用虛擬串口終端設(shè)備.

為什么是ttySAC0:

這個(gè)網(wǎng)址將的比較透徹:

ttySAC0與/dev/tts/0是否對(duì)應(yīng)同一個(gè)物理設(shè)備串口0:http://blog.csdn.net/yiya1989/article/details/8253240

在內(nèi)核中有一個(gè)串口驅(qū)動(dòng)和我們的console參數(shù)比較的一個(gè)過(guò)程邻耕,所以?xún)烧咭恢拢?/p>

jz2440為什么是ttySAC0:

S3C2410的驅(qū)動(dòng)文件drivers/serial/s3c2410.c中將串口驅(qū)動(dòng)的名字定義為:.name?=?S3C24XX_SERIAL_NAME,?//這個(gè)宏被定義為"ttySAC"

driver/serial/s3c2410.c有:#define

S3C24XX_SERIAL_NAME"ttySAC"

hi3518e為什么是ttyAMA0:

因?yàn)楹K荚创a:drivers/tty/serial/amba-pl011.c中將串口驅(qū)動(dòng)的名字定義為:.name = "ttyAMA",

mem:mem=xxM指定內(nèi)存的大小冲呢,不是必須的

root=/dev/mtdblock2:

root=/dev/mtdx rw

root=/dev/mtdblockx rw

root=/dev/mtdblock/x rw

root=31:0x

就是說(shuō)你的root分區(qū)在你flash的第幾分區(qū)舍败,在第幾分區(qū)就是mtdblockx幾,如:mtdblock3\mtdclock2;

hi3518e的板子設(shè)置mtdparts分區(qū)信息時(shí),設(shè)置了三個(gè)分區(qū)第三個(gè)是root分區(qū)所以是root=/dev/mtdblock2

上面的這幾個(gè)在一定情況下是通用的邻薯,當(dāng)然這要看你當(dāng)前的系統(tǒng)是否支持裙戏,不過(guò)mtd是字符設(shè)備,而mtdblock是塊設(shè)備厕诡,有時(shí)候你的挨個(gè)的試到底當(dāng)前的系統(tǒng)支持上面那種情況下累榜,不過(guò)root=/dev/mtdblockx

rw比較通用。此外灵嫌,如果直接指定設(shè)備名可以的話(huà)壹罚,那么使用此設(shè)備的設(shè)備號(hào)也是可以的。

root=/dev/nfs

在文件系統(tǒng)為基于nfs的文件系統(tǒng)的時(shí)候使用寿羞。當(dāng)然指定root=/dev/nfs之后猖凛,還需要指定nfsroot=serverip:nfs_dir,即指明文件系統(tǒng)存在那個(gè)主機(jī)的那個(gè)目錄下面

rootfstype=jffs2:

rootfstype設(shè)置文件系統(tǒng)類(lèi)型rootfstype=jffs2绪穆;

這個(gè)選項(xiàng)需要跟root一起配合使用辨泳,一般如果根文件系統(tǒng)是ext2的話(huà),有沒(méi)有這個(gè)選項(xiàng)是無(wú)所謂的玖院,但是如果是jffs2,squashfs等文件系統(tǒng)的話(huà)菠红,就需要rootfstype指明文件系統(tǒng)的類(lèi)型,不然會(huì)無(wú)法掛載根分區(qū).

mtdparts=hi_sfc:1M(boot),4M(kernel),9M(rootfs):

flash分區(qū)信息司恳;

要想這個(gè)參數(shù)起作用途乃,內(nèi)核中的mtd驅(qū)動(dòng)必須要支持

按這個(gè)格式來(lái)設(shè)置:mtdparts=mtd-id:@(),@()

mtd-id必須要跟你當(dāng)前平臺(tái)的flash的mtd-id一致,不然整個(gè)mtdparts會(huì)失效

init:

init指定的是內(nèi)核啟起來(lái)后扔傅,進(jìn)入系統(tǒng)中運(yùn)行的第一個(gè)腳本耍共,一般init=/linuxrc,或者init=/etc/preinit,preinit的內(nèi)容一般是創(chuàng)建console,null設(shè)備節(jié)點(diǎn)猎塞,運(yùn)行init程序试读,掛載一些文件系統(tǒng)等等操作。請(qǐng)注意荠耽,很多初學(xué)者以為init=/linuxrc是固定寫(xiě)法钩骇,其實(shí)不然,/linuxrc指的是/目錄下面的linuxrc腳本铝量,一般是一個(gè)連接罷了倘屹。

2.2 bootcmd參數(shù)

1.bootcmd=sf?probe?0;sf?read?0x82000000?0x100000?0x400000;bootm?0x82000000

uboot引導(dǎo)完的最后一步就是調(diào)用bootcmd參數(shù)驅(qū)動(dòng)內(nèi)核:怎么啟動(dòng)呢,就是把在flash中的內(nèi)核燒寫(xiě)到ram中慢叨,并運(yùn)行那段代碼纽匙;

前面有說(shuō)過(guò)bootcmd是自動(dòng)啟動(dòng)時(shí)默認(rèn)執(zhí)行的一些命令,因此你可以在當(dāng)前環(huán)境中定義各種不同配置拍谐,不同環(huán)境的參數(shù)設(shè)置烛缔,然后設(shè)置bootcmd為你經(jīng)常使用的那種參數(shù)馏段。

3修改啟動(dòng)參數(shù)

其實(shí)打開(kāi)uboot界面輸入?践瓷,就會(huì)返回uboot下我們可以使用的命令院喜,其中包括參數(shù)設(shè)置的相關(guān)參數(shù)。

修改:bootargs參數(shù)

YAFFS啟動(dòng)參數(shù)設(shè)置:

set bootargs

console=ttySAC0,115200 root=/dev/mtdblock3; save //實(shí)測(cè)有效

jffs2設(shè)置啟動(dòng)參數(shù):

set bootargs

console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2; save

nfs系統(tǒng)啟動(dòng):

改后的信息:setenv bootargs ?noinitrd ? root=/dev/nfs?nfsroot=192.168.7.21:/home/book/workspace/jz2440/systems/firstbusybox?ip=192.168.7.17:192.168.7.21:192.168.7.1:255.255.255.0::eth0:off?init= /linuxrc ?console=ttySAC0

原信息:set?bootargs noinitrd root=/dev/mtdblock3 init=/linuxrcconsole=ttySAC0

saveenv

修改:bootcmd參數(shù)

1.setenv?bootcmd'sf?probe?0;sf?read?0x82000000?0x100000?0x400000;bootm?0x82000000'

1.saveenv

setenv bootargs

'mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2

mtdparts=hi_sfc:1M(boot),4M(kernel),9M(rootfs)'

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晕翠,一起剝皮案震驚了整個(gè)濱河市喷舀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌崖面,老刑警劉巖元咙,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異巫员,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)甲棍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)简识,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人感猛,你說(shuō)我怎么就攤上這事七扰。” “怎么了陪白?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵颈走,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我咱士,道長(zhǎng)立由,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任序厉,我火速辦了婚禮锐膜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弛房。我一直安慰自己道盏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布文捶。 她就那樣靜靜地躺著荷逞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粹排。 梳的紋絲不亂的頭發(fā)上种远,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音恨搓,去河邊找鬼院促。 笑死筏养,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的常拓。 我是一名探鬼主播渐溶,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼弄抬!你這毒婦竟也來(lái)了茎辐?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤掂恕,失蹤者是張志新(化名)和其女友劉穎拖陆,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體懊亡,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡依啰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了店枣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片速警。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鸯两,靈堂內(nèi)的尸體忽然破棺而出闷旧,到底是詐尸還是另有隱情,我是刑警寧澤钧唐,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布忙灼,位于F島的核電站,受9級(jí)特大地震影響钝侠,放射性物質(zhì)發(fā)生泄漏该园。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一机错、第九天 我趴在偏房一處隱蔽的房頂上張望爬范。 院中可真熱鬧,春花似錦弱匪、人聲如沸青瀑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)斥难。三九已至,卻和暖如春帘饶,著一層夾襖步出監(jiān)牢的瞬間哑诊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工及刻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镀裤,地道東北人竞阐。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像暑劝,于是被迫代替她去往敵國(guó)和親骆莹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • qemu中uboot用tftp加載內(nèi)核并用NFS作為根文件系統(tǒng)作者 codercjg 在 20 八月 2015, ...
    codercjg閱讀 1,364評(píng)論 0 2
  • 1.命令格式:ifconfig [網(wǎng)絡(luò)設(shè)備] [參數(shù)] 2.命令功能: ifconfig 命令用來(lái)查看和配置網(wǎng)絡(luò)設(shè)...
    Nuuuu閱讀 3,733評(píng)論 0 12
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理担猛,服務(wù)發(fā)現(xiàn)幕垦,斷路器,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • 1傅联、第八章 Samba服務(wù)器2先改、第八章 NFS服務(wù)器3、第十章 Linux下DNS服務(wù)器配站點(diǎn)蒸走,域名解析概念命令:...
    哈熝少主閱讀 3,732評(píng)論 0 10
  • Linux Shell常用shell命令 一仇奶、文件、目錄操作命令 1载碌、ls命令 功能:顯示文件和目錄的信息 ls以...
    郭苒閱讀 6,976評(píng)論 0 1