在目標板的啓動過程中,我們看到uboot(bootloader)在控制檯上打印一些信息,如圖像名稱,圖像類型,加載地址,驗證校驗和等。它使用哪種打印機制?它是否使用類似printk
的東西,或者甚至在內核啓動之前它有自己的打印信息定義?我在哪裏可以找到它的打印實施代碼?uboot如何在主板上打印信息
1
A
回答
1
在正常的U-boot啓動過程中,將有限的信息打印到控制檯。它使用與C編程中使用的相同類型的函數來打印信息。
的u-boot使用printf
和puts
打印控制檯上的信息。你可以在u-boot源代碼中找到相同的函數實現(u-boot boardfile和drivers)。
有很多命令可以從u-boot命令提示符中嘗試獲取更多信息。
爲了讓更多的信息,您可以:
- 使用
debug_cond (cond, fmt, args...):
如果你定義一些COND,一旦滿足,U-Boot的將打印出此消息。 - 使用
debug(fmt, args...):
可以定義在文件中DEBUG的u-boot-include/configs/<boardfile>_common.h
(就像我的情況mx6_common.h),一旦做到這一點,重新編譯代碼,U-Boot的將打印出所有調試信息
注意:如果您對代碼進行了太多調試,可能會導致u-boot掛起。
0
如果您想要關於uBoot的信息(例如打印到的位置或其值的變量),可以使用'printenv'命令並更改,您可以在啓動時(中斷內核啓動時)輸入uBoot他們用'setenv'命令。
相關問題
- 1. 主板信息
- 2. 如何打印在帆錯誤信息
- 3. 在同一點上打印信息
- 4. 打印版,試圖打印信息
- 5. 硬件啓動 - 在新鮮的主板上安裝uboot
- 6. NAND flash&MDT partiton - uboot - Atmel SAMA5D3 Xplained主板
- 7. TYPEID不打印信息
- 8. 信息截斷時打印
- 9. DocumentListener不打印信息
- 10. 打印頁面信息vb.net
- 11. Spotipy:打印跟蹤信息
- 12. Hibernate何時打印統計信息?
- 13. 在ParseException中打印異常的信息
- 14. 在打印輸出中打印系統信息
- 15. TCL - 如何在執行exec命令期間打印的信息在屏幕上打印?
- 16. 如何在使用twitter4j時禁用打印請求信息
- 17. 如何在閱讀文件時打印某些信息?
- 18. 如何在<a>標籤內打印php信息?
- 19. 如何在Swift中打印'catch all'異常的詳細信息?
- 20. 如何在訂閱時使mosquitto_sub打印主題和消息#
- 21. rake db:在我的網站上打印的種子信息
- 22. django在生產服務器上打印信息
- 23. 日誌信息不在控制檯上打印
- 24. 我如何獲得打印在J9 VM(Linux)上的調試信息?
- 25. 如何訂閱MQTT主題並在Eclipse上打印接收到的消息(Java)
- 26. 從Windows打印服務器輪詢打印機信息
- 27. @media打印頁腳信息打印時相互重疊
- 28. 打印ZPL斑馬打印機項目詳細信息
- 29. 如果信息在列表中,並且出現錯誤消息,則如何打印列表信息
- 30. 如何在WinFormc#中打印面板?
基本上,U-Boot通過UART將消息輸出到串行控制檯。它有內部API來這樣做。當然,在寫入UART之前,U-Boot需要首先初始化(配置)它。這與內核幾乎相同。爲了更好地理解內部,你可以看看我縮小(最小)的U-Boot版本,它只能寫入UART:https://gitlab.com/joeskb7/dra7xx-hello/tree/master –
@samprotsenko感謝你的uboot代碼。但我的UART是ttyHS,波特率是757000.我可以在內核中使用你的uboot代碼來在內核中進行早期打印功能嗎? – karthikpj
該代碼僅供參考。不,您不能使用它,因爲它嚴格依賴於架構(僅適用於一個平臺,可能與您的平臺不一樣)。基本上,我只是想向您展示如何在U-Boot中實現打印。您可以爲您的平臺尋找串行控制檯驅動程序(在U-Boot中),並調查它的工作原理。像'debug()'和'printf()'這樣的函數在所有體系結構中都是常見的,但最終它們都依賴於串行控制檯驅動程序,這是您的平臺特有的。 –