STMicro MPU Supports Linux and Android
cnx-software.com
cnx-software.com
Having started out with Arduino I've lately been having fun with the STM32F103 "Blue Pill" boards. Like with this STM32MP1, ST have put a lot of interesting analog stuff in with the digital in their STM32 chips.
Both the STM32MP1 and STM32F103 has dual 12-bit ADCs, so you can do simultaneous sampling or interleaved for increased speed. The STM32F303 series has up to four. The STM32FMP1 has dual DACs as well (the STM32F103 series has at most one, but the Blue Pill has none due to using a low pin-count package).
Now, I've just been dabbling with this embedded stuff in my spare time for a wee while now, but it seems ST is pushing hard and on the rise.
*: now their hardware abstraction layer, the HAL library, leaves quite a bit to be desired, but it's nice to get a starting point for newbies.
This combined A7+M4 device is unusual, but is simply a cost saving over what would simply be an A7 device serially attached to an M4 (for example). There does not seem to be any new features here other than the cost saving from combining them.
This report from 2016 puts NXP at twice the marketshare over STmicro who are sitting steadily in the fifth place:
https://epsnews.com/2017/05/01/nxp-tops-microcontroller-supp...
Although at least part of the sales volume difference can be explained by NXP having had more expensive i.MX range available (and others), so in terms of chips sold they might be closer to each other.
> This combined A7+M4 device is unusual
I'm not sure if I'd say that, previously NXP did the exact same thing with i.MX7, and TI with their AM5x. And of course don't forget the classic AM3x which had PRUs filling part of the same role.
And before that, they had their Vybrid line that's a A5 paired with an M4.
To be fair that is largely because they aqquired Freescale, the year before they had almost the same market share.
Didn't mean they're an underdog as such, one can still be up the top and push hard. Many just don't.
> the things you mention are pretty much par for the course
As I said my background was Arduino, and the ARM offering from Atmel is a lot more expensive from what I can gather. I don't know too much about the others. Coming from the Arduino, the peripherals of most STM32s are something else.
edit: of course the price point is also a big factor in this, with the "Blue Pill" and similar dev boars in the <$2 delivered range.
libopencm3 is a very good alternative with a much better license if you're looking to open source your work [0]. They give you some nice examples [1], and a project template [2]. The documentation is okay, but like most doxygen projects, I find it easier to just read the headers myself.
[0] http://libopencm3.org [1] https://github.com/libopencm3/libopencm3-examples.git [2] https://github.com/libopencm3/libopencm3-template
I haven't gone down the Rust rabbit hole so far, mostly due to lack of time. Hopefully the embedded support will have matured nicely by the time I do. I see there are a couple of viable looking RTOSs making good progress.
I hope it would get a great open-source support.
[1]: https://www.st.com/resource/en/data_brief/stm32mp157c-dk2.pd...
In any case, the beauty of standard Java is that the OpenJDK is not the only option available for targeting ARM, there are other vendors offering Java compliant solutions.
And by being regular Linux distributions, there are also other programming languages available for those that don't like coffee based languages.
I just checked, and it by default ships with Zero in interpreter mode, with Azul's AArch32 work still being pre beta and not even fully integrated into master yet.
> In any case, the beauty of standard Java is that the OpenJDK is not the only option available for targeting ARM, there are other vendors offering Java compliant solutions.
I'm not going to pay for a solution for a $5 chip.
The market failure of Android Things, while companies like PTC, IBM and Aicas thrive on embedded deployments proves just that.
https://www.st.com/content/st_com/en/about/media-center/pres...
Look into the linux driver for stm32 i2c driver. more curses per comment than any other driver. they are ALL deserved.
The only way that I've found to get around this is to run a dummy transmitter. Transmit as many zero bytes as you'd like to read, and then it'll run the receiver in lock-step.
This would have all been reasonable if it were documented, but it wasn't at the time.
SPI in STM32 is very precise with timings and general behavior. Take a look on how some seasoned users implement SPI to do VGA graphics: https://www.artekit.eu/vga-output-using-a-36-pin-stm32/
[1] https://www.st.com/content/st_com/en/products/evaluation-too...
$9.80 @10ku for the part on the Discovery. Not shipping yet, but other parts in the STM32MP family are.
https://www.st.com/content/st_com/en/products/microcontrolle...
It much more focused on real-time capabilities and hardware control. Notable examples are 1. Built-in Cortex M4 microcontroller 2. RPi doesn't have ADCs but STM32MP1 got 16-bit ADCs and a sigma-delta modulator. 3. It's got 5V-tolerant GPIO whereas RPis are not 4. Best-in-class timers for PWM and quadrature encoders.
Which is sort of 'no shit, of course an A7 is easy to port Linux to.'
Yes, I know that an RPi isn't the best microcontroller. My last job had me as the lead for a proprietary RTOS for a custom robotics system. In fact if you go into the STM32F docs for the SSI controller where it calls the busy flag "unreliable", that was my contribution.