SmartBox 是一个基于 ARM Linux 平台的嵌入式多媒体应用盒子,运行在树莓派 5 上,配备 TFT LCD 触摸液晶屏。
- 开发环境: VMware + Ubuntu, VSCode
- 编程语言: C语言
- 目标平台: 树莓派 5 (ARM Linux)
- 核心技术: 多进程/多线程、管道通信、双向循环链表、mplayer 移植
采用界面逻辑与业务主逻辑分离架构,通过管道实现进程间通信,大幅提升程序运行稳定性与功能可扩展性。
┌─────────────────────────────────────────────────────────┐
│ Application Main │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ UI Layer │ │Business Logic│ │ Data Layer │ │
│ │ (UIManager)│ │ (Modules) │ │ (Lists) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └────────────────┴────────────────┘ │
│ Pipe Communication │
└─────────────────────────────────────────────────────────┘
- 完成mplayer开源播放器移植
- 采用链表统一管理音视频资源
- 支持播放、暂停、停止、上一曲、下一曲
- 音量控制、播放进度显示
- 支持多种播放模式:顺序播放、循环播放、单曲循环、随机播放
- 无卡顿无音画不同步
- 通过递归搜索文件目录
- 采用双带头双向循环链表存储图片和缩略图
- 优化大数量图片加载逻辑,缩略图加载耗时降低30%
- 支持图片切换、删除操作
- 缩略图视图和全屏视图切换
- 基于多线程并发开发
- 通过子线程处理背景音乐与界面刷新
- 解决画面卡顿问题,游戏帧率稳定在30fps以上
- 支持双人对战和人机对战
- 完整实现悔棋、和棋判断等核心功能
- AI难度可调:简单、中等、困难
- 多线程架构:渲染线程、逻辑线程、音乐线程
- 道具系统:生命、武器升级、护盾、炸弹
- 多种敌人类型:普通、快速、坦克、Boss
- 关卡切换系统,最高10关
- 爆炸效果动画
- 游戏帧率稳定在30fps以上
smartBox/
├── include/ # 头文件目录
│ ├── common.h # 公共定义
│ ├── list.h # 双向循环链表
│ ├── framebuffer.h # 帧缓冲绘图
│ ├── touch.h # 触摸输入
│ ├── ui.h # UI界面管理
│ ├── app.h # 应用主控
│ ├── player.h # 媒体播放器
│ ├── album.h # 相册管理
│ ├── gomoku.h # 五子棋游戏
│ └── airplane.h # 飞机大战游戏
├── src/ # 源代码目录
│ ├── main/ # 主程序
│ │ ├── main.c
│ │ └── app.c
│ ├── lib/ # 公共库
│ │ ├── list.c
│ │ ├── framebuffer.c
│ │ └── touch.c
│ ├── ui/ # UI模块
│ │ └── ui.c
│ ├── player/ # 播放器模块
│ │ └── player.c
│ ├── album/ # 相册模块
│ │ └── album.c
│ └── games/ # 游戏模块
│ ├── gomoku.c
│ └── airplane.c
├── config/ # 配置文件
│ └── smartbox.conf
├── resources/ # 资源文件
│ ├── images/ # 图片资源
│ ├── sounds/ # 音频资源
│ └── fonts/ # 字体资源
└── Makefile # 编译脚本
- 安装 ARM 交叉编译工具链
- 配置环境变量
export PATH=/path/to/arm-toolchain/bin:$PATH
export CC=arm-linux-gccmake clean
make编译生成的可执行文件位于 bin/smartbox
- 将编译好的程序传输到目标板
- 确保媒体资源目录存在:
/mnt/music- 音乐文件/mnt/video- 视频文件/mnt/pictures- 图片文件
- 确保mplayer已正确移植并可用
- 运行程序:
./bin/smartbox- 树莓派 5 (ARM Linux)
- TFT LCD 触摸液晶屏
- 屏幕分辨率: 800x480
- ARM Linux 内核 (支持Framebuffer)
- mplayer (移植版本)
- 触摸屏驱动 (/dev/input/event0)
- Framebuffer设备 (/dev/fb0)
SmartBox Development Team
MIT License