以下是为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() {