1. OK153-S开发板编译环境搭建实录
作为一款基于全志T153处理器的嵌入式开发板,OK153-S在工业控制和物联网领域有着广泛应用。最近我在Ubuntu 24.04环境下为这块开发板构建Linux系统时,遇到了一些编译环境配置的坑,这里把完整过程记录下来,特别是飞凌官方资料包更新前后的差异对比。
1.1 开发环境准备要点
官方最初提供的"OK153-S_Linux5.10.198_用户资料_Alpha1"资料包存在编译问题,经过社区反馈后,飞凌嵌入式更新发布了"OK153-S_Linux5.10.198临时资料_20260108"版本。这个新资料包中的源码经过修正,可以顺利完成编译。
在开始之前,需要准备:
- 64位Ubuntu 24.04.3系统(实测18.04及以上版本均可)
- 至少100GB的可用磁盘空间
- 稳定的网络连接(用于下载依赖包)
- 开发板配套的Type-C数据线
重要提示:务必使用更新后的临时资料包,原始Alpha1版本存在已知编译问题,会导致构建失败。
1.2 关键依赖库安装
全志T153平台的交叉编译需要特定的32位兼容库支持。以下是经过验证的依赖安装命令集:
bash复制# 启用i386架构支持
sudo dpkg --add-architecture i386
sudo apt update
# 安装基础32位运行库
sudo apt install -y \
libc6:i386 \
libc6-dev-i386 \
libstdc++6:i386 \
lib32gcc-s1 \
lib32stdc++6
# 补充开发工具链依赖
sudo apt install -y \
lib32ncurses6 \
lib32z1 \
lib32z1-dev \
gawk \
build-essential \
flex \
bison
这些依赖包主要提供:
- 32位C/C++运行时库(libc6:i386等)
- 交叉编译工具链支持(lib32z1-dev等)
- 内核构建必需工具(gawk、flex等)
安装完成后,建议执行sudo apt autoremove清理不必要的包,保持系统整洁。
2. 源码获取与预处理
2.1 资料包结构解析
从飞凌官网下载的"OK153-S_Linux5.10.198临时资料_20260108"压缩包,解压后主要包含以下目录:
code复制OK153-S_Linux5.10.198临时资料_20260108/
├── 1-工具/ # 烧录工具和实用程序
├── 2-镜像和源码/ # 预编译镜像和源代码
│ ├── 镜像/ # 官方预构建的系统镜像
│ └── 源码/ # 需要编译的Linux内核和uboot
├── 3-文档/ # 开发板手册和原理图
└── 4-例程/ # 示例代码和应用demo
我们需要重点关注"2-镜像和源码/源码"目录,这里包含了完整的Linux内核和uboot源代码。
2.2 源码目录准备
建议将源码目录复制到Ubuntu用户主目录下,并设置正确的权限:
bash复制# 复制源码到工作目录
cp -r "OK153-S_Linux5.10.198临时资料_20260108/2-镜像和源码/源码" ~/ok153-src
# 设置目录权限
chmod -R 755 ~/ok153-src
cd ~/ok153-src
源码目录结构如下:
code复制ok153-src/
├── linux-5.10/ # Linux 5.10内核源码
├── uboot-2020.10/ # U-Boot引导程序源码
├── tools/ # 本地编译工具
└── build.sh # 自动化构建脚本
3. 构建系统全流程
3.1 编译环境检查
在开始编译前,建议验证环境配置是否正确:
bash复制# 检查32位库支持
file /usr/lib32/libc.so.6
# 检查工具链版本
gcc --version
make --version
预期应该看到类似输出:
code复制/usr/lib32/libc.so.6: ELF 32-bit LSB shared object
gcc (Ubuntu 11.4.0-1ubuntu1~24.04) 11.4.0
GNU Make 4.3
3.2 内核编译步骤
进入内核源码目录执行编译:
bash复制cd ~/ok153-src/linux-5.10
# 导入默认配置
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- ok153_defconfig
# 启动编译进程(-j参数根据CPU核心数调整)
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
编译过程中需要注意:
- 首次编译可能需要30-60分钟,取决于主机性能
- 如果出现依赖缺失错误,根据提示安装对应包
- 编译完成后会在arch/arm/boot目录生成zImage内核镜像
3.3 U-Boot编译方法
uboot的编译流程类似:
bash复制cd ~/ok153-src/uboot-2020.10
# 清理旧构建
make distclean
# 配置并编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- ok153_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
成功编译后会生成u-boot-sunxi-with-spl.bin文件,这是需要烧录到开发板的引导程序。
4. 镜像打包与烧录
4.1 生成完整系统镜像
飞凌提供了自动化打包脚本:
bash复制cd ~/ok153-src
./build.sh pack
这个脚本会:
- 将内核zImage和uboot镜像合并
- 打包rootfs文件系统
- 生成最终的sunxi-sdcard.bin烧录镜像
4.2 使用PhoenixSuit烧录
- 开发板通过Type-C连接电脑
- 按住开发板上的FEL按钮同时按复位键进入烧录模式
- 在Ubuntu上运行PhoenixSuit工具:
bash复制sudo ./PhoenixSuit_linux
- 选择生成的sunxi-sdcard.bin文件
- 按照提示完成烧录过程
烧录注意事项:确保开发板供电稳定,烧录过程中不要断开连接
5. 常见问题排查
5.1 编译失败问题集
问题1:缺少32位库导致的链接错误
code复制/usr/bin/ld: cannot find -lz
解决方案:重新安装lib32z1-dev包
bash复制sudo apt install --reinstall lib32z1-dev
问题2:内核配置不匹配
code复制Error: Kernel configuration is invalid
解决方法:清理配置后重新生成
bash复制make distclean
make ARCH=arm ok153_defconfig
5.2 烧录异常处理
现象:PhoenixSuit无法识别设备
- 检查USB连接是否正常
- 确认已安装驱动:
sudo apt install sunxi-tools - 尝试不同的USB端口
现象:烧录后无法启动
- 检查电源供电是否充足(建议使用5V/2A适配器)
- 确认烧录镜像版本与硬件匹配
- 尝试重新烧录uboot部分
6. 开发建议与优化
6.1 编译加速技巧
- 使用ccache缓存加速重复编译:
bash复制sudo apt install ccache
export CC="ccache gcc"
export CXX="ccache g++"
- 分布式编译(在多台机器上并行编译):
bash复制make -j$(nproc) ARCH=arm DISTCC=1 CROSS_COMPILE=arm-linux-gnueabihf-
6.2 自定义内核配置
如果需要修改内核配置:
bash复制make ARCH=arm menuconfig
推荐调整的选项:
- 启用CONFIG_PREEMPT_RT实时补丁
- 增加CONFIG_CMA_SIZE_MBYTES=64(连续内存分配)
- 根据实际需求裁剪不需要的驱动模块
6.3 调试方法
- 串口调试连接:
bash复制sudo picocom -b 115200 /dev/ttyUSB0
- 内核日志等级调整(在uboot命令行):
bash复制setenv bootargs console=ttyS0,115200 loglevel=8
- 使用kgdb进行内核调试:
bash复制kgdboc=ttyS0,115200 kgdbwait
通过以上步骤,应该能够顺利完成OK153-S开发板的系统编译和烧录。如果在实际操作中遇到其他问题,建议查阅飞凌官方的errata文档或联系技术支持。
