Your board isn’t booting anymore? U-Boot doesn’t even show up on the serial console? Don’t worry, there’s always a solution to recover!
All our platforms have a DIP switch (SW1) which allow to override the normal boot flow and force a boot to the USB recovery mode (OTG port). Modify its setting to match the pictures below.
Linux procedure
If you set the switches to the USB setting and reset the board or cycle power, you should see a “Freescale” device show up in lsusb:
~/$ lsusb ... Bus 006 Device 012: ID 15a2:0054 Freescale Semiconductor, Inc. ...
Combined with the right tools, this can be used to un-brick a board whose serial EEPROM has been trashed, or to program the serial EEPROM on a board which has never been programmed.
Freescale has a tool (the Manufacturing tool) that will do this on Windows OS. For Linux, we built our own, and made the sources available on GitHub:
imx_usb_loader build procedure
To run imx_usb, you’ll need to have libusb installed on your machine. To compile it, you’ll need the libusb headers, which can be installed by grabbing the -dev package:
~$ sudo apt-get install libusb-1.0-0-dev
You can then build your own imx_usb_loader binary:
~$ git clone git://github.com/boundarydevices/imx_usb_loader Cloning into 'imx_usb_loader'... remote: Counting objects: 131, done. remote: Compressing objects: 100% (61/61), done. remote: Total 131 (delta 71), reused 127 (delta 68) Receiving objects: 100% (131/131), 44.69 KiB, done. Resolving deltas: 100% (71/71), done. ~$ cd imx_usb_loader/ ~/imx_usb_loader$ make cc -c imx_usb.c -o imx_usb.o -Wstrict-prototypes -Wno-trigraphs -pipe -ggdb `pkg-config --cflags libusb-1.0` cc -o imx_usb imx_usb.o -lusb-1.0
imx_usb_loader usage
In normal use, it simply loads a named file into RAM and executes it. If you run it like so, you can launch a U-Boot binary directly.
~/imx_usb_loader$ ./imx_usb u-boot.imx
If you don’t have permissions to access the USB device (can’t open), you should modify your udev rules to fix it. But as a quick workaround, using sudo will help.
~/imx_usb_loader$ sudo ./imx_usb u-boot.imx
If everything goes as planned, you should see U-Boot launch (output on the serial console)
Note that you can find a pre-built binary for your platform here:
If you’ve gone through all of this, you might ask how this un-bricks the board.
It doesn’t. But once you have U-Boot running, you can use U-Boot to upgrade the serial EEPROM using the upgradeu command as discussed in this blog post:
Under Windows
See this post for details on how to use sb_loader.exe under Windows.
The function is essentially the same: sb_loader.exe can be used to download and run a U-Boot image and U-Boot can handle the rest.
Recently, NXP release sb_loader source code in case you need to modify it:









