嵌入式系统入门请教~

嵌入式系统 ThatDanielWu ⋅ 于 2020-05-04 18:07:18 ⋅ 最后回复由 YX 2020-05-05 13:20:53 ⋅ 344 阅读

本人是一名大一工程本科在校生,有一定C语言基础但是对于逻辑电路以及芯片架构等只有很浅的了解。之前独自花了些时间思考了一下,感觉物联网是自己以后可能想走的路线。觉得现在从嵌入式开始学习是个不错的起点。于是想利用今年暑假的时间自学入门一波嵌入式系统&单片机。请问各位前辈有没有一些嵌入式系统的学习路线以及学习资源推荐?

本帖已被设为精华帖!
本帖由 YX 于 4月前 加精
回复数量: 4
  • 小强
    2020-05-04 20:54:10

    我认为无论是物联网还是嵌入式系统都是比较大且宽泛的概念,涉及的知识面很多。建议根据你自身的能力和兴趣,从一个点出发,去逐步的拓展完善你在这方面的知识体系。多动手,多实践,是学习技术的不二途径,没有什么固定的学习路线。比如我看你已经会使用 Arduino 了,那么你可以继续基于 Arduino 去做一些和这方面相关的小项目,逐步深入了解。在单片机里目前学习资料最丰富的就是 STM32 一类的 ARM 架构的单片机了,弄一个简单的开发板,把他提供的例程、小项目自己动手做一做,边做边思考。说到底,还是动起手来,实践出真知!

  • 小强
    2020-05-04 21:22:37

    如果你要学习 stm32,我觉得『野火』的开发板和视频可以试试。在有了一定了解了之后就是要学会看芯片手册等官方资料。
    这本书对了解 arm 也很有帮助

    https://book.douban.com/subject/26869785

  • karb0n 突然发现,我发的帖子全是软件安装方法
    2020-05-05 02:41:39

    单片机/嵌入式的话,我觉得 Arduino 是一个非常适合入门用的平台,上手容易,正反馈强。学习 Arduino 的过程中,可以在尽量少涉及电子、计算机原理层面的知识,去学习和了解开发嵌入式应用的流程,以及了解程序编写、器件选型、架构设计等的大致流程。


    在仅考虑嵌入式软件开发的工程实践层面,Arduino 玩得熟了之后,可以把方向分为以下三种,在其中去选一个或多个去学习:

    • 裸机:就是没有操作系统的,通常大家所说的“单片机”是指这一类,Arduino 就可以归类为这一类。在实际应用中,裸机一般用于实现较为简单的逻辑,或者非常注意低功耗的场景,例如空调遥控器。
      在这一方向上可以尝试学习 51MSP430 等平台。
    • 搭载实时操作系统的嵌入式平台:μC/OS-II、FreeRTOS、RT-Thread 等操作系统属于实时操作系统 (RTOS),相比于裸机,加入RTOS可以使处理器更好地处理多任务。例如通过网络遥控的空调,它的主控制器在处理空调自身运作的同时,还需要处理与服务器的上下行通信来接收用户指令或者告知用户运行状态,这就对多任务管理有一定的要求。
      在这一方向上可以尝试用 STM32MSP430 等平台入手,STM32 的资料最丰富。
    • 搭载非实时操作系统的嵌入式平台:GNU/Linux、Android、Windows 等操作系统属于非实时操作系统,在嵌入式平台上一般 GNU/Linux 比较常见。在实际应用中,这一类平台通常用于实现任务较多但是对实时性没有较强要求的应用,例如可以遥控空调的车载影音娱乐系统。
      这一方向可以尝试用树莓派等平台入门,可以去学习 GNU/Linux 等系统下的软件开发,以及 GNU/Linux 内核层面的操作和修改。

    以上三个方向之间其实并没有明确界线,裸机可以套上操作系统,也可以把操作系统给去掉只剩裸机。前两个方向软件和硬件都涉及,第三个方向更侧重于软件层面。
    当然,后面的学习过程中,其实不能仅学习各种嵌入式平台的应用,电子、计算机原理层面的理论/实践知识也是需要视题主感兴趣的领域去加强学习的,具体自己偏向于哪个领域可以在后面的不断摸索中慢慢了解到。


    题主还提到了物联网,个人认为物联网可能不能算作一个路线,因为物联网这个概念其实涉及到很多很多学科,作为一个个人,时间有限,只能选择其中的部分领域去深入学习,例如,物联网可以分为以下几个领域:

    • 天线设计:物联网设备通常需要通过天线收发电磁波来实现信息传输,设计天线可能要考虑到电动力学等学科,具体我并不是很了解。
    • 电路(通信层面):处理天线收发的数据需要有一块电路来实现,这块电路可以把从天线收来的信息处理成主处理器能理解的数据格式,也可以把主处理器想发送的数据处理成能让天线发送出去的格式,这块电路的核心部分通常是一个芯片,例如基带芯片、调制解调芯片等。设计通信电路需要学习的部分学科有:电路分析、模电、数电、信号与系统、通信电子线路、通信原理、信息论与编码、PCB设计、IC设计等。
    • 嵌入式硬件:物联网设备总有个自己的功能,例如获取环境温度、控制空调开关等。另外,电路上的各种元件可能也需要某些特殊的信号才能激活,例如很多芯片需要有个时钟信号之类的才能启动。这一领域可以被称为嵌入式硬件,这个领域就侧重于电路板的设计了,需要学习的部分学科有电路分析、模电、数电、PCB设计等。
    • 嵌入式软件:就是前一节中讨论的那些东西,理论层面推荐学习数据结构、计算机组成原理、操作系统原理、计算机网络等计算机专业的基础课,如果做的偏向于运动控制,就学信号与系统、数字信号处理、自动控制原理等自动化专业课程。实践层面除了嵌入式平台本身的使用方法外,可能需要学习的内容还有C/C++、Python、GNU/Linux、网络编程等。
    • 软件(网络或服务器层面):这一领域就基本上不涉及硬件了,可能会涉及到物联网云服务平台的搭建之类的,可能需要学习的内容有GNU/Linux、Java、C/C++、Python、PHP、Go、网络编程、数据库、网络安全、运维等。
    • 视觉处理、语音处理、自然语言处理等:这部分其实是一些高层的数据分析和处理了,虽然物联网里也会有应用,但通常可能不会被归类为物联网技术,涉及到的数学知识会比较多,每个方向都有各自需要的内容去学习。

    物联网包含的学科比较多,以上可能也没有全列出来,题主可以在后期的慢慢摸索中找到自己更感兴趣或者更擅长的方向去深入学习。


    总结一下,在学习过程中要注意的就是两点:

    • 一个是实践和理论都要注意学习,实践能力决定发展下限,理论能力决定发展上限。
    • 另一个是多去尝试,本科阶段有很多的试错机会,可以多尝试尝试,找到感兴趣的领域就去深入学习(这里的感兴趣是指,废寝忘食地去学习仍然能源源不断地获得快乐)。当然也要注意一点,要有侧重的方向,不能样样都沾点边却样样都不精。

    祝题主学习愉快!

    // 翻上去读了读题目,我感觉我好像写跑题了...

  • YX MOD
    2020-05-05 13:20:53
暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter