TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: How to start learning embedded systems?

13 点作者 adipandas将近 4 年前
I am interested to dive into embedded systems. I am proficient in C++ and python. I am seeking some advice for best path to take for learning embedded systems. Thank you for any advice (in advance).

7 条评论

GianFabien将近 4 年前
Some excellent suggestions here. I&#x27;d like to add a couple of notes based on my experience. Obviously tainted by what I have actually used.<p>Arduino with C++ appears compatible with your experience. But you might find the edit, compile, download, debug cycle rather tedious.<p>ESP8266&#x2F;ESP32 with microPython provides REPL so is faster for experimentation and learning. For many projects it might sufficient.<p>RaspberryPi uses the SDcard like a &quot;traditional&quot; file system. Repeatedly losing &#x2F; switching-off power without doing a shutdown has destroyed several cards for me. Besides, Real-time control is simply not really feasible. I agree with @bigiain, using Arduino with RaspberryPi is often a better approach. But it does require more development and debugging.<p>MCP23008 I&#x2F;O expanders are VERY useful. Seriously recommended with ESP32 and RaspberryPi when you run out of pins.<p>All of the above are good for learning and small volume products.<p>Industrial systems tend to use ruggedized SBCs and RTOS. Linux is too bloated and non-deterministic for most real-time applications.<p>Large volume products are more likely to be designed from the ground-up using individual microcontrollers and support ICs. At this level you will need experience with assembly language, etc. The development cycles also often use the silicon vendor&#x27;s tools.<p>IMHO RISC-V is going to become widely used. It is already available as a microcontroller ISA and some low-end Linux boards. If you are focused on learning, then I wouldn&#x27;t invest too much effort into low-level architecture issues with ARM based SoCs. Of course, if you get to work with them professionally, then that is a very different proposition.
评论 #27979086 未加载
i_don_t_know将近 4 年前
You might look into the Raspberry Pi Pico <a href="https:&#x2F;&#x2F;www.raspberrypi.org&#x2F;products&#x2F;raspberry-pi-pico&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.raspberrypi.org&#x2F;products&#x2F;raspberry-pi-pico&#x2F;</a><p>It’s very affordable and you can program it in C&#x2F;C++ and Python. There are lots of projects on the site as well. You might also enjoy HackSpace magazine. Free downloads of issues are available at <a href="https:&#x2F;&#x2F;hackspace.raspberrypi.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;hackspace.raspberrypi.org&#x2F;</a>
lurker137将近 4 年前
If you want to learn embedded systems at a lower level than arduino, I would highly recommend this book:<p><a href="https:&#x2F;&#x2F;leanpub.com&#x2F;mastering-stm32" rel="nofollow">https:&#x2F;&#x2F;leanpub.com&#x2F;mastering-stm32</a>
评论 #27979036 未加载
ajklsdhfniuwehf将近 4 年前
abandon all hope and do not even think about starting working on a cpu without the full register documentation (which is often not available without an NDA)<p>pick <i>one</i> of the three big ones (raspberrypi, arduino, esp*)
评论 #27829359 未加载
评论 #27829649 未加载
ksaj将近 4 年前
A lot of people learn by completing Arduino projects. I don&#x27;t know if it&#x27;s the <i>best</i> entry point, but it&#x27;s definitely one that has a lot of support in the maker world.<p>Python is the language of choice there, too. So for the most part, you&#x27;ll feel at home.
评论 #27829341 未加载
rckoepke将近 4 年前
I&#x27;m trying to learn how to use the touch displays included in the included in the STM3210C-EVAL or STM3220G-EVAL. If anyone at least knows of some resources with good examples, I&#x27;d be super appreciative to find them.
bigiain将近 4 年前
WJHat are you thinking of when you say &quot;embedded systems&quot;? It&#x27;s a pretty broadly applied phrase.<p>In my view - and in the non-industrial&#x2F;hobbyist&#x2F;prototyping end of that space, I kinda divide things into &quot;micro controller projects&quot; where Arduino is king (but with other no-OS hardware platforms like ESP32&#x2F;ESP8266 and many others, and other IDEs like Platform.io all playing catchup in market share) - and &quot;embedded linux projects&quot; where Raspberry Pi is similarly king but with many alternative linux capable SOC boards available too.<p>The Arduino&#x2F;microcontroller path uses a form of C&#x2F;C++ mostly (if you stick with Arduino IDE) but also MicroPython and CircuitPython. I consider this a &quot;bottom up&quot; approach to building computer controlled projects. You don&#x27;t get Linux along with all the standard tools and utilities, you start from the event loop and write or import everything you need. This is often better for simple projects (blinky lights, PID controllers, simple automation, those are the sorts of things I&#x27;ve build that way), and for real time critical projects (like quad copter flight controllers) where linux on RaspberryPi can&#x27;t guarantee you get the code paths running exactly when you need them. (RTOS on SOC board like RasPi solve those problems, but are a much smaller community and hence have fewer easily findable resources and examples, and also I haven&#x27;t got any real experience with those (yet?))<p>The Linux&#x2F;Raspberry Pi path - at least for me - usually gets taken when I&#x27;ve got ideas about some code I&#x27;d normally run on Linux, but want to do on a small machine or in a remote location with battery power. Probably 80+% of what I&#x27;ve built using Raspberry Pi starts out as some python or perl code (yeah, I&#x27;m old...) that I want to either run in a weird location (like in my garage, on the top of a mountain with a solar panel, on a camper van), or that I want to run as a low power inexpensive single use linux system (like my Pi Hole and my small media server).<p>When things get complicated, those two approaches often merge. A Raspberry Pi running python ro similar connected to an Arduino doing GPIO is a super common thing. Raspberry Pi (and most other Linux SoCs have 3.3v and fairly fragile gpio pins - it&#x27;s easy to zap a Pi dead by being clumsy with connecting things to it). Arduino gpio pins are almost indestructible - they don&#x27;t let the smoke out instantly of you short them to ground or Vcc&#x2F;5V (you even get away with accidentally connecting them to 12V sometimes). The last hardware startup I was involved in was a product prototyped using RaspberryPi and Arduino boards, and manufactured using IMX233 SoC (very similar to a RasPi) and an ATmega328 (the micro controller on a Arduino Uno) on a circuit board we d4esigned - that ran almost unchanged code to the prototype. (I think we even shipped with the Arduino boot loader from memory? We could certainly flash new firmware to the AT328 over serial just like an Arduino.)<p>There is though, an entire universe of &quot;embedded&quot; out there I&#x27;m only fleetingly familiar with.<p>Cars are chock full of &quot;embedded systems&quot; these days, The anti lock brakes, the fuel injection, the airbag sensors - things like that are likely to be Arduino-style no-OS systems (but running on Motorola 68000 or something instead of ATmega grade microcontrolers). The dashboard and entertainment system and climate control are likely to be linux (or Android for entertainment systems?) more similar to a RasPi.<p>Industrial controllers are often decades old tech like SCADA, often with linux gateways more or less securely connecting their pre-security designed control planes to the internet...<p>Whitegoods all have microciontrollers in them these days. If I had to guess I&#x27;d say mostly Arduino-like rather than linux-based, but I din&#x27;t _really_ know.