Ubuntu13.04搭建OK6410-A开发环境全指南
1. 项目概述为什么选择Ubuntu13.04搭建OK6410-A开发环境十年前的老系统Ubuntu13.04在今天看来可能有些过时但对于嵌入式开发特别是OK6410-A这类经典ARM11开发板而言恰恰是最稳定的选择。我经手过二十多块OK6410-A开发板的环境搭建实测发现Ubuntu13.04的glibc 2.17和gcc 4.7.3工具链与这块开发板的兼容性最佳不会出现新版系统常见的工具链版本冲突问题。OK6410-A作为三星S3C6410处理器的代表开发板在工业控制、智能家居等领域仍有大量存量设备。它的开发环境需要以下核心组件交叉编译工具链arm-linux-gcc 4.3.2tftp服务用于内核镜像传输nfs服务用于根文件系统挂载串口调试工具minicom注意虽然Ubuntu13.04官方已停止维护但作为开发环境可以冻结apt源到old-releases.ubuntu.com实测这个源至今仍能正常使用。2. 开发环境搭建全流程实录2.1 系统安装与基础配置首先需要准备32位Ubuntu13.04镜像64位系统会有库兼容问题。安装时注意分区建议/boot 200MB、swap 2GB、/ 至少20GB安装时取消所有更新选项安装完成后立即执行以下命令锁定源sudo sed -i s/archive.ubuntu.com/old-releases.ubuntu.com/g /etc/apt/sources.list sudo apt-get update基础软件包安装清单sudo apt-get install vim git make gcc g libncurses5-dev \ tftpd-hpa nfs-kernel-server minicom lzop2.2 交叉编译工具链部署OK6410-A官方推荐使用arm-linux-gcc 4.3.2版本这个版本对新版glibc存在兼容问题但在Ubuntu13.04上运行完美解压工具链到/opt目录sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C /opt配置环境变量echo export PATH$PATH:/opt/4.3.2/bin ~/.bashrc source ~/.bashrc验证安装arm-linux-gcc -v应显示gcc version 4.3.2 (Sourcery G Lite 2008q3-72)踩坑记录不要在工具链路径中包含空格或中文否则会导致编译时出现诡异的file not recognized错误。2.3 网络服务配置TFTP服务配置修改/etc/default/tftpd-hpaTFTP_USERNAMEtftp TFTP_DIRECTORY/tftpboot TFTP_ADDRESS0.0.0.0:69 TFTP_OPTIONS-l -c -s创建目录并设置权限sudo mkdir /tftpboot sudo chmod 777 /tftpboot sudo service tftpd-hpa restartNFS服务配置编辑/etc/exports/nfsroot *(rw,sync,no_root_squash,no_subtree_check)创建挂载点sudo mkdir /nfsroot sudo chmod 777 /nfsroot sudo exportfs -a sudo service nfs-kernel-server restart3. 开发板连接与调试实战3.1 串口终端配置使用minicom连接开发板sudo minicom -s配置参数Serial Device: /dev/ttyUSB0Bps/Par/Bits: 115200 8N1Hardware Flow Control: No实用技巧在~/.bashrc中添加alias mcminicom -c on可以启动带颜色显示的minicom3.2 开发板启动流程正常启动日志应包含以下关键信息U-Boot 2010.06 (Mar 12 2013 - 16:25:33) DRAM: 256 MB Flash: 2 MB NAND: 256 MiB通过tftp加载内核tftp 0x50008000 zImage bootm 0x500080003.3 常见启动问题排查问题1tftp传输超时检查开发板与主机是否在同一网段确认主机防火墙已关闭在开发板执行ping测试网络连通性问题2内核panic无法挂载根文件系统检查nfs导出路径是否正确确认内核配置开启了NFS根文件系统支持尝试在uboot设置正确的nfsroot参数setenv bootargs root/dev/nfs nfsroot192.168.1.100:/nfsroot ip192.168.1.10:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off4. 开发环境验证与优化4.1 编译测试程序创建helloworld.c#include stdio.h int main() { printf(OK6410-A Cross Compile Test\n); return 0; }编译命令arm-linux-gcc helloworld.c -o helloworld file helloworld应显示ELF 32-bit LSB executable, ARM, version 1 (SYSV)4.2 系统性能调优关闭图形界面提升性能sudo systemctl set-default multi-user.target增加swap空间针对大项目编译sudo dd if/dev/zero of/swapfile bs1M count2048 sudo mkswap /swapfile sudo swapon /swapfile修改make并发编译数根据CPU核心数alias makemake -j44.3 开发环境备份方案建议使用rsync定期备份关键目录rsync -avz --delete /opt /nfsroot /tftpboot backupserver:/ok6410_backup也可以打包成镜像方便迁移sudo tar cvpzf ok6410_env.tar.gz --exclude/proc --exclude/mnt --exclude/sys /我在实际使用中发现这套环境虽然老旧但编译出的内核镜像稳定性比在新系统上编译的高出不少。特别是处理GPIO中断时老工具链生成的驱动几乎没有出现过误触发的情况。对于还在维护OK6410-A设备的工程师建议保持这个环境不要轻易升级。

相关新闻