创龙T113-i开发板:从SDK解压到镜像打包,一个完整Linux系统构建实录(含80分钟编译避坑)
创龙T113-i开发板实战从零构建嵌入式Linux系统的完整指南1. 开发环境准备与SDK解压第一次接触全志T113-i开发板时最令人头疼的莫过于搭建开发环境。与常见的树莓派或BeagleBone开发板不同工业级嵌入式设备往往需要更专业的工具链支持。我清晰地记得那个周末当我从创龙官方获取到TLT113-EVM(Buildroot-2019.02)_V1.8软件包时面对十几个GB的压缩文件完全不知从何入手。关键准备工作清单Ubuntu 20.04 LTS主机推荐使用物理机而非虚拟机至少200GB可用磁盘空间稳定的网络连接某些依赖包需要在线下载Samba共享服务配置完成方便Windows与Linux文件交换解压SDK时有个容易踩的坑官方提供的LinuxSDK-v2.5.tar.gz需要使用特定参数解压。我最初尝试的tar -xvf命令导致部分文件权限错误后来发现必须加上-z参数处理gzip压缩tar -zxvf LinuxSDK-v2.5.tar.gz -C /home/developer/SDK解压后的目录结构值得特别关注T113-i_v1.0/ ├── brandy/ # Bootloader相关 ├── buildroot/ # 文件系统构建 ├── device/ # 设备配置 ├── kernel/ # Linux内核 └── tools/ # 辅助工具2. 依赖安装与环境配置开发板配套的install_tools.sh脚本理论上可以一键安装所有依赖但实际执行时我发现几个潜在问题Ubuntu软件源配置默认的cn.archive.ubuntu.com源在国内访问较慢建议替换为阿里云或清华镜像源依赖冲突某些已安装的软件包版本可能与脚本要求不符交互提示脚本运行中途会出现[y/N]选择必须手动选择N更稳妥的做法是先检查关键依赖# 检查make版本 make --version # 检查gcc可用性 gcc --version # 安装基础编译工具 sudo apt-get install build-essential libncurses5-dev常见依赖问题解决方案错误提示原因分析解决方法make: command not found基础编译工具缺失sudo apt install build-essentialfatal error: curses.hncurses库未安装sudo apt-get install libncurses5-devNo such file or directory32位兼容库缺失sudo apt-get install gcc-multilib3. Buildroot dl包处理技巧官方提供的dl.tar.gz包含预下载的开源软件包能显著缩短首次编译时间。但要注意解压路径必须精确对应Buildroot目录结构解压前应先确认目标目录权限网络不稳定时可考虑分卷压缩包传输正确的解压命令应该是tar xvf dl.tar.gz -C /home/developer/SDK/T113-i_v1.0/buildroot/buildroot-201902/dl目录作用解析缓存所有从网络下载的源码包支持离线编译环境搭建包含工具链、内核补丁等关键组件文件校验通过sha256sum保证完整性4. 编译配置与实战经验执行./build.sh config时会遇到第一个重要选择硬浮点(gnueabihf)还是软浮点(gnueabi)。根据我的实测选择硬浮点能提升20-30%的浮点运算性能但某些老旧应用可能存在兼容性问题显示设备选择影响后续Qt应用开发完整编译流程时间参考i7-11800H/32GB RAM步骤首次编译二次编译说明环境清理2min1min建议每次完整编译前执行配置检查3min1min依赖网络质量完整编译85min45min并行编译可加速镜像打包8min5min依赖文件系统大小那个必须执行两次./build.sh的玄学问题困扰了我很久。后来通过分析脚本发现第一次编译主要生成工具链第二次才是真正的系统构建。官方文档对此解释模糊导致很多开发者浪费时间。5. 内核与U-Boot定制开发当需要修改内核配置时传统的menuconfig方式在T113-i上有些特殊必须先完成首次编译生成out目录配置变更后必须重新编译整个SDK设备树修改需要特别处理内核配置黄金法则# 进入内核构建目录 cd out/kernel/build # 启动配置界面 make ARCHarm menuconfig # 保存后回到SDK根目录 cd ../../../.. # 必须重新编译 ./build.shU-Boot配置更是暗藏玄机。我曾在修改环境变量后直接打包结果导致板子无法启动。后来发现必须执行./build.sh brandy ./build.sh pack这个顺序绝对不能错否则生成的bootloader会缺少关键参数。6. 交叉编译链配置秘籍SDK编译完成后在out/t113_i/tlt113-evm-emmc/longan/buildroot/host/usr/bin下可以找到生成的交叉编译工具链。但直接使用会遇到路径问题最佳实践是永久添加环境变量测试工具链有效性建立快速访问别名我的.bashrc配置示例# T113-i交叉编译配置 export ARCHarm export CROSS_COMPILEarm-linux-gnueabihf- export PATH$PATH:/home/developer/SDK/T113-i_v1.0/out/t113_i/tlt113-evm-emmc/longan/buildroot/host/usr/bin测试命令特别有意思# 编译测试程序 arm-linux-gnueabihf-gcc test.c -o test # 查看文件格式 file test # 应显示ARM aarch64架构7. 镜像打包与烧录技巧执行./build.sh pack时系统会生成多种镜像格式SD卡版本boot0_sdcard.fex boot_package.fexNAND版本boot0_nand.fex rootfs.ubifseMMC版本boot0_emmc.fex rootfs.ext4我常用的质量检查步骤检查镜像文件大小是否合理使用binwalk分析镜像内容在QEMU中测试启动需特别配置实际烧录前备份原始固件烧录速度对比介质类型传输方式平均速度稳定性SD卡USB读卡器15MB/s★★★★eMMCFastboot25MB/s★★★★★NANDPhoenixSuit8MB/s★★☆8. 常见问题诊断与解决问题1编译中途报错recipe for target ... failed解决方案检查磁盘空间df -h确认内存是否不足free -m尝试单线程编译make -j1问题2板子启动卡在U-Boot阶段诊断步骤# 查看串口输出 sudo screen /dev/ttyUSB0 115200 # 检查环境变量 printenv # 测试内核加载 fatload mmc 0:1 0x41000000 zImage问题3文件系统挂载失败应对方案检查bootargs参数验证文件系统格式重新生成ext4镜像记得那次文件系统权限错误导致ssh无法启动最终发现是/etc/ssh目录权限被误改为777。这种问题在嵌入式开发中尤为常见建议制作一个检查清单关键目录权限设备节点存在性服务启动顺序环境变量一致性9. 性能优化实战建议经过三个月的项目实战我总结出几条T113-i特有的优化技巧编译加速使用ccache缓存编译结果设置MAKEOPTS-j$(nproc)关闭不必要的内核模块启动优化# 内核参数添加 consolettyS0,115200 earlyprintk rootwait # 禁用不必要的服务 systemctl mask avahi-daemon.service存储优化SquashFS替代ext4节省空间UBIFS针对NAND优化使用OverlayFS实现只读根文件系统网络优化# 调整TCP参数 echo 1024 /proc/sys/net/core/somaxconn # 优化WiFi功耗 iw dev wlan0 set power_save on10. 进阶开发方向当基本系统运行稳定后可以考虑实时性增强替换为Linux-RT内核调整线程优先级使用CPU隔离技术安全加固# 启用SELinux setenforce 1 # 加固SSH配置 echo PermitRootLogin no /etc/ssh/sshd_configOTA升级方案A/B分区设计使用SWUpdate工具增加回滚机制性能监测系统# 安装常用工具 opkg install sysstat procps # 实时监控 sar -u 1 10在最近的一个工业控制器项目中我们通过优化内核调度参数将系统响应延迟从15ms降低到2ms以内。这充分证明了T113-i在实时控制领域的潜力。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2459255.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!