歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

uboot中lowlevel_init運行不了的現象

從開始下定決心從無到有的移植uboot後,最近這段時間進展很慢,從最開始的開始了解arm的體系架構(當初學單片機的時候看到arm驅動的書前面大篇幅的講arm感覺是沒必要的,現在看來是很有必要的,單片機才不用關心他的架構,如果僅用c開發),然後又需要了解arm匯編,因為不了解匯編想去一直uboot根本不可能。由於工作最近經常加班,有時看的時間也不多,不過最近工作上的感覺慢慢的熟練起來之後,對我學習一直uboot也是有很大幫助的。

今天開始用點燈的方式調試,發現在走到 bl lowlevel_init之後,在lowlevel_init函數裡的點燈沒有起作用。於是查看uboot.bin的反匯編代碼,發現跳轉之後的匯編代碼並不是我點燈的代碼,相差很遠。中間試了好幾遍還是不行,網上百度看到有一兩個人也有這種問題,但是沒有解答。到最後發現我實際改寫的這個 lowlevel_init.S文件時在cpu目錄下的,然後我記得在哪裡看到過時在board目錄下的吧~ 後來一看,發現board目錄下海真有一個,即:

我修改的是    arch\arm\cpu\arm1176\tnetv107x 目錄下的,而且這個目錄下的函數裡是空的。我就想為什麼和其他的網上說的裡面做的初始化怎麼不一樣呢~

實際用的應該是   board\samsung\smdk6400\lowlevel_init.S

真是太悲劇了,害的我弄到現在都凌晨3點了。寫出來給以後萬一也遇到這種低級問題的人,也算是對自己的一個提醒!雖然是個低級錯誤,不過通過這個問題還是學到不少定位問題的手段。最起碼對uboot編出來的反匯編熟悉了不少。

Copyright © Linux教程網 All Rights Reserved