老司机带路:LPC82x 存储器及读写保护 手到擒来!

关键字 :LPC82x

存储器,顾名思义就是用来存放东西的地方,那么对于一款 MCU 而言,在性能描述的时候,我们都会说 SRAM,Flash 的容量大小有多少。对于初学者来说,可能不会去理会这些东西,拿到东西就只用。其实不然,一颗 MCU 的内存有多大是十分重要的,其主要是用来存放代码和和数据的器件。代码为什么可以运行,代码量是多少,定义的 int、short 等等类型的变量究竟是怎么分配和存储的,这些问题都和内存有关系。此外,因此,在我们选择 MCU 进行开发的时候就要去评估其内存是否满足需求。今天,小编将带领大家一起去学习 LPC82x 系列存储器与读写保护。

首先,我们来看一下 LPC82x 系列的存储器映射(Memory Map)

存储器映射(Memory Map)是指把芯片中或芯片外的 FLASH,RAM,ROM,Peripheral 外设等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部 RAM 或 FLASH 的情况下可进行自定义。

 

LPC82x 的地址空间是 4GB, 指向 2^32=4G 的地址空间,也就是 0x0000_0000——0xFFFF_FFFF 这一大块空间。

根据图中描述,Cortex-M0+ 内核将 0x0000_0000——0xFFFF_FFFF 这块 4G 大小的空间分成 6 大块:Flash、SRAM、MTB、ROM、外部设备、专用外设总线、特定厂商等。

一、FLASH 控制器

Flash 模块包括:Flash 主存储区(Main memory)、Flash 信息区(Information block),以及 Flash 存储接口寄存器区(Flash memory interface)。

针对 Flash 部分技术 Support,经常有客户会问如何控制 Flash 的访问时间和如何获得签名?

1. 控制闪存(FLASH)访问时间

  • 当 ARM 时钟速度调整前,需要调整闪存访问时间

           ① ARM 速度 20MHz 以上,闪存访问需要 2 个系统时钟

           ② ARM 速度在 20MHz 及以下,闪存访问需要 1 个系统时钟

  • 实例代码

                            typedefenum{

                            /*!< 1 CPU clocks Flash accesses for up to 20 MHz CPU */

                            FLASHTIM_20MHZ_CPU = 0,

                            /*!< 2 CPU clocks Flash accesses for up to 30 MHz CPU */

                           FLASHTIM_30MHZ_CPU = 1,

                           } FMC_FLASHTIM_T;

                           voidChip_FMC_SetFLASHAccess(FMC_FLASHTIM_T clks);

  • 注意,不要在低功耗模式下调整闪存访问时间

2. 获得闪存(FLASH)内容签名

      ① 提供 16 字节对齐起始闪存(FLASH)地址

      ② 提供 16 字节对齐结束闪存(FLASH)地址,并开始计算签名

      ③ 等待判断签名计算完成

      ④ 获得 32bits 闪存内容签名

  • 实例代码(计算从 0x4000 地址到 0x8000 地址的签名)

                            const static uint32_t FLASH_SIGNATURE_START_ADDR = 0x1000;

                            const static uint32_t FLASH_SIGNATURE_END_ADDR = 0x4000;

                            Chip_FMC_ComputeSignature(FLASH_SIGNATURE_START_ADDR,

                            FLASH_SIGNATURE_END_ADDR);

                            while(Chip_FMC_IsSignatureBusy());

                            uint32_t flash_signature = Chip_FMC_GetSignature(0);

二、SRAM

以下是 LPC82x 参考手册中的一段原话:

LPC824 起始地址是 0x1000 0000,终止地址是 0x1000 0050。

SRAM 的理解比较简单,其作用是用来存取各种动态的输入输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。设备断电后,SRAM 中存储的数据就会丢失。

 

三、ISP(In System Programming)

ISP 由英文 In-System Programming 三个首字母组成,译成中文即:在系统编程。通过调用芯片内部固化的 Bootloader 软件实现通过 UART 串口编程片内 Flash 的功能,实现小批量固件烧录,也可以实现固件升级。


1. ISP 的通常用法 - 1

  • 通过串口(USART)ISP 命令和 ISP 程序完成片上闪存(FLASH)的烧写编程

            - ISP 程序运行在 ROM 中

            - 进入 ISP 模式的方法

               ① 芯片启动时拉低管脚 P0_12

               ② IAP 命令“Reinvoke ISP”

  • 通常用法

            - 固件烧录(小批量),固件升级

            - LPC82X 应用程序进入低功耗状态时,调试端口失效,无法从调试端口下载程序,而进入 ISP 模式可以通过调试端口下载用户程序

 2. ISP 的通常用法 - 2

  • 在用户应用代码中或者用户第二级引导程序使用 IAP 系统函数完成片上闪存(FLASH)的烧写编程

            - 用户程序在 FLASH 或 RAM 中调用执行IAP系统函数

            - 通常用法

               ① 应用程序保存外设配置数据,校准数据到 FLASH 上

               ② 应用程序保存用户数据到 FLASH 上

               ③ 第二级引导程序对应用程序升级

四、引导程序(Bootloader)

看完上面的内容大家肯定会有疑问:ISP 功能都可以做固件升级了,为啥需要第二级引导程序?

  • ISP 只可以完成 MCU 的固件升级,一般不能完成外围器件的固件升级
  • ISP 只可以通过串口 0(USART0)完成片上闪存(FLASH)的烧写编程
  • ISP 的命令是有限的,有时候不能完全满足用户的功能需求

           ① 加密、校验启动

           ② 故障现场分析(RAM 内存导出)

           ③ 工厂测试

 

第二级引导程序(示例)

  • 第二级引导程序实例完成基于 I2C 总线的主机从机通信
  • 第二级引导程序等待主机指令,解析指令并处理主机指令
  • 第二级引导程序响应主机启动命令可以启动用户程序

 

五、代码读取保护(Code Read Protection)

之前也看到有网友提出代码保护的问题,辛苦写的程序,怎么着也不想被别人拿去用!所以增加代码的读/写保护功能,对保护知识产权异常重要!所以最后来谈谈如果添加代码读取保护功能。

1. 代码读取保护(CRP)

  • 允许客户设置不同安全级别的闪存访问
  • CRP 模式

2. CRP模式配置

  • 模式配置地址 0x000002FC

  • CRP 模式的改变在 MCU 重新上电后生效
  • CRP 不影响 IAP 命令
  • 实例代码

                           ;// keil_startup_lpc82x.s

                           ;// Code Read Protection level (CRP),0x000002FC

                           ;// <0xFFFFFFFF=> Disabled

                           ;// <0x4E697370=> NO_ISP

                           ;// <0x12345678=> CRP1

                           ;// <0x87654321=> CRP2

                          ;// <0x43218765=> CRP3 (Are you sure?)

                          CRP_Level EQU 0xFFFFFFFF

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论