作者 主題: 請教u-boot啟動後的環境  (閱讀 4085 次)

0 會員 與 1 訪客 正在閱讀本文。

narsilx

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
請教u-boot啟動後的環境
« 於: 2012-04-27 16:06 »

各位先進好, 我有些問題想請教

目前手上有塊板子,上面的CPU是ARM,
u-boot完成工作,我就停下他不進Linux kernel

目前我只知道透過指令能看到memory, nand flash
此時memory只有physical address供我操作(所以跟MMU無關, 因為MMU是搭配OS作用?)

在這環境下我想自己來操作板子上的LED燈(無其他程式可供利用)
我在linux driver書上找到操作device的有兩種模式,

一種是Memory Mapped,device的pin腳已經對應到特定memory address
另一種是Device I/O, 需用asm特別的指令去access io address
ARM似乎是屬於前者

但我現在的環境不在OS裡,此時就已經有Memory Mapped I/O?
 所以要操作板子上的LED燈
只要知道LED的pin對應memory address直接對address作規定initial步驟走
就可以操作該LED嗎?

因為我也不清楚Memory mapped I/O是由OS實現還是硬體就已經實現,

是看到前人寫的東西,來推測,譬如說watchdog就直接對特定address操作而已

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17484
    • 檢視個人資料
    • http://www.study-area.org
Re: 請教u-boot啟動後的環境
« 回覆 #1 於: 2012-04-27 16:16 »
哇,太高深了...

只能幫推~~~

zzz0072

  • 懷疑的國中生
  • **
  • 文章數: 53
    • 檢視個人資料
Re: 請教u-boot啟動後的環境
« 回覆 #2 於: 2012-04-28 00:23 »

各位先進好, 我有些問題想請教

目前手上有塊板子,上面的CPU是ARM,
u-boot完成工作,我就停下他不進Linux kernel

目前我只知道透過指令能看到memory, nand flash
此時memory只有physical address供我操作(所以跟MMU無關, 因為MMU是搭配OS作用?)

在這環境下我想自己來操作板子上的LED燈(無其他程式可供利用)
我在linux driver書上找到操作device的有兩種模式,

一種是Memory Mapped,device的pin腳已經對應到特定memory address
另一種是Device I/O, 需用asm特別的指令去access io address
ARM似乎是屬於前者

但我現在的環境不在OS裡,此時就已經有Memory Mapped I/O?
 所以要操作板子上的LED燈
只要知道LED的pin對應memory address直接對address作規定initial步驟走
就可以操作該LED嗎?

因為我也不清楚Memory mapped I/O是由OS實現還是硬體就已經實現,

是看到前人寫的東西,來推測,譬如說watchdog就直接對特定address操作而已
雖然只有把boot loader燒壞過的經驗,不過以以前的經驗來說,boot loader的shell應該有直接寫資料到記憶體的指令。而我上次看到device map IO應該是大學微處理機的8088組語吧。

最簡單的方式就是看Data Sheet的GPIO位址,看一下LED接到第幾個GPIO後,在Bootloder shell直接對那個記憶體填值就一翻兩瞪眼。最多久是填一(pull low?)或零(pull high?)點亮的差別,以及是否需要先設定那個GPIO位址的方向是否為output(可能要寫另外一個位址)。

不過要控制更精密的週邊,扯到timing的話,我想應該會改到code。不知道現在有沒有比較方便的方式,不然bootloader燒掛最壞的情況要把IC解焊然後把golden image透過燒錄器燒回去再焊回去。
« 上次編輯: 2012-04-28 06:03 由 zzz0072 »