ST and TI do the same thing with their boards too and it's not a bad strategy.
ST and TI do the same thing with their boards too and it's not a bad strategy.
Arduino is open sourced in hard and software which allows this cheap cloning to exist. It also helps a lot with software and docs, which makes it cheaper for them.
Also a million dev kits is unrealistic for vast majority of companies 5-20k is more the number I hard.
To me it sounds like maybe 10 software engineers for a year. You gotta do a bootloader, test it out thoroughly, setup compiler to work, glue all the pieces together, write the missing pieces, test it all some more…
It’s expensive…
Hah! I like to underestimate scope as well, but this is really something else. Definitely a competent engineer could make something like this. But a couple of months maybe. You won't even read the documentation for the chip in a day.
I have actually done embedded engineering in the past and I was being generous with "a day." Skimming a datasheet is a skill and it certainly will not take a day to get the information you need off of it.
Even the simplest peripherals can bite back if you are not careful and you don't test the edge cases. AVR's are indeed quite simple, but if you try to build stuff other people will use, things need to be polished.
I actually do embedded engineering. I'm doing it right now! More on the SW side than the PCB design side, and, again, this is quite an exaggeration from your side, saying you could do it in a day.
But high chance they will look it up on Amazon/Ebay/whatever e-store and buy a clone without knowing.
You ask for an Arduino, and the follow up question is: 'genuine or generic?'.
I don't think the Arduino trademark is that valuable, it's already well underway genericization.
I just wanted that someone mentioned these Arduino-likes in the comments. I suspect many of you have come across them though.
I've been using Teensy devices for over a decade and have always had it just recognize the device as if it were a USB to serial adapter and I can talk to it as what I'd call "serial over the USB port". But that obviously doesn't involve what I think software people usually mean when they're talking about firmware debug -- which usually entails stepping through execution, right?
I'm used to just printing debug statements to the Serial.println() function, I learned on the 8051 where the best bet was to toggle different pins when code lines are passed, so even Serial.println() was a huge step up.
On a "normal" arduino, an FTDI chip on the board handles the job of exposing a serial adapter to your computer over USB. The atmel chip on the other side of the FTDI chip runs your code and getting serial out from your firmware is a short codepath which directly uses the UART peripheral.
On a teensy, there is still a secondary chip, but its just a small microcontroller running PJRC code. This microcontroller talks over the debug pins of the main chip, and those pins aren't broken out (at least back when I last used a teensy). Despite covering the debug pins, this chip only handles flashing and offers no other functionality. Since there is no USB serial adapter, for hobbyists trying to use it for running code with an arduino HAL, the HAL has to ship an entire USB driver just for you to get serial over USB. And this itself means you can't use the USB for other purposes.
For advanced users, this makes debugging much harder, and god forbid you need to debug your USB driver.
It's kind of just a bunch of weird tradeoffs which maybe don't matter too much if you are just trying to run arduino sketches on it but it was annoying for me when I was trying to develop bare metal firmware for it in C.
So can the Pi Pico, the Milk-V Duo (one 64 bit Linux core, one 64 bit microcontroller core), and many others.
The Arduino SDK is the simplest to use, sure, but the Pico framework (I don't have experience with the Espressif one) is extremely good, and the Pico's PIO is a godsend. I used it to implement 3 wire SPI (data bidirectional on the same wire) at almost 'real-time', which is to say, at half the speed of the hardware SPI controller (half the speed because the interface clock is put up one cycle and down the next; this also gives enough time for data shuffling).
Why does the Arduino SDK necessitate a huge markup on Arduino boards, when $0 of every computer I buy to run Linux on goes to GCC?
I'm not expecting a $0 markup, but Arduino prices are simply unreasonable for what they offer, especially if you live in a lower income country.
Arduino targets the hobyist market where customers will buy one (or at best a handful) of their boards. Arduino simply has no other way of recouping their investment than selling expensive hardware.
So I don't think it's fair to say that Arduino is being greedy. Also FWIW, Espressif's official dev boards are also pretty expensive. Not Arduino expensive, but several times the price of identical "clones" based on the same reference design and using the same official esp32 module.
Generics may have the same active ingredient but (vastly) different pharmacokinetics - i.e. different absorption rates/retention in the body. For basic stuff such as painkillers that's one thing, but for more sensitive medication such as insulin, antidepressants or anything related to the cardiovascular system (heart rate, blood pressure and clotting) one has to be very careful when switching between brands.
But you still used the Arduino SDK with the bluepill, so clearly Arduino had a point. Unless you were one of the few masochist who dealt with the STM32 toolchain directly for fun?
The Pi Pico is such a breath of fresh air in that regard. Finally a decent-enough toolchain for a decent-enough performing ARM MCU!