轉:uboot無法啟動linux核心

來源:互聯網
上載者:User

轉自:http://topic.csdn.net/u/20100415/14/1569e49e-921f-4b67-92be-409bd4885679.html

1、u-boot中的命令列參數中console設定有問題,對2.6的核心應該使用ttySAC0,而不是ttyS0。更改為"console=ttySAC0"就可以解決問題。

  2、u-boot中FCLK與kernel時鐘頻率不一致。kernel的FCLK為200MHz,但是uboot的預設值是202.8MHz。(vivi預設的也是200MHz,所以vivi不會出現這個問題。)這樣修改uboot的時鐘頻率設定就可以解決問題。

  但是這兩個方案並不適合我這種情況。經過分析和讀bootm的原始碼,現在提出兩點額外考慮的地方:
  1、如果你在設定檔中不定義tag list的成員,那麼預設情況下bootm是不會傳遞命令列參數的。也就是說,如果你uboot環境變數中設定了正確的bootargs,但是設定檔中沒有設定,這時就會出現問題。為了使用上的方便,你至少應該在標頭檔中定義:

/* tag list choosing */
#define CONFIG_CMDLINE_TAG
//#define CONFIG_SETUP_MEMORY_TAGS
  這樣就可以保證你在命令列狀態下修改環境變數bootargs後,可以傳遞進核心。同時也就避免了重新編譯uboot。
  2、我在使用中發現,如果在bootargs中沒有指定mem的大小,那麼CONFIG_SETUP_MEMORY_TAGS也是需要設定的。我就是因為bootargs沒有設定mem,所以導致出現上述的情況。現在我的bootargs為:

bootargs=noinitrd root=/dev/mtdblock3 console=ttySAC0,115200 mem=64M
  在這種情況下,使用go和bootm都可以正常引導核心。
  綜上可知,在tag list的設定上,一定要考慮CONFIG_CMDLINE_TAG和記憶體兩個部分,否則的話,可能出現上述無法引導核心的問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.