Coocox CoIDE s Nuvoton Cortex-M0 (NuTiny-SDK-NUC140) pros esetben sikerlt bezemelni a semihosting funkcit. Ez azt jelenti, hogy debugols kzben zeneteket is kirathatunk a PC-re, a debuggeren keresztl.

semihosting belltsa
----------------------------

1. A Repository ablak Peripherals flre kattintva jelljk ki (pipa) a COMMON szekcibl
a semihosting komponenst! Ez valsznleg magval vonja (ha nem, akkor jelljk be!) a Retarget printf s a C Library komponenseket is.

2. A fprogramba csatoljuk be a semihosting.h fejlc llomnyt!

3. A projektbe automatikusan felvett printf.c llomnyba is csatoljuk be a a semihosting.h fejlc llomnyt, emellet definiljuk fell a PrintChar() fggvnyt gy:

    void PrintChar(char c)
    {
            SH_SendChar(c);        //semihosting is used!!!
    }



4. A Configuration ablak Link lapjn a Library paramter belltst lltsuk t semihosting-ra!

5. A Configuration ablak Debugger lapjn tegynk pipt a semihosting enable el!

6. Az albbi kis program lefordtsa s a Debugge elindtsa utn a CoIDE jobb als sarkban megjelenik egy semihosting nev ablak, amelyben - kiss darabosan ugyan - de sorra megjelennek a kirsok. Akkor trtnik kirs, amikor a nhny karakteres buffer megtelik...

Kirats SH_Sendchar(), SH_SendString() vagy akr printf() fggvnyhvssal trtnhet.

    #include "NUC1xx.h"
    #include "Driver\DrvGPIO.h"
    #include "Driver\DrvSYS.h"
    #include "semihosting.h"
    #include "stdio.h"
     
     
    int main (void)
    {
        UNLOCKREG();                                 // unlock register for programming
        DrvSYS_Open(48000000);                       // set System Clock to run at 48MHz (PLL with 12MHz crystal input)
        LOCKREG();                                   // lock register from programming
        SH_SendString("Start up the system\n");      // Debug message through semihosting
        DrvGPIO_Open(E_GPA, 10, E_IO_OUTPUT);        // GPA10 pin set to output mode
        DrvGPIO_SetBit(E_GPA, 10);                   // GPA10 pin output Hi to turn off LED
     
        while (1)                     // forever loop to keep flashing LED
        {
            DrvGPIO_ClrBit(E_GPA, 10);               // output Low to turn on LED
            printf("LED is on...");                  // Debug message sent through semihosting and printf retargeting
            DrvSYS_Delay(250000);                    // 250 ms delay
            DrvGPIO_SetBit(E_GPA, 10);               // output Hi to turn off LED
            printf(" ...LED is off\r\n");            // Debug message sent through semihosting and printf retargeting
            DrvSYS_Delay(250000);                    // 250 ms delay
        }
    }



