 Let's continue with Debug Configuration, so I would just minimize some of the components and let's start with Cortex-M4. I would highlight this part, I would click on this down arrow next to the bug icon and I would select Debug Configuration. I would double click on the last position, so as to infer to Cortex-MCC++ application, it would automatically generate the configuration of the Debug process, so this proper ELF file, proper project name. Within the Debugger, I would keep most of the settings, but I would just enable this cross-trigger interface, CDI, as we would like to have both cores working synchronously. And within, so I need to apply, then I go to Startup and within Startup, I would add the configuration from Cortex-M0++ as well. So project M0++, build configuration Debug and then I would just remove the load symbols, because load symbols will load within Cortex-M0++ Debug part. Okay, so this is all for Cortex-M4 Debug configuration. Important point is to have this arrow next to Cortex-M4, because we would like to start the project, the code from Cortex-M4 core, as it is in fact activating the Cortex-M0++ later on. I click Apply, I will not start the Debug yet. Click Close and then I would highlight Cortex-M0++, again, down arrow next to the debug icon, Debug configurations, double click on this last position, and now the same story with Cortex-M0++. From first tab, no change from the debugger, I need to increase the, let's say, port number. We will not reset the core. We need this cross-trigger interface, so I would select both options, I click Apply, and we will need to modify as well the startup configuration. So I just highlighted and press Edit, and from this I would disable Download. This Download option is done already within the Cortex-M4 Debug configuration. I press OK, Apply, and Close. Now we are ready to start a Debug session. Okay, let's continue with a Debug session. My board is already connected. We can start Debug one by one. So at the beginning, we are starting already configured Cortex-M4 configuration. I start Debug. Before activating the code and starting the next configuration, we can configure and run a terminal within our console. So to do this, we can either select already configured console or we can create a new one by clicking this open console and selecting the Command-Share console. So the connection type, it will be Serial-Port. Connection name. We can select, let's say, the new name, for example. So it will be Hardware-Semaphore-Terminal. We will need to select the virtual COM port, which is assigned to our board. In my case, it is COM-12. And as you remember, we have configured our USR2 to 115,000. 8-bit data, no parity, a one-stop bit. So exactly the same configuration. I press Finished and I press OK. After this, this terminal would be visible within this small monitor icon. If I press this down arrow, I can see this Hardware-Semaphore terminal. It is connected. If I select this, I can see already blinking cursor over here. To disconnect, I should use this red icon. The green small dots are used for connection. And to close the console, we need to use this button. So now let's run the code. And as you can see, our Cortex-M4, this is the only one, is sending the data over USR2. So now we can add to this second configuration. So I go to this small arrow next to the back icon without stopping the Cortex-M4 core. Debug configurations, Cortex-M0 plus debug. So now, as you can see, Cortex-M0 plus is starting execution as well. And now we can see one by one. Cortex-M4, Cortex-M0 plus. So both cores are working. What we can look here as well is to have a look on the, say, special function registers. So now it is the section for Cortex-M0 plus, as this one is highlighted. And we can have a look how the Hardware-Semaphore looks like. We are using number nine. And if I would pause for a while, so let's go over here. Both are suspended. We can check what we've got within the settings. So within the Hardware-Semaphore nine, it is, there is nothing at the moment. And within the Cortex-M4, it is released as well. So let's have a look once we set some break points. So I would put the break point just after, let's say, Hardware-Semaphore take. So maybe in this line, in one core, and in the second core, we'll do the same. And now we'll try to grant both cores at the same time. So I would press control and select both cores and try to start them one by one. So now there is interrupt rom-systic. Okay, I landed within Cortex-M4 on this area. So Cortex-M4, Hardware-Semaphore. And now if we have a look on this register for Hardware-Semaphore nine, we can see that it's locked. Core ID is four, which is equal to Cortex-M4. And our process ID is set to four as well. So I would try to run it. So now, for example, if I would, let's say, put the break point over here. So before the semaphore release for Cortex-M0 plus, and I would go to the Hardware-Semaphore section. I can see that for Hardware-Semaphore nine, I can see the process ID four, which is common for both. Cortex-ID is eight and lock is one. Okay, so as you can see, it is working like expected. So now we can terminate debug session one by one and come back to code processing. As you can see, terminal is still working because the code is executing on both cores. So we can observe, it's in the activity of the terminal. Bring this video.