第一章 裸机开发环境搭建

说实话,做MTK平台裸机开发,第一步就是搭环境。很多人觉得这事简单,不就是装个编译器嘛。但我见过太多新手卡在这一步,一卡就是好几天。我自己刚开始搞的时候也踩过不少坑,今天就把这些经验一次性说清楚。

1.1 交叉编译工具链的选择与安装

先说说什么是交叉编译。你想想看,你的电脑是x86架构,但MTK芯片是ARM架构。在x86上编译出ARM能跑的程序,这就是交叉编译。说白了,就是让电脑帮手机芯片干活。

我个人习惯用GCC ARM Embedded,也就是arm-none-eabi-gcc。这套工具链是ARM官方出的,稳定可靠。我在项目中遇到过用其他工具链编译出来的程序,跑着跑着就莫名其妙死机,换成官方的就好了。

Windows下的安装步骤

  1. 去ARM官网下载gcc-arm-none-eabi的Windows安装包
  2. 双击安装,路径建议不要有中文和空格
  3. 我一般装到 C:\arm_gcc 这个目录
  4. 安装完成后,把 C:\arm_gcc\bin 加到系统环境变量PATH里
小技巧:装完后打开cmd,输入 arm-none-eabi-gcc --version,如果能显示版本号,说明装好了。如果提示找不到命令,八成是环境变量没配好。

Linux下的安装步骤

Linux下就简单多了。我推荐用apt直接装:

sudo apt-get update
sudo apt-get install gcc-arm-none-eabi

嗯,这里要注意。有些老版本的Ubuntu仓库里可能没有这个包。如果遇到这种情况,可以去ARM官网下载Linux版本的tar包,手动解压到 /opt 目录下,然后同样配置环境变量。

我曾经在Ubuntu 16.04上遇到过这个问题,折腾了半天才发现是源的问题。后来换了清华的源,一下就装上了。

1.2 驱动安装——让电脑认识你的开发板

工具链装好了,接下来要让电脑能跟开发板通信。MTK开发板通常通过USB接口连接电脑,但Windows不会自动识别,需要装驱动。

常用的驱动有两种:

驱动类型 适用场景 备注
VCP驱动 串口通信 最常用,下载调试都靠它
DFU驱动 固件升级 某些MTK芯片专用

我个人建议先装VCP驱动。大部分MTK开发板用的都是FTDI或者CH340芯片。你可以看看板子上USB转串口芯片的型号,然后去官网下对应的驱动。

注意:Windows 10/11有时候会自动装驱动,但自动装的驱动可能不完整。我建议手动安装官方驱动,避免后续出现奇奇怪怪的问题。

1.3 调试工具——SecureCRT与Putty

驱动装好了,开发板插上电脑,设备管理器里能看到一个新的COM口。这时候就需要一个串口工具来跟板子对话了。

常用的有两个:

  • SecureCRT:功能强大,支持标签页,我平时主力用这个
  • Putty:轻量级,免费开源,应急用很方便

Putty的配置

Putty配置很简单,打开后:

  1. Session页面,Connection type选Serial
  2. Serial line填你的COM口号(比如COM3)
  3. Speed填115200(MTK默认波特率)
  4. 点击Open,就能看到板子的输出信息了

SecureCRT的配置

SecureCRT稍微复杂一点,但用习惯了真的很顺手:

  1. File → Quick Connect
  2. Protocol选Serial
  3. Port选对应的COM口
  4. Baud rate填115200
  5. Data bits 8, Parity None, Stop bits 1
  6. Flow Control全部取消勾选

关键点:Flow Control一定要关掉!我曾经在这个问题上栽过跟头。开着RTS/CTS,板子死活不输出信息,我还以为是硬件坏了,折腾了两天才发现是软件设置的问题。

1.4 验证环境——跑个Hello World

环境都搭好了,我们来验证一下。写个最简单的程序:

// main.c
void main(void) {
    volatile int i;
    while(1) {
        // 空循环,让板子别跑飞
        for(i = 0; i < 100000; i++);
    }
}

编译命令:

arm-none-eabi-gcc -c main.c -o main.o
arm-none-eabi-ld -Ttext 0x0 main.o -o main.elf
arm-none-eabi-objcopy -O binary main.elf main.bin

把生成的main.bin下载到开发板,打开串口工具,如果板子正常跑起来了,恭喜你,环境搭建成功!

说实话,第一次看到板子上的LED按照你的程序闪烁时,那种成就感真的很棒。我记得我第一次点亮LED时,盯着那个小灯看了好几分钟,心里美滋滋的。

1.5 常见问题与避坑指南

最后,分享几个我踩过的坑:

  • 驱动装不上:试试禁用Windows的数字签名强制,很多国产USB芯片的驱动没签名
  • 串口没输出:检查波特率是不是115200,Flow Control关了没
  • 编译报错:看看环境变量配对了没,有时候装了多个版本的GCC会冲突
  • 下载失败:检查开发板供电,有些板子USB供电不足会导致下载不稳定

我曾经有一次,板子怎么都连不上,换了三根USB线都不行。最后发现是电脑的USB口供电不足,换到机箱后面的USB口就好了。这种小问题最折腾人,所以建议大家一开始就用质量好的USB线,插在电脑原生USB口上。

好了,环境搭建就讲到这里。下一章我们开始真正写代码,让板子动起来。