Yuhang Zheng

LS10XX的RCW参数修改方法

N 人看过

在使用LS10xx系列核心板开发项目的过程中,有时候需要根据自己的需求修改一些引脚功能或者一些引脚设置,难免有需要修改RCW(Reset ConfigurationWord)的时候。本文就是根据平时开发的经验谈一下LS10xx系列开发板修改RCW参数修改的方法。

针对三个平台的修改的RCW文件位置分别为:

LS1012平台:

flexbuild/packages/firmware/rcw/ls1012ardb/R_SPNH_3508/rcw_1000_default.rcw

LS1043平台:

flexbuild/packages/firmware/rcw/ls1043ardb/RR_FQPP_1455/rcw_1600_qspiboot.rcw

LS1046平台:

SerDes为1040_5559的rcw配置文件:
packages/firmware/rcw/ls1046ardb/FORLINX/rcw_1800_qspiboot_1040_5559.rcw
SerDes为1133_5559的rcw配置文件:
packages/firmware/rcw/ls1046ardb/FORLINX/rcw_1800_qspiboot_1133_5559.rcw

假如说我们想要修改LS1046的 EVDD IO域的电压,经过查阅《QorIQ LS1046A Reference Manual》,在P295有如下内容:

可以发现,我们需要修改RCW的第439-440位,字段名称为EVDD_VSEL,作用为配置EVDD IO域的电压。

打开源码文件:flexbuild/packages/firmware/rcw/ls1046ardb/FORLINX/rcw_1800_qspiboot_1040_5559.rcw

在94行有以下内容:

EVDD_VSEL=2

可知,我们源码中的RCW字段为EVDD_VSEL设置的参数为二进制的10,即EVDD IO域的电压为3.3 V

我们在开发板上电的打印信息中是否也可以读到我们核心板RCW设置的相关信息呢?当然可以!

在LS1046开发板上电时,串口最开始有打印信息如下:

U-Boot 2018.03 (Aug 15 2019 - 02:30:28 +0000)

SoC:  LS1046A Rev1.0 (0x87070110)
Clock Configuration:
       CPU0(A72):1800 MHz  CPU1(A72):1800 MHz  CPU2(A72):1800 MHz
       CPU3(A72):1800 MHz
       Bus:      700  MHz  DDR:      2100 MT/s  FMAN:     800  MHz
Reset Configuration Word (RCW):
       00000000: 0e150012 10000000 00000000 00000000
       00000010: 10405559 40005012 40025000 c1000000
       00000020: 00000000 00000000 00000000 00238802
       00000030: 20044500 00001102 00000096 00000001

我们也可以通过这个地方读出RCW字段为EVDD_VSEL设置的值。

首先通过上文我们知道,EVDD_VSEL字段处于RCW的第439-440位。而上图中RCW每一行前面显示的就是RCW的内存地址,每一个内存地址中存储着8位数据。

所以我们首先计算第439-440位处于RCW内存地址中的位置:

439/8=54

那么好了,我们取出地址54,55的数据:

00000030: 20044500 00001102 00000096 00000001

因为RCW是16进制显示,则将1102化成二进制为:

0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0

接下来我们就需要知道439-440处于上面的哪两位。

首先确认上面数据的第一位处于RCW的第几位:

54*8=432

则我们可以知道上面数据的对应关系为:

数据: 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0
位数: 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447

可见,439-440的值为 1 0,与代码中设置相符。

接下来我们在源码中修改LS1046的RCW文件并修改EVDD_VSEL=0,修改完成之后,编译firmware文件并烧写到核心板上。

LS1046开发板重新上电,可以看到串口打印信息为:

U-Boot 2018.03 (Aug 15 2019 - 03:26:15 +0000)

SoC:  LS1046A Rev1.0 (0x87070110)
Clock Configuration:
       CPU0(A72):1800 MHz  CPU1(A72):1800 MHz  CPU2(A72):1800 MHz
       CPU3(A72):1800 MHz
       Bus:      700  MHz  DDR:      2100 MT/s  FMAN:     800  MHz
Reset Configuration Word (RCW):
       00000000: 0e150012 10000000 00000000 00000000
       00000010: 10405559 40005012 40025000 c1000000
       00000020: 00000000 00000000 00000000 00238802
       00000030: 20044500 00001002 00000096 00000001

按上面办法重新读出439-440位的数据如下:

数据: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0
位数: 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447

可见已经修改成功。