In: serial
Out: serial
Err: serial
Model: Pine64 RK3399 Pinebook Pro
Bootdev(atags): mmc 0
PartType: EFI
rockchip_get_boot_mode: Could not found misc partition
boot mode: None
init_resource_list: failed to get resource part, ret=-1
Can't find file:logo.bmp
failed to display uboot logo
CLK: (uboot. arml: enter 816000 KHz, init 816000 KHz, kernel 0N/A)
CLK: (uboot. armb: enter 24000 KHz, init 24000 KHz, kernel 0N/A)
aplll 816000 KHz
apllb 24000 KHz
dpll 800000 KHz
cpll 24000 KHz
gpll 800000 KHz
npll 600000 KHz
vpll 24000 KHz
aclk_perihp 133333 KHz
hclk_perihp 66666 KHz
pclk_perihp 33333 KHz
aclk_perilp0 266666 KHz
hclk_perilp0 88888 KHz
pclk_perilp0 44444 KHz
hclk_perilp1 100000 KHz
pclk_perilp1 50000 KHz
Net: No ethernet found.
Hit key to stop autoboot('CTRL+C'): 0
do_boot_rockchip: Could not find boot part
Checking for mmc dev 1...
Card did not respond to voltage select!
mmc_init: -95, time 9
starting USB...
USB0: USB EHCI 1.00
USB1: USB OHCI 1.0
USB2: USB EHCI 1.00
USB3: USB OHCI 1.0
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 1 for devices... 2 USB Device(s) found
scanning bus 2 for devices... 1 USB Device(s) found
scanning bus 3 for devices... 1 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
Checking for usb dev 0...
Device 0: unknown device
Checking for mmc dev 0...
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0 for bootable partitions...
Scanning mmc 0:3 for extlinux or boot scripts...
Found /extlinux/extlinux.conf
Retrieving file: /extlinux/extlinux.conf
1992 bytes read in 67 ms (28.3 KiB/s)
select kernel
What I'm interested in, though, is the memory training speed.
Code:
channel 0 training pass!
channel 1 training pass!
change freq to 800MHz 1,0
Channel 0: LPDDR4,800MHz
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=16 Size=2048MB
Channel 1: LPDDR4,800MHz
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=16 Size=2048MB
256B stride
This is the final training pass I see in the uboot output.
Looking at the datsheet, the memory modules are either rated for 1600MHz or 1866MHz.
I've found that the RK3399 supports dynamic DRAM frequency scaling, but I haven't verified if this is working - I don't see anything about it in dmesg.
I see a peak of about 5.5GB/s running the "mbw" benchmark. At 800MHz on a 64 bit bus, I'd expect (800 * 2 * 64 / 8) = 12.8GB/s, which is consistent with a streaming copy bandwidth of around 5.5GB/s.
At 1600MHz, I'd expect to see 25.6GB/s - and I know there's display overhead, but for an optimized copy, it seems like we're not seeing the full performance of this system.
So, my questions:
0. Am I misreading the output/screwing up my math?
1. How can I verify the memory frequency in Linux?
2. Should uboot be setting the frequency to the maximum before handing off to a kernel that might not be adjusting it?
3. Should we have dynamic memory frequency stuff enabled in the kernel?
Thanks!
Well, darn. I was looking at the LPDDR4 datasheet, should have been looking at the RK3399 datasheet.
Per IRC, it just doesn't support running the memory bus up that high. Seems to be limited at 933 for DDR3, 800 for DDR4.
It appears the RK3399 is limited to an 800MHz memory channel on DDR4. It can do 933 on DDR3, and it might be worth messing with uboot to see if it can run 933 on DDR4, but there's apparently a hard check that doesn't allow it right now. It might be worth experimenting with.
(06-24-2020, 11:02 AM)Syonyk Wrote: It appears the RK3399 is limited to an 800MHz memory channel on DDR4. It can do 933 on DDR3, and it might be worth messing with uboot to see if it can run 933 on DDR4, but there's apparently a hard check that doesn't allow it right now. It might be worth experimenting with.
Should able to operate on 933MHz (PC-1866) LPDDR4. On the RockPro64 board, has been tested up to 1067MHz (PC-2133) LPDDR4 but no plan to release this driver.
Both ROckPro64 and Pinebook Pro PCB memory access simulation has been tested up to PC-2400.
Now I have an excuse to learn to build uboot and ATF for the PBP. This looks like a binary blob for... one of the parts in the early boot process, based on the strings and where they show up in boot. Are there any particular license restrictions that apply to anything built with this?
It was unclear what the limit on the RK3399 was - the spec sheet seemed to imply 933MHz for LPDDR4, but the uboot source seemed to have a check for LPDDR4 that would cut it down to 800MHz. No idea on the history of that, but it sounds like 933MHz is fully within SoC and board specifications on the PBP?