Loading...
 

SW4STM32 and SW4Linux fully supports the STM32MP1 asymmetric multicore Cortex/A7+M4 MPUs

   With System Workbench for Linux, Embedded Linux on the STM32MP1 family of MPUs from ST was never as simple to build and maintain, even for newcomers in the Linux world. And, if you install System Workbench for Linux in System Workbench for STM32 you can seamlessly develop and debug asymmetric applications running partly on Linux, partly on the Cortex-M4.
You can get more information from the ac6-tools website and download (registration required) various documents highlighting:

System Workbench for STM32


__io_getchar implementation for getchar() has a problem

I ran into the same problem using the HAL_UART_Receive_() function (No DMA).

I implemented your workaround by setting ‘len’ to 1 inside the _read() function in the syscalls.c module. This works. But without the DMA, the function does not block as it should.

I fixed this by waiting for success in my __io_getchar() function.

int __io_getchar(void) {
HAL_StatusTypeDef Status = HAL_BUSY;
uint8_t Data;

while(Status != HAL_OK)
Status = HAL_UART_Receive(&huart6, &Data, 1, 10);

return(Data);
}

I also removed the increment of ‘ptr’ in the _read() function since I don’t know if ‘ptr’ is reinitialized each time _read() is called.

I don’t feel good about modifying the syscalls.c module that I didn’t write but downloaded. It won’t have my changes the next time I download it.