AIS文件分析-(using the OMAP-138 Bootloader)

附录D预先定义的ROM功能细节
OMAP-L132/L138引导加载程序可以使用ais函数调用命令调用多个rom功能。本附录描述了可用的ROM功能和调用它们所需的参数。
预定义的ROM函数清单

索引 功能
0 PLL0配置
1 PLL1配置
2 时钟配置
3 mDDR/DDR2控制器配置
4 EMIFA SDRAM 配置
5 EMIFA ASYNC 配置
6 PLL和时钟配置
7 休眠和使能控制器控制
8 pinmux配置

D.1 PLL0 配置 (索引= 0, 参数数目 = 2)
PLL0配置功能配置PLL0寄存器。此函数接受两个参数,如下所示:
PLL配置寄存器

参数1 CLKMODE PLLM PREDIV POSTDIV
参数2 保留 PLLDIV1 PLLDIV3 PLLDIV7

PLL寄存器描述

字段 描述
参数1 31-24 CLKMODE 0,1 要编程到PLL时钟源的值: 0晶体 1振荡器
23-16 PLLM 要编程到PLL倍频寄存器的值
15-8 PLLDIV 要编程到PLL预分频寄存器的值,用于在PLL倍频之前分频输入时钟。
7-0 POSTDIV 要编程到PLL后分频寄存器的值,用于分频PLL倍频之后的输出时钟。
4 31-24 保留 0 保留
5 23-0 PLLDIV1;PLLDIV3;PLLDIV7 要编程到PLLDIV1、PLLDIV3和PLLDIV7寄存器的值, 用于生成SYSCLK1、SYSCLK2、SYSCLK4、SYSCLK6、SYSCLK3和SYSCLK7。 SYSCLK6=SYSCLK1,SYSCLK2=SYSCLK1/2,SYSCLK4=SYSCLK/4

D.2 PLL1 配置 (索引= 1, 参数数目 = 2)
PLL1配置功能配置PLL1寄存器。此函数接受两个参数,如下所示:
PLL1配置寄存器

参数1 PLLM POSTDIV PLLDIV1 PLLDIV2
参数2 保留 保留 保留 PLLDIV3

PLL配置寄存器描述

字段 描述
参数1 31-24 PLLM 要编程到PLL倍频寄存器的值
23-16 POSTDIV 要编程到PLL后分频寄存器的值,用于分频PLL倍频之后的输出时钟
15-8 PLLDIV1 要编程到PLLDIV1、PLLDIV2和PLLDIV3寄存器的值,用于生成SYSCLK1、SYSCLK2、SYSCLK3
7-0 PLLDIV2 要编程到PLLDIV1、PLLDIV2和PLLDIV3寄存器的值,用于生成SYSCLK1、SYSCLK2、SYSCLK3
参数2 31-8 保留 0 保留
7-0 PLLDIV3 要编程到PLLDIV1、PLLDIV2和PLLDIV3寄存器的值,用于生成SYSCLK1、SYSCLK2、SYSCLK3

D.3 时钟配置 (索引= 2, 参数数目 = 1)
时钟配置功能配置引导外围设备的时钟。它编程SPI/I2C主引导模式、UART引导模式或MMC/SD引导模式下的外围时钟。在所有其他启动模式,此功能无效。此函数只接受一个参数,但其内容参数因启动模式而异。
D.3.1 SPI Master Register
SPI Master Register

参数1 保留 预分频

SPI Master Register 字段描述

字段 描述
31-8 保留 0 保留
7-0 预分频 要编程到SPIFMT的预分频字段的值

D.3.2 I2C Master Register
I2C Master Register

参数1 保留 IPSC ICCL ICCH

I2C Master Register 字段描述

字段 描述
31-24 保留 0 保留
23-16 IPSC 要编程到I2C ICPSC寄存器字段的值
15-8 ICCL 0 要编程到I2C ICCLKL寄存器字段的值
7-0 ICCH 要编程到I2C ICCLKH寄存器字段的值

D.3.3 UART Slave Register
UART Slave Register

参数1 保留 OSR DLH DLL

UART Slave Register 字段描述

字段 描述
31-24 保留 0 保留
23-16 OSR 要编程到UART MDR 寄存器OSR字段的值
15-8 DLH 要编程到UART DLH 寄存器的值
7-0 DLL 要编程到UART DLL寄存器的值

