第四篇--关于device
1、device里面,如果存在類似于cm.dependencies這樣的文件,里面是編譯需要的依賴文件,編譯前需要將這些文件下載到對應位置
2、如果device里面存在后綴為.sh的文件,一般是用來提取vendor的腳本,如果沒有找到可用的vendor可以使用這個腳本提取,需要連接手機且adb可以正常使用,也就是需要開啟開發者選項中的ADB調試功能
3、device需要的配置,可以參考高通的開源倉庫,例如CPU為MSM8939,對應可以參考的device為platform/vendor/qcom/msm8916_64
4、device里面,關于設備的硬件架構,主要在BoardConfig.mk文件里描述,
TARGET_KERNEL_SOURCE 描述內核源代碼的路徑
TARGET_KERNEL_CONFIG 描述的是內核的配置文件
根據內核配置文件我們可以找到內核相應的dtb編譯配置文檔,例如內核架構為msm8916,那么內核配置文檔里面就有CONFIG_ARCH_MSM8916配置選項,找到kernel/arch/arm(64)/boot/dts/qcom文件夾下面的Makefile文件,
里面就包含有編譯內核需要包含的dts文件
以下內核配置需要解壓內核boot.img獲取,工具鏈接在文章底部,使用方法有描述
解壓之后生成的img_info文件有相互對應的選項
BOARD_KERNEL_BASE := 0x80000000
BOARD_KERNEL_CMDLINE := console=null androidboot.console=ttyHSL0 boot_cpus=0,1,2,3,4,5 androidboot.hardware=qcom msm_rtb.filter=0x237 ehci-hcd.park=3 androidboot.bootdevice=7824900.sdhci lpm_levels.sleep_disabled=1 sched_enable_hmp=1 ?androidboot.selinux=permissive
BOARD_KERNEL_PAGESIZE := 2048
BOARD_KERNEL_TAGS_OFFSET := 0x00000100
BOARD_RAMDISK_OFFSET ? ? := 0x02000000
# Partitions
BOARD_FLASH_BLOCK_SIZE := 131072 # (BOARD_KERNEL_PAGESIZE * 64) BOARD_KERNEL_PAGESIZE根據上面解壓內核文件所得
BOARD_BOOTIMAGE_PARTITION_SIZE := 33554432
BOARD_CACHEIMAGE_PARTITION_SIZE := 268435456
BOARD_PERSISTIMAGE_PARTITION_SIZE := 8388608
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 33554432
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736
BOARD_USERDATAIMAGE_PARTITION_SIZE := 13258652672
上述表示的位系統幾個主要分區的大小,獲取方法如下
1、adb連接手機,并且能通過adb登錄shell,即adb shell命令
2、cat proc/partitions; blocks那一列對應的就是分區的大小
3、cd /dev/block/bootdevice/by-name
ls -l
boot對應的分區位置為mmcblk0p19,大小32768,cache分區對應的位置為mmcblk0p24,大小262144,以此類推
通過上面幾步我們就可以得到對應分區的大小,將對應分區的大小×2^10,所得數值就是上面# Partitions對應的數值
參考鏈接:https://source.codeaurora.org/quic/la
內核解壓工具?https://github.com/xiaolu/mkbootimg_tools
總結
以上是生活随笔為你收集整理的第四篇--关于device的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业信息安全————3、如何建立企业安全
- 下一篇: 从零搭建Angular10项目