android bsp调试环境,【经验】R-Car Android P5.1.3 bsp emmc启动出错解析及解决方法
R-Car作為瑞薩搶占高端車載產品市場的拳頭產品,也是當前在自動駕駛領域有著強大競爭力的一個產品系列。瑞薩可以提供包括軟硬件資源在內的整套開發支持,通過與多家全球頂級方案商的合作,可以給客戶提供完整的解決方案,大大方便客戶的產品開發。R-Car系列作為高端的SoC產品,可以支持包括Linux,Android、QNX、Intergrity在內的多種操作系統,其中Android在智能座艙產品上應用比較廣,目前提供的最新版本為Android P5.1.3。最近在測試Android P5.1.3的emmc啟動時遇到了一些問題,本文主要對該問題現象及解決方法做了介紹。
在編譯完成Android P5.1.3后按照flash writer的參考地址燒寫,IPL啟動階段BL2提示:
[??? 0.110615] ERROR:?? GPT signature is incorrect
[??? 0.113659] ERROR:?? Failed to load GPT table
檢查IPL的sa6.c源碼以及makefile文件看到,默認的啟動方式為emmc啟動,但是在源碼中多了一個emmc_ipl_addr.h的地址信息文件,其中描述的cert_header_sa6、bl31、optee以及uboot的存儲地址均與flash writer操作說明中的地址信息不一致,因此導致找不到emmc的相關參數表。因此我們在燒寫時需要對地址信息進行匹配修改。emmc的燒寫是以block為單位,一個block的地址區間大小為0x200,源碼定義的地址除以0x200就能得到相應的存儲block。但是在燒寫地址做出匹配修改后,問題依然存在。根據錯誤log追查源碼,發現是在bl2_rcar_setup.c中的avb_ab_flow()函數返回錯誤,經過追查代碼,發現該部分代碼對于emmc啟動并無太大作用,于是將該函數屏蔽后重新編譯,燒寫后emmc啟動正常,問題得到解決。將源碼修改輸出成patch文件,內容如下:
diff --git a/plat/Renesas/rcar/bl2_rcar_setup.c b/plat/renesas/rcar/bl2_rcar_setup.c
index 3583766..47d403d 100644
--- a/plat/renesas/rcar/bl2_rcar_setup.c
+++ b/plat/renesas/rcar/bl2_rcar_setup.c
@@ -786,19 +786,20 @@ static void rcar_bl2_early_platform_setup(const meminfo_t *mem_layout)
LOSSY_FMT2, LOSSY_ENA_DIS2);
#endif /* #if (RCAR_LOSSY_ENABLE == 1) */
-??????? if (isSwitchPressed()) {
-???????????????? NOTICE("BL2: Force boot from HyperFlash.\n");
-???????????????? rcar_io_setup();
-???????????????? return;
-??????? }
+?????? isSwitchPressed();
+?????? //if (isSwitchPressed()) {
+?????? //????? NOTICE("BL2: Force boot from HyperFlash.\n");
+?????? //????? rcar_io_setup();
+?????? //????? return;
+?????? //}
/* Initialise the IO layer and register platform IO devices */
if((modemr_boot_dev == MODEMR_BOOT_DEV_EMMC_25X1) ||
(modemr_boot_dev == MODEMR_BOOT_DEV_EMMC_50X8)) {
#if (RCAR_BOOT_EMMC == 1)
-???????????????? if (avb_ab_flow() != AVB_AB_FLOW_RESULT_OK)
-?????????????????????????? rcar_io_setup();
-???????????????? else
+??????????????? //if (avb_ab_flow() != AVB_AB_FLOW_RESULT_OK)
+??????????????? //????? rcar_io_setup();
+??????????????? //else
#endif
rcar_io_emmc_setup();
} else {
以上就是R-Car Android P5.1.3 bsp emmc啟動所遇到的問題及解決方法,該測試以R-Car H3為例,同樣適用于R-Car M3。
總結
以上是生活随笔為你收集整理的android bsp调试环境,【经验】R-Car Android P5.1.3 bsp emmc启动出错解析及解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GetFLV.v9.1.1.5-load
- 下一篇: c语言浮点数高精度求平方根,快速高精度的