1. 程式人生 > >Exynos4412系統移植總結

Exynos4412系統移植總結

經過了三天的填坑,終於在Exynos4412上移植成功了Uboot2015+Linux4.1.36+Rootfs。
具體的移植操作過程在前文在Exynos4412上使用SD卡燒寫Linux已經贅述。本文用於記錄經驗總結。

問題一:設定的核心地址不正確,uboot無法啟動核心

解決辦法:

SSH工具上對SD卡進行hexdump列印前5M的地址資料,儲存到.txt檔案,然後使用Hex Editor開啟uImage檔案,可以看到第一個資料是2705,但是實際上這個資料的存放位置是顛倒的,於是在.txt裡進行搜尋前三組資料,找到偏移地址200000

在uboot啟動的時候會打印出uboot

的啟動地址是7fe7d000,加上偏移地址得到核心啟動時所處的地址8007D000,最後我們設定bootargs裡的kerneladdr0x8007D000,成功啟動核心!!
在這裡插入圖片描述

問題2:無法掛接SD卡,提示找不到bootargs裡的塊裝置

解決辦法:

2.1.首先是因為在Kernel列印資訊沒有sdhci有關的資訊,因此意識到Kernel沒有新增SD/MMC裡的S3C驅動,新增PCI驅動支援,另外防止出現由於核心映像是由虛擬機器生成,將Fusion MPT driverLPC編進核心。
2.2.識別出了SD卡,但是找不到init /linuxrc,由於我錯誤的將rootfs.ext2直接地移到了檔案系統分割槽,沒有解壓所以找不到init /linuxrc

,直接將Buildroot目錄outputtarget/裡的所有檔案拷貝到檔案系統分割槽即可找到init /linuxrc。位於在Exynos4412上使用SD卡燒寫Linux的最後一步有寫具體操作。
2.3.由於拔插SD卡步驟有問題,導致SD卡處於防寫狀態,因此需要格式化Rootfs所在的分割槽,再重新刷入Rootfs。

最後掛接成功。在設定bootargs時可以設定root=179:2179是SD卡的主裝置號,2是SD卡檔案系統分割槽的從裝置號,當然也可以設定為root=/dev/mmcblk0p20代表SD卡,1代表板子的emmcp2指第二分割槽。
在這裡插入圖片描述
在這裡插入圖片描述

欠缺
/*
*目前LCD功能尚未實現需要修改除錯,繼續填坑。
*SD卡作為檔案系統的可靠性有待提高
*/