前言
上一篇文章介绍了STM32 UDS Bootlodaer开发中的需求。本文根据需求开发bootloader软件。
Bootloader参考github大神SummerFalls的UDS_S32K144_XXX.具体实施到STM32中还需要不少修改的地方,原工程对UDS协议的支持也不完善。本文完善了一部分。
NXP官网也更新了UBL,支持S32K3系列,可以参考。
注意:该booloader不适用于量产,只适用与个人学习。
STM32启动过程
在开始开发bootloader之前,我们需要了解清楚STM32的启动过程,该部分在网上有很多回答。
从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原
有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x0000
0000或0x0800 0000。
假设flash起始地址为0x08000000,则
在程序编译成功之后,可以看到0x08000000对应的值为0x20000C40-即初始化栈顶值,0x08000004对应的值为0x080001FD-为Reset_Handler地址。