由以下提供:
现代嵌入式系统编程课程
欢迎来到"现代嵌入式系统编程"视频课程。
在这门课程中,你将学习如何以现代方式编程嵌入式微控制器,从基础知识一直到当代嵌入式编程实践。
这门课程的独特方法是经常深入到机器级别,向你展示嵌入式微控制器内部发生的确切情况。这种更深的理解将使你能够更有效地应用这些概念,并且更加自信。
如果你正在寻找一个实用的、动手的、结构良好的、深入解释嵌入式编程基本概念的课程,那么这门免费的课程非常适合你。
相关性
课程从2013年已经开始了,所以有个合理的问题是:"它还 relevant 吗?" 答案是肯定的,甚至可能比2013年还要 relevant,有两个主要原因:
基本概念
这门课程专注于嵌入式编程中的基本和根本概念,这些概念永不过时。所有介绍的概念都有深入的讲解,包括:
- 二进制表示(补码)、十六进制表示
- 控制流、状态寄存器、分支指令
- 变量、数组和指针
- 与外部世界的接口(GPIO)
- C语言中的位操作
- 函数、调用堆栈、递归、ARM过程调用标准
- 标准整数(stdint.h)和整数类型混合
- C语言中的结构和CMSIS
- 启动代码,向量表
- 嵌入式软件构建过程(链接过程)
- 中断和竞争条件
- "superloop"架构
- RTOS(实时操作系统)
- 面向对象编程(包括C语言中的OOP)
- 事件驱动编程
- 活动对象
- 状态机,包括现代层次化状态机
- 自动代码生成
- 软件跟踪
- 断言和契约设计
ARM Cortex-M架构
这门课程专注于流行的ARM Cortex-M架构,在过去的十年中,它在嵌入式MCU市场上已无可争议地占据主导地位。熟悉ARM Cortex-M是雇主最看重的技能。
讲师
这门课程由Miro Samek设计和教授——他是一位拥有超过30年经验的嵌入式软件专家。Miro喜欢教学,这个视频课程、他的书籍、文章和会议演讲帮助了许多开发人员提高他们的技能,通过严苛的工作面试,并获得嵌入式编程职位。
前提条件
课程从基础知识开始,但这一部分是简短而专注于嵌入式编程的C语言方面。因此,你可能需要补充一下一般的C编程语言学习。你可能还需要稍微了解一下CPU的工作原理。
此外,这门课程是实践性的,为了最大程度地从课程中受益,你可以并且应该跟随课程运行讨论的项目,为此,你将需要一些硬件(嵌入式板)和软件(嵌入式开发工具集)。
注意
一些早期的课程使用仿真器,因此你不需要立即使用嵌入式板。较高级的课程,当你与MCU外设(如GPIO等)交互时,需要使用嵌入式板。
硬件
课程中使用的主要嵌入式板是 TivaC LaunchPad 板(又称EK-TM4C123GXL),基于德州仪器的 ARM Cortex-M4F 微控制器。该板价廉并且依然可以买到,它是一个自包含的设备,提供了内置的硬件调试器/编程器(Stellaris ICDI),可以实现单步调试和检查内部状态。
TivaC LaunchPad (EK-TM4C123GXL)
课程下载现在也包含**ARM Cortex-M0+**微型控制器的STM32 NUCLEO-C031C6项目版本。该板同样价廉,自包含,并且内置了一个更为多功能的硬件调试器(ST-Link),可以实现单步调试和检查内部状态。
注意
未来将添加其他价廉嵌入式板的课程项目。
软件
为了构建和运行课程中介绍的代码,你需要以下嵌入式工具集之一:
IAR EWARM
课程开始时使用IAR Embedded Workbench for ARM (EWARM),它在课程1-19中使用。IAR EWARM是一个专业的工具集,拥有良好的编译器和稳定的调试器。
注意
IAR EWARM 曾经提供免费、尺寸有限的 KickStart 许可证,但最近,IAR Systems 停止提供免费许可证。唯一剩下的免费选项是 2 周的评估许可证。IAR EWARM 的项目已更新到较新版本的工具集,并提供给第1-19课。
KEIL MDK
KEIL MDK(微控制器开发套件)是本视频课程中使用的另一个专业开发工具集。与 IAR EWARM 相比,KEIL MDK 提供了更宽松的许可,包括免费的 Keil MDK v6 社区版。
注意
KEIL MDK 项目现在适用于本课程的所有课程。这包括原本为 IAR EWARM 或 TI CCS 提供的第 1-21 课。
TI CCS
由于广受欢迎,课程的两个课时(第 19 和 20 课)展示了德州仪器的 Code Composer Studio (CCS) IDE。这里唯一有价值的方面是使用开源的 GNU-ARM 编译器和链接器。
注意
Code Composer Studio (CCS) 11 默认使用 TI 编译器,不再附带 GNU-ARM 编译器。但可以通过菜单安装 GNU-ARM 工具链:"帮助 | 安装 GCC ARM 编译器工具..."
基于 Eclipse 的 Code Composer Studio IDE 的一个项目
CCS IDE 基于 Eclipse,因此启动和使用起来非常慢。Eclipse 项目难以共享,因为它们由多个文件和目录组成。此外,项目不能简单地在 IDE 中打开,而需要 "导入"。生成的错误消息通常让人困惑。最后,调试过程缓慢且不稳定。
课程项目
本存储库提供了可以在特定嵌入式工具集中打开并在家用电脑上运行的项目下载。项目按以下注明的目录树组织:
modern-embedded-programming-course/
+---lesson-01/ // 课程序号
| +---simulator-iar/ // 使用 IAR EWARM 的模拟器
| | workspace.eww // IAR 工作区
| |
| \---simulator-keil/ // 使用 KEIL MDK 的模拟器
| \---RTE/ // KEIL MDK 的运行时环境
| lesson.uvprojx // uVision 项目
|
+---lesson-.../
|
+---lesson-04/
| +---stm32c031-keil/ // 使用 KEIL-MDK 的 STM32C031 板
| | \---RTE/ // KEIL MDK 的运行时环境
| +---tm4c123-iar/ // 使用 IAR EWARM 的 TM4C123 板
| | workspace.eww // IAR 工作区
| |
| \---tm4c123-keil/ // 使用 KEIL MDK 的 TM4C123 板
| \---RTE/ // KEIL MDK 的运行时环境
| lesson.uvprojx // uVision 项目
|
+---lesson-...
|
+---lesson-19
| \---tm4c123-ccs // 使用 CCS 的 TM4C123 板
| +---ek-tm4c123gxl/ // 板卡专用代码
| \---targetConfigs/ // CCS 项目目录
| .ccsproject // CCS 项目文件
| .csproject // Eclipse 项目文件
| .project // Eclipse 项目文件
更新
ARM/KEIL uVision 的所有项目均已从过时的 Compiler-5 更新为较新的 Compiler-6。
评论/讨论
如果您想讨论本课程或相关主题,请在 YouTube 上相应视频课时的评论区发布您的问题或评论。
其他课程资源
通过以下配套网页,可以找到本视频课程的众多资源:
www.state-machine.com/video-course
其中包括:
- 硬件信息(板卡、逻辑分析仪等)
- TivaC 启动板故障排除
- Tiva TM4C123GH6PM 数据手册
- TivaC 的 USB 驱动
- TivaC 的闪存编程器
- 及更多内容
如何帮助此项目?
如果您喜欢这个项目,请:
-
传播您喜欢的视频(例如,通过在其他嵌入式工程师常去的网站上发布)
-
给此 GitHub 存储库加星(在您的浏览器窗口右上角):