以下是為MTK 9300開發板移植Linux系統(以Debian為例)的詳細技術指南,涵蓋環境搭建、內核移植、驅動適配(攝像頭/顯示器/WiFi)、系統集成與優化。
MTK 9300開發板Linux系統移植全流程指南
1 項目概述
1.1 硬件平臺
- SoC:MediaTek MTK9300 (ARMv8-A架構,4×Cortex-A78 + 4×Cortex-A55)
- 外設:
- MIPI CSI-2攝像頭接口 ×2
- HDMI 2.1 + MIPI DSI顯示輸出
- MT7921K WiFi6/BT5.2模塊
- 4GB LPDDR5 + 64GB UFS 3.1
- 開發板接口:USB 3.0 Type-C ×2, PCIe 3.0 ×1, 40-pin GPIO擴展口
1.2 軟件起點
- 基線代碼:Android 13 (Kernel 5.10 LTS)
- 目標系統:Debian 12 Bookworm (ARM64)
2 開發環境搭建
2.1 主機系統配置
# Ubuntu 22.04 LTS
sudo apt install gcc-aarch64-linux-gnu u-boot-tools \
flex bison libssl-dev device-tree-compiler \
git-lfs swig python3-dev
2.2 交叉工具鏈
# ARM官方工具鏈 (aarch64-none-linux-gnu)
wget https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
tar xvf arm-gnu-toolchain-*.tar.xz
export CROSS_COMPILE=/path/to/bin/aarch64-none-linux-gnu-
2.3 源碼倉庫
# 內核源碼 (基于MTK官方倉庫)
git clone -b mtk-5.10 https://github.com/mediatek/linux.git
# U-Boot源碼
git clone https://github.com/u-boot/u-boot.git
# Debian根文件系統
wget https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/debian-12.4.0-arm64-netinst.iso
3 Bootloader移植
3.1 U-Boot配置適配
文件:u-boot/arch/arm/dts/mt9300-evb.dts
/ {memory@40000000 {device_type = "memory";reg = <0x40000000 0x10000000>; // 匹配開發板內存布局};chosen {stdout-path = &uart0;};
};&uart0 {status = "okay";
};&usb0 {dr_mode = "otg";status = "okay";
};
3.2 DDR初始化參數提取
使用MTK專有工具從Android bootloader提取:
python3 mtk_bootinfo_extract.py preloader.bin > ddr_init_params.h
在U-Boot board初始化代碼中包含該頭文件:
// u-boot/board/mediatek/mt9300/init.c
#include "ddr_init_params.h"void mtk_ddr_init() {