这是一个电子科技大学软件学院本科阶段计算机体系结构学习&嵌入式开发的公开课/书籍/Blog/资料整理的项目,如果你有贡献的想法:
- 可以直接提交Pull Request
- 如果你是嵌入式工作室成员,请联系@starFalll([email protected]),@StevenXu98([email protected])等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语言程序设计现代方法 | K. N. King | 入门推荐读物,讲解清晰 |
C与指针 | Kenneth A·Reek | 进阶读物,“C语言三剑客”之一 |
C陷阱与缺陷 | 凯尼格 | 进阶读物,“C语言三剑客”之一,重点讲解C中的注意事项 |
C专家编程 | Peter van der Linden | 进阶读物,“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++对象模型 |
资源推荐:
名称 | 作者 | 介绍 |
---|---|---|
数据结构 | 邓俊辉 | 国内质量最高的数据结构课程,推荐在MOOC上跟学,教材链接 |
在大一上学完C语言之后,推荐自学一门课:MIT 的 The Missing Semester of Your CS Education,可以翻译为计算机科学课堂中学不到的知识。B站链接.
这门课会教你使用各种工具链,比如 在终端下Bash Shell 编程,VIM 编辑器,正则表达式,Git 版本控制,profiler, SSH 配置远程环境等等。灵活地使用工具链能极大地提高你的工作效率。
你可以考虑运用在这门课上学到的知识,在大一下的时候在 Github 上搭一个自己的博客。
- Keil uVision
- STM32Cube
- jtag debugger
名称 | 作者 | 介绍 |
---|---|---|
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编译器 |
- 编写文档: Doxygen, Sphinx
- 代码质量:
- C: 华为C语言编程规范
- C++: Google C++ Style Guide
- Java: 阿里巴巴Java开发手册
- Python: PEP8, isort, black, Pyre
- 自动化测试: Robot, pytest
- Code review: Gerrit
- 持续集成工具: Travis CI
名称 | 作者 | 介绍 |
---|---|---|
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 | |
嵌入式综合设计 | 在廖老师指导下做四轴飞行器 |