I'm trying to migrate from mfgtool2 on Windows to the Linux version. I'm using a custom board, with an IMX6Solo CPU, and I've been using the Windows version successfully, so I know my images etc are fine.
I've used the cfg.ini and ucl2.xml files from Windows to set up the Linux tool, and I'm fairly sure all is correct with these - indeed an 'strace' on mfgtoolcli shows them being opened successfully.
The board is detected on USB - lsusb shows:
Bus 001 Device 007: ID 15a2:0061 Freescale Semiconductor, Inc.
with dmesg containing:
[1195478.199348] usb 1-2: new high-speed USB device number 7 using xhci_hcd
[1195478.328352] usb 1-2: New USB device found, idVendor=15a2, idProduct=0061
[1195478.328358] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[1195478.328362] usb 1-2: Product: SE Blank RIGEL
[1195478.328365] usb 1-2: Manufacturer: Freescale SemiConductor Inc
[1195478.352579] usbcore: registered new interface driver usbhid
[1195478.352583] usbhid: USB HID core driver
[1195478.358096] hid-generic 0003:15A2:0061.0001: hiddev0,hidraw0: USB HID v1.10 Device [Freescale SemiConductor Inc SE Blank RIGEL] on usb-0000:00:14.0-2/input0
The ucl2.xml file - in ./Profiles/myboard/OS Firmware- has the LIST entry for 'LINUX-MMC', and a CFG section:
<CFG>
<STATE name="BootStrap" dev="MX6D" vid="15A2" pid="0061"/>
<STATE name="BootStrap" dev="MX6Q" vid="15A2" pid="0054"/>
<STATE name="BootStrap" dev="MX6UL" vid="15A2" pid="007D"/>
<STATE name="Updater" dev="MSC" vid="066F" pid="37FF"/>
</CFG>
However when I run mfgtoolcli (as sudo) - sudo ./mfgtoolcli -l "LINUX-MMC" -c "myboard" - there doesn't seem to be any comms with the board at all. The console shows:
Your Options:
Ready to flash.
(and it sits there like that). The log file contains:
DLL version: 2.3.4
Tue Jan 23 13:08:47 2018
Start new logging
ModuleID[2] LevelID[10]: address from XML 0x10500000
ModuleID[2] LevelID[10]: address from XML 0x10800000
ModuleID[2] LevelID[10]: address from XML 0x11180000
ModuleID[2] LevelID[10]: address from XML 0x11200000
ModuleID[2] LevelID[10]: address from XML 0x10600000
ModuleID[2] LevelID[10]: address from XML 0x10540000
ModuleID[2] LevelID[10]: address from XML 0x11100000
ModuleID[2] LevelID[10]: CMyExceptionHandler thread is running
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[1]: new MxHidDeviceClass
Any thoughts on what's wrong, and/or how to debug further?
Thanks.
In the end, I've given up on the NXP Linux MfgTool (both the NXP binary download and the github source repo), and instead migrated to imx_usb_loader + utp_com (https://community.nxp.com/thread/441563 ).
It took a bit of figuring out the downloading and flashing commands (especially when my SOM manufacturer - KaRo - have done their own u-boot with their own way of writing the production u-boot!), but I got USB comms without any problem, and the two apps seem cleanly-written.
I've been digging into this some more, using wireshark and strace. It looks like the app isn't even trying to do anything on USB. I can see it examining all the USB devices (e.g. via /sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/uevent), but can only assume that it's not spotting the board.
This 'file' contains:
DEVTYPE=usb_interface
PRODUCT=15a2/61/1
TYPE=0/0/0
INTERFACE=3/0/0
MODALIAS=usb:v15A2p0061d0001dc00dsc00dp00ic03isc00ip00in00
- note, no 'DRIVER' field. Could this be the reason?
In parallel with trying the official tool, I've also been trying the version from GitHub - codeauroraforum/mfgtools: Freescale/NXP I.MX Chip image deploy tools. (on the same hardware). This gets as far as trying to read/write on the USB but still without success. I don't know how robust this version is either, but at least I can try digging into the source.
Is the source available for the official version? (And I'd also like to build a 32-bit version anyway)