The last days we had unpredicted issues with the system boot of the SmartFusion.
It looks like that the Actel’s SysbootInit is part of the reset system and we don’t have its the code. It must be configured by using the FlashPro provided by Actel, which is not compatible with the JTAG probe of Tutobot, and also FlashPro is not available for Linux.
Another issue with this is that it won’t run automatically a program that is stored in the eNVM of SmartFusion because it seems that the factory boot check the integrity of the sysboot and we couldn’t locate many documents explaining how this works.
We managed to flash the FPGA of the Tutobot after some “workarounds”. Let’s go by parts:
- We performed a minimal initialization of the SmartFusion to have a minimum set of peripherals working, like the GPIO. To test the GPIO, we wrote a simple program that blinks a LED. Since we didn’t attached a led directly to the MSS, we had to as to Alexis to attach a LED on the Zigbee sleep pin.
- The UART seems to be not configured in the FTDI. We could check that the Tutobot can write to both UART ports using the logic analyzer and the Zigbee can be configured and send messages, and also we could perform the same initialization using the eval board, but the FTDI chip won’t convert the RS232 signals to the USB, but we could already have a UART console through the Zigbee, which would be handy to work with the DirectC later.
- We also needed to use the SPI NVRAM to write the .dat image to flash to the SmartFusion FPGA. We were trying to work around this by trying to get a compressed .dat image from the MSS and decompress it directly to the FPGA, but this could be too slow and take some time to implement. Helen managed to bring SPI to life and we changed the existing SPI flash driver to the eval board to make it work with the SPI NVRAM (most commands were very similar, so this helped the development a lot).
- Since we already had SPI and UART working (albeit using the Zigbee), we could run DirectC to program the FPGA.
We now have the FPGA programmed, but we noticed the the Sysboot still is not being configured. We will to dump the Sysboot image from the eval board SmartFusion, as we noticed that the Sysboot code doesn’t change when we flash a new image to it (using FlashPro in Windows), just the configuration area.
Possibly related posts: