1、需求
想基于ESP32芯片做一个能玩FC、MD游戏的模拟器游戏机
2、硬件设计
ESP32通过SPI连接一块3.2寸的TF LCD屏,分辨率320x240
ESP32通过IIS连接音频解码模块,音频输出到耳机。
ESP32通过SD控制器连接TF卡,TF卡用于存放游戏资源
ESP32通过IIC并口扩展输入按键,用于手柄按键输入
ESP32通过蓝牙连接PS3手柄,使用PS3手柄作为控制器。
3、软件设计
软件分为两层,一层为组件sdk,一层为应用层。
组件sdk层主要是封装各个驱动,封装基本的控件接口,比如进度条等。
应用又分为3部分,第一部分是base程序,用于烧录游戏机管理软件play和各个游戏机主体。第二部分为游戏管理软件,用来选择启动哪种模拟器。第三部分为模拟器主体,分为FC、MD等。
3、分区表设计
5、启动流程分析
1、系统上电,ESP32芯片内部默认引导程序启动,这部分代码固化在芯片内,无法修改。然后从0x1000处加装第二阶段bootloader
2、bootloader的代码在idf中的component 目录下bootloader\subproject\main\bootloader_start.c
本阶段会读取分区表和OTA数据,根据OTA配置跳转到分区表对应的应用去执行,没有OTA数据的时候,默认从0x10000运行factory app,这里即base程序,等待烧录。