创龙OMAPL-138uboot.ais文件分析

uboot.ais 是在编译uboot之后生成的,其中包含了ARM的UBL,可看作是在uboot之前做的一些初始化工作,下面结合之前对using the OMAP-138 Bootloaderd的分析
https://blog.csdn.net/qq_40788950/article/details/85639879、
https://blog.csdn.net/qq_40788950/article/details/85526686 来对初始化工作做一些总结,主要关注PLL部分。
uboot.ais 有300多K,前面的内容如下:

AIS是以小端模式的四个字节进行访问的。小端模式指的是CPU对操作数的存放方式是从低字节到高字节。AIS以幻数0x41504954开始。0x5853590D是Function Execute Command,是设备特定初始化功能的通用接口,如锁相环(PLL)和外部存储器接口(EMIF)配置此命令中的参数数目是可变的。第一个参数在低16位中指定函数ID(函数表中的函数索引),以及指定在高16位中函数接受的参数个数。第一个参数后面的参数个数与在其高位16位中指定的数字匹配。
0x00030006:6表示索引,3表示参数个数,对应PLL和时钟配置。
0x00120000:PLL0配置参数1,结合手册看,预分频为1,倍频为19,后分频为1.
0x00000309:PLL0配置参数2,用来对PLLDIV1,PLLDIV3和PLLDIV7寄存器进行编程,分频值分别是1,4,10,可分别产生SYSCLK1,SYSCLK3和SYSCLK7,且有SYSCLK6 = SYSCLK1, SYSCLK2 = SYSCLK1/2, SYSCLK4 = SYSCLK1/4。
0x00000015:时钟配置参数1,根据不同的拨码会从不同的地方进行启动,常用的是SD卡方式引导,写入MMCCLK寄存器的DIV4域的值是0,写入MMCCLK寄存器的CLKRT域的值是21。
0x00080003:3表示索引,8表示参数个数,对应mDDR2/DDR2控制器配置。
0x0c000001:PLL1 Configuration Arg1,对照手册看,PLL倍频寄存器的值是12,倍频值是13。POSTDIV的寄存器值为00,后分频值为1。PLLDIV1的寄存器值为0,分频值为1,PLLDIV2的寄存器值为01,分频值为2。
0x00000002:PLL1 Configuration Arg2,PLLDIV3的寄存器值为02,分频值为3。
0x000000c3:DRPYC1R寄存器的值
0x00134632:SDCR寄存器的值
0x264A2A09:SDTIMER1寄存器的值
0x4412C722:SDTIMER2寄存器的值
0x40002060:SDRCR寄存器的值
0x00000000:SDCR2寄存器中PASR,ROWSIZE,CLK2XSRC的值。
0x00050005:5表示索引,5表示参数个数。
0x00000000:CE2CFG寄存器的值
0x08224114:CE3CFG寄存器的值
0x00000000:CE4CFG寄存器的值
0x00000000:CE5CFG寄存器的值
0x00000002:NANDFCR寄存器的值
0x00010007:7表示索引,1表示参数个数。
0x00010003:PSC寄存器的值,03表示STATE域(使能),00表示PD域,01表示module号(EDMA3_0 Transfer Controller 0),00表示选择PSC0。
后面还有几个对PSC的设置:
0x00020003:PSC寄存器的值,03表示STATE域(使能),00表示PD域,02表示module号(EDMA3_0 Transfer Controller 1),00表示选择PSC0。
0x00030003:PSC寄存器的值,03表示STATE域(使能),00表示PD域,03表示module号(EMIFA (BR7)),00表示选择PSC0。
0x00040003:PSC寄存器的值,03表示STATE域(使能),00表示PD域,04表示module号(SPI0),00表示选择PSC0。
0x00050003:PSC寄存器的值,03表示STATE域(使能),00表示PD域,05表示module号(MMC/SD0),00表示选择PSC0。
0x01000003:PSC寄存器的值,03表示STATE域(使能),00表示PD域,00表示module号(EDMA3_1 Channel Controller 0),01表示选择PSC1。
0x01060003:PSC寄存器的值,03表示STATE域(使能),00表示PD域,06表示module号(DDR2/mDDR),01表示选择PSC1。
0x010D0003:PSC寄存器的值,03表示STATE域(使能),00表示PD域,0D表示module号(UART2),01表示选择PSC1。
0x01150003:PSC寄存器的值,03表示STATE域(使能),00表示PD域,15表示module号(McBSP1 (+ McBSP1 FIFO)),01表示选择PSC1。
0x58535901:(Section Load Command)段加载命令,这个命令包含两个参数:将要加载段的地址和大小,跟着段的内容(数据)。
0xc1080000:表示程序的入口点。
0x0005B320:表示要加载的段的大小:计算得:37356bytes,大约350K左右,刚好为uboot.ais的大小。
后面的内容为段数据。

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

猜你喜欢

转载自blog.csdn.net/qq_40788950/article/details/85725898
今日推荐