Skip to content

📚 嵌入式系统基础知识与主流编程语言相关内容总结

License

Notifications You must be signed in to change notification settings

wq1998github/EmbeddedSystem

 
 

Repository files navigation

EmbeddedSystem

总结嵌入式系统基础知识、编程语言、高效工具等内容。

主要内容

技术文档与学习记录:

嵌入式系统基础:

机器学习:

编程语言:

环境搭建及工具:

理论基础:

本仓库将会长期更新嵌入式领域相关的知识,一部分内容是作者的学习笔记和心得总结,一部分是日常工作中的常用技巧,还有通过各种方式收集的嵌入式知识。通过总结提炼所拥有的技能,不断地将新的工具增加到技能列表中。

如果觉得有用,可以点亮小星星,也可以和作者一起完善它。

说点什么

对于嵌入式软件工程师的定位最近我有了新的认知,嵌入式系统是一种比较复杂的计算机系统。

电子类专业的毕业生从机器级的层面开始学习,如单片机,微机原理,后来到语言层面,如 C 语言和 Python,然后学习数据结构和算法。这个路线看起来还不错,也适合来入门,但是这条路线里有很严重的问题,只是学习这些知识你会发现自己很难做到知其然而又知其所以然。

在嵌入式工作中遇到的问题往往是综合性的,也就是说仅仅从语言级别或者算法级别入手往往不能解决问题,有时候需要深入到机器级。那么问题来了,整个嵌入式系统到底分了哪些层级,或者说整个计算机系统有哪些层级?要对整个知识体系框架有所了解,知道自己的位置,你需要对计算机的组成原理有较为深入的了解。

在这里我推荐书籍是由 Randal E. Bryant and David R. O'Hallaron 所著的《深入理解计算机系统》第三版。相应可以找到的课程是 MOOC 平台上的由袁春风教授讲授的 《计算机系统基础》课程,帮助我们建立对整个计算机系统抽象层的认识,增强我们解决嵌入式问题中的综合能力。

computer_architecture

后记

经过几年的开发实践,接触并使用到了各种各样的 CPU ,也自己设计并实现了一个简单的 16位 CPU。我逐渐认识到更重要的知识不是某种 CPU 的使用方式,而是更基础的计算机体系架构(x86 ARM RISC-V)。只有对计算机体系架构有深入的理解,遇到新的计算硬件才能触类旁通,例如 GPU TPU 以及 NPU。

同样的,开发过程中用到了各种各样的编译语言,C C++ Python Java Javascript Go。如果现在要我说是否需要不断学习新的编程语言,答案是肯定的。但是最重要的东西却不是编程语言本身,而是语言的设计思想以及它的适用场景,更深一步的是编程语言的编译原理,这些东西是构建起一门新语言的知识根基。理解了编程语言背后的东西,学习并使用一门新的语言变得非常容易,学习一门新的编程语言也不再是一种负担。

虽然说更底层的知识是更加重要的,但是直接学习这些底层的知识也并不见得是最好的,因为太难也太枯燥。学习需要循序渐进,先通过应用知识入手是没问题的,但是要始终提醒自己,这只是通向更深入内容的起点而已。

About

📚 嵌入式系统基础知识与主流编程语言相关内容总结

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 93.7%
  • Go 2.6%
  • Python 2.5%
  • C++ 1.0%
  • C 0.2%
  • Batchfile 0.0%