1、A133平台概述与开发环境搭建

各位同学,咱们直接进入正题。全志A133这颗芯片,我这两年经手了不少项目,从平板到智能家居面板都有它的身影。说白了,它就是一颗为安卓深度定制的“国民级”处理器。今天这一章,我带你把A133的底细摸清楚,再把开发环境一把梭哈搞定。

1.1 全志A133芯片特性与应用场景

A133是一颗四核Cortex-A53处理器,主频最高能到1.8GHz。你可能会问:“现在都八核、A76了,这芯片还够用吗?”嗯,我刚开始也有这个疑问。但实际做下来发现,对于安卓10/12这种系统,它的性能完全够用,关键是——成本控制得非常好。

我给大家列几个关键参数:

参数项 规格
CPU 四核 Cortex-A53 @ 1.8GHz
GPU Mali-G31 MP2
内存支持 LPDDR3/LPDDR4,最高4GB
显示输出 MIPI DSI / LVDS / HDMI
视频解码 H.265 4K@30fps
系统支持 Android 10 / 12

它的应用场景其实很广。我个人接触最多的就是教育平板和智能收银机。为什么?因为A133集成了丰富的显示接口和音频Codec,做交互类产品特别顺手。你想想看,一个方案搞定触控屏、摄像头、Wi-Fi蓝牙,BOM成本能压到很低。

核心优势:全志A133最大的卖点不是性能,而是“够用且便宜”。在安卓BSP开发中,它的驱动生态相对成熟,社区资料也比较多,适合新手入门。

1.2 搭建Ubuntu开发环境

做安卓BSP开发,Ubuntu是标配。我建议你用Ubuntu 18.04或20.04 LTS版本。为什么?因为全志官方SDK大多基于这两个版本验证过。我曾经试过用22.04编译,结果遇到一堆Python和GCC版本兼容问题,折腾了两天才搞定——嗯,这个坑你们就别踩了。

环境搭建分几步走:

  1. 安装Ubuntu系统——建议分配至少200GB磁盘空间,16GB以上内存。编译安卓源码很吃资源。
  2. 安装必要依赖包——这是最容易出问题的一步。
  3. 配置Git和Repo工具——全志源码用Repo管理。
  4. 安装JDK——安卓10需要OpenJDK 1.8。

依赖包安装命令,我直接给你整理好了:

sudo apt-get update
sudo apt-get install -y git-core gnupg flex bison build-essential \
  zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
  libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev \
  lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

小技巧:我习惯把这条命令保存成一个shell脚本,每次重装系统直接跑一遍。省时省力,还不容易漏包。

1.3 配置交叉编译工具链

交叉编译,说白了就是在你的x86电脑上编译出能在ARM芯片上跑的程序。A133用的是ARMv8-A架构,所以我们需要aarch64的交叉编译器。

全志官方SDK里其实自带了工具链,路径一般在:

prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/

但如果你要单独编译内核或U-Boot,我建议你手动装一个独立的工具链。我个人习惯用Linaro的版本:

wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
sudo mv gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu /opt/

然后配置环境变量:

export PATH=/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=arm64

注意:我曾经犯过一个低级错误——把32位和64位的工具链搞混了。A133是64位芯片,一定要用aarch64的编译器。用arm-linux-gnueabihf编译出来的内核,启动到一半就崩了,查了一天才发现是工具链选错了。

1.4 下载并编译Android源码

全志的安卓源码一般放在GitHub或全志的私有仓库里。你需要先拿到SDK的下载链接。假设你已经有了权限,下载步骤是这样的:

mkdir ~/a133_android
cd ~/a133_android
repo init -u <全志SDK的manifest仓库地址> -b android-10.0
repo sync -j4

repo sync这一步会下载整个安卓源码,大概30-50GB。网速好的话也得等一两个小时。我建议你晚上睡觉前跑,第二天早上起来就下好了。

下载完成后,开始编译:

source build/envsetup.sh
lunch a133_android10-userdebug
make -j8

lunch命令会问你选择哪个产品配置。全志A133一般对应a133_android10-userdebug这个选项。为什么选userdebug?因为它在user版本的基础上保留了root权限和调试工具,开发阶段最实用。

编译时间取决于你的机器配置。我自己的机器是i7-10700 + 32GB内存,第一次全编译大概花了2小时。如果你用虚拟机,时间会更长。

避坑指南:编译过程中如果报错,90%的情况是依赖包没装全。别慌,看错误日志,缺什么装什么。我曾经遇到一个libncurses5-dev没装导致的编译失败,装完就好了。

1.5 验证编译结果

编译成功后,你会看到类似这样的输出:

#### make completed successfully (01:58:32 (hh:mm:ss)) ####

生成的镜像文件在out/target/product/a133/目录下。关键文件有:

  • boot.img——内核和ramdisk
  • system.img——系统分区
  • vendor.img——厂商分区(驱动和HAL层)
  • userdata.img——用户数据分区

你可以用全志的PhoenixCard工具把这些镜像烧录到SD卡或eMMC上,然后上电启动。如果能看到安卓开机动画,恭喜你,环境搭建成功了!

个人经验:第一次烧录成功后,我建议你先把boot.imgsystem.img备份一份。后面改代码改崩了,还能快速恢复。这个习惯帮我省了不少时间。

好了,这一章的内容就到这儿。环境搭好了,后面咱们就能放开手脚做定制了。下一章我会带你深入A133的内核配置,把那些藏在Kconfig里的门道一个个挖出来。

本章要点回顾:

  • A133是四核A53芯片,适合中低端安卓设备
  • Ubuntu 18.04/20.04是推荐的开发环境
  • 交叉编译工具链必须选aarch64版本
  • 全志SDK用Repo管理,编译命令是make -jN
  • 编译产物在out/target/product/a133/