Brief list of changes:
- Fix USBControlRequest wait until request is cancelled on timeout
- Fix File system driver FindNextFile always returned False even on success and did not set GetLastError on failure
- Fix File system driver FindFirstFile did not set GetLastError on failure
- Fix Raspberry Pi Zero activity LED reversed
- Fix Winsock/Winsock2 overloaded versions of getsockopt/setsockopt not typecasting parameters causing endless loop
- Fix Missing GetProcessID and GetThreadID in system unit (Required for some packages)
- Add GetDefault/SetDefault for many device types
- Add UART unit skeleton to make the serial unit generic (Allow for USB serial etc)
- Add DMA device unit and DMA driver for Raspberry Pi
- Add DMA support for many console drawing functions
- Other fixes, improvements and additions for networking and new drivers that are still in progress
The DMA implementation includes a generic DMA device unit which provides the API as well as a DMA controller driver for the specific functionality of the Raspberry Pi. This is a complete implementation and includes support for all available channels, memory fill and copy operations, peripheral read and write operations as well as 2D stride copy. All DMA transfers are interrupt driven and a thread can either wait for completion or pass a callback function to be alerted when the transfer completes.
The API includes a number of simplified wrapper functions in the Platform unit such as:
- DMAAvailable - Check if DMA is available
- DMAFillMemory - Fill a block of memory with a byte value using DMA
- DMACopyMemory - Copy one block of memory to another using DMA
- DMAAllocateBuffer - Allocate a block of memory compatible with DMA controller requirements
- DMATransfer - Perform a customized DMA transfer such as a list of blocks to copy and parameters for each block
The DMA functionality will form the basis for a number of future features including graphics support and certain peripheral devices.
For details of how to apply the latest source to your Ultibo core installation and rebuild your run time library see the wiki page Building from Source.