Will the Apalis/i.MX8 attempt to boot from from an SD card with the imx_boot file flahed at offset 32k? This is possible with the NXP iMX8 board but doesn’t appear to work with the Toradex setup.
I am able to erase mmc 0:1 and recover with with an EasyInstaller image so I know the HW works.
Can you tell us a bit more about what you are trying to achieve?
You can look at the image.json file to see how the partitions are configured and see some configuration options here: (see block devices and partitions)
With an NXP imx8 dev board I was able to create a SD card that the board would boot from. The card has imx_boot programmed at 32k, a fat partiton for the Image.gz and .dtb file and an ext4 partion with the root file system.
The Toradex board doesn’t appear to “boot” from the SD (or I have something wrong). I will take a look at the .json file. Thanks.
Sorry, haven’t been very thorough here. Yes, its an Apalis 1.1 eval carrier and an iMX8QM module.
I have been using the source build workflow and tried taking the pieces from that to create the SD card image like the NXP board uses.
My workflow right now is to build toradex-linux (I’m adding driver modules) and integrate that into an EasyInstaller image that is put on an SD card. I then use u-boot to erase eMMC, reinstall EasyInstaller via the recovery script and finally load my new EasyInstaller linux build. It works, but would be easier for our environment if I could just load the SD and boot.
Erasing eMMC is the only way I can get the USB OTG to activate. For this I erase 0-0x4000 on device 0:1. Not sure if the issue is with my laptop or the target hardware though.
That is a bit strange. Assuming you are following the serial debug info here. Have you repurposed any of the pins that are associated with UART1 port? This is the default linux debugging UART.
I’m 100% relying on the serial UART. I haven’t changed any pin that I know of.
From the docs it looks like the expectation is that the usb otg (USB01_CL) should activate if power is applied but I don’t get that. This has been consistent with using both Torizon and the source build of the core linux.
Can you look at the boot sequence priority. Are you booting from external SD or USB? This may be the cause unto why the internal flash memory needs to be erased. Again, i’m not sure on the offset.
I am using an external SD card and the above is exactly why I expected it to take priority. It hasn’t really been an issue as I have moved on to more painful activities like trying to get vxWorks to boot on the Apalis.
It has gone fairly well. The heavy lifting is done by the WindRiver BSP for the imx8qxpmek board. I started with that BSP and modified the .dts/.dtsi files to be consistent with the Toradex hardware. This was the hardest part. I tried to get the Toradex dts tree to work but its deeply nested structure didn’t play well with the vxWorks drivers. Starting with the existing qxpmek dts files worked better.
Pay close attention to GPIO and interrupt values as they differ between the boards. It was challenging but fun.
I would be more than happy to share those files with you but my company doesn’t allow it. If you come across a specific issue reach out.
This is great to hear. Thank you for your response.
Are you booting from an SD Card? My understanding is that the Toradex iMX8 boards are hard wired to only boot from eMMC. The uboot from eMMC then would indirectly boot from the SD Card. Is this your experience?
Yes, to my knowledge eMMC is the only boot device. I wasted quite a bit of time trying to boot from SD. In retrospect the lack of boot type pins should have been a clue. I use the eMMC boot partition to hold the uVxWorks image but you can also store it on SD once that is working.
Once I got it to boot, ethernet just worked (changed the bsp config to use the micrel phy). From there I used TFPT for most of the integration. This allowed me to also maintain the Toradex Linux build on the device. Very handy for sanity checking.
Did you have to change any pinmux in the devicetree to get the Ethernet to work in vxworks? I just changed the phy to micrel and reg to 7 in the devicetree. The Ethernet network interface shows up with vxworks ifconfig command but I can’t ping to or from it. Ifconfig even shows that it’s receiving bytes once in a while.