D.3.4 MMC/SD Register
MMC/SD Register

参数1 保留 DIV4 CLKRT

MMC/SD Register 字段描述

字段 描述
31-16 保留 0 保留
15-8 DIV4 要编程到MMCCLK寄存器DIV4字段的值
7-0 CLKRT 要编程到MMCCLK寄存器CLKRT字段的值

D.4 mDDR/DDR2 控制器配置 (索引 = 3, 参数数目= 8)
mDDR/DDR2控制器配置函数配置负责DDR定时和配置。因为MDDR/DDR2控制器设置要求PLL1被配置,在初始化MDDR/DDR2控制器之前调用pll1配置函数。 因此,前两个参数与pll1配置函数所需的参数相同。 接下来的五个参数是mDDR/DDR2控制器寄存器所需的定时参数。他们直接写入具有相同名称的mDDR/DDR2控制器寄存器。最后一个参数包含三个字段:PASR、ROWSIZE和CLK2XSRC。前两个字段被拷贝到与SDCR2有相同名字的字段里面当且仅当SDCR的MSDRAMEN(ARG4的第25位)=1。换句话说,这些字段仅在使用mDDR时适用,而不是DDR2。第三个字段应用于所有情况,并允许为mDDR/DDR2控制器选择时钟源。0值使用正常的时钟源,而1值选择一个非分频的时钟,通常要快两倍。( 更准确地说,它忽略了PLL1后分频。)

参数1 PLL1配置参数1
参数2 PLL1配置参数2
参数3 DRPYC1R
参数4 SDCR
参数5 SDTIMR1
参数6 SDTIMR2
参数7 SDRCR
参数8 保留 PASR 保留 ROWSIZE CLK2XSRC

mDDR/DDR2控制器配置函数将mDDR/DDR2外围设备从其默认的复位状态唤醒并根据需要正确进行寄存器配置。
D.5 EMIFA SDRAM 配置 (Index = 4, Argument Count = 5)
EMIFA SDRAM配置功能配置负责EMIFA寄存器SDRAM的定时和配置。

参数1 SDCR
参数2 SDTIMR
参数3 SDSRETR
参数4 SDRCR
参数5 DIV4p5_CLK_EN

前四个函数参数直接写入具有相同名称的EMIFA寄存器。div4p5_clk_en是一个布尔值,用于启用PLL0乘数因子输出的4.5除法器作为EMIFA外围设备的输入时钟。 在对EMIFA寄存器进行编程之前,此功能对16位或32位SDRAM访问(基于SDCR)寄存器的值应用必要的pinmux 并从其默认重置状态来唤醒EMIFA的外围设备。
D.6 EMIFA Async Configuration (Index = 5, Argument Count = 5)
EMIFA CE空间配置功能配置EMIFA CEXCFG寄存器。此函数需要五个参数,并将它们写入具有相同名称的EMIFA寄存器中。

参数1 CE2CEG
参数2 CE3CEG
参数3 CE4CEG
参数4 CE5CEG
参数5 NANDFCR

D.7 PLL and Clock Configuration (Index = 6, Argument Count = 3)
PLL和时钟配置功能结合了PLL配置和时钟配置函数转换为单个函数调用。此函数接受三个参数。前两个参数匹配 PLL配置函数的参数(D.1节)第三个参数匹配 时钟配置函数的参数(D.3节)。

参数1 PLL0 配置参数1
参数2 PLL0 配置参数2
参数3 时钟配置参数1

如果设备从时钟配置说明中列出的启动模式启动,则需要调用此函数,而不是分别调用PLL0配置和时钟配置函数。否则可能导致引导失败,因为外围设备功能与PLL0设置相关,首先设置PLL0可能导致外围设备以非预期的频率运行。
D.8 Power and Sleep Configuration (PSC) (Index = 7, Argument Count = 1)
电源和睡眠配置(PSC)功能可多次用于设置电源域对于系统的两个PSC的各个LPSC模块,0x1-0x3是唯一有效的值(所有其他值都是保留)。
| PSCNUM | MODULE |PD| STATE |

发布了83 篇原创文章 · 获赞 127 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_40788950/article/details/85639879