Hi everyone!
I am trying to load SPL and u-boot on my SABRESDB board via the uuu utility on ubuntu, and am facing some difficulty that i hope someone can help me with.
I have a working SPL and u-boot.img files built from source ( i know they are working because i can load them to an SD card and boot successfully). I wanted to test the uuu utility to see if i can prepare a production script to load our images to an emmc.
I understand that the uuu first loads bootloaders to RAM, and then uses the u-boot fastboot protocol to write to emmc. However, when i try to load u-boot via uuu, i face the following issue:
Step 1: I can see that my chip is in SDP mode, and will accept SDP commands:
sudo ./uuu -lsusb
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.191-3-gf895947
Connected Known USB Devices
Path Chip Pro Vid Pid BcdVersion
==================================================
3:2 MX6Q SDP: 0x15A2 0x0054 0x0001
Step 2: I use uuu to load my SPL:
sudo ./uuu sdp: boot -f ../SPL
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.191-3-gf895947
Success 0 Failure 0
3:2 1/ 1 [=================100%=================] sdp: boot -f ../SPL
Okay
Step 3: I check that the board is in fact running the SPL (looks OK)
sudo ./uuu -lsusb
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.191-3-gf895947
Connected Known USB Devices
Path Chip Pro Vid Pid BcdVersion
==================================================
3:2 SPL SDPU: 0x0525 0xB4A4 0x0221
Step 4: I want to load u-boot now:
sudo ./uuu sdpu: write -f ../u-boot.img
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.191-3-gf895947
Success 0 Failure 1
3:2 1/ 1 [HID(W):LIBUSB_ERROR_TIMEOUT ] sdpu: write -f ../u-boot.img
Error: HID(W):LIBUSB_ERROR_TIMEOUT
Does anyone here know why i'm getting LIBUSB_ERROR_TIMEOUT?
Thank you.
Solved! Go to Solution.
Just to close this thread: I managed to get u-boot to run with the following commands:
To load and boot SPL:
> sudo ./uuu sdp: boot -f <path_to_file>/SPL_signed
>To load u-boot:
sudo ./uuu sdpu: write -f <path_to_file>/u-boot-ivt.img_signed -addr 0x177fffc0
sudo ./uuu sdpu: jump -addr 0x177fffc0
The lesson learned here is that you can't just run u-boot from any address. I guess the start of the u-boot executable part must align with the TEXT_BASE.
Hi Aldo,
Thank you for your response.
Unfortunately, I couldn't boot with your commands either. Those look like the same commands from the default scripts I see in the uuu folder.
My u-boot is v2019.04 built from the github repo : (git clone -b v2019.04 https://github.com/u-boot/u-boot ). There is no CONFIG_SDP_LOADADDR in this version of u-boot, so I have to provide the -addr argument and write the u-boot to my SYS_TEXT_BASE which is 0x17800000 in my case. If I don't provide -addr, then the sdpu usb write command fails with (HID(W):LIBUSB_ERROR_TIMEOUT) and SPL gives the following message on the serial output:
Downloading file of size 617896 to 0x00000000...
(and it never succeeds, of course)
when i provide my -addr, it shows the following:
Downloading file of size 617896 to 0x17800000... done
(notice the "done" in the end, and my uuu also shows the command completed successfully).
Correct me if i'm wrong, but I think the suggestion you made to include -offset 0x57c00 when writing u-boot is meant for i.MX8 users who have both SPL and u-boot in a single file (_flash.bin). Regardless, I tried it and it did not work.
I noticed on other websites discussing using uuu to load SPL and u-boot that they also get the "Header Tag is not an IMX image" message. So that is not necessarily a problem because their u-boot messages appear after that. (reference https://developer.solid-run.com/knowledge-base/i-mx6-u-boot/).
These same images do work when i dd them to an SDcard. but still no luck getting uboot to run off the serial downloader. any help is greatly appreciated.
Regards,
Noor.
OK I found that i was missing the -addr argument for the sdpu write command, so it was attempting to write to address 0 and failing.
now i am able to write to the RAM as follows:
sudo ./uuu sdpu: write -f ../u-boot.img -addr 0x17800000
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.191-3-gf895947
Success 0 Failure 0
3:2 1/ 1 [=================100%=================] sdpu: write -f ../u-boot.img -addr 0x17800000
Okay
However, when i attempt to run that u-boot by using the "jump" sdpu command, i get the following:
sudo ./uuu sdpu: jump -addr 0x17800000
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.191-3-gf895947
Success 0 Failure 0
3:2 1/ 1 [=================100%=================] sdpu: jump -addr 0x17800000
Okay
So it looks like it should run u-boot now. However, when i look at the serial output from the board, instead of the u-boot prompt, i see SPL saying: "Header Tag is not an IMX image".
Any ideas?
Hello,
To download SPL and uboot you may try with the following:
uuu sdp: boot -f SPL
uuu sdpu: delay 1000
uuu sdpu: write -f uboot.img -offset 0x57c00
uuu sdpu: jump
Hope this helps,
Best regards,
Aldo.
Hi Aldo.
I responded to your suggestion above but it seems that I made a mistake and responded to my own post. If you have any other suggestions/Ideas I would be happy to hear them.
Thank you.
Just to close this thread: I managed to get u-boot to run with the following commands:
To load and boot SPL:
> sudo ./uuu sdp: boot -f <path_to_file>/SPL_signed
>To load u-boot:
sudo ./uuu sdpu: write -f <path_to_file>/u-boot-ivt.img_signed -addr 0x177fffc0
sudo ./uuu sdpu: jump -addr 0x177fffc0
The lesson learned here is that you can't just run u-boot from any address. I guess the start of the u-boot executable part must align with the TEXT_BASE.