嵌入式系統(tǒng) Boot Loader 技術內幕(3)
在 boot loader 程序的設計與實現(xiàn)中,沒有什么能夠比從串口終端正確地收到打印信息能更令人激動了。此外,向串口終端打印信息也是一個非常重要而又有效的調試手段。但是,我們經常會碰到串口終端顯示亂碼或根本沒有顯示的問題。造成這個問題主要有兩種原因:(1) boot loader 對串口的初始化設置不正確。(2) 運行在 host 端的終端仿真程序對串口的設置不正確,這包括:波特率、奇偶校驗、數(shù)據位和停止位等方面的設置。
本文引用地址:http://www.ljygm.com/article/257977.htm此外,有時也會碰到這樣的問題,那就是:在 boot loader 的運行過程中我們可以正確地向串口終端輸出信息,但當 boot loader 啟動內核后卻無法看到內核的啟動輸出信息。對這一問題的原因可以從以下幾個方面來考慮:
(1) 首先請確認你的內核在編譯時配置了對串口終端的支持,并配置了正確的串口驅動程序。
(2) 你的 boot loader 對串口的初始化設置可能會和內核對串口的初始化設置不一致。此外,對于諸如 s3c44b0x 這樣的 CPU,CPU 時鐘頻率的設置也會影響串口,因此如果 boot loader 和內核對其 CPU 時鐘頻率的設置不一致,也會使串口終端無法正確顯示信息。
(3) 最后,還要確認 boot loader 所用的內核基地址必須和內核映像在編譯時所用的運行基地址一致,尤其是對于 uClinux 而言。假設你的內核映像在編譯時用的基地址是 0xc0008000,但你的 boot loader 卻將它加載到 0xc0010000 處去執(zhí)行,那么內核映像當然不能正確地執(zhí)行了。
Boot Loader 的設計與實現(xiàn)是一個非常復雜的過程。如果不能從串口收到那激動人心的uncompressing linux.................. done, booting the kernel……內核啟動信息,恐怕誰也不能說:嗨,我的 boot loader 已經成功地轉起來了!。
評論