├── .gitignore ├── .gitattributes └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows thumbnail cache files 2 | Thumbs.db 3 | ehthumbs.db 4 | ehthumbs_vista.db 5 | 6 | # Folder config file 7 | Desktop.ini 8 | 9 | # Recycle Bin used on file shares 10 | $RECYCLE.BIN/ 11 | 12 | # Windows Installer files 13 | *.cab 14 | *.msi 15 | *.msm 16 | *.msp 17 | 18 | # Windows shortcuts 19 | *.lnk 20 | 21 | # ========================= 22 | # Operating System Files 23 | # ========================= 24 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # How to learn modern Embedded Systems 2 | A guide to the adventurer 3 | 4 | ## Description 5 | This is a guide to learn embedded systems, with updated resources that I think are relevant and modern.
6 | In this repository there are resources for 3 areas:
7 | * Embedded microcontroller programming 8 | * Embedded FPGA programming 9 | * Embedded Linux drivers and systems programming 10 | 11 | 12 | # Engineering a project from idea to final product 13 | 14 | This example is beautifully explained in 15 minutes with clarity and simplicity. With access to all the files (Open Hardware). A really good and simple project of IoT to learn from. Study it and see also the other videos from the same Youtuber, because Sayanee Basu is a really good educator in embedded development. A nice video to start this guide.
15 | 16 | 1. Initial idea 17 | 2. Market study. Search for other products in the market and open projects. 18 | 3. Concept development 19 | 4. Circuit design 20 | 5. Procurement of components 21 | 6. PCB design with a microcontroller 22 | 7. Logistics to send the board to factory 23 | 8. Construction, soldering the components on the board 24 | 9. Boot loader flashing 25 | 10. Firmware development in Arduino-CLI 26 | 11. PC Web development configuration control over USB. 27 | 12. Publishing of all files of the project on the Web 28 | 13. Demo of the project and the project development steps on a Youtube video 29 | 30 | * **How I built a simple IR blaster to replace my aircon remote - Arduino, sensors, infrared, WebUSB - Sayanee Basu**
31 | [https://www.youtube.com/watch?v=QuI-2VGGcEQ](https://www.youtube.com/watch?v=QuI-2VGGcEQ) 32 | 33 | 34 | # Programming 35 | 36 | 37 | ## C programming 38 | 39 | * **Simple notes on the C Programming Language**
40 | [https://github.com/joaocarvalhoopen/Simple_notes_on_the_C_Programming_Language](https://github.com/joaocarvalhoopen/Simple_notes_on_the_C_Programming_Language) 41 | 42 | * **C Programming - A Modern Approach 2nd Ed (C99)**
43 | by K. N. King
44 | Pag 832 45 | 46 | * **C in a Nutshell: The definitive reference (C11)**
47 | by Peter Prinz, Tony Crowford
48 | Pag 803 49 | 50 | * **Effective C: An Introduction to Professional C Programming**
51 | by Robert C. Seacord
52 | Pag 272 53 | 54 | 55 | ## C++ programming 56 | 57 | * **A Tour of C++ 2nd Ed**
58 | by Bjarne Stroustrup
59 | Pag 256 60 | 61 | * **Programming: Principles and Practice Using C++ 2nd Ed**
62 | by Bjarne Stroustrup
63 | Pag 1312 64 | 65 | * **C++ Crash Course: A Fast-Paced Introduction**
66 | by Josh Lospinoso
67 | Pag 792 68 | 69 | * **How to learn modern C++**
70 | [https://github.com/joaocarvalhoopen/How_to_learn_modern_C_Plus_Plus](https://github.com/joaocarvalhoopen/How_to_learn_modern_C_Plus_Plus) 71 | 72 | 73 | ## Python programming 74 | 75 | * **Programação em Python: Fundamentos e resolução de problemas (In Portuguese)**
76 | by Ernesto Costa (FCA) 77 | 78 | * **Python Crash Course, 2nd Edition: A Hands-On, Project-Based Introduction to Programming**
79 | by Eric Matthes
80 | Pag 544 81 | 82 | * **How to learn modern Python**
83 | [https://github.com/joaocarvalhoopen/How_to_learn_modern_Python](https://github.com/joaocarvalhoopen/How_to_learn_modern_Python) 84 | 85 | 86 | ## Rust programming 87 | 88 | * **How to learn modern Rust**
89 | [https://github.com/joaocarvalhoopen/How_to_learn_modern_Rust](https://github.com/joaocarvalhoopen/How_to_learn_modern_Rust) 90 | 91 | * **The Rust Programming Language Book**
92 | by Steve Klabnik and Carol Nichols, with contributions from the Rust Community
93 | [https://doc.rust-lang.org/stable/book/](https://doc.rust-lang.org/stable/book/) 94 | 95 | * **Programming Rust: Fast, Safe Systems Development 2th Ed**
96 | by Jim Blandy, Jason Orendorff
97 | Pag 736 98 | 99 | * **Rust for Rustaceans: Idiomatic Programming for Experienced Developers**
100 | by Jon Gjengset 101 | 102 | 103 | ### Embedded Rust 104 | 105 | * **Video - An Overview of the Embedded Rust Ecosystem**
106 | [https://www.youtube.com/watch?v=vLYit_HHPaY](https://www.youtube.com/watch?v=vLYit_HHPaY) 107 | 108 | * **Awesome embedded rust - Github**
109 | [https://github.com/rust-embedded/awesome-embedded-rust](https://github.com/rust-embedded/awesome-embedded-rust) 110 | 111 | * **The Embedded Working Group Newsletter or Blog**
112 | [https://rust-embedded.github.io/blog/](https://rust-embedded.github.io/blog/) 113 | 114 | * **Discovery Book**
115 | [https://docs.rust-embedded.org/discovery/](https://docs.rust-embedded.org/discovery/) 116 | 117 | * **The Embedded Rust Book**
118 | [https://docs.rust-embedded.org/book/](https://docs.rust-embedded.org/book/) 119 | 120 | * **Workbook for Embedded Workshops - Book**
121 | [https://embedded-trainings.ferrous-systems.com/](https://embedded-trainings.ferrous-systems.com/) 122 | 123 | * **The Embedonomicon Book**
124 | [https://docs.rust-embedded.org/embedonomicon/](https://docs.rust-embedded.org/embedonomicon/) 125 | 126 | * **Video - RTIC: Real Time Interrupt driven Concurrency**
127 | RTIC is a RTOS - Real Time Operating System.
128 | [https://www.youtube.com/watch?v=saNdh0m_qHc](https://www.youtube.com/watch?v=saNdh0m_qHc) 129 | 130 | * **Github - rtic-rs - cortex-m-rtic**
131 | See RTIC book documentation.
132 | [https://github.com/rtic-rs/cortex-m-rtic](https://github.com/rtic-rs/cortex-m-rtic) 133 | 134 | * **Video - Grepit about the Rust RTIC framework**
135 | [https://www.youtube.com/watch?v=sSJ-Md8nwIM](https://www.youtube.com/watch?v=sSJ-Md8nwIM) 136 | 137 | * **Video - Bare Metal Audio Programming With Rust - Antoine van Gelder - ADC20**
138 | [https://www.youtube.com/watch?v=udlK1LQ3f3g](https://www.youtube.com/watch?v=udlK1LQ3f3g)
139 | Slides
140 | [https://flowdsp.io/talks/talk-adc20/#1](https://flowdsp.io/talks/talk-adc20/#1) 141 | 142 | * **Video - Building a simple logic analyser in Rust**
143 | Rust Linz, September 2020 - Roland Ruckerbauer - Embedded Rust
144 | [https://www.youtube.com/watch?v=xY342ACNXFg](https://www.youtube.com/watch?v=xY342ACNXFg)
145 | Slides
146 | [https://github.com/ruabmbua/rlogic/blob/master/presentation.pdf](https://github.com/ruabmbua/rlogic/blob/master/presentation.pdf)
147 | Github - ruabmbua / rlogic
148 | [https://github.com/ruabmbua/rlogic](https://github.com/ruabmbua/rlogic) 149 | 150 | 151 | ### Embedded Rust with STM32 BluePill - STM32F103 152 | 153 | * **STM32 BluePill in Rust - Project template and lot's of info**
154 | This is the project template I use in my BluePill projects.
155 | [https://github.com/joaocarvalhoopen/stm32_bluepill_in_rust__Template](https://github.com/joaocarvalhoopen/stm32_bluepill_in_rust__Template) 156 | 157 | 158 | ### Embedded Rust with Raspberry Pi Pico - 4 dollars board 159 | 160 | * **All relevant Info and a starting project Template.**
161 | Where I have put all the info that I consider to be relevant for Pico development in Rust.
162 | **Raspberry Pi Pico in Rust Proj Template with RTIC USB-Serial and UF2**
163 | [https://github.com/joaocarvalhoopen/Raspberry_Pi_Pico_in_Rust__Proj_Template_with_RTIC_USB-Serial_UF2](https://github.com/joaocarvalhoopen/Raspberry_Pi_Pico_in_Rust__Proj_Template_with_RTIC_USB-Serial_UF2) 164 | 165 | 166 | ### Rust on or for the Raspberry Pi 167 | 168 | There are two modes of using Rust with the Raspberry Pi.
169 | The first one is installing Rust development tools on the Raspberry Pi itself, and the second one is installing on the PC and making cross-compilation to generate a executable that runs on the Raspberry Pi.
170 | 171 | 172 | ### Developing on the Raspberry Pi and running Rust programs on the Raspberry Pi 173 | 174 | * **How to Get Started With Rust on Raspberry Pi**
175 | [https://www.muo.com/tag/getting-started-rust-raspberry-pi/](https://www.muo.com/tag/getting-started-rust-raspberry-pi/) 176 | 177 | 178 | ### Developing on the PC and cross-compiling to run Rust programs on the Raspberry Pi 179 | 180 | * **Cross Compiling Rust for the Raspberry Pi**
181 | It also explains a method to automatically coping the file to the Raspberry Pi after compilation.
182 | [https://chacin.dev/blog/cross-compiling-rust-for-the-raspberry-pi/](https://chacin.dev/blog/cross-compiling-rust-for-the-raspberry-pi/) 183 | 184 | * **Cross compiling Rust for Raspberry Pi**
185 | [https://dev.to/h_ajsf/cross-compiling-rust-for-raspberry-pi-4iai](https://dev.to/h_ajsf/cross-compiling-rust-for-raspberry-pi-4iai) 186 | 187 | 188 | ## Algorithms 189 | 190 | * **Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People**
191 | by Aditya Bhargava
192 | Pag 256 193 | 194 | * **Guide to Competitive Programming: Learning and Improving Algorithms Through Contests 2th Ed**
195 | by Antti Laaksonen
196 | Pag 324 197 | 198 | * **How to become dangerous in Algorithms**
199 | [https://github.com/joaocarvalhoopen/How_to_become_dangerous_in_algorithms](https://github.com/joaocarvalhoopen/How_to_become_dangerous_in_algorithms) 200 | 201 | 202 | # Microcontrollers 203 | 204 | * **Bruce Land microcontrollers classes**
205 | Cornell University ECE 4760 Designing with Microcontrollers
206 | [http://people.ece.cornell.edu/land/courses/ece4760/](http://people.ece.cornell.edu/land/courses/ece4760/) 207 | 208 | 209 | ## Arduino 210 | 211 | * **Programming Arduino: Getting Started with Sketches, 2nd Ed**
212 | by Simon Monk
213 | Pag 208 214 | 215 | * **Programming Arduino Next Steps: Going Further with Sketches, 2nd Ed**
216 | by Simon Monk
217 | Pag 320 218 | 219 | * **Exploring Arduino: Tools and Techniques for Engineering Wizardry 2nd Ed**
220 | by Jeremy Blum
221 | Pag 512 222 | 223 | * **Embedded Controllers using C and Arduino 2nd Ed**
224 | By James Fiore
225 | Pag 166 Price Free Creative commons, but small symbolic price if bought on paper on Amazon. 226 | book
227 | [Book and videos - http://www.dissidents.com/books.htm](http://www.dissidents.com/books.htm) 228 | 229 | * **Laboratory Manual for Embedded Controllers using C and Arduino 2nd Ed**
230 | By James Fiore
231 | Pag 100 Price Free Creative commons, but small symbolic price if bought on paper on Amazon. 232 | book
233 | [Book and videos - http://www.dissidents.com/books.htm](http://www.dissidents.com/books.htm) 234 | 235 | 236 | ## Arduino-CLI 237 | 238 | This is the best way and the more professional way of working with Arduino. With your own editor, with your own make file, with all your tools in place, really the best way. All this is beautifully explained in simple terms and in a show how to do it way in the following video play list from Sayanee Basu.
239 | 240 | * **Arduino CLI and the art of command line - Sayanee Basu**
241 | [https://www.youtube.com/watch?v=cVod8k713_8&list=PL9wSRifxQqRrJh3Qr_TgqeCODG0z20UDo&index=6](https://www.youtube.com/watch?v=cVod8k713_8&list=PL9wSRifxQqRrJh3Qr_TgqeCODG0z20UDo&index=6) 242 | 243 | * **Makefiles for using with Arduino - UNO, WeMos D1 Mini ESP8266, Adafruit nRF52 - Sayanee Basu**
244 | [https://www.youtube.com/watch?v=Os5sGlw3PV0&list=PL9wSRifxQqRrJh3Qr_TgqeCODG0z20UDo&index=3](https://www.youtube.com/watch?v=Os5sGlw3PV0&list=PL9wSRifxQqRrJh3Qr_TgqeCODG0z20UDo&index=3) 245 | 246 | * **Embedded - Sayanee Basu**
247 | [https://www.youtube.com/playlist?list=PL9wSRifxQqRrJh3Qr_TgqeCODG0z20UDo](https://www.youtube.com/playlist?list=PL9wSRifxQqRrJh3Qr_TgqeCODG0z20UDo) 248 | 249 | * **Arduino-Cli – Github**
250 | [https://github.com/arduino/arduino-cli](https://github.com/arduino/arduino-cli) 251 | 252 | 253 | ## AVR 254 | 255 | * **AVR Programming: Learning to Write Software for Hardware**
256 | by Elliot Williams
257 | Pag 474 258 | 259 | 260 | ## STM32 261 | 262 | * **Beginning STM32: Developing with FreeRTOS, libopencm3 and GCC**
263 | by Warren Gay
264 | Pag 430 265 | 266 | * **STM32 ARM Programming for Embedded Systems**
267 | by Mazidi, Chen, Ghaemi
268 | Pag 378 269 | 270 | * **STM32 MOOC Courses** on STM32CubeMX HAL and LL and others
271 | [Official free MOOC's](https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs.html) 272 | 273 | * **STM32 Online Training**
274 | [Free online training](https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-online-training.html) 275 | 276 | * **STM32 HAL e LL manual for the STM32 family**. 277 | 278 | * The ST docs that you will need: Microcontroller **Datasheet**, **Reference Manual** and **Dev Board Starter Manual**. 279 | 280 | 281 | ## ESP32 and ESP32-S2 282 | 283 | * **Learn ESP32 with Arduino IDE**
284 | I took this course and I recommend it, because it is a good course. It's an extensive course, good for the beginner and not so beginners. It covers in many, many projects all the micro-controller programming and the IoT - Internet Of Things stuff with the Arduino IDE. The author is constantly adding material to the course. I have experience with several different micro-controllers and in my opinion, the ESP32 and the future ESP32-S02 are good safe bet's to learn micro-controllers in general and IoT in particular. Also they are low cost and have large range of advanced features.
285 | [https://randomnerdtutorials.com/learn-esp32-with-arduino-ide/](https://randomnerdtutorials.com/learn-esp32-with-arduino-ide/) 286 | 287 | * **Learn ESP32 The ESP-IDF**
288 | I took this course and I recommend it highly, this is an excellent course. This is a course for a more professional or more in depth persons, for the ones that really need to know what's under the hood and want to make use of every feature, capacity and possibility that the incredible ESP32 provides. The other kind of person that I can imagine doing this course is if you are already a developer for example in PC or web context, you will rapidly understand all the details and understand all the micro-controller power that the author explains to you. The framework used (ESP-IDF) is the one made by ExpressIF, the enterprise that makes the ESP32. The knowledge that you will obtain from this course is really profound, although the author goes to extensive length to explain the foundations that you need even in more advanced C programming, it is for people that already used a micro-controller before, be it a simple Arduino Uno board, or a more professional one. But I would like to say clearly that, the knowledge that you obtain from this course is profound. In my opinion it gives you the tools, it enables you to work professional on this field developing embedded systems software with the ESP32 including IoT. The course already as 12 hours, with all the code accessible in GitHub, but it's author is currently still adding content. It also includes advanced sections on freeRTOS. It uses in a very intelligent and useful way the free Visual Studio Code Editor in Windows and Linux, even allowing debugging in ESP32 inside Visual Studio Code with a cheap 10 dollars JTAG addon board.
289 | [https://www.learnesp32.com/](https://www.learnesp32.com/) 290 | 291 | 292 | ## FreeRTOS - Real time operating system 293 | 294 | * FreeRTOS **Getting Started**, **Guide** and **reference manual** on freeRTOS site.
295 | [FreeRTOS Documentation](https://www.freertos.org/Documentation/RTOS_book.html) 296 | 297 | * **FreeRTOS for ESP32-Arduino**
298 | by Warren Gay 299 | 300 | * **Hands-On RTOS with Microcontrollers: Building real-time embedded systems using FreeRTOS, STM32 MCUs...**
301 | by Brian Amos
302 | Pag 496 303 | 304 | 305 | ## Fixed Point Math 306 | 307 | * **Introduction to Fixed Point Math for Embedded Systems - Part 1 of 3**
308 | [https://www.youtube.com/watch?v=bbFBgXndmP0](https://www.youtube.com/watch?v=bbFBgXndmP0) 309 | 310 | * **Introduction to Fixed Point Math for Embedded Systems - Part 2 of 3**
311 | [https://www.youtube.com/watch?v=7pkXlcapNB4](https://www.youtube.com/watch?v=7pkXlcapNB4) 312 | 313 | * **Introduction to Fixed Point Math for Embedded Systems - Part 3 of 3**
314 | [https://www.youtube.com/watch?v=SrELHqRqKjo](https://www.youtube.com/watch?v=SrELHqRqKjo) 315 | 316 | 317 | ## Microcontrollers for less than 1 dollar 318 | 319 | * **The amazing $1 microcontroller (Jay Carlson)**
320 | A new series that explores 21 different microcontrollers — all less than $1 — to help familiarize you with all the major ecosystems out there.
321 | [https://jaycarlson.net/microcontrollers/](https://jaycarlson.net/microcontrollers/) 322 | 323 | 324 | # Linux 325 | 326 | 327 | ## Learn Embedded Linux 328 | 329 | * **So you want to build an embedded Linux System? (Jay Carlson)**
330 | A primer on how embedded Linux systems are developed, plus an exploration of the hardware and software ecosystems of ten different commonly-available CPUs.
331 | [https://jaycarlson.net/embedded-linux/](https://jaycarlson.net/embedded-linux/) 332 | 333 | * **How to learn modern Linux**
334 | [https://github.com/joaocarvalhoopen/How_to_learn_modern_Linux](https://github.com/joaocarvalhoopen/How_to_learn_modern_Linux) 335 | 336 | 337 | ## Command line 338 | 339 | * **The Linux Command Line: A Complete Introduction 2nd Ed**
340 | by William Shotts
341 | Pag 480 342 | 343 | 344 | ## Computer systems, Operating systems and Drivers 345 | 346 | * **Computer Systems: A Programmer's Perspective, 3rd Ed**
347 | by Randal E. Bryant, David R. O'Hallaron
348 | Pag 1120 349 | 350 | * **How Linux Works: What every super user should know**
351 | by Brian Ward
352 | Pag 392 353 | 354 | * **The Linux Programming Interface: A Linux and UNIX System Programming Handbook 1st Ed**
355 | by Michael Kerrisk
356 | Pag 1552 357 | 358 | * **Linux Device Drivers, 3rd Ed**
359 | by Jonathan Corbet, Alessandro Rubini
360 | Pag 640
361 | **Note:** Not up to date, but free online and a good book.
362 | [https://lwn.net/Kernel/LDD3/](https://lwn.net/Kernel/LDD3/) 363 | 364 | * **Linux Driver Development for Embedded Processors 2th Ed: Learn to develop Linux embedded drivers with kernel 4.9 LTS**
365 | by Alberto Liberal de los Ríos
366 | Pag 680 367 | 368 | 369 | # RaspberryPi 370 | 371 | * **The Official Raspberry Pi Beginner's Guide**
372 | by Gareth Halfacree
373 | Pag 248 374 | 375 | * **Raspberry Pi - Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux**
376 | by Derek Molloy
377 | Pag 720 378 | 379 | * **Learning Computer Architecture with Raspberry Pi**
380 | by Eben Upton, Jeffrey Duntemann, Ralph Roberts, Tim Mamtora, Ben Everard
381 | Pag 528 382 | 383 | 384 | # FPGA's 385 | 386 | * **Bruce Land FPGA's classes**
387 | ECE 5760 Advanced Microcontroller Design and system-on-chip
388 | [https://people.ece.cornell.edu/land/courses/ece5760/](https://people.ece.cornell.edu/land/courses/ece5760/) 389 | 390 | 391 | ## Verilog 392 | 393 | * **Verilog by Example: A Concise Introduction for FPGA Design**
394 | by Blaine Readler
395 | Pag 124 396 | 397 | * **Programming FPGAs: Getting Started with Verilog**
398 | by Simon Monk
399 | Pag 192 400 | 401 | 402 | ## VHDL 403 | 404 | * **VHDL By Example: A Concise Introduction for FPGA Design**
405 | by Blaine Readler
406 | Pag 120 407 | 408 | 409 | ## FPGA Open source Tools 410 | 411 | * **Open-Source FPGA tools, how and why**
412 | [https://www.youtube.com/watch?v=sZBfEgnTc1A](https://www.youtube.com/watch?v=sZBfEgnTc1A) 413 | 414 | * **Project IceStorm for Latice ICE40**
415 | [http://www.clifford.at/icestorm/](http://www.clifford.at/icestorm/) 416 | 417 | * **Digital Design for FPGAs, with free tools**
418 | [https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Home_EN](https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki/Home_EN) 419 | 420 | 421 | # Others 422 | 423 | 424 | ## Electronics 425 | 426 | * **Getting Started in Electronics**
427 | by Forrest M. Mims III
428 | Pag 128 429 | 430 | * **Practical Electronics for Inventors, 4th Ed**
431 | by Paul Scherz and Simon Monk
432 | Pag 1056 433 | 434 | * **How to learn modern electronics**
435 | [https://github.com/joaocarvalhoopen/How_to_learn_modern_electronics](https://github.com/joaocarvalhoopen/How_to_learn_modern_electronics) 436 | 437 | * **Most common components in electronics**
438 | [https://github.com/joaocarvalhoopen/Most_common_components_in_electronics](https://github.com/joaocarvalhoopen/Most_common_components_in_electronics) 439 | 440 | 441 | ## PCB - KiCAD 442 | 443 | * **Kicad Like a Pro, 2nd edition**
444 | by Dr. Peter Dalmaris
445 | Pag 459 (A4)
446 | [https://techexplorations.com/st/klp_2e/](https://techexplorations.com/st/klp_2e/) 447 | 448 | * **PCB design course KiCAD like a Pro** 449 | I took this course and reed the book and I recommend it highly, this is an excellent course. There comes a time that every person that enter this field of electronics or embedded systems, will feel the need to make a professional looking board for the system that you design. When breadboard, soldering wires or simples pre-fabricated modules connected by wires, are not enough. That is the time to start learning about how to design a PCB's. Starting by drawing the schematic, to the design of the effective PCB, reaching out to a fabric to make you PCB and then assemble in your home or in the fabric with an assembly service. This course cover it all. KiCAD is a free open source tool that is of professional grade.
450 | [https://techexplorations.com/so/kicada/](https://techexplorations.com/so/kicada/) 451 | 452 | * **KiCad - Sayanee Basu**
453 | [https://www.youtube.com/playlist?list=PL9wSRifxQqRqdhVqZtdHnlwophrsjL9ic](https://www.youtube.com/playlist?list=PL9wSRifxQqRqdhVqZtdHnlwophrsjL9ic) 454 | 455 | 456 | ## DSP 457 | 458 | * **Understanding Digital Signal Processing 3th Ed**
459 | by Richard G. Lyons
460 | Pag 954 461 | 462 | * **Digital Signal Processing in Modern Communication Systems**
463 | by Andreas Schwarzinger
464 | Pag 398 465 | 466 | * **The Scientist & Engineer's Guide to Digital Signal Processing**
467 | by Steven W. Smith
468 | Pag 626 Free on the net
469 | [http://www.dspguide.com/](http://www.dspguide.com/) 470 | 471 | 472 | ## GCC and GDB 473 | 474 | * **An Introduction to GCC**
475 | by Brian J Gough, Richard M Stallman
476 | Pag 144 477 | 478 | * **GDB Pocket Reference**
479 | by Arnold Robbins
480 | Pag 78 481 | 482 | 483 | ## Git 484 | 485 | * **Ry’s Git Tutorial**
486 | [https://johnmathews.eu/rys-git-tutorial.html](https://johnmathews.eu/rys-git-tutorial.html) 487 | 488 | * **Version control for hardware developers - Git, GitHub, KiCad - Sayanee Basu**
489 | [https://www.youtube.com/watch?v=V8yYrUN0q-0&list=PL9wSRifxQqRrJh3Qr_TgqeCODG0z20UDo&index=10](https://www.youtube.com/watch?v=V8yYrUN0q-0&list=PL9wSRifxQqRrJh3Qr_TgqeCODG0z20UDo&index=10) 490 | 491 | 492 | ## Code editors 493 | 494 | * **Visual Studio Code**
495 | [https://code.visualstudio.com/](https://code.visualstudio.com/) 496 | 497 | * **Sublime Text**
498 | [https://www.sublimetext.com/](https://www.sublimetext.com/) 499 | 500 | 501 | # All my other guides 502 | 503 | * The links to all my guides are in:
504 | **Guides on Linux - Programming - Embedded - Electronics - Aeronautics**
505 | [https://github.com/joaocarvalhoopen/Guides_Linux-Programming-Electronics-Aeronautics](https://github.com/joaocarvalhoopen/Guides_Linux-Programming-Electronics-Aeronautics) 506 | 507 | 508 | # Have fun! 509 | 510 | Best regards,
511 | Joao Nuno Carvalho --------------------------------------------------------------------------------