2、开发环境搭建:SDK获取、交叉编译工具链安装、ADB与Fastboot配置
好,咱们正式开始动手了。这一章我带你把开发环境搭起来。说实话,很多新手一上来就急着写代码,结果编译报错半天找不到原因——十有八九是环境没配好。我在MTK平台上栽过这个跟头,所以这一章咱们稳扎稳打,一步步来。
2.1 SDK获取:别下错版本
MTK8676的SDK,说白了就是一套完整的开发包。里面包含了内核源码、驱动库、编译脚本、示例工程等等。你想想看,没有SDK,你连个Hello World都跑不起来。
获取途径:
- 官方渠道:联发科官方开发者平台(需要NDA协议)。我个人习惯走这条路,版本最干净。
- 方案商提供:如果你是从方案商拿的板子,他们会给你定制好的SDK。注意,这里经常有坑——他们给的版本可能落后一两个小版本。
- 内部Git仓库:大公司一般有自建的GitLab,SDK以repo形式管理。
拿到SDK后,解压到你的工作目录。我建议放在/home/你的用户名/workspace/mtk8676/下,路径里不要有中文和空格。
# 解压SDK
tar -xvf MTK8676_SDK_V2.1.0.tar.gz -C ~/workspace/mtk8676/
2.2 交叉编译工具链安装:这是核心
交叉编译,说白了就是在你的电脑上编译出能在ARM芯片上跑的程序。MTK8676用的是ARM Cortex-A系列内核,所以我们需要ARM版的gcc。
工具链选择:
| 工具链名称 | 适用场景 | 我的推荐 |
|---|---|---|
| gcc-arm-none-eabi | 裸机程序、RTOS | 不推荐用于Linux应用 |
| gcc-arm-linux-gnueabihf | Linux用户态程序 | ⭐ 强烈推荐 |
| aarch64-linux-gnu-gcc | 64位Linux程序 | MTK8676支持64位时用 |
嗯,这里要注意:MTK8676的仪表系统通常跑的是Linux,所以咱们用arm-linux-gnueabihf-这套工具链。
安装步骤:
- 下载工具链(SDK里通常自带,在
toolchain/目录下) - 解压到
/opt/目录 - 配置环境变量
# 解压工具链
sudo tar -xvf gcc-arm-linux-gnueabihf-7.5.0.tar.xz -C /opt/
# 配置环境变量(写到 ~/.bashrc 里)
echo 'export PATH=$PATH:/opt/gcc-arm-linux-gnueabihf-7.5.0/bin' >> ~/.bashrc
source ~/.bashrc
# 验证安装
arm-linux-gnueabihf-gcc --version
setenv.sh脚本,把所有的环境变量集中管理。这样切换项目时只需要source不同的脚本就行。
验证成功的话,你会看到类似这样的输出:
arm-linux-gnueabihf-gcc (GCC) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
2.3 ADB与Fastboot配置:调试的命脉
ADB和Fastboot,这两个工具是Android系统的标配。但咱们做仪表和中控,虽然跑的是Linux,但MTK的bootloader和调试框架依然兼容这套协议。
ADB的作用:
- 传输文件:
adb push/pull - 进入shell:
adb shell - 抓取日志:
adb logcat - 安装APK(中控系统用)
Fastboot的作用:
- 刷写分区:
fastboot flash boot boot.img - 解锁bootloader
- 重启到不同模式
安装配置:
# Ubuntu下安装ADB和Fastboot
sudo apt-get update
sudo apt-get install android-tools-adb android-tools-fastboot
# 验证安装
adb version
fastboot --version
配置USB权限(Linux下):
# 创建udev规则
sudo vim /etc/udev/rules.d/51-android.rules
# 添加以下内容(MTK的USB VID是0x0e8d)
SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", MODE="0666", GROUP="plugdev"
# 重新加载规则
sudo udevadm control --reload-rules
sudo udevadm trigger
配置完成后,插上开发板,运行adb devices,应该能看到设备列表。
2.4 验证环境:跑一个Hello World
环境搭没搭好,跑个程序就知道了。咱们写一个简单的交叉编译测试:
// hello.c
#include <stdio.h>
int main() {
printf("Hello from MTK8676!\n");
return 0;
}
# 交叉编译
arm-linux-gnueabihf-gcc -o hello hello.c
# 查看文件信息
file hello
# 输出应该包含 "ARM" 和 "ELF"
把编译好的hello文件通过ADB推送到开发板上:
adb push hello /data/
adb shell chmod +x /data/hello
adb shell /data/hello
如果看到Hello from MTK8676!,恭喜你,环境搭建成功了。
✅ 环境检查清单:
- SDK解压完整,无缺失文件
- 交叉编译工具链能正常编译
- ADB能识别设备
- Fastboot能进入刷机模式
- 目标板能运行交叉编译的程序
这一章的内容就这些。环境搭建看着琐碎,但真出了问题,排查起来特别费时间。我建议你把每一步的输出来个截图保存,万一后面出问题了,对比一下就知道哪步错了。
下一章咱们开始分析MTK8676的双系统架构,看看仪表和中控到底是怎么分工的。