[問題] BootLoader代碼..

看板C_and_CPP (C/C++)作者 (說好的性福呢?)時間14年前 (2011/07/29 15:57), 編輯推噓0(0014)
留言14則, 5人參與, 最新討論串1/1
想請教一下BootLoader的一開始啟動的機制, 就是我現在在看 U-Boot的啟動方式, 就是他是燒在Nandflash內, 開機後會先啟動 第一段 (start.S) 會將BootLoader載入到 Ram內的預設位置.. 並且reloacate然後就開始在RAM的位置段執行了.. 第二段開始就是載入kernel, 與u-boot的一些cmd互動介面 都在第二段裡面實做. 我上面講的恐怕有些模糊, 但這只是我目前的理解而已 .. 我知道目前有nor flash / nandflash可存放bootloader / kernel / fs等 但比較好奇時, 一開機的第一段code (start.S)會在哪邊執行? 我現在看感覺好像cpu一開機就知道去哪邊搬這段code並載入ram讓他執行.. 可是cpu為啥知道要去哪邊搬這段? 這位置是固定的嗎, 還是可以設定的? 要怎樣設定呢? 如果是在nor flash, 是可透過XIP的技術直接執行這段嗎?? 還是一樣要先載入到RAM, 才能做接下來的事情? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.72.220.129

07/29 16:48, , 1F
可以說一下是什麼平台嗎?
07/29 16:48, 1F

07/29 17:12, , 2F
arm..
07/29 17:12, 2F

07/29 17:12, , 3F
arm11 wm8650
07/29 17:12, 3F

07/29 22:58, , 4F
CPU datasheet 應該會有相關資訊。
07/29 22:58, 4F

07/29 23:09, , 5F
應該反過來,你會先知道CPU會去某個位址讀,就是燒在那裏
07/29 23:09, 5F

07/30 09:21, , 6F
所以每種cpu的讀取位址都是固定的?我們可以改變嘛?
07/30 09:21, 6F

07/30 10:12, , 7F
要看CPU的詳細資料 如果以x86系列(PC常見)來說 不能改變
07/30 10:12, 7F

07/30 10:12, , 8F
所以可能的話去查arm11 wm8650的資料比較有幫助
07/30 10:12, 8F

07/30 22:38, , 9F
你去抓幾顆 MPU 的 datasheet 來看看就知道了...有些東西
07/30 22:38, 9F

07/30 22:39, , 10F
是訂死的 你想正常 boot 就乖乖把該填的東西 填到特定位
07/30 22:39, 10F

07/30 22:39, , 11F
址去 沒什麼好商量的餘地... 可以找 NXP LPC1114,LPC1342
07/30 22:39, 11F

07/30 22:40, , 12F
或是 2xxx 系列的 Datasheet 來看看...
07/30 22:40, 12F

07/30 22:40, , 13F
每顆處理器放的地方不同...這種東西屬於你依據你手上拿到
07/30 22:40, 13F

07/30 22:41, , 14F
哪顆 IC 就去看那顆 IC 關於 Boot Sequence 的範疇...
07/30 22:41, 14F
文章代碼(AID): #1ECcW2M6 (C_and_CPP)
文章代碼(AID): #1ECcW2M6 (C_and_CPP)