在嵌入式开发中,经常要用到Flashloader功能,今天我们就来开始以飞思卡尔Kinetis的Flashloader为例来讲讲,大概需要4~5节,内容比较多,每天掌握一点,不要贪多。今天先简单介绍下Kinetis的Flashloader。
简介
飞思卡尔kenetis设备的flashloader的主要任务就是装载用户固件镜像到Flash,镜像分为两部分:flashloader_loader和flashloader, 在设备复位后,flashloader_loader首先执行, flashloader_loader程序将flaoder镜像从flash拷贝到内存RAM中,此后设备将会从RAM中开始执行flashloader程序。对于飞思卡尔kinetis设备可以通过UART, CAN, I2C, SPI等外设接口以从模式与主机进行交流通信和响应主机的命令,我们常用的固件下载升级就是一个典型应用。Kinetis设备的flashloader总是用命令协议和主机进行通信,主机应用可以查询可用的命令集。
特性
Kinetis Flashloader的主要特性如下:
- 支持UART, CAN, I2C, SPI外设接口
- 自动检测激活的外设
- UART和CAN外设支持自动波特率设置识别
- 所有外设的通用打包协议
- 打包错误检测和重发功能
- 运行中被flashloader使用的RAM是被保护的
- 提供读取设备属性的命令,例如Flash和RAM的大小
支持的命令如下
功能描述
内存映射
Kinetis Flashloader 执行时使用RAM内存映射分布如下
需要注意的一点是Kinetis Flashloader 需要的最小内存RAM是16KB,所以片上RAM小于16KB的器件Flashloader将不可用。必须保证RAM大于16KB。
启动过程
Kinetis Flashloader执行时操作过程如下:
- 初始化.data和.bss段
- 初始化支持的外设
- 等待一个外设的开始通信
- 对激活外设没有超时退出检测过程
- 如果通信被检测到,那么非激活外设将被关闭,然后进入命令阶段。
流程图如下:
|