GithubHelp home page GithubHelp logo

anqi042 / awesome-es Goto Github PK

View Code? Open in Web Editor NEW

This project forked from uestc404/awesome-es

0.0 1.0 0.0 29 KB

电子科技大学软件学院本科阶段计算机体系结构学习&嵌入式开发的公开课/书籍/Blog/资料整理

awesome-es's Introduction

项目介绍

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

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

学习资源分享

技能图谱

基础知识

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

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

嵌入式方向

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

技能点名称 技能点内容
开发平台 CPU: Intel x86 x64, ARM64
MCU编程:C51, STM32
FPGA
嵌入式开发软件 Keil uVision, STM32Cube, JTAG debugger, System Viewer
嵌入式Linux Bootloader, Driver, ...
实时操作系统 uCOS, FreeRTOS, ROS(严格来说是ROS2)
外设 Timer, ADC / DAC, ROM / RAM, PWM, I/O / GPIO, ...
执行器 电机(步进, 无刷, 舵机, ...), 电调, FOC
传感器 陀螺仪, 加速度计, 超声波, 红外, ...
电子元件 电容, 电阻, 开关, 二极管, 晶振...
通信协议 Bluetooth, Zigbee, Wifi, UART, TCP, UDP, I2C, ...
电路 PCB设计, 元件焊接
仪器 万用表, 示波器, 信号发生器, 逻辑分析仪, ...

借一张导师的经典老图,差不多就这个学习路线。

image-20220115150133350

编程语言

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

学习指南

内核:多参考ARM Crotex M3/M4权威指南,结合《计算机组成原理》和《ARM处理器及应用》相关课程内容进行理解。需要了解的知识点有启动流程、中断流程、时钟树......

外设:对于MCU编程来说外设的学习主要分为以下步骤

  1. 硬件构造,例如挂载到哪个时钟总线上,硬件上是否需要依托其他外设工作......

  2. 协议原理,搞清楚通信协议内容和规则,了解下通信的信号是怎么样的。

  3. 寄存器功能,参考芯片《用户手册》详细了解外设相关寄存器功能,有多少个相关寄存器,每个寄存器是干什么用的,每一位又有什么用。

  4. 代码模仿,去原子、野火这些地方找点样例代码,学习下代码结构,让外设工作起来需要哪些配置步骤。

  5. 上手实践,自己去实现一套外设驱动,多尝试不同的配置不同的功能。

搞定这几个环节应该就能把相应的外设基本搞清楚,也能实现简单的功能了,接下来就是灵活应用,深入了解其中原理了。

嵌入式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

树莓派

NVIDIA Jetson

编译原理

名称 作者 介绍
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 国产实时操作系统,腾讯面向物联网领域开发
Huawei-LiteOS 鸿蒙操作系统物联网业务内核

项目实战

工作室往届的项目介绍:

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

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

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

找实习

awesome-es's People

Contributors

starfalll avatar jason-xy avatar stevenxu98 avatar yuhangzang avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.