本科阶段嵌入式方向技能树

转载自:UESTC404 / awesome-es

项目介绍

这是一个电子科技大学软件学院本科阶段计算机体系结构学习&嵌入式开发的公开课/书籍/Blog/资料整理的项目,如果你有贡献的想法:

  1. 可以直接提交Pull Request
  2. 如果你是嵌入式工作室成员,请联系@starFalll(fyxformal@gmail.com),@StevenXu98(steven_xu98@163.com)等UESTC404组织的所有者,邀请你加入 UESTC404 中

学习资源分享

  • 推荐的学习主线:
时间 内容
大一上 C语言
大一下 数据结构和算法, STM32裸板开发,项目实战
大二上 arm体系架构(嵌入式linux),linux系统编程,计算机组成原理, 编译原理, 项目实战
大二下 C++, 实时操作系统RTOS,linux内核与驱动(嵌入式linux),操作系统,项目实战
大三上 项目实战找实习
大三下 企业实习/教研室科研/海外交换

技能图谱

基础知识

作为一名软件学院的本科生,必须牢牢掌握以下计算机相关的知识:

技能点名称 技能点内容
编程语言 C语言, C++, Python
算法和数据结构 链表,栈,队列,字符串,二叉树,图,查找,排序,以及一些面试中经常考察的模板例如动态规划,滑动窗口,快慢指针,寻找第 K 个最大的元素等等
软件工程 编写文档, 代码质量, 自动化测试, Code Review, 持续集成工具
编译原理
计算机体系结构
操作系统
计算机网络

嵌入式方向

如果你对嵌入式方向有兴趣,需要掌握以下技能:

技能点名称 技能点内容
开发平台 CPU:Intel x86, ARM x86
MCU编程: C51, STM32
FPGA
嵌入式开发软件 Keil uVision, STM32Cube, jtag debugger
嵌入式Linux Bootloader, driver, …
实时操作系统 uCOS, ROS
外设 Timer, ADC / DAC, ROM / RAM, PWM, I/O / GPIO, …
执行器 电机(步进, 无刷, 舵机,…),电调
传感器 陀螺仪,超声波,红外, …
电子元件 电容,电阻,开关,二极管, …
通信协议 Bluetooth, Zigbee, Wifi, UART, TCP, UDP, I2C, …
电路 焊电路, PCB设计

编程语言

C语言

书籍推荐:

名称 作者 介绍
C语言程序设计现代方法 K. N. King 入门推荐读物,讲解清晰
C与指针 Kenneth A·Reek 进阶读物,“C语言三剑客”之一
C陷阱与缺陷 凯尼格 进阶读物,“C语言三剑客”之一,重点讲解C中的注意事项
C专家编程 Peter van der Linden 进阶读物,“C语言三剑客”之一

资源推荐:

C++

书籍推荐阅读顺序:

阅读顺序 名称 作者 介绍
1 C++ Primer [美] Stanley B. Lippman / [美] Josée Lajoie / [美] Barbara E. Moo C++最经典教程
2 Effective C++ 梅耶 (Scott Meyers) C++开发必读经典
3 STL源码剖析 侯捷 理解STL源码必读
4 深度探索C++对象模型 [美] Stanley B·Lippman 从编译器层面认识C++对象模型

资源推荐:

Java

Python

汇编 – X86

汇编 – ARM

算法和数据结构

名称 作者 介绍
数据结构 邓俊辉 国内质量最高的数据结构课程,推荐在MOOC上跟学,教材链接

工具链

在大一上学完C语言之后,推荐自学一门课:MIT 的 The Missing Semester of Your CS Education,可以翻译为计算机科学课堂中学不到的知识。B站链接.

这门课会教你使用各种工具链,比如 在终端下Bash Shell 编程,VIM 编辑器,正则表达式,Git 版本控制,profiler, SSH 配置远程环境等等。灵活地使用工具链能极大地提高你的工作效率。

你可以考虑运用在这门课上学到的知识,在大一下的时候在 Github 上搭一个自己的博客。

版本控制:Git

编译工具:Makelile

嵌入式开发软件

  • Keil uVision
  • STM32Cube
  • jtag debugger

MCU编程

51单片机

STM32

树莓派

嵌入式Linux

书籍推荐

名称 作者 介绍
LKD3 Robert Love linux内核的设计与实现,非常经典的入门书籍。可帮助理解操作系统
ELDD Sreekrishnan Venkateswaran linux设备驱动详细解读,稍难,是linux设备驱动相关的经典书籍。
Linux内核源代码情景分析 毛德操 / 胡希明 浙大毛教授著作。基于2.4内核,对代码有详细解读。虽2.4版本较老,但如此详细的解读也值得一读。
The Design of the Unix Operating System Maurice J. Bach
Linux 内核揭秘
Linux Device Drivers, 3rd Edition Jonahan Corbet

编译原理

名称 作者 介绍
15-411/611 Compiler Design – CMU Jan Hoffmann CMU的编译原理基础课程
自己动手写编译器 pandolia 实现一个简单的C编译器

软件工程

计算机体系结构

名称 作者 介绍
Computer Organization and Design, Fifth Edition David A. Patterson / John L. Hennessy 作者是图灵奖得主,提出RISC架构

计算机网络

名称 作者 介绍
计算机网络(第6版) James F.Kurose / Keith W.Ross

操作系统

名称 作者 介绍
清华大学操作系统课程(2019) 清华OS实验室的操作系统课程,课件、实验作业的质量都非常高

实时操作系统

名称 作者 介绍
μC/OS-III: The Real-Time Kernel for STM32 Jean J. Labrosse 经典实时操作系统, C语言编写
AliOS Things 国产实时操作系统,阿里巴巴面向物联网领域开发
TencentOS-tiny 国产实时操作系统,腾讯面向物联网领域开发

项目实战

工作室往届的项目介绍:

名称 年级 介绍
Quadcopter 2015 基于STM32F411外设固件库的四轴keil5工程
基于Tensorflow的树莓派智能识别机器人 2016 基于Tensorflow的树莓派智能识别机器人
Quadcopter 2017 基于STM32F401RE的四轴飞行器

一些推荐参加的本科阶段的科技创新类项目 & 比赛:

名称 介绍
Google Summer of Code 每年3月份开始提交申请的proposal
数学建模 要自学一下matlab
Robomaster
ACM
嵌入式综合设计 在廖老师指导下做四轴飞行器

找实习

发表评论

nv-author-image