欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

bootloader

程序员文章站 2022-03-04 19:59:28
NVM 驱动程序包括对 NVM 的擦除(erase)、编程(program)和校验(verify)等基本操作,也包括对 NVM 的加密(secure)/解密(unsecure)和加保护(protection)/解保护(unprotection)操作。Bootloader 必须使用 MCU 默认的中断向量表,因为每次复位后 MCU 都是从其默认中断向量表的复位向量取地址执行的;应用程序的中断向量必须进行偏移(通过相应的中断向量偏移寄存器,如 S12(X)系列 MCU 的 IVBR 寄存器或者 ARMCor...

NVM 驱动程序包括对 NVM 的擦除(erase)、编程(program)和校验(verify)等基本操作,也包括对 NVM 的加密(secure)/解密(unsecure)和加保护(protection)/解保护(unprotection)操作。

Bootloader 必须使用 MCU 默认的中断向量表,因为每次复位后 MCU 都是从其默认中断向量表的复位向量取地址执行的;应用程序的中断向量必须进行偏移(通过相应的中断向量偏移寄存器,如 S12(X)系列 MCU 的 IVBR 寄存器或者 ARM
Cortex M 系列 MCU 的 SCB->VTOR 寄存器);而 NVM(P-Flash)的擦除都是按照sector 进行的,所以为了充分利用 NVM(P-Flash)空间,都将 Bootloader 分区到包含默认中断向量表的若干 NVM(P-Flash)sector(S12(X)系列 MCU 的 NVM 最后若干 sector, ARM Cortex M 系列 MCU 从 0 地址开始的若干 sector);

MPC5744P 总共有 2.5MB 片上 Flash 存储器,包括 4 个 16KB 的 Low Flash Block
(416KB = 64KB)、2 个 32KB 的 Mid Flash Block(232KB = 64KB)和 6 个 64KB 的
High Flash Block(664KB = 384KB)以及 8 个 256KB 的 256KB Flash Block
(8
256KB = 2MB)

属于不同 RWW 分区的 Flash Block 间支持 Read-While-Read 操作,即允许在 A Flash Block 的 Flash 驱动可以操作 B Flash Block;地址 0x80000~0x817FFF 的 96KB Flash 空间包含 LowFlash Block0~1 和 Mid Flash Block0~1 总共 4 个 Flash Block 被
分配作为模拟 EEPROM 使用,在整个 2.5MB 的 Flash 地址空间中,只有 Low Flash Block2~3, High Flash Block0~1 和和 256KB Flash Block0~3 四个 Flash Block 可以作为启动位置(boot location0~7)。

所谓 boot location 就是每次 MCU 复位后运行 BAM 时寻找合法启动半字和复位向量的区域。复位后 CPU 将从 boot location0~7 依次查找由正取 boot_ID–0x5A 组成的
合法复位配置半字(RCHW)(高 16-bit 为 RCHW,低 16-bit 保留,位于所在 Flash block 的起始地址)和应用程序开始地址(32-bit 复位向量,位于所在 Flash block 的起始地址偏移 0x4 的地址):

引导辅助模块(BAM)是一个只读存储器块,其中包含根据设备的引导模式执行的VLE代码。 在以单芯片模式启动时(请参阅第5章,设备启动模式),除非在未找到有效启动扇区的情况下进入“静态模式”,否则不执行BAM中存储的代码。

本文地址:https://blog.csdn.net/lichenda/article/details/107300743