高通平臺手機開發之Bring-up
手機Bring-up
3.1. Linux 部分編譯
高通的程式碼分兩部分:一部分是開源的,可以從codeaurora.org上下載,還有一部分是高通產權的,需要從高通的網站上下載。
將高通產權的程式碼放到:vendor/qcom/proprietary。
編譯對應的目標:
sourcebuild/envsetup.sh
$ make -j4
編譯出來的有以下幾個目標檔案:
Boot.img emmc_appsboot.mbn system.img userdata.img
3.2. AMSS 部分編譯
主要由以下部分構成:
Adsp, boot, debug, modem, rpm, trustzone, wcnss,分別根據高通的說明編譯這些模組,不過其中有些模組我們不會改,直接用release的binary檔案就行,比如:debug,rpm,trustzone,wcnss。
3.3. 打包成可刷寫檔案
高通沒有提供一個完整的製作可刷寫包的工具,我自己寫了一個。
核心思想是執行:common/build/update_common_info.py生成NON-HLOS.bin和把system.img,userdata.img等大包分成小包,以及生成分割槽表。
pack.sh封裝了update_common_info.py,能夠生成一個完整的可刷寫包。
3.4. 刷機
使用高通提供的工具Qfil將程式碼刷入手機。
3.4.1. 使手機進入Emergency Download模式
如果手機裡沒有任何軟體,手機預設進入Emergency Download。如果沒有進入,需要短接一個特定的GPIO。硬體上設計好了一個測試點,把這個點接地,然後把連線手機的USB線插入到電腦,電腦上會出現驅動安裝提示,安裝好驅動後,會出現一個下載埠。
3.4.2. 刷機過程
刷機完成後,自動重啟。
如果手機不能進入刷機模式,需要和硬體一起檢查是USB的問題,還是別的電路問題。
3.4.3. fastboot 刷機
如果手機裡面已經有分割槽表,可以通過fastboot來分別刷入不同的模組:boot.img system.img userdata.img
fastboot flash boot boot.img
3.5. 開機測試
這是最為關鍵的一部,需要根據Log來定位問題。
一般可以通過串列埠和Jtag工具來除錯,對於基於Linux的智慧手機來說,一般用串列埠工具來除錯已經足夠了。
串列埠Log能夠打出從sbl1, lk到kernel的Log,看看到底問題出在什麼地方?
下面是需要注意的:
➢ 修改硬體board_id
Boot_images/core/boot/secboot3/hw/msm8974/boot_cdt_array.c
uint8 config_data_table[CONFIG_DATA_TABLE_MAX_SIZE] =
{
/* Header */
0x43, 0x44, 0x54, 0x00,
0x01, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
/* Meta data */
0x16, 0x00,
0x05, 0x00,
0x1B, 0x00,
0x88, 0x01,
/* Block data */
#ifdef BOOT_PRE_SILICON
#ifdef FEATURE_RUMI_BOOT
0x02, 0x0F, 0x01, 0x00, 0x00,
#else
0x02, 0x10, 0x01, 0x00, 0x00,
#endif
#else
- 0x02, 0x00, 0x01, 0x00, 0x00,
+ 0x02, 0x08, 0x01, 0x00, 0x00,
#endif
修改sbl1裡的board_id,與dts裡的匹配
/ {
model = “Qualcomm MSM 8974Pro-AA/AB MTP”;
compatible = “qcom,msm8974-mtp”, “qcom,msm8974”, “qcom,mtp”;
qcom,board-id = <8 0>;
};
➢ DDR引數
手機能進如Kernel,但是做Kernel裡會死,從Log上看,bitflip或者相關的問題。在這種情況下,需要修改DDR引數。
從晶片廠商獲取資料手冊,根據高通的說明來改動,改動後的資料放在
Boot_images/core/boot/secboot3/hw/msm8974/boot_cdt_array.c
uint8 config_data_table[CONFIG_DATA_TABLE_MAX_SIZE] =
{
/* Block data */
}
➢ 只編譯對應的dts
高通的程式碼編譯時,把一大堆的dts都生成了,放在一起,這樣對我們的系統開發會造成不利影響。系統啟動時呼叫的dts不是我們所希望的,所以需要改動build系統,只編譯相關dts。
Kernel/AndroidKernel.mk
-DTS_FILES = $(wildcard $(TOP)/kernel/arch/arm/boot/dts/$(DTS_NAME)*.dts)
+DTS_FILES = $(wildcard $(TOP)/kernel/arch/arm/boot/dts/$(DTS_NAME)*$(OEM_PROJECT_NAME).dts)
Kernel/arch/arm/mach-msm/Makefile.boot
+ dtb-$(CONFIG_ARCH_MSM8974) += msm8974pro-ac-pm8941-$(OEM_PROJECT_NAME).dtb
➢ ADB log
如果前面的問題都解決了,手機能進入Kernel,就可以用ADB log了。
$ adb shell cat /proc/kmsg |tee log.txt
3.6. 除錯好LCD和TP驅動
具體的除錯見4.1和4.2。
LCD,TP功能正常,手機能進入Idle介面,能正常使用,USB連線正常。這樣Bring-up工作就基本完成了。
相關文章
- 高通MDM平臺開發入門
- 手機直播平臺開發的解析
- 高通晶片平臺進9008埠晶片
- 對比黑鯊遊戲手機2 Pro和ROG新遊戲手機,高通855Plus平臺到底哪家強?遊戲
- 00-跨平臺開發之FlutterFlutter
- 綠茵面家平臺開發(開發平臺)
- 最新高通平臺驅動開發參考文件
- 手機直播平臺開發一定要懂的知識:編解碼
- 如何開發直播平臺,直播平臺開發需要CDN嗎
- flutter跨平臺開發之App升級方案FlutterAPP
- Web快速開發平臺個人之淺見Web
- 測試平臺開發(二) 高逼格登入頁面
- Web快速開發平臺,基於二次開發平臺Web
- 高沉浸式戀愛互動手遊《光與夜之戀》全平臺公測今日開啟!
- 在海之舟大資料平臺上搭建mysql+php開發平臺大資料MySqlPHP
- 高通平臺 按鍵 進入 fastboot/recovery/edl 模式ASTboot模式
- 企業即時通訊APP開發,手機聊天軟體開發APP
- 微信公眾平臺開發之店鋪類
- AI開發平臺系列2:整合式機器學習平臺對比分析AI機器學習
- 高併發數字資產交易平臺開發技術架構架構
- 力軟快速開發平臺:方便快捷的Web開發平臺Web
- 魚羊兒教您搭建手機直播APP平臺!直播系統原始碼開發!APP原始碼
- 央視新聞《大發平臺網址》手機搜狐網
- 機智雲AIoT自助開發平臺榮獲"物聯網行業最受歡迎開發平臺獎"AI行業
- 【提測平臺】測試平臺開發練手專案原始碼和教程彙總原始碼
- 高通聯手AT&T,打造一臺能使用4G的無人機無人機
- 手機晶片誰是AI之王?高通、聯發科均超華為晶片AI
- 分享個高通平臺NV引數恢復工具-QSerWriteNumber
- 遊戲分發平臺之戰(下):危機前夜的Steam遊戲
- bt手遊折扣平臺 折扣手遊平臺大全
- 7.PHP微信公眾平臺開發 聊天機器人開發PHP機器人
- 華為打造「5機協同」,輪值董事長郭平:很樂意使用高通晶片造手機晶片
- MediaPipe - 跨平臺機器學習應用開發框架API機器學習框架
- 手機上買足球平臺哪個好?2022世界盃手機上買足球平臺app推薦APP
- TRONex智慧合約APP開發平臺(真實平臺)APP
- 手遊bt折扣平臺 bt手遊折扣充值平臺
- 直播平臺開發,基礎搜尋方式之拼音搜尋
- 搭建直播平臺,Android開發之禁止下拉通知欄的方法Android
- 今日首發《獵人》手遊全平臺不刪檔開啟