LS10XX的RCW参数修改方法
在使用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 |
可见已经修改成功。