MSEL dip switches

Hi,

I am using HiFive unmatched RevB SiFive Freedom U740 SoC.

I am able to run using the dip switch modes set to SD card i.e. 1011 setting.
Whereas am trying to Rescue image from flash (preprogrammed) (0110), or loops forever waiting for debugger (0000) am unable to see anything on the Putty console.
Can i get help on this or is this happening with anyone , kindly let me know.
Thanks

Try to use baudrate 57600. The boot ROM uses that rate for UART printing before handing-off to next boot stage.

Thanks for contributing Gan !
I have made the changes but it isn’t helping , it’s still the same .

The baud rate is actually 89856. That is a documented bug resulting from COVID era supply chain issues. At least this is true for the original Unmatched board, and is probably still true for the Rev B board also. I still see it in the docs, in the Software Reference Manual section 8.1.

I don’t see either 0110 or 0000 mentioned in the docs. If there is a 0000 waiting for debugger mode, then I don’t see any reason why it would print anything on the console. Only boot errors get printed on the console. Connect a supported JTAG debugger and look for messages there. JTAG messages get sent to a different serial device than the console. As for the 0110 mode, I don’t think that there is a preprogrammed rescue image in flash. In general, writing flash is discouraged in the docs, but there are people that have managed to write u-boot to flash and boot from it.

I do see mentions of the 0000 and 0110 modes in the Unleashed docs. Maybe you are reading the wrong documentation? Some of this stuff works differently on the Unmatched board.

Hi Jim Wilson,
Thanks for your contribution.
I will do the necessary changes and get back to you.
I was going through the manual document provided on the website which had many modes mentioned there.

The documentation of RevB is wrong. The boot ROM programs the div register of UART 0 to 0xe1. Given that pclk will be running at 13Mhz (26Mhz / 2) during ROM phase, the actual baudrate is 57522.124Hz = 13Mhz / (0xe1+1), and 57600 is the closest one. I can confirm that setting baudrate to 57600 will give me meaningful error messages such as

Error 0x0000000000000001

Other baudrate will not properly receive UART messages and only displays garbage characters in the console.