4 ms·
What's the big advantage it gives ?
by petra 8y ago
What's the big advantage it gives ?
- wtracy 8y agoFrom a user/developer perspective, the advantage would be low latency. I imagine that the more interesting advantages are from the perspective of the board designer.
- gmueckl 8y agoYou can get several kinds of guarantees out of these combinations: the microcontroller gives you an environment suitabke for guaranteed timings (not just latency), but also a seperate domain to isolate your software in. So stuff like highly safety critical code goes into the microcontoller (e.g. tight monitoring and control loops) while the complex application fluff (UI, networking, bells and whistles) goes on the main CPU with a big, convenient OS to develop on. And both parts can barely influence each other in unintended ways. There are a lot of boards on the embedded systems market that use e.g. ARMs big.LITTLE architecture for that.
- wtracy 8y agoSorry, I misunderstood the question to mean, "What is the advantage to having the microcontroller on the CPU die, as opposed to having separate chips on the same board."
- gmueckl 8y agoThere are software side advantages as the interconnect between the two can be very different from bus interface like SPI or I2C. Some of these systems offer shared memory between the cores, for example.
- nudgeee 8y agoFor running real-time control algorithms. As an example in a digital power inverter it could be generating PWM signals controlling a H-Bridge while the main CPU deals with UI tasks such as button presses and controlling the LCD screen.
- nomel 8y agoMy personal use case was for hard realtime requirements. For example, burning electronic fuses in an ASIC, where timing had to be guaranteed or the chip was toast. Beyond that, like most have said, bit banging odd protocols at reasonable speed, with full access to main memory for streaming. For a funny optimization that resulted in lower performance: I offloaded one of our protocols to one of these coprocessors but noticed the overall throughput dropped to about 1/4 what it was before, with huge latency between transactions. I looked at the cpu and, as was the goal, main processor usage was down from 30% to about 2%. I eventually realized that, due to the low CPU usage, the main processor clock rate was scaled to the lowest frequency. This caused interrupt handling, and everything else, to slow wayyy down, including the arbiter in the kernel driver and user space code where the transactions were coming from. The fix was to disable clock scaling completely, burning some watts more. I’m sorry dolphins :(