Platform: LS1043a target board
LSDK: flexbuild_lsdk2004_update_290520.tgz
QSPI FLASH: S25FS512SDSMFI011
I tried to program the data into QSPI by using CodeWarrior and then dump the data to verify that it successfully programmed. Then SD boot the system to read the correspond data in QSPI over command “sf read” to compare the read value between these two ways, I found they are different.
I tried to program the image to QSPI on SD boot. Then dump the image to verify by using CodeWarrior. I found the dump data is wrong which is not the same as the image I sent.
The SD boot is established with the commands below:
“flex-builder -m ls1043atgb -b sd”
and
“flex-installer -f firmware_sdboot.img -d /dev/sdc”
For now, the ERASE, READ and PROGRAM commands can be successfully executed to QSPI over CodeWarrior and verified all data is correct, but not for operation on SD boot. The QSPI clock frequency measured in the CodeWarrior environment is about 33MHz. The QPSI clock frequency on SD boot is 50MHz. Could this error be caused by the difference QSPI clock speed?
I tried to use the following two ways to slow down the QSPI clock, but the clock speed is still the same as the original 50MHz.
1. According to the instruction of sf probe in U-BOOT, the speed of QSPI flash can be set in the third argument.
Command is sf probe 0:0 20000000
2. Form the DTS file in U-BOOT, adding spi-max-frequency=20000000.
DTS file
&qspi {
bus-num = <0>;
status = "okay";
qflash0: s25fs512s@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "jedec,spi-nor";
spi-max-frequency = <20000000>;
reg = <0>;
};
};
I have two questions below need to clarify.
解決済! 解決策の投稿を見る。
On ls1043aqds, QSPI is supported, we have verified there is no problem at QSPI flash reading and writing.
You could do your porting based on LS1043AQDS to generate firmware image with the following command.
$ flex-builder -i mkfw -b sd -m ls1043aqds
It was based on the older LSDK version which is version lsdk2004_update_290520. I generated the SD boot with the LSDK version lsdk2012, but the image below shows the baud rate was changed when it ran to BL31. The baud rate is correctly output at 115200 before BL31, then I measured the waveform it became 178000 after BL31. The image below shows the CPU frequency is incorrect. I'm sure I use the same RCW value as the older SD boot. So, the RCW value should be correct, apart from the RCW value, is there anything I need to modify?
I created a new topic as below
https://community.nxp.com/t5/Layerscape/LS1043a-clock-configuration-issue/m-p/1316798#M8625
You could modify the value of register 0x157015c via RCW PBI command.
$ flex-builder -c rcw -m ls1043ardb
In RCW source code, please edit packages/firmware/rcw/ls1043ardb/RR_FQPP_1455/rcw_1600_sdboot.rcw to add the following line.
.pbi
write 0x57015c, 0x20100000
.end
Rebuild RCW
$ flex-builder -c rcw -m ls1043ardb
I have done the modification with your suggestion, but it seems the commands is to modify the speed for RCW/PBI fetch. Besides, the default setting on LSDK is already at low speed of 4.7MHz.
What we need to modify is the speed under U-BOOT process which modified the speed from the default frequency of 50MHz to 30MHz.
Is there any other way to modify the correspond speed?
On ls1043aqds, QSPI is supported, we have verified there is no problem at QSPI flash reading and writing.
You could do your porting based on LS1043AQDS to generate firmware image with the following command.
$ flex-builder -i mkfw -b sd -m ls1043aqds
It is fixed with LSDK 20.12.