Comments 155
Author
It appears that we inadvertently checked in a file named ‘mx6_usb_work.conf’ that contained support for auto-programming devices.
If you downloaded before now and run across error messages about missing binary files, please grab the latest copy of the configuration file.
hello , I have a question about auto load uboot from spi nor of i.mx6 sabre-lite board, would you give me same tip that I can auto boot from spi, i have MFG Tools and can download uboot to Ram and run it , but when i write uboot to addr 0 on SPI Nor, but Can’t run it on boot. please give me same help!! Thanks!!
Author
Our boards should have the boot fuses blown to select SPI NOR boot at reset time.
Are you running a u-boot.imx file though USB or u-boot.bin. Since the u-boot.imx file doesn’t contain the 0x400 bytes of padding at the start, it wants to be programmed to offset 0x400.
Hello Ericn: Thanks for you reply, I have download the u-boot.imx by usb tools, and run it all right , but how can i write it to SPI NOR , i have use sf command to write it to 0 address, is’t right ? or it should write it to 400 addr ? Thank you !!
Author
u-boot.imx should be programmed at 0x400
u-boot.bin should be programmed at 0
Another Question , I don’t find the boot fuses on the sabre lite board ,Can you tell me how can i Set the Boot fuses,Thank you .
Author
We’ve already programmed the fuses. You shouldn’t need to touch them.
ok, I think i know about it, but how to programmed the fuses ??? by which tools ? or a software? Would you give me a tip. Thank you!!
Best Regards .
Lili.Wang
Author
imxotp is the U-Boot command.
You can get some details by searching for imxotp here:
http://www.freescale.com/infocenter/index.jsp
Has anyone used this imx_usb tool on a Windows machine? I have the source for both imx_usb.c and libusb and I’m able to build successfully on both windows and linux; however, on windows (W7) the call to libusb_open() fails with LIBUSB_ERROR_NOT_SUPPORTED (-12). It works fine on Linux.
Author
Hi Ed,
No. Nobody has tested this under Windows (until now). Troy confirmed compilation under Cygwin, but hasn’t had a chance to test.
Do you know if you have libusb installed under Cygwin?
Eric,
Sorry for the late reply (I didn’t get an email notice that you responded)…
The libusb that I am linking to is one that I got from libusb.org and built from scratch (on cygwin).
I assume that, if anything, that version would be newer than anything I would get from cygwin.
Ed
Author
Hi Ed,
We’ll look into this when we can, but it’s pretty low on our priority list at the moment.
Can you run a VM or borrow a Linux machine until then?
If not, do you have multiple i.MX boards? Since imx_usb is Linux-based, we can put together
a userspace that includes it.
Eric,
Its really no problem. I’ve been working on a linux box, and using imx_usb there. Which, by the way, I built the exact same way on linux as I did under cygwin). Its just a convenience because when we start building up raw boards, it would be nice to be able to use a typical lab pc which in most cases for us is some old Windows box. I know the MfgTool from freescale can be used there if really necessary.
If you (or I) figure out how to get imx_usb running on windows lets post that info here.
Thanks much for the help,
Ed
Author
That was also our motivation for Cygwin (old Lab PCs).
Author
Hi Ed.
It looks like Cygwin isn’t necessary, because Freescale has an equivalent tool.
See this post on sb_loader for details.
Eric, Just be aware of my post from Jun 28. I tried sb_loader, and as of now can’t explain why I see some invalid data on-target that I did not see when using imx_usb. I’ll post an update if I figure out what the issue is; but for now, just note the warning (could very well be a false alarm; however, as I said in my earlier post, I took the exact same image and loaded it with imx_usb and sb_loader, and the result was different (with sb_loader being the one that I currently claim at fault).
Author
Thanks Ed,
We have limited experience at this point, but nominally, this works. We have been able to take a current version of U-Boot and load and run it using sb_loader.
When/if I figure out whether this is an issue or its just my stupidity, I’ll let you know. Assume for now that its probably something I’m doing wrong.. 🙁
Author
Hey! I have to take offense at the wording here.
Stupidity is a pretty harsh word, and the worst case is that Ed made a mistake…
The best case is that we owe Ed a beer for finding a corner case where things don’t work.
Trying to unbrick the board,
ran ./imx_usb u-boot-otp.bin and got:
main:Could not open device vid=0x15a2 pid0x54 err-3
Author
You’ll need to run this using sudo or change the permissions for the /dev entry.
Eric,
I use sudo all the time, would be nice to just change permissions to eliminate this.
This is probably a dumb question but, how do you know which /dev entry to change?
The logical thing I did was compare ls -l of /dev with and without the board plugged in
and it shows usbdev1.13_3p00 and usbdev1.13_ep81
Ed
Author
There’s a way to do this using udev, and I’ve seen some related notes for Android fastboot devices (which also use libusb), but I don’t have anything off-hand.
I cheat and have imx_usb owned by root and set the suexec flag.
If I put the switches in what looks like (according to the board artwork) the USB position it doesn’t seem to work. However if I put the switches in the “Internal” position I can use the imx_usb program and boot the board fine. Is the artwork backwards or am I backwards? 🙂
Author
Krowtra is backwards.
From the posts above I see that this utility is not tested in cygwin environment, it would be nice, if available there, as our lab pcs are all windows.
I got it to compile after installing libusb in cygwin–>dev, and if I comment out sys/io.h it compiles.
running it takes segmentation fault. I am not familiar with cygwin environment and not user if libusb is doing its job. is sys/io.h required in cygwin environment ?
Any timeframe that you are planning to release cygwin version
Author
Hi Kumar,
Cycles with a working Windows install in our office are a rare commodity, so we don’t have anything planned immediately.
As for the compilation error, this may be a Cygwin version thing. It’s been a while since we’ve even compiled for Cygwin.
Yes, experiencing the same SIGSEGV fault in cygwin right at line 504. It appears we are all using the same libusb version since you must include . The fault is valid as the value of devs after the call libusb_get_device_list looks too low to be a real address.
Can you confirm the call you guys make to libusb_get_device_list on line 1604 returns valid buffer? Just seems the weird that the libusb library would work differently on Windows.
Actually, this appears to get rid of the SIGSEGV fault. http://cygwin.com/ml/cygwin/2013-03/msg00332.html
Now, I’m getting the error message “main:Could not open device vid=0x15a2 pid=0x54 err=-12”
Yeah, it looks like I cannot get rid of this error. I try to run as administrator and it is a no go. Looks like I need some help on this one. I’m sure sure how to get access to this device in Windows 🙁
Author
Can you run an Ubuntu virtual machine?
VirtualBox can access libusb, though I’m not sure about other virtual machine managers.
If not, can you get access to a full Linux machine in your office?
If none of those work, we have imx_usb running on our boards. Do you have another board you can use?
Actually, if I use the sb_loader in the mfgtool utilities folder then it works. Just follow their example. The sb_loader is just a command line they provide along with cfimager when you download the whole big mfgtool from their downloads site. Here is the link: https://www.freescale.com/webapp/Download?colCode=IMX_6DQ_MFG_TOOL&appType=license&location=null&fsrch=1&sr=1&Parent_nodeId=from%20search&Parent_pageType=from%20search&Parent_nodeId=1337699481071706174845&Parent_pageType=product
Ericr,
Hi,
You mentioned that you use “sb_loader” (under windows) from the MFGTOOL Utilities download.
I need a windows-based tool (without a GUI), so I tried that too. It has been working. I’ve been able to write code, download it and test it; however, this AM I just noticed that some portions of data area (that did not affect runtime) were not loaded as they should be. So, I went back to my linux box and used imx_usb to download the exact same set of files and then the data was clean. Not sure what the problem is, but I figured I’d let you know (it could be pilot error on my part).
So, this is just a warning that there may be something strange going on with the sb_loader tool (or I may not be using it correctly). You mentioned an “example”, but I didn’t find any information on this tool, I just run “sb_loader -f binfilename” and the board is magically loaded.
Author
Thanks Ed.
Oddly, I wasn’t aware of sb_loader. If it came from my fingertips, it shoulda’ had a u at the beginning 😉
Hi Eric,
Actually, my previous comment was directed to “Erickr”. The “sb_loader” is a real tool (no typo) ’cause it does come with the MFGTOOLS stuff that Freescale gives out. I tried it based on Erickr’s mention of it, and until this morning I *thought* it was working fine (I’m still looking for a windows-based tool, since imx_usb doesn’t seem to work on windows).
I sure would like to get that version working on windows! I really like to have source code for the tools I use.
Anyway, my previous comment (to Erickr) was just a “heads up warning” because I’m seeing corruption. Note that I’m already switched back to my linux-hosted build because of this.
Thanks,
Ed
Author
Either way, thanks for the update…
Hello,
I have flashed a wrong u-boot.bin version on the SPI-NOR flash of imx6q-sabrelite board, in-which sf command support has been removed.
I have another issue that, when I set the boot switches for OTG mode, i.e., SW1 – 1 & SW1 – 0. Connected the USB cable to OTG port of the board, but I am not able to see it getting detected as HID device in the device manager on Windows-7 machine. I also connected the same to Ubuntu machine, and checked lsusb. There also it is not getting detected.
Is there any solution? I think that probably the HID complient detection part of the code has been removed from the SPI-NOR flash, because of my last u-boot update. Is my understanding correct.
Help me please.
Author
Hello Bhimsen,
I suspect that you’re seeing the backwards artwork that Jason reported. Please try the alternate switch setting.
No changes to SPI-NOR can affect the ability to get into serial boot mode because that decision happens in the internal ROM before deciding to look at SPI-NOR.
Hi All,
I want to download my .bin file on the Nitrogen board, I produced this .bin file with imx_sdk from freescale. I dont want to use mfg tool as I am using ubuntu so I tried to dowloand my .bin file on the Nitrogen board using imx_usb_loader, I did the following.
I downloaded the imx_usb_loader_master.zip from the repository and then I extract all the files,
Then I run the make command , after that I could see imx_usb (application or exe file).
then I copied my uart_check_test.bin file and execute the following command
sudo su ./imx_usb uart_check_test.bin
and I got the following result:
=======================================================================
parse mx6_usb_work.conf
15a2:0054(mx6_qsb) bConfigurationValue =1
Interface 0 claimed
report 1, wrote 16 bytes, err=0
report 3, read 4 bytes, err=0
read=56 78 78 56
uart_check_test.bin 0 0 1 0 1 2
main dcd length 2b8
sub dcd length 2b4
dcd_ptr=0x10000430
loading binary file(uart_check_test.bin) to 10000000, skip=0, fsize=1a108 type=aa
<<>>
jumping to 0x10000400
=====================================================================
but nothing appears on my serial port that was supposed to be sent through uart.
I also tried other .bin files (that i compiled for different test) but every time , I was getting the same result with exactly same information…
can anybody guide me in this regard,
Muhammad Faisal.
Hi All,
I tried to download my u-boot.bin file on the Sabre Lite board using imx_usb_loader:
sudo ./imx_usb u-boot.bin
and I got the following result:
can anybody help me?
BR, Michael
Author
Hi Michael,
It appears that you weren’t connected over USB properly.
Did you run lsusb before-hand and verify that a “Freescale” device showed up?
Hi Ericn!
Yes, I run lsusb and verify that the “Freescale” device is defined correctly.
ID 15a2:0054 Freescale Semiconductor, Inc.
Author
Hi Mike,
Can you try with one of our U-Boot binaries? There’s a complete set (for various processor/memory configurations) on-line here:
If you’re running a standard SABRE Lite or Nitrogen6X with Quad-core, you’ll want to use ‘u-boot.nitrogen6q’:
Thanks, ericn.
I will try u-boot-nitrogen-20130422.zip tomorrow
Hi Ericn!
Yesterday I didn’t tell you that I try to load u-boot on a board of our own development, almost identical saber lite (sorry for bad English).
Today I once again run lsusb as “lsusb -v -d 15a2:0054” with our board:
Bus 001 Device 021: ID 15a2:0054 Freescale Semiconductor, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x15a2 Freescale Semiconductor, Inc.
idProduct 0x0054
bcdDevice 0.01
iManufacturer 1 Freescale SemiConductor Inc
iProduct 2 SE Blank ARIK
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 34
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 4 Freescale Flash
bmAttributes 0xc0
Self Powered
MaxPower 10mA
………………………….
and so on …
I try to load ./imx_usb u-boot.nitrogen6q to Sabre Lite – everything is ok.
when I try to load ./imx_usb u-boot.nitrogen6q to our devboard, I receive an error: “out err=-7”
out err=-7 is libusb_control_transfer error code LIBUSB_ERROR_TIMEOUT – transfer timed out.
in what there can be a problem (in processor, in RAM memory, in USB)?
Thanks.
BR, Michael
Author
Hi Michael,
Any number of problems could be present, but RAM issues are the most likely.
You might want to create a binary that runs from IRAM as a test.
Hi, Ericn!
I loaded u-boot.nitrogen6q on my board, but now other problem:
==================================================
imx_usb_loader-master$ sudo ./imx_usb u-boot.nitrogen6q
parse mx6_usb_work.conf
15a2:0054(mx6_qsb) bConfigurationValue =1
Interface 0 claimed
report 1, wrote 16 bytes, err=0
report 3, read 4 bytes, err=0
read=56 78 78 56
u-boot.nitrogen6q 0 0 1 0 1 2
main dcd length 308
sub dcd length 304
dcd_ptr=0x177ffc2c
loading binary file(u-boot.nitrogen6q) to 177ffc00, skip=0, fsize=50620 type=aa
<<>>
jumping to 0x177ffc00
==================================================
but nothing appears on my serial console port after the message “jumping to 0x177ffc00” 🙁
can you help me?
BR, Michael
Thanks, ericn.
I will try u-boot-nitrogen-20130422.zip tomorrow
Hi Michael and Eric
Was there ever a resolution to this? I am also receiving the same “jumping to 0x177ffc00” error
Author
Hi Rob,
I’m presuming a hardware error on Mike’s custom board, since this isn’t an issue we’ve seen.
Are you also running against a custom board?
This is just a stock sabre lite board rev D 5-9-12 mac: 00:19:B8:00:F1:01
This is just a stock sabre lite board rev D 5-9-12
Author
The ‘jumping to x’ message indicates success, and should be followed immediately by data on the serial console.
Are you seeing anything on the serial port?
Hi, Eric!
Now I run u-boot.imx on my custom board, the problem was that the console port UART2 moved from standard pins EIM_D26, EIM_D27 to pins SD4_DAT7, SD4_DAT4 🙁
Next question: I want that u-boot booted from eeprom spi memory. I wrote u-boot in eeprom memory to the address 0x400.
And now, how can I set eFUSEs to indicate (to say) boot ROM that the boot device is eeprom spi memory? (sorry for my bad English).
Or what I need to do that my board booted from eeprom spi memory? (now boot ROM at once jumps directly to the Serial Downloader)
Thanks!
BR, Michael
Author
Hi Michael,
At the risk of bricking your board, I can only say that
we use the imxotp command.
Please double-check the validity for your board (no warranty implied).
Thanks for following up eric.
I resolved the issue by using the manufactures tool in windows with a putty serial console open. The mfgtool in windows required: a restart of the pc, plugging in the device, then open the manufacturing tool in order for it to work.
Hello eric
I followed above procedure
and i ended up with
—————————————–
nothing happens afterwards
should the board be connected to minicom through uart while doing the above procedure ??
if yes , which port ?? (/dev/ttys0 or /dev/ttys2)
i am asking about the port because nothing comes in dmesg
please do reply
i am stuck with this board
thanks and regards
raviteja
Author
Hi Raviteja,
This all looks good, and you should see U-Boot come up on the serial console (/dev/ttymxc1, labelled “Console” on the DB-9).
i tried ttymxc1 but it says
minicom: cannot open /dev/ttymxc0: No such file or directory
same case with ttymxc0
Hello eric
i was able to flash u-boot on SPI-NOR
i used ttyS2
it worked
thanks
Author
Glad to hear it.
I think I have trashed my My Sabre Lite board – SPI NOR Flash after I have tried to reflash it by these Linaro instructions, using SD card.
https://wiki.linaro.org/Boards/MX6QSabreLite
I failed to recover the board (didn’t even have a serial output after reflashing) using Freescale tool. I tried several versions with no luck.
After reading this post – I have managed to get U-Boot launch in a serial console (after it has loaded uboot.bin, I had from Freescale tool, into RAM and executet it) from USB. U-Boot Menu opened.
Now, I would like to flash this (or other) Uboot to a serial ROM (in order to boot from the serial flash, as I did before and not from USB). Can you please explain how do I do flash Uboot on a serial flash in Sabre Lite board?
Thanks, Assya.
Author
Hi Assya,
As long as you’re re-programming the flash, let’s get you started off right.
We’ve just uploaded a tarball of the latest production U-Boot code that we’re shipping:
u-boot-2013-6-19.tar.gz
If you extract it to a single-partition SD card (FAT or ext2/3/4), and re-name u-boot.nitrogen6q to u-boot.imx, you can run upgradeu to re-program your flash with the latest.
You’ll need to be running our U-Boot though. Freescale’s MFG U-Boot binary has some incompatibilities with the 6x_upgrade script.
On your dev machine: run imx_usb like this:
You should see U-Boot launch on the serial port, and you should see today’s date (Jun 19, 2013) in the banner.
Then you can use upgradeu on the serial console as shown in this post.
ericn,
thank you for the quick reply.
After wasting a half day on this I was finally able to boot the board (without the USB).
I followed the instructions on http://www.eewiki.net/display/linuxonarm/i.MX6x+SABRE+Lite+SPI+Flash+Recovery
My board now boots with U-Boot 2009.08-…..
The strange thing was that after playing with the boot switch on board so many times, I forgot to put it into 01 mode and I performed the procedure (booting and reflashing) when the boot switch is set into 00. I wonder what does it mean?
My next purpose is to be able to boot Yocto built on it (from SD card).
This is the reason I have tried to update the boot with Linaro iMX6DQ_SPI_to_uSDHC3.bin from the first place.
This puzzles me. Do I need to upgrade to the updated boot (you have supplied) in order to be able to boot from SD card (or microSD card) as stated in Linaro page:
https://wiki.linaro.org/Boards/MX6QSabreLite
“By default, the SabreLite boards come with u-boot which is loaded from the SPI NOR flash. These boards need to be reflashed with a small SD card loader to support boot from SD card. This small SD card loader will be flashed into the SPI NOR, the board will still boot from SPI NOR, but the loader will in turn request the BootROM to load the u-boot from SD card. ”
Or this Linaro page isn’t valid for my case.
Thank you very much, Assya.
Author
Hi Assya,
The notes on the Linaro page are bad advice for just about everyone, and I’ve asked Shawn to take them down, or at least say that these are only useful for testing the Linaro build process.
I’ll do the same with the eewiki page.
Please upgrade to our latest using the instructions I posted earlier and let me know if you have any trouble.
ericn, thank you.
I have written a reply, but not sure it was sent.
I have finally reprogram with the flash using the uboot and instructions from http://www.eewiki.net/display/linuxonarm/i.MX6x+SABRE+Lite+SPI+Flash+Recovery
However, after playing with the boot switch half a day to fix my board, I have accidentally did it when set to 00. Is it possible?
The reason I have started to reprogram the SPI NOR Flash due to the statement in Linaro
“By default, the SabreLite boards come with u-boot which is loaded from the SPI NOR flash. These boards need to be reflashed with a small SD card loader to support boot from SD card. This small SD card loader will be flashed into the SPI NOR, the board will still boot from SPI NOR, but the loader will in turn request the BootROM to load the u-boot from SD card.”
Following this procedure led me to recovering my board. Recovery with Freescale tool didn’t work for me. Thus, if I want to load permanently the uboot on my SDcard (slot3), for example Yocto builds – what do I need to do?
Do I need to update the uboot to the updated one (currently I am with 2009.08)?
Do I need to try the Linaro flow again?
Thank you,
Assya.
Author
Again, this is bad advice.
The reason you didn’t see your post is that we have to approve each comment before it becomes visible (spam prevention).
Hi all,
I’m trying to unbrick my i.MX6q Sabre Lite board.
Connecting the board to the host PC with by USB, and turning the switches to USB OTG on the board, then powering up or reseting the board.
But when entring the command : lsub
I have no entry named Freescale semiconductor Inc !!!
How can I force the board to run up on USB OTG recovery mode ?
Thanks in advance for your answers
Best regards
Author
Hello Younes,
Please try the alternate switch settings (i.e. 10 instead of 01). The silk screen is a bit confusing on some boards.
Thank’s ericn for your quick answer. I’ve tried all the possibilities of the switches but it doesn’t work at all.
No way to have the Freescale entry by lsusb !!! Does exist another way ?
Because at the moment when I turn on the board I have no output on the output of the serial line.
Regards
Author
Hi Younes,
Nope. There is no other way.
I’ve never seen this fail, and this is effectively what’s done at the time of manufacturing of each board, so the USB OTG ports are tested 100% of the time.
Are you getting any messages from the kernel on your development machine when you connect/disconnect the cable?
I have seen the USB port on my host (laptop) get screwed up before, and a re-boot fixed it.
Also, please double-check your cabling to see that everything is well-connected.
Hi Eric,
I checked the cabling, and everything is well connected. Here is the log from : dmesg | tail command :
younes@younes-Latitude-E6530:~/Younes/Sabre$ dmesg | tail
[ 1882.625777] usb 3-1: device not accepting address 59, error -71
[ 1882.737791] usb 3-1: new full-speed USB device number 60 using xhci_hcd
[ 1882.737952] usb 3-1: Device not responding to set address.
[ 1882.941895] usb 3-1: Device not responding to set address.
[ 1883.145722] usb 3-1: device not accepting address 60, error -71
[ 1883.257724] usb 3-1: new full-speed USB device number 61 using xhci_hcd
[ 1883.257887] usb 3-1: Device not responding to set address.
[ 1883.461881] usb 3-1: Device not responding to set address.
[ 1883.665652] usb 3-1: device not accepting address 61, error -71
[ 1883.665689] hub 3-0:1.0: unable to enumerate USB device on port 1
Do you have an idea of where it may come ?
Thanks
Hi Eric,
Here is the log with the dmesg command :
younes@younes-Latitude-E6530:~/Younes/Sabre$ dmesg | tail
[16725.052578] usb 3-1: device not accepting address 44, error -71
[16725.164583] usb 3-1: new full-speed USB device number 45 using xhci_hcd
[16725.164711] usb 3-1: Device not responding to set address.
[16725.368706] usb 3-1: Device not responding to set address.
[16725.572494] usb 3-1: device not accepting address 45, error -71
[16725.684499] usb 3-1: new full-speed USB device number 46 using xhci_hcd
[16725.684657] usb 3-1: Device not responding to set address.
[16725.888632] usb 3-1: Device not responding to set address.
[16726.092439] usb 3-1: device not accepting address 46, error -71
[16726.092478] hub 3-0:1.0: unable to enumerate USB device on port 1
Do you have an idea of where it may come ?
Thanks
Any suggestion ?
On my Nitrogen6x-Rev 4 board, it’s clear that the suggested procedure does not work:
— I have tried all four possible SW1 settings.
— I have tried two different USB OTG cables.
Nothing I do makes a Freescale device show up under ‘lsusb’. Nothing shows up in dmesg when I plug and unplug the USB cable, whether or not power is applied to the device. I’m running Debian with libusb installed.
For the hell of it, I tried running the imx_usb tool, but it exits with status 1, and there is no response from a console session.
There almost certainly is nothing wrong with the board HW. I got into this predicament by using a 4.9 kernel with broken MTD support to reflash u-boot.img. Only after I had done the reflashing did I recall that mtd-utils was not working with the kernel version.
I will try to reflash with the Windows tool, as it seems like there is no other choice.
Hi,
The only explanation would be that you SW1 switch is damaged and/or isn’t soldered properly.
Otherwise there’s no way the BootROM can miss the pin configuration. Have you tried on another computer?
Have entirely unplugged the power between each combination (even USB cable)?
Anyway the only combination that works is the one on the picture above in the article. You can check the board schematics as well as the i.MX6Q technical reference manual to understand the BootROM behavior.
Regards,
Gary
Hello Ericn
I am facing a strange issue this time
My board is not getting detected when i connect in usb mode through usb-otg
nothing in dmesg
can you figure out what might be the problem
lsusb is also not showing any new device
Author
Is this after boot, or when running U-Boot (using bmode)?
Not all of our images are configured for USB OTG by default.
My board is not showing u-boot prompt
I am trying to flash u-boot on SPI-NOR by following instructions in “unbricking sabrelite board”
but my board is not getting detected when i give lsusb command
I followed all steps – kept board in USB mode i.e 01
installed libusb tools
is there any possibility to boot from mmc ??
i think my SPI_NOR got corrupted
Author
Can you try switch position 10? Some silk-screens are mis-leading.
There is no way of getting around the issue except through USB OTG,
Hi,
I had the same probem. I resolved it with the MFGTool. You need to be under Windows. And your target will be flashed by putting U-Boot on the SPI-NOR. Then you can boot from mmc
hey,
I might have bricked my board.When I try reflashing using the command sudo ./imx_usb u-boot.imx
it gives an error:
parse mx6_usb_work.conf
15a2:0054(mx6_qsb) bConfigurationValue =1
Interface 0 claimed
report 1, wrote 16 bytes, err=0
report 3, read 4 bytes, err=0
read=56 78 78 56
u-boot.imx 0 0 1 0 1 2
error, can not open input file: u-boot.imx
report 1, wrote 16 bytes, err=0
report 3, read 4 bytes, err=0
read=56 78 78 56
Any suggestions??
Author
I think you missed the important error message in the spew:
You need to specify the location of the U-Boot file that you want to execute.
Can somebody explain to me the difference between ‘load’ and ‘plug’ when using imx_usb?
The explanation is not very clear to me:
“#plug – without jump uses header but clears plug flag to stop after plug execution”
Author
At a couple of points in time, we’ve had a couple of separate issues related to the erase size in the 6x_upgrade script.
If you run into a message that says:
Please replace 6x_upgrade with the one in this zip-file. The sources are here.
Hi Eric,
I am strugling the u-boot issue on my customed board. I’ve used usb tool ./imx_usb u-boot.imx and booted on my board as the boot info pops up from serial console as listing below. But it is not detecting the 6x_bootscript on the SD card. Do you have any comment?
Second question: Can you please provide me a detail instruction how to flash the u-boot.imx or u-boot.bin in to SPI-NOR, which is how to use sf command?
-Boot 2013.04-04341-g1903727-dirty (Jul 25 2013 – 16:00:28)
CPU: Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Board: SABRE Lite
DRAM: 1 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
SF: Unsupported manufacturer 00
*** Warning – spi_flash_probe() failed, using default environment
No panel detected: default to HDMI
enable_hdmi: setup HDMI monitor
Display: HDMI (1024×768)
In: serial
Out: serial
Err: serial
Net: Phy not found
using phy at 4
PHY reset timed out
FEC [PRIME]
Warning: failed to set MAC address
Hit any key to stop autoboot: 0
AHCI 0000.0000 1 slots 1 ports ? Gbps 0x0 impl SATA mode
flags:
No port device detected!
** Bad device size – sata 0 **
** Bad device size – sata 0 **
SATA device 1: unknown device
** Bad device sata 1 **
** Bad device sata 1 **
MMC: no card present
mmc0(part 0) is current device
MMC: no card present
** Bad device mmc 0 **
MMC: no card present
** Bad device mmc 0 **
MMC: no card present
mmc1(part 0) is current device
MMC: no card present
** Bad device mmc 1 **
MMC: no card present
** Bad device mmc 1 **
6x_bootscript not found
serial console at 115200, 8N1
details at http://boundarydevices.com/6q_bootscript
(Re)start USB…
USB0: USB EHCI 1.00
scanning bus 0 for devices… 1 USB Device(s) found
scanning usb for storage devices… 0 Storage Device(s) found
scanning usb for ethernet devices… 0 Ethernet Device(s) found
As we knew the Boundary Nitrogen6x board has u-boot image programmed in serial EEPROM to boot the device. After booted it looks for 6x_bootscript on SD card, then boot the kernel.
I wonder if it is possible directly boot u-boot from SD card with no EEPROM or the USB OTG help. For example, the u-boot in serial EEPROM has been detroyed and I copy u-boot.imx to first partition on a SD card and insert it to board and boot directly. Is it possible? If it is yes, what should the switch dip on the board settings be 00, 01, 10 or 11?
Hi
I am using mx6 sololite board having SPI-NOR(16 MB, micron chip) as a booting device but i am not able to initialize the SPI-NOR. i got to know this by using sf probe command. It is showing my device id correct but also showing that “failed to initialize SPI FLASH 0:0”.
Do we need to make any changes in config file to initiliaze the SPI. Can anyone please reply.
In the past I used this tool a lot to recover our nitrogen boards and in the last few days to bring-up our custom boards. I works flawlessly for me.
But then I thought about how easy would it be to upload just a little bit more than just the u-boot. And I discovered this little bastard tool has everything in place to do but it laks documentation about how to do things.
So I opened a issue on github where I tried to describe the things I figured out so far.
https://github.com/boundarydevices/imx_usb_loader/issues/4
So my goal is to upload all the peaces like u-boot,kernel,dtb and a recovery image through USB and then run a u-boot script which burns this all this stuff to the Flash.
Author
Hi Christian,
We’re headed in this direction, but in a slightly different way. Our intent is to use imx_usb to allow download of U-Boot, but then use U-Boot to allow download of the rest.
Troy has committed patches to add USB OTG support to U-Boot, and we hope this will make the 2013.10 release. After that, there are a number of ways to do what you’re after:
Hi
I have unbricked my board using your imx_usb. Unbricking worked, at least I think so, see attached log. Uploading functioned with all settings of SW1 beside 11, BTW.
Booting the board I do not get any reaction, however. Neither on the attached monitor nor via the serial terminal. The serial terminal works, I have also tried different u-boot files.
What might be wrong? What can I do to get the board operational again?
Peter
Author
Hi Peter,
What led up to the bricking? Perhaps that will shed some light on what’s going on.
As you noted, the log above shows that the u-boot.imx file was successfully downloaded into RAM and executed, so the only things that could be at fault are:
— improper u-boot binary (I’d try the latest production version as a start, or
— bad serial connection (though the display should light up), or
— bad board
Hi Eric
Thanks for your reply.
Some time ago I tried to install a Linaro Linux without success. So, I dediced to unbrick the board and to install one of BM’s Linux systems. Unbricking functioned and u-boot sent some messages to the display. As there was no SD on board booting stopped. After having added an SD and rebooting the board seemed to be dead. Unbricking still works, however
I tried several u-boot binaries from the production package you suggested. The serial connection is operational in principle (checked with another ARM board).
Regards
Peter
Author
Hi Peter,
Only one of the binaries in the production package will work for you. The most likely is u-boot.nitrogen6q, which is for both SABRE Lite (BD-SL-i.MX6) and standard Nitrogen6X boards.
Hi Eric
thanks for your reply.
I have tried u-boot.nitrogen6q (and nearly all the other ones referring to nitrogen boards, too) with no success. So, there is a problem with my board.
Best regards
Peter
Hi,
Problem after i try to excute the flash command:
linzy@debian:~/temp/imx_usb_loader/imx_usb_loader$ sudo ./imx_usb u-boot.nitrogen6dl
No “_” environment variable
argc == 2, argv == 0xbf949464
base == 0x804fd00:./imx_usb
trailing slash == 0x804fd01:/imx_usb
conf_path == ./
config file
No “_” environment variable
argc == 2, argv == 0xbf949464
base == 0x804fd00:./imx_usb
trailing slash == 0x804fd01:/imx_usb
conf_path == ./
config file
parse mx6_usb_work.conf
15a2:0061(mx6_qsb) bConfigurationValue =1
Interface 0 claimed
report 1, wrote 16 bytes, err=0
report 3, read 4 bytes, err=0
read=56 78 78 56
u-boot.nitrogen6dl 0 0 1 0 1 2
main dcd length 308
sub dcd length 304
w3 in err=-7, last_trans=0 00 00 00 00
addr=0x021b001c, val=0x04008032
w4 in err=-7, last_trans=0 00 00 00 00
dcd_ptr=0x177ffc2c
!!perform_dcd returned -7
report 1, wrote 0 bytes, err=-7
report 3, read 0 bytes, err=-7
read=00 00 00 00
report 1, wrote 0 bytes, err=-7
report 3, read 0 bytes, err=-7
read=00 00 00 00
report 1, wrote 0 bytes, err=-7
report 3, read 65 bytes, err=-7
read=00 00 00 00
report 1, wrote 0 bytes, err=-7
report 3, read 0 bytes, err=-7
read=00 00 00 00
report 1, wrote 0 bytes, err=-7
report 3, read 0 bytes, err=-7
read=00 00 00 00
report 1, wrote 0 bytes, err=-7
report 3, read 0 bytes, err=-7
read=00 00 00 00
4 in err=-7, last_trans=65 00 00 00 00
Err 7 always happed, and my board label:”NITROGEN6-REV2 11-28-2012″
i.mx6 dual version, and try other versions u-boot in “u-boot-production.tar.gz”, but the same results. please help on this.
Thanks in advance!
BR Linzy
So I’m having an issue using both the Linux and PC unbricking tools on a Nitrogen 6x Lite board. USB-OTG mode comes up as “Freescale SE Blank RIGEL” instead of “Freescale SE Blank ARIK” if that helps.
Author
Does lsusb show the device with id 15a2:0054? That should be all that matters.
Bus 001 Device 002: ID 15a2:0061 Freescale Semiconductor, Inc.
It looks like the id for USB-OTG recovery mode has changed from 15a2:0054 to 15a2:0061 for all the Nitrogen 6X Lite boards that I have tested. I don’t know if that has anything to do with the name change from ARIK to RIGEL.
Author
Hi Robert,
The change from 15a2:0054 to 15a2:0061 likely has to do with the processor variant (Quad versus Solo).
Are you by chance configuring permissions through udev? If so, the rule will need an update.
I generally just set imx_usb to setuid root to get around this.
So running the linux imx_usb tool with raised permissions or from terminal with sudo works just fine. It is a pain to remember that because when I run imx_usb without raised permissions I get an error ‘-3’ which would otherwise be an indication of an entirely different issue. Though the Windows sb_loader.exe does not work with the Nitrogen Lite board, I even tried running using the 3 different versions of the sb_loader program that come with the 3 different freescale manufacturing tool packages for regular, lite, and solo, in addition to the version linked to directly on the Boundary Devices site.
Author
Sorry for the hassle Robert.
We’ll look into this.
Hello Eric,
Looks like some thing wrong happened to my sabre-lite board.
When I connect the power supply to the board, the LED near 5V connector blinks. I have connected the USB cable to Linux pc and run lsusb command. But the there is no device is getting detected with freescale dev id. What the blinking LED indication means? How can I bring the board up?
Hi everyone ,
>I’m currently working on an IMX6 Sabrelite and managed to brick it
I)No activity on terminal,
II)USB not recognized under USB mode(01) (Windows PC “USB device not recognized” and on Linux unable to enumerate the USB device).
after i’d been flashing SPI-NOR several times to switch between platforms. Now i’m trying to get the board up i.e. see U-boot run on board and send message to terminal.
>From what i learned, imx6 boots based on FUSE SWITCH[0:1] configuration to particular media. In my case with any config[00,01,10] i couldn’t get the board run(Even i tried 11 freescale reserved config ).
>In all cases the green light indicating power glows and with SDslot and Ethernet port i could see lights glowing on connected condition, but serial port remains clean with no messages and USB connected on Host(Windows PC) not recognized(USB VID/UNKNOWN). which used to be detected as HIF device under 01 configuration previously.
>So with USB flashing not possible via MFG tool or sbloader(as its detected as UNKNOWN device and not as HIF device) ,
what could be done to get the board run i.e.
1)Is it possible to Program U-boot to SPI-NOR flash under this condition
2)Use SD-CARD or any other media on-board to run U-boot fro once after which i’ll be able to update SPI-NOR flash easily.
Please reply on this as its a fairly new board and would be highly helpful on my project.
Hi ,
I followed the steps mentioned in this post to unbrick the board. But when it boots up it gets stuck with the following log
U-Boot 2013.04-00308-ge1290a7 (Jun 18 2013 – 13:38:20)
CPU: Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Board: SABRE Lite
DRAM: 1 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
SF: Detected SST25VF016B with page size 4 KiB, total 2 MiB
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x4 retry=0
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x4 retry=1
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x4 retry=2
i2c_init_transfer: give up i2c_regs=021a8000
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x38 retry=0
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x38 retry=1
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x38 retry=2
i2c_init_transfer: give up i2c_regs=021a8000
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x48 retry=0
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x48 retry=1
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x48 retry=2
i2c_init_transfer: give up i2c_regs=021a8000
No panel detected: default to HDMI
enable_hdmi: setup HDMI monitor
Display: HDMI (1024×768)
In: serial
Out: serial
Err: serial
Net: using phy at 6
FEC [PRIME]
Hit any key to stop autoboot: 0
AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
flags: ncq stag pm led clo only pmp pio slum part
No port device detected!
** Bad device size – sata 0 **
** Bad device size – sata 0 **
SATA device 1: unknown device
** Bad device sata 1 **
** Bad device sata 1 **
MMC: no card present
mmc0(part 0) is current device
MMC: no card present
** Bad device mmc 0 **
MMC: no card present
** Bad device mmc 0 **
mmc1 is current device
** Unrecognized filesystem type **
1653 bytes read in 65 ms (24.4 KiB/s)
## Executing script at 10008000
—— no HDMI monitor
Setting bus to 2
Valid chip addresses:wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x4 retry=0
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x4 retry=1
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x4 retry=2
i2c_init_transfer: give up i2c_regs=021a8000
—— no Freescale display
Valid chip addresses:wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x38 retry=0
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x38 retry=1
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x38 retry=2
i2c_init_transfer: give up i2c_regs=021a8000
—— no 1024×600 display
Valid chip addresses:wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x48 retry=0
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x48 retry=1
wait_for_sr_state: failed sr=81 cr=a0 state=2020
i2c_init_transfer: failed for chip 0x48 retry=2
i2c_init_transfer: give up i2c_regs=021a8000
—— no 800×480 display
3725540 bytes read in 490 ms (7.3 MiB/s)
## Booting kernel from Legacy Image at 10800000 …
Image Name: Linux-3.0.35-gc38a245
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3725476 Bytes = 3.6 MiB
Load Address: 10008000
Entry Point: 10008000
Verifying Checksum … OK
Loading Kernel Image … OK
OK
Starting kernel …
Uncompressing Linux… done, booting the kernel.
Linux version 3.0.35-gc38a245 (robert@robert-p7-1597c) (gcc version 4.6.2 20110630 (prerelease) (Freescale MAD — Linaro 2011.07 — Built at 2011/08/10 09:20) ) #6 SMP PREEMPT Fri Jun 28 13:55:06 MST 2013
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: Boundary Devices Nitrogen6X/SABRE Lite Board
Memory policy: ECC disabled, Data cache writealloc
CPU identified as i.MX6Q, silicon rev 1.2
PERCPU: Embedded 7 pages/cpu @8c008000 s5440 r8192 d15040 u32768
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 227328
Kernel command line: enable_wait_mode=off video=mxcfb0:off video=mxcfb1:off video=mxcfb2:off console=ttymxc1,115200 vmalloc=400M consoleblank=0 rootwait root=/dev/mmcblk0p1
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 640MB 256MB = 896MB total
Memory: 900848k/900848k available, 147728k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 – 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 – 0xfffe0000 ( 896 kB)
DMA : 0xf4600000 – 0xffe00000 ( 184 MB)
vmalloc : 0xc0800000 – 0xf2000000 ( 792 MB)
lowmem : 0x80000000 – 0xc0000000 (1024 MB)
pkmap : 0x7fe00000 – 0x80000000 ( 2 MB)
modules : 0x7f000000 – 0x7fe00000 ( 14 MB)
.init : 0x80008000 – 0x80039000 ( 196 kB)
.text : 0x80039000 – 0x806bb274 (6665 kB)
.data : 0x806bc000 – 0x80712dc0 ( 348 kB)
.bss : 0x80712de4 – 0x80756ce4 ( 272 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Preemptible hierarchical RCU implementation.
NR_IRQS:624
MXC GPIO hardware
sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms
arm_max_freq=1GHz
MXC_Early serial console at MMIO 0x21e8000 (options ‘115200’)
bootconsole [ttymxc1] enabled
Console: colour dummy device 80×30
Calibrating delay loop… 1581.05 BogoMIPS (lpj=7905280)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
CPU1: Booted secondary processor
CPU2: Booted secondary processor
CPU3: Booted secondary processor
Brought up 4 CPUs
SMP: Total of 4 processors activated (6324.22 BogoMIPS).
devtmpfs: initialized
print_constraints: dummy:
NET: Registered protocol family 16
print_constraints: vddpu: 725 1300 mV at 1150 mV fast normal
print_constraints: vddcore: 725 1300 mV at 1150 mV fast normal
print_constraints: vddsoc: 725 1300 mV at 1200 mV fast normal
print_constraints: vdd2p5: 2000 2775 mV at 2400 mV fast normal
print_constraints: vdd1p1: 800 1400 mV at 1100 mV fast normal
print_constraints: vdd3p0: 2625 3400 mV at 3000 mV fast normal
———— Board type Sabre Lite
imx_add_mxc_pwm:pdata= (null)
imx_add_mxc_pwm:pdata= (null)
imx_add_mxc_pwm:pdata=806df0f0
imx_add_mxc_pwm:pdata= (null)
Flexcan NXP tja1040
hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step.
hw-breakpoint: maximum watchpoint size is 4 bytes.
L310 cache controller enabled
l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x02070000, Cache size: 1048576 B
bio: create slab at 0
print_constraints: VDDA: 2500 mV
print_constraints: VDDIO: 3300 mV
machine_constraints_voltage: VDDD: unsupportable voltage constraints
reg-fixed-voltage reg-fixed-voltage.2: Failed to register regulator: -22
reg-fixed-voltage: probe of reg-fixed-voltage.2 failed with error -22
print_constraints: vmmc: 3300 mV
vgaarb: loaded
SCSI subsystem initialized
spi_imx imx6q-ecspi.0: probed
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Freescale USB OTG Driver loaded, $Revision: 1.55 $
imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
imx-ipuv3 imx-ipuv3.1: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 driver probed
mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 dphy version is 0x3130302a
MIPI CSI2 driver module loaded
Advanced Linux Sound Architecture Driver Version 1.0.24.
Bluetooth: Core ver 2.16
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: L2CAP socket layer initialized
Bluetooth: SCO socket layer initialized
cfg80211: Calling CRDA to update world regulatory domain
Switching to clocksource mxc_timer1
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
TCP: Hash tables configured (established 131072 bind 65536)
TCP reno registered
UDP hash table entries: 512 (order: 2, 16384 bytes)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
Static Power Management for Freescale i.MX6
wait mode is disabled for i.MX6
cpaddr = c0880000 suspend_iram_base=c0918000
PM driver module loaded
link up failed, DB_R0:0x0014cd00, DB_R1:0x08200000!
IMX PCIe port: link down!
IMX usb wakeup probe
add wake up source irq 75
IMX usb wakeup probe
cpu regulator mode:ldo_enable
i.MXC CPU frequency driver
squashfs: version 4.0 (2009/01/31) Phillip Lougher
msgmni has been set to 1759
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
pwm_config: pwm freq = 32786, clk_select=2 clock_rate=22000000
pwm_config: pwm freq = 20000, clk_select=2 clock_rate=22000000
MIPI DSI driver module loaded
mxc_sdc_fb mxc_sdc_fb.0: mxcfb0 is turned off!
mxc_sdc_fb mxc_sdc_fb.1: mxcfb1 is turned off!
mxc_sdc_fb mxc_sdc_fb.2: mxcfb2 is turned off!
mxc_sdc_fb mxc_sdc_fb.3: register mxc display driver ldb
_regulator_get: get() with no identifier
ldb_disp_init: ret=3, 1280×800
ldb_disp_init:r=59, x=1280, y=800, p=14065, l=40, r=40, upper=10, lower=3, h=80, v=10
ldb_disp_init: 1024×768
ipu_init_sync_panel: disp=0, pixel_clk=71098000 71458646
imx-ipuv3 imx-ipuv3.1: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)
pwm_config: pwm freq = 32786, clk_select=2 clock_rate=22000000
pwm_config: pwm freq = 20000, clk_select=2 clock_rate=22000000
ipu_init_sync_panel: disp=0, pixel_clk=71098000 71458646
Console: switching to colour frame buffer device 160×50
imx-sdma imx-sdma: loaded firmware 1.1
imx-sdma imx-sdma: initialized
Serial: IMX driver
imx-uart.0: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX
imx-uart.1: ttymxc1 at MMIO 0x21e8000 (irq = 59) is a IMX
old_ufcr=a81 new_ufcr=b01, old_ucr2=4027 new_ucr2=4027, old_ubir=f num=1f7, old_ubmr=15b denom=c34
clk=80000000 div=7 num=504 denom=3125 baud=115200
console [ttymxc1] enabled, bootconsole disabled
console [ttymxc1] enabled, bootconsole disabled
loop: module loaded
No sata disk.
m25p80 spi0.0: sst25vf016b (2048 Kbytes)
Creating 3 MTD partitions on “m25p80”:
0x000000000000-0x0000000c0000 : “bootloader”
0x0000000c0000-0x0000000c2000 : “ubparams”
0x0000000c2000-0x000000200000 : “unused”
vcan: Virtual CAN interface driver
CAN device driver interface
flexcan netdevice driver
flexcan imx6q-flexcan.0: device registered (reg_base=c09a8000, irq=142)
FEC Ethernet Driver
fec_enet_mii_bus: probed
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky
ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
fsl-ehci fsl-ehci.0: irq 75, io base 0x02184000
fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
add wake up source irq 72
fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2
fsl-ehci fsl-ehci.1: irq 72, io base 0x02184200
fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Initializing USB Mass Storage driver…
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver usbserial
usbserial: USB Serial Driver core
USB Serial support registered for GSM modem (1-port)
usbcore: registered new interface driver option
option: v0.7.2:USB Driver for GSM modems
USB Serial support registered for Qualcomm USB modem
usbcore: registered new interface driver qcserial
ARC USBOTG Device Controller driver (1 August 2005)
mousedev: PS/2 mouse device common for all mice
input: gpio-keys as /devices/platform/gpio-keys/input/input0
usb 2-1: new high speed USB device number 2 using fsl-ehci
hub 2-1:1.0: USB hub found
hub 2-1:1.0: 3 ports detected
tsc2004_prepare_for_reading: write_cmd -110
tsc2004: probe of 2-0048 failed with error -110
egalax_ts 2-0004: egalax_ts: failed to read firmware version
egalax_ts: probe of 2-0004 failed with error -5
ft5x06-ts 2-0038: ft5x06: Could not detect touch screen.
ft5x06: Jun 27 2013
check_alarm_past: alarm in the past
snvs_rtc snvs_rtc.0: rtc core: registered snvs_rtc as rtc0
i2c /dev entries driver
Linux video capture interface: v2.00
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video16
mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video17
i2c-core: driver [mma8450] using legacy suspend method
i2c-core: driver [mma8450] using legacy resume method
add mma8450 i2c driver
imx2-wdt imx2-wdt.0: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=1)
Bluetooth: HCI UART driver ver 2.2
Bluetooth: HCILL protocol initialized
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
mmc0: SDHCI controller on platform [sdhci-esdhc-imx.2] using DMA
sdhci sdhci-esdhc-imx.3: no write-protect pin available!
mmc1: SDHCI controller on platform [sdhci-esdhc-imx.3] using DMA
mxc_vdoa mxc_vdoa: i.MX Video Data Order Adapter(VDOA) driver probed
VPU initialized
mxc_asrc registered
Thermal calibration data is 0x5704b77d
Thermal sensor with ratio = 179
Anatop Thermal registered as thermal_zone0
anatop_thermal_probe: default cooling device is cpufreq!
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
usbcore: registered new interface driver snd-usb-audio
mxc_hdmi_soc mxc_hdmi_soc.0: MXC HDMI Audio
imx-hdmi-soc-dai imx-hdmi-soc-dai.0: Failed: Load HDMI-video first.
sgtl5000 0-000a: Failed to get supply ‘VDDD’: -19
print_constraints: 0-000a: 850 1600 mV at 1200 mV normal
sgtl5000 0-000a: Device with ID register 0 is not a sgtl5000
sgtl5000 0-000a: asoc: failed to probe CODEC sgtl5000.0-000a: -19
asoc: failed to instantiate card sgtl5000-audio: -19
Initialize HDMI-audio failed. Load HDMI-video first!
ALSA device list:
No soundcards found.
NET: Registered protocol family 26
TCP cubic registered
NET: Registered protocol family 17
can: controller area network core (rev 20090105 abi 8)
NET: Registered protocol family 29
can: raw protocol (rev 20090105)
can: broadcast manager protocol (rev 20090105 t)
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Bluetooth: BNEP filters: protocol multicast
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
lib80211: common routines for IEEE802.11 drivers
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
Bus freq driver module loaded
Bus freq driver Enabled
mxc_dvfs_core_probe
DVFS driver module loaded
regulator_init_complete: VDDIO: incomplete constraints, leaving on
regulator_init_complete: VDDA: incomplete constraints, leaving on
snvs_rtc snvs_rtc.0: setting system clock to 1970-01-01 00:00:00 UTC (0)
Waiting for root device /dev/mmcblk0p1…
mmc1: host does not support reading read-only switch. assuming write-enable.
mmc1: new SDHC card at address aaaa
mmcblk0: mmc1:aaaa SU04G 3.69 GiB
mmcblk0: p1
EXT3-fs: barriers not enabled
kjournald starting. Commit interval 5 seconds
EXT3-fs (mmcblk0p1): using internal journal
EXT3-fs (mmcblk0p1): recovery complete
EXT3-fs (mmcblk0p1): mounted filesystem with writeback data mode
VFS: Mounted root (ext3 filesystem) on device 179:1.
devtmpfs: mounted
Freeing init memory: 196K
init: ureadahead main process (1358) terminated with status 5
unable to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: Connection refused
ov5642_read_reg:write reg error:reg=300a
Could you please help..
Hi,
I want to bring up the nitrogen 6x board and i followed the steps which are there in i.MX_6Dual6Quad SABRE_SD_Linux_User_Guide.pdf. I could able to build the uboot and kernel succesfully and i got uImage,uboot.bin and rootfs.
But if i flash the images to the SD card by refering to that document. Board in not booting , it is showing the error as 6x_bootscript not found.
Can anyone help me how to solve that issue.
Thanks and regards.
Panish
Hi,
Further to the above post the error is as below:-
6x_bootscrpit not found.
Disk sector 00 count 0x76a000
expose MMC drive 0 over USB
Hi,
We use Nitrgen6x since long time now, with our custom bootloader. To flash it, we use imx_usb without problem.
Yesterday, power supply was shutdown by error while board was flashing. Since this error, we can’t do a sf probe on the board :
Update-Boot > sf probe
SF: Unsupported manufacturer 00
Failed to initialize SPI flash at 0:21248
Have you an idea about the problem ?
Hello
I’m able to load the mfg u-boot with the imx_usb loader, nevertheless I need to know how do I load also the mfg kernel, mfg device tree, and mfg initramfs. The reason I want to do this is to be able to flash my image to the emmc using utp_com.
I was reading in this site:
http://techblog.ixonos.com/2015/01/linux-flashing-for-freescale-imx6.html?showComment=1467830343510#c6686939955576691940
That they first flashed the “flashing OS” into the device with imx_usb tool and after that “a SD card device (/dev/sd* ) is available from the target device to the host machine via an USB connection” and this special SD card device exposed is the one that allows the board to receive utp commands. The bad thing is that they don’t explain how to get the “flashing OS” into the board using imx_usb tool.
Could you please elaborate on this?
Thanks!!
I don’t understand something. They made something and you ask us about it. Why don’t you ask them ? I’m sure they are happy to help, if they shared the idea and sources too. That whole blog is totally pointless if they don’t communicate, they don’t help. But that is not fair if they do the advertising, and we must support their ideas. If its working at all, no one knows. Don’t take me wrong please.
Stuck here when I try doing this on a MacOS:
C02JQ1S1F1G3:imx_usb_loader mrammal$ sudo ./imx_usb u-boot.imx
config file
vid=0x066f pid=0x3780 file_name=mx23_usb_work.conf
vid=0x15a2 pid=0x004f file_name=mx28_usb_work.conf
vid=0x15a2 pid=0x0052 file_name=mx50_usb_work.conf
vid=0x15a2 pid=0x0054 file_name=mx6_usb_work.conf
vid=0x15a2 pid=0x0061 file_name=mx6_usb_work.conf
vid=0x15a2 pid=0x0063 file_name=mx6_usb_work.conf
vid=0x15a2 pid=0x0071 file_name=mx6_usb_work.conf
vid=0x15a2 pid=0x007d file_name=mx6_usb_work.conf
vid=0x15a2 pid=0x0076 file_name=mx7_usb_work.conf
vid=0x15a2 pid=0x0041 file_name=mx51_usb_work.conf
vid=0x15a2 pid=0x004e file_name=mx53_usb_work.conf
vid=0x15a2 pid=0x006a file_name=vybrid_usb_work.conf
vid=0x066f pid=0x37ff file_name=linux_gadget.conf
config file
parse ./mx6_usb_work.conf
15a2:0054(mx6_qsb) bConfigurationValue =1
Claim failed
Any ideas??
Hi,
Usually the “claim failed” is due to permissions issue. Since you are on a MacOS I’m not sure if the sudo is sufficient to gain access. Maybe googling “macos libusb claim failed” would help.
Regards,
Gary
Thank you, will do. Another question for you, with this process, can I leave the U-Boot on for good…What I mean by this is that with this process it loads it into RAM and executes once, and with this I would like to have it installed somewhere like an empty SD card connected to the board. Basically I am trying to have the whole installing U-Boot done through wire and not having to copy files to the SD as I want to treat it as internal storage.
Thank you
Hi,
The process above shows how to start U-Boot using USB recovery mode, but then U-Boot is in RAM only. In order to flash it, you need to load the U-Boot binary in RAM and flash it to NOR.
Our user-friendly approach is to copy the U-Boot binary to SD along with 6x_upgrade and issue ‘run upgradeu’.
Another approach is to change the imx_usb_loader configuration to load the U-Boot binary somewhere in RAM and have U-Boot flash it. If you want this to be automatic, you also need to modify the U-Boot default bootcmd so it flashes this U-Boot from RAM to NOR.
Regards,
Gary
Hi Gary,
Great information!
Sorry for the questions, you seem to have a great amount of knowledge on this where I am new to this. I am trying to figure out how I could utilize this tool to load a new blank board up with U-Boot straight from USB to a permanent storage like NOR. So basically, take a binary file and have it flashed to a board without already having a U-Boot already on there. Can you guide me to what would be needed or the steps to take? This would be helpful to shed some light on where to start or what to modify in the loader.
Thank you
Hi,
The problem is that it requires some knowledge of the whole process to do it your way.
You need to modify the mx6_usb_work.conf to load the binary to a known address.
https://github.com/boundarydevices/imx_usb_loader/blob/master/mx6_usb_work.conf
Then in U-Boot you need to execute the necessary commands to flash the NOR. To that regard, you should read and use what is available in the 6x_upgrade:
https://github.com/boundarydevices/u-boot-imx6/blob/boundary-v2016.03/board/boundary/nitrogen6x/6x_upgrade.txt
Regards,
Gary
Hi Gary,
Fair enough…just a bit of clarification before I go ahead and jump on this.
1) Just to sum up the components part of it, I would only need the modified imx_usb_loader folder and the binary file I want to flash right?
2) When you say “known address” where do you mean exactly? A known address on RAM? Also, this known address is where I would load the binary to?
3) You say I have to use U-boot to execute the necessary commands to flash the binary file to the NOR…how would I be having access to U-Boot at the moment if it is a blank board?
I think after I get these answers I should be good to go!
You have been amazing Gary thanks !
Hi,
1) Yes all you need is imx_usb and your binary in that scenario
2) You pick an address in RAM and stick to it.
3) That’s the whole point of this blog post, how to start U-Boot on a bricked/blank board. U-Boot is loaded and running from RAM.
Good luck.
Regards,
Gary
Hi, quick question…does the imx_usb_loader tool support multiple file transfer? I am trying to send more than one file at a time and only jump to the first or last file depending how it works at the moment and if it supports it.
Thanks!
Hi,
Yes, you need to modify the .conf file to load binaries like the following:
“file_name”:load “loading_address”
Here is an example I often use to load everything at once:
u-boot.imx:dcd
zImage:load 0x11000000
uramdisk.img:load 0x12000000
u-boot.imx:plug,jump header
Regards,
Gary
Hi Gary Bisson,
This is regarding imx6q based custom hardware design.
I’m using>>. /imx_usb u-boot.imx command to burn spi flash of fresh hardware via usb loader. (I mean this custom boards didn’t burn any uboot in spi flash previously and they are fresh)
To accelerate this process I need to burn flash of multiple boards using one PC. Is there any method to do this using usb loader? Or else any other method to burn uboot for multiple boards using one pc?
Regards,
Kulunu.
Hi,
I guess the best is to use mfgtools for this since it allows to have several instances at once:
https://github.com/NXPmicro/mfgtools
Regards,
Gary
Hi,
Someone just added support to imx_usb to target a specific bus id or device number:
https://github.com/boundarydevices/imx_usb_loader/commit/f04f225e
Regards,
Gary
Hi,
I am working on the factory flashing procedure for our custom imx7d based board and we are already using the imx usb loader tool to flash our image (kernel+rootfs) to the RAM and then load a special uboot that is responsible for copying data from RAM to the eMMC.
Now I wonder if it is possible to blow the fuse of the imx7d using the write register command of the SDP protocol through the imx usb loader “modify” function?
Or I can only do this from uboot prompt?
Thanks in advance,
Regards,
Anthony
Hi Anthony,
No the SDP protocol doesn’t allow (as far as I know) to do such thing. But there are a couple of options, you can modify your u-boot image to check on the fuse status and blow them if needed.
Or you can use the mfg-tools in order to send commands to a running Linux system (using imx-uuc on the target and mfg-tools on the host PC).
https://github.com/NXPmicro/imx-uuc
https://github.com/NXPmicro/mfgtools
Regards,
Gary
Hi Gary,
Thanks for your fast response. I will double check that but I think i will just use the “fuse” command to blow the fuses directly from my uboot image at the end, as you suggested ;).
Regards,
Anthony.
In order to load an image, is it required to have the following: DCD (device configuration data) and IVT (image vector table)?
I am attempted to load the DCD from a similar image first then load the image that does not have one but every time it goes to jump, it results with an error: ( j4 in err=0, last_trans=64 33 05 0a 00)
Please advise as anything would be helpful to get me back on track
Thank you
Hi,
Yes it is required to have those elements. Why do you try to get rid of them?
Regards,
Gary
Hi Gary,
Thank you for your response. Because not every image I deal with will have those elements. For this reason, I have attempting to modify the tool to accommodate those types of images. To deal with this I have been able to use the write_memory to somewhat write an IVT when loading an image. But my issue is that I don’t know how to load the DCD element without it overwriting part of the image values. If I could find a way to write the DCD’s to an address of my liking then I think it would be one step closer to making this work.
I could be looking at this all wrong but this is my theory for now.
Thank you
Hi,
I’m not sure exactly to understand what you are trying to do, especially the part where not all your images have an IVT/DCD. Actually you don’t necessarily need a DCD, you can declare a DCD of length 0 in the IVT but it depends on the size of your image.
A good example is the IPL bootloader in QNX. If you look at the Nitrogen7 BSP, you’ll see that the IVT header is shrunk down to its minimum with a DCD length of 0. The reason it works is that the program is small enough to fit in OCRAM, then the DDR initialization is done in C from the bootloader.
So I’d suggest looking at this example and use the same type of minimum IVT for all your images.
Regards,
Gary
Hi Gary,
I see what you mean. Thank you for the detailed response, it was very helpful. To summarize, an image would be able to work without a DCD if it fits in the OCRAM (0x00907000-0x00918000)[68KB]…otherwise, if the image is any bigger it would need a DCD to initialize the board in a way for it be able to be loaded to RAM. Correct?
Also, does the IVT need to have an offset of 0x400? or could it be placed right at the image start?
These answers should clear up the way for me to get back at this !
Thank you!
Hi,
Yes exactly, you need the DCD if you need to copy anything to RAM, otherwise it will obviously not work (not initialized, wrong timings).
About the IVT offset, I don’t believe this is necessary to have a 0x400 offset but I’ve never tried without it.
Regards,
Gary
Hi Gary,
Quick question for you…when I load my IFS image through the tool and jump to it, nothing in the serial port console happens. If I load u-boot to the board and use the “go” (go 0x10800000) command to jump to the IFS image, it runs it perfectly and loads up to the kshell. I have added an IVT and loaded DCD’s…I just feel like I might be missing something that would allow access for that to happen.
Thank you
Just to add to this, I feel like it might have to do with the DCD’s I am loading. I am using the QNX IPL DCD’s found in their BSP. Is there a way to generate the correct DCD’s for the IFS in use? The IFS is 1.9MB so I cannot load in to OCRAM and not need DCD’s as you once stated.
Hi,
Yes it is normal since the DCD is down to its minimal. Then the IPL is in charge of initializing more clocks and takes care of the pinmuxing. Why don’t you want to use the IPL?
Otherwise you’ll need to create your own DCD table which does the necessary initialization for the IFS to work.
Regards,
Gary
Hi Gary…quick question, how would you load an EFS image with this tool?
Has an IPL @ 907000 & an image @ 80001000.
Thank you!
Hi,
In that case you would need to modify the IPL to jump to 0x80001000 directly, right now it only supports booting from serial or sdhc.
If you were to use U-Boot, you could load both U-Boot and IFS at once and then type a ‘go 0x80001000’ command in U-Boot prompt to start QNX.
Regards,
Gary
Hi All,
Is there any other way we can unbrick, or first flash a custom imx6 board without USB OTG ?
Hi,
Well you can achieve that with JTAG as well if you find it more convenient.
Otherwise you could try flashing the NOR using an external flasher, but since the NOR is soldered on the board it might just not work.
Regards,
Gary
Thanks Gary, was able to load u-boot.imx through USB OTG. I have a question, how should I change the console port settings of my costom board in order to run u-boot ? i.e. by default on max board, console is set to UART2 and ttymxc1. which u-boot sources and variables should I modify in order to change the console to UART1 (ttymxc0) ?
I can see two definitions in boundary.h file :
#define CONFIG_MXC_UART
#ifndef CONFIG_MXC_UART_BASE
#define CONFIG_MXC_UART_BASE UART2_BASE
#endif
#ifndef BD_CONSOLE
#define BD_CONSOLE “ttymxc1”
#endif
Hi,
Yes you need to modify CONFIG_MXC_UART_BASE which is used by U-Boot to know where to display its prompt.
BD_CONSOLE on the other end is used as the console bootargs passed to the kernel (ttymxc1 meaning nothing in U-Boot). Note that this variable can be overridden from U-Boot prompt by setting another console variable value.
Regards,
Gary
i.e. can we use Rx,Tx,RTS and CTS of UART3 signals from imx6 side to flash the custom board first time ?
The BD-SL board that I have has SW1 reversed, so I had to make sure to look at the positions relative to the board and not label on the switch
I am new to this board BD-SL, lsusb is not showing the “Freescale” device , My BD-SL board switch sw1 have reversed ,what should i do ? should i connect serial console along with USB OTG for this above procedure.any one can help me,
Hi,
It can happens on BDSL that the switch is reversed, in that case the positions of the switches also needs to be reversed compared to our picture.
Regards,
Gary
Hello Gary, Thanks for your reply, I successfully did my board unbricking
Hi! I’m trying to unbrick a board after loading a bum image.
On a Nitrogen7, after the SRK fuses have been set and the device has been closed, the USB OTG should be able to load and boot an unsigned image, right?
Hi,
Yes it should but it hasn’t been tested on Nitrogen7.
But are you sure the fuses were properly flashed since the offset are different from i.MX6?
Regards,
Gary
Yes, the fuses were burned correctly, and the board booted just fine.
=> hab_status
Secure boot enabled
HAB Configuration: 0xcc, HAB State: 0x99
=>
Another u-boot image was then uploaded, and it contained an error preventing the board from booting. Then I tried using imx_usb to upload a working image, in order to re-flash the board. It gets through the upload, and at the end gives me:
succeeded (status 0x88888888)
Verify success
jumping to 0x877ff400
j4 in err=0, last_trans=64 33 18 c0 00
It gives me the same thing when I use either the signed or unsigned u-boot.imx. The manual is a bit confusing in the SDP command section. I’m not sure if the codes that are returned indicate an error or not. All I know is that I’m not getting anything on the console port.
Hi,
Have you signed the binary especially for the imx_usb boot?
This is described in our HAB post at the end, it requires to change the DCD address before signing and put it back in for the SDP to work.
Regards,
Gary
I just tried it. I’m getting a different return code now:
jumping to 0x877ff400
j4 in err=0, last_trans=64 33 0c a0 00
I found what the error codes mean in the u-boot project, arch/arm/imx-common/hab.c. Looks like something in the CSF file needs to be modified. I’ll continue to work on this, and let you know what I find.
I figured it out. The CSF needs the following:
[Authenticate Data]
Verification index = 2
Engine = DCP
Blocks = 0x877ff400 0x00000000 0x0007ac00 “u-boot.imx”, \
0x00910000 0x0000002c 0x000001cc “u-boot.imx”
The lines come directly from making u-boot, “make V=1”. At the end of the build, the HAB and DCD blocks are printed. Copy *both* of those, follow the steps for mod_4_mfgtool.sh, and it works.
The board cannot be recovered (at this time) using Segger J-Link, as the CPU-flash combination is not supported.