编辑: huangshuowei01 | 2014-08-03 |
0 0
1 Bank14
0 0
1 Bank15
0 0
1 FlexRAM 熔丝的每个位只能编程一次,并且不可恢复,在程开发过程中,可能需要在 不同的应用场景下配置不同容量的内部 RAM,那么通过熔丝位配置 RAM 就有一定的局限 性.所以本节不介绍如何去烧写这些熔丝位配置内部 RAM,推荐用户使用配置寄存器方式 配置内部 RAM. 2.2 寄存器配置内部 RAM iMX RT105x 内部 RAM 可以使用"IOMUXC_GPR_GPR14" 、 "IOMUXC_GPR_GPR15" 、 "IOMUXC_GPR_GPR16"这三个寄存器进行配置.下面以一个例子,讲述如何配置这三个 寄存器. 假如需要分配 128KB 的I-TCM, 128KB 的D-TCM, 256KB 的OCRAM, FlexRAM Bank 和各种类内存的一种对应关系如 表2所示 产品用户手册 ?2018Guangzhou ZHIYUAN Electronics Co., Ltd. 3/11 ?2018 广州致远电子有限公司 AWorks M1050 内部 RAM 配置指南 产品用户手册 表2: FlexRAM Bank 分配表 I-TCM D-TCM OCRAM Bank0
0 0
1 Bank1
0 0
1 Bank2
0 0
1 Bank3
0 0
1 Bank4
1 0
0 Bank5
1 0
0 Bank6
0 1
0 Bank7
0 1
0 Bank8
0 0
1 Bank9
0 0
1 Bank10
0 0
1 Bank11
0 0
1 Bank12
1 0
0 Bank13
1 0
0 Bank14
0 1
0 Bank15
0 1
0 寄存器配置步骤如下所示: 1. 配置 IOMUXC_GPR_GPR16 IOMUX_GPR_GPR16 寄存器用于配置内部中断向量表地址以及使能、禁能 TCM 等功 能,IOMUX_GPR_GPR16 寄存器描述如 图3所示: 产品用户手册 ?2018Guangzhou ZHIYUAN Electronics Co., Ltd. 4/11 ?2018 广州致远电子有限公司 AWorks M1050 内部 RAM 配置指南 产品用户手册 图3: GPR16 寄存器描述 (1). CM7_INIT_VTOR 该位域用于设置内部 Boot 的中断向量表起始地址的 31-7 位,内部 Boot 的中断向量表 起始地址固定设置为 0x200000. (2). FLEXRAM_BANCK_CFG_SEL 该位域用于选择 FlexRAM Bank 的配置源, 芯片复位时默认选择的是使用熔丝位进行配 置,如果使用寄存器配置内部 RAM,该位需置为 1,选择使用使用 IOMUXC_GPR_GPR17 寄存器的 FLEXRAM_BANK_CFG 位域进行 FlexRAM Bank 分配. (3). INIT_DTCM_EN D-TCM 使能位,当FlexRAM Bank 分配有 D-TCM 内存时,该位需要被置位. (4). INIT_ITCM_EN I-TCM 使能位,当FlexRAM Bank 分配有 I-TCM 内存时,该位需要被置位. 2. 配置 IOMUX_GPR_GPR17 IOMUXC_GPR_GPR17 寄存器主要进行 RAM Bank 的分配,其具体的寄存器描述如 图 产品用户手册 ?2018Guangzhou ZHIYUAN Electronics Co., Ltd. 5/11 ?2018 广州致远电子有限公司 AWorks M1050 内部 RAM 配置指南 产品用户手册
4 所示: 图4: GPR17 寄存器描述 IOMUXC_GPR_GPR17 存器共 32Bit, 每2Bit 控制一个 RAM Bank, 一共
16 个Bank, 每个Bank 为32KB.参考 表2的Bank 分配,则GPR17 寄存器的配置如 图5所示. 图5: GPR17 寄存器配置表 3. 配置 IOMUXC_GPR_GPR14 IOMUXC_GPR_GPR14 可用于指定I-TCM 和D-TCM 的容量大小, IOMUXC_GPR_GPR14 寄存器描述如 图6所示. 产品用户手册 ?2018Guangzhou ZHIYUAN Electronics Co., Ltd. 6/11 ?2018 广州致远电子有限公司 AWorks M1050 内部 RAM 配置指南 产品用户手册 图6: GPR14 寄存器描述 (1). CM7_MX6RT_CFGDTCMSZ 该位域用于设置 D-TCM 的大小,例如 FlexRAM 分配了 128KB 的D-TCM,该位域需 要设置为 b1000,当禁能 D-TCM 时,该位域需要设置为 0. (2). CM7_MX6RT_CFGITCMSZ 该位域用于设置 I-TCM 的大小,例如 FlexRAM 分配了 128KB 的I-TCM,该位域需要 设置为 b1000,当禁能 I-TCM 时,该位域需要设置为 0. 该寄存器的其他位域内部 RAM 的配置无关,再此就不详述了. 2.3 SDK 代码中用户配置内部 RAM 方法 iMX RT105x 在上电启动时默认配置为 128KB I-TCM, 128KB D-TCM, 256KB OCRAM, 使用这样的默认配置很不方便,因为这三种内存的地址空间是不连续的.为了最大限度发 挥内部 RAM 的功能,我们可以在程序中将内部 RAM 配置成 512KB 连续的内存,SDK 代 码中已为用户提供了配置内部 RAM 的接口. 用户可以根据实际需要修改"{SDK\img_rt1050_debug\user_config\}" 目录下的"flexram_config.S"汇编源文件进行内部 RAM 的配置.源文件中的配置函数会被启动代码 调用,在调用之前还未进行过堆栈设置及初始化 data 段、bss 段等操作,所以代码必须用汇 编语言编写. 需要注意的是, 只有当代码运行在SDRAM 或Flexspi Flash xip 执行时, "flexram_config.S"中的配置才会生效.如果代码已在内部 RAM 中执行,因为 内部 RAM 在使用的过程中不能再配置内部 RAM, "flexram_config.S"中的配置函数将不 会被调用,这种情况下内部 RAM 只能使用 i.MX RT105x 的上电默认配置. 产品用户手册 ?2018Guangzhou ZHIYUAN Electronics Co., Ltd. 7/11 ?2018 广州致远电子有限公司 AWorks M1050 内部 RAM 配置指南 产品用户手册 在"flexram_config.S"中截取配置 FlexRAM 的关键代码, 如 列表 2.1 所示: 列表 2.1: 汇编程序配置 FlexRAM