I'd never heard of Sonix. It looks like they have three types of MCU: an 8051-like set of chips (an industry standard architecture, but not very C-friendly, and does not support Aruino-like environments), an "8bit flash type" that looks similar to a Microchip 8bit PIC (also not suitable for Arduino), and an ARM Cortex M0 type that COULD run arduino.
The Sonix ARM chips look pretty reasonable; I guess Sonix is one of those Taiwanese semiconductor companies whose chips aren't widely available in small quantities throughout the world, which is sort of necessary to support a hobbyist ecosystem like Arduino. The datasheets look surprisingly good for such a company; assuming that they're accurate and that the chips work, a experienced embedded programmer could probably make Arduino work without too many problems.
There are about 4 tasks:
- port the "Core" libraries. Things like digitalWrite(), millis(), analog IO, Serial, etc This is easier (mostly) if a similar chip has already been implemented. Ardunio Zero is also a cortex M0, so that will be a good starting point. Peripherals can differ wildly, especially the more complex peripherals like Analog IO.
- write a bootloader, or figure out how to use a built-in bootloader from the IDE.
- Work on the higher-level libraries. You need to do both the standard libraries (SPI, I2C), and some of the more popular 3rd party libraries (timer libraries, WSxxxx LED drivers, etc.)
- wrap everything up in an Arduino "board" package that can be easily user-installed. This means collecting all of the stuff from the first 3 tasks, plus device-specific compiler files (include files, libc files, etc), into a standard directory structure, describe by a JSON file.
I think that Arduino is not friendly IDE relative to Keil, IAR, and CooCox.
Whatever. Keil and IAR are in "several thousand dollars" price range, so they obviously address a different audience.
There's some value to writing close-to-arduino libraries for processors even if you never integrate fully with the arduino IDE itself. It's a somewhat depressing reality that the Arduino core is one of the few existing cross-vendor embedded programming libraries ![]()