在使用LS10xx系列核心板开发项目的过程中,有时候需要根据自己的需求修改一些引脚功能或者一些引脚设置,难免有需要修改RCW(Reset ConfigurationWord)的时候。本文就是根据平时开发的经验谈一下LS10xx系列开发板修改RCW参数修改的方法。
针对三个平台修改的RCW文件位置在OK10xx-linux-fs源码中,位置为:用户资料\Linux\源码\OK10xx-linux-fs.tar.bz2,分别是:
LS1012A平台:
flexbuild/packages/firmware/rcw/ls1012ardb/R_SPNH_3508/rcw_1000_default.rcw
LS1043A平台:
flexbuild/packages/firmware/rcw/ls1043ardb/RR_FQPP_1455/rcw_1600_qspiboot.rcw
LS1046A平台:
SerDes为1040_5559的rcw配置文件:
flexbuild/packages/firmware/rcw/ls1046ardb/FORLINX/rcw_1800_qspiboot_1040_5559.rcw
SerDes为1133_5559的rcw配置文件:
flexbuild/packages/firmware/rcw/ls1046ardb/RR_FFSSPPPH_1133_5559/rcw_1800_qspiboot.rcw
假如我们想要修改LS1046A的 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设置的相关信息呢?当然可以!
在LS1046A开发板上电时,串口最开始有打印信息如下:
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 MHzReset 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 0000110200000096 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
则我们可以知道上面数据的对应关系为:
可见,439-440的值为 10,与代码中设置相符。
接下来我们在源码中修改LS1046A的RCW文件并修改EVDD_VSEL=0,修改完成之后,编译firmware文件并烧写到核心板上。
LS1046A开发板重新上电,可以看到串口打印信息为:
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 MHzReset 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位的数据如下:
可见已经修改成功。
可见已经修改成功。