ConnectCore: firmware update via JTAG

Hi,

Does anybody know if it is possible to update the firmware directly using the JTAG interface?

Thanks

which module are you talking about? Connect Core is a family, there are many different modules there.

Hi LeonidM,

I’m using the 6UL module.

Thanks

you can use JTAG, but how are you going to program FLASH? only NOR FLASH can be programmed directly via JTAG. Theoretically you can load u-boot via JTAG in to SDRAM and then use it to program firmware, but why ?

I was trying to understand if there was anyway to access the NAND Flash controller via JTAG. In our design the CC6UL will be integrated in a PCB. We were trying to avoid adding a microSD or USB interface.

Do you maybe have any other suggestions?

Thanks a lot

The module itself has a JTAG ,so you can use it. I am not aware of the JTAG software capable of programming NAND directly due to it’s nature. All modules come with u-boot preprogrammed, so you can always program FLASH using U-boot and network/tftp.

Hi LeonidM,

Coming back to this question. Is there a procedure explaining how to write to the NOR FLASH?

Thanks

There is no nor FLASH ON CC6UL, neither on module, nor on sbc. Module has NAND , sbc has eMMC. Neither can be programmed via jtag. What problem are you trying to solve?

Hi,

Thanks for the quick reply. OK, because in a previous comment you say that only the “NOR FLASH can be programmed directly via JTAG”, so i assumed there was one in the CC6UL module.

My problem is the following. We are flying a CC6UL in one of our satellites. We are looking for robust ways to update all software partitions in flight.

I think our problem comes down to two basic questions: (1) how can we update the software in case the complete NAND Flash is erased/corrupted? (2) how can we update the software remotely piece by piece? (the idea is that at each contact window between the satellite and our ground stations we can upload a piece of the image and store it somewhere such that when the image is complete we can flash it).

From the documentation it seems we could store the image into an SD Card, and have the CC6UL module boot from it. However, and since the module can only boot from USDHC1, this is not possible in the wireless variant which is the only available so far with 1GB Flash and RAM (can you confirm this?).

Any suggestions on how we could try to solve our problem?

Thanks again

(1) how can we update the software in case the complete NAND Flash is erased/corrupted?

If u-boot is gone, you can only recover via USB from Winows or Linux based x86 machine. If you never update u-boot (and you should not have any reason to update u-boot on deployed module), chances of u-boot corruption are negligible from my experience.

(2) how can we update the software remotely piece by piece? (the idea is that at each contact window between the satellite and our ground stations we can upload a piece of the image and store it somewhere such that when the image is complete we can flash it).

This is implemented and documented here:
https://www.digi.com/resources/documentation/digidocs/90001547/#task/yocto/t_prog_fw_from_linux.htm
You upload and verify images in to update partition, then you invoke the update process, which will automaticaly reboot in to recovery, update, and reboot back using updated images.

Thanks again for the reply.

About the second point. I followed the procedure to update the firmware from Linux, and i ran yet into a couple more problems:

  1. I cannot see the ‘update’ partition in /mnt/. I’ve tried to mount it but with no success…

  2. I’ve tried then to load the SWU from the SD Card. I can see the partition, and i pass the absolute path to the command:‘update-firmware /run/media/mmcblk1p1/netsat/base/netsat-image-base-swu-ccimx6ulstarter.swu’

When it boots i get the following error (it looks like it is looking for it in the update partition):


mount: mounting ubi2:update on /mnt/update failed: Invalid argument
ERROR: Could not mount ‘update’ partition
Error opening /dev/fb0: No such file or directory
[RECOVERY] Starting recovery…
[RECOVERY] Checking update package ‘netsat-image-base-swu-ccimx6ulstarter.swu’
[RECOVERY] [ERROR] Unable to find update package ‘netsat-image-base-swu-ccimx6ulstarter.swu’
[RECOVERY] The system will now reboot in 10 seconds

OK, problems solved. I hadn’t notice the limitation highlighted in the git README that: “The software update package must be located in the root level of the update media (subfolders are not yet supported).”