I have received the ADZS-SC573-EZLITE. Where do I start? I need tutorials, examples, information.

I have previously worked with the STM32 MCU.

Now I have received an ADZS-SC573-EZLITE to play with for our new project. I have installed the CrossCore Embedded Studio and managed to create a project.

Why must I select a Silicon revision when creating the project?

The project I managed to create outputs a text on the UART0 (through the FTDI). I can see in my terminal that it receives the correct text.

I thought I could use printf() to output to the debug console. Why doesn't the printf() work?

And I think I call adi_pwr_Init() the correct way or do I need to call it before enabling the other cores?. But how do I know if the DSP will setup it's internal clocking to highest speed, or is there only one speed (STM32 could be configured at different speeds)?

What is the CGU device number when calling the adi_pwr_Init()?

And where can I find tutorials or more examples? I just managed to get this to work, I really need to get more information.

For my real project I need to know how to use all cores and communication between them, how/where do I learn that? 

 * FirstProject_Core0.c

#include <sys/platform.h>
#include <sys/adi_core.h>
#include "adi_initialize.h"
#include "FirstProject_Core0.h"
#include <drivers/uart/adi_uart.h>
#include <services/pwr/adi_pwr.h>
#include <stdio.h>

/* UART driver memory */
uint8_t driverMemory[ADI_UART_UNIDIR_DMA_MEMORY_SIZE];

#define BAUD_RATE 19200u

int main()
	printf("TEST 1");

	 * Initialize managed drivers and/or services that have been added to 
	 * the project.
	 * @return zero on success 
	 * The default startup code does not include any functionality to allow
	 * core 0 to enable core 1 and core 2. A convenient way to enable
	 * core 1 and core 2 is to use the adi_core_enable function. 

	/* Begin adding your custom code here */

	/* UART driver handle */

	/* driver API result code */

	/* buffer which holds data to transfer over UART */
	uint8_t buffer[] = {'h','e','l','l','o','\n','\r'};

	ADI_PWR_RESULT pwr_result = adi_pwr_Init(0, 25000000);
	if (ADI_PWR_SUCCESS != pwr_result)

	printf("TEST 2");

	/* open the UART driver in Tx mode only */
	result = adi_uart_Open(0, ADI_UART_DIR_TRANSMIT, driverMemory, ADI_UART_UNIDIR_DMA_MEMORY_SIZE, &hDevice);
	if (ADI_UART_SUCCESS != result)

	 *  configure UART
	 * adi_uart_SetConfiguration()
	 * adi_uart_SetBaudRate()
	 * adi_uart_EnableDMAMode()

	result = adi_uart_SetBaudRate(hDevice, BAUD_RATE);
	if (ADI_UART_SUCCESS != result)

	result = adi_uart_SetNumStopBits(hDevice, ADI_UART_ONE_STOPBIT);
	if (ADI_UART_SUCCESS != result)

	result = adi_uart_SetWordLen(hDevice, ADI_UART_WORDLEN_8BITS);
	if (ADI_UART_SUCCESS != result)

	result = adi_uart_SetParity(hDevice, ADI_UART_NO_PARITY);
	if (ADI_UART_SUCCESS != result)

	 /* write data to the UART device using a blocking write */
	 result = adi_uart_Write(hDevice, buffer, sizeof(buffer));

	/* close the UART driver */
	result = adi_uart_Close(hDevice);

	return 0;

Top Replies

  • I have found some answers by myself.

    • printf() only works if there is an \n at the end of the string.
    • The core clocks are set by the preload code. The preload can be modified by making a copy of the "C:\Analog Devices\CrossCore Embedded Studio 2.9.3\SHARC\ldr\init_code\SC57x_Init\sc573_preload_Core0" and modifying config.h.
    • Communication between cores can be handled using MCAPI. I found an example https://www.analog.com/media/en/technical-documentation/application-notes/EE377v01.pdf

  • 0
    •  Analog Employees 
    on Jan 18, 2021 10:39 AM 2 months ago
  • +1
    •  Analog Employees 
    on Jan 19, 2021 2:16 PM 2 months ago in reply to masip


    You can find code examples for CCES in the below path

    Board Support Packages (BSP) which provide comprehensive support for the Analog Devices EZ-BOARDTm, EZ-KIT® and EZ-Extender® platforms

    After installing a BSP, examples for the product are searchable using the example browser via Help -> Browse Examples menu item in CCES.

    You can download and install ADSP-SC5XX Board Support Package 2.0.2 from the below link:

    After successful installation, You can find examples for ADSP-SC573 in the below bsp installation path.
    [Installation directory]:\Analog Devices\ADSP-SC5xx_EZ-KIT_Lite-Rel2.0.2\ADSP-SC5xx_EZ-KIT\Examples

    For detailed information about example,hardware setup and procedure to run the example,please refer "readme" file available in the each example.

    We have a number of CCES introductory videos on our Analog Devices Video Channel. These videos are also indexed on the CrossCore Embedded Studio product page which is linked below:

    Also please refer the "CrossCore® Embedded Studio – Getting Started" FAQ in the below link, which might be helpful to you:

    Regarding silicon revision selection, it specify that code produced by the compiler will be generated for a specific revision of a specific processor, and appropriate silicon revision targeted system run time libraries will be linked against. Targeting a specific processor allows the compiler to produce code that avoids specific hardware errata reported against that revision.

    It directs the compiler to build for a specific hardware revision. Any errata workarounds available for the targeted silicon revision will be enabled.

    For more details, please refer the below cces help path:
    CrossCore® Embedded Studio <version> > SHARC® Development Tools Documentation > C/C++ Compiler Manual for SHARC® Processors > Compiler > Compiler Command-Line Interface > Controlling Silicon Revision and Anomaly Workarounds Within the Compiler > Using the -si-revision Switch

    Best Regards,