UART Slave Boot

Hi support,

i'm trying to boot a SHAR 21569 as UART Slave.
I saw other post with similar issue like and

I generate the LDR with the following command :
.\elfloader.exe -proc ADSP-21569 "LEDBlink.dxe" -init "21569_init.dxe" -b UARTSLAVE -f INCLUDE -Width 8 -verbose -o "led-blink-latest-uart.h"       

I modify my init code to init UART0 according to my SCLK and i turn on a led on the init code.

My First problem is related to auto-baud :  i'm able to receive the 4 bytes handshake only if my baud is 9600.
In this case i recv : 0xBF, 0x59, 0x02 , 0x00.
If I use other common baud like 38400 115200 i don't receive the 4 bytes handshake.

In any case without carry about boot time i keep 9600 bps and go ahead.

I can say that init code run because i see the Led turned on but the RTS (CTS on host side) stay hight.

I try to wait "manually" the init code boot (waiting led turned on) and send data also if RTS is hight but without success.

I understand that i have to configure UART on my init code but maybe i don't understand how i should configure the UART, DMA ? no DMA ? fix the baud-rate to the baud-rate that i use on my host code ? (in this case why auto baud should exist ?)

What i'm wrong ? 

Thank you in advance.

  • 0
    •  Analog Employees 
    on Feb 26, 2021 4:40 PM


    Apologies for delayed response.
    We have faced a similar behavior in ADSP-BF70x processor. Please use the below method for booting at high baud rate. You can implement an SSL to accomplish this.

    The first stage loader increases the baud rate supported for UART0 boot by modifying the SCLK to maximum, so the second stage loader can boot with the maximum baud rate. We tested the same scenario on ADSP-BF707 Ez-kit and we are able to boot with the 622kbps baud rate.

    If you are using a Host controller, the first loader should have the auto baud detection(send the’@’ character). This program configures the CGU to set the SCLK to higher value and when invoking the adi_rom_boot() for UART slave boot, there is an option “not to use autobaud detection” and UART clock can be configured in the UART Slave Boot command instead.

    We have tested this scenario for the baud rate of 622000 and attached the SPI Host code along with this. As a first stage loader we used the “BF70x_Bootrom” project. When calling “adi_rom_boot()”, we disabled autobaud detection and provided the UART clock (0xA) as per the SCLK of 100MHz. This is configured via UART Slave Boot command. After reset (UART slave boot mode is set in the BF707 slave) we send the BF70x_Bootrom LDR via LDR viewer utility (this happens in the lesser baud rate). Now the slave processor executes this to change the CGU and then invoke adi_rom_boot() API. Now the slave DSP is waiting for the next LDR to load. We used another HOST processor (BF707) as UART host which sends the “application” ldr at the baud rate  of 622000. This works well for us.

    Refer the comments embedded in the project file for more information.

    Anand Selvaraj.