嵌入式系统及应用
分享
课程详情
课程评价
spContent=本课程以ARM Cortex-M0+内核的KL系列微控制器为蓝本阐述嵌入式系统基本知识要素及软硬件设计方法,利用构件化方法提高软硬件设计规范、降低学习难度。包括知识体系、学习误区与学习建议;硬件最小系统与软件最小系统;硬件构件与底层驱动构件基本规范;UART、PWM、AD、DA、SPI、I2C、TSI、USB等模块。
—— 课程团队
课程概述

课程简介:

本课程是计算机科学与技术、物联网工程、电子信息等专业的重要技术类课程。嵌入式计算机系统简称为嵌入式系统,其概念最初源于传统测控系统对计算机的需求,是不以计算机面目出现的“计算机”,这个计算机系统隐含在各类具体的产品之中,在这些产品中,计算机程序起到了重要作用。其应用范围可以粗略分为两大类:一类是电子系统智能化(如工业控制、汽车电子、测控系统、家用电器、物联网应用等),这类应用也被称为微控制器MCU领域,从形态上看,更类似于早期的电子系统,但内部计算程序起核心控制作用。另一类是计算机应用的延伸(如平板电脑、手机等),这类应用也被称为应用处理器MAP领域。

从学习与开发角度,微控制器MCU是学习嵌入式系统的入门环节,且为重要的一环,它注重软件硬件协同,注重底层硬件接口、驱动及软硬件密切结合的开发调试技能等。应用处理器MAP更接近通用计算机系统,学习与开发方式也类似于通用计算机。从学习规律角度看,若是要全面学习掌握嵌入式系统,应该先学习掌握微控制器,然后在此基础上,进一步学习实时操作系统、嵌入式操作系统、应用处理器软件开发等,而不要倒过来学习。

微控制器是现代智能系统、工业物联网的“大脑”,是嵌入式系统的技术核心。本课程按照“入门时间较快、硬件成本较少,软硬件资料规范、知识要素较多,学习难度较低”的基本原则,选择流行的32ARM Cortex-M0+ KL系列MCU为蓝本,以嵌入式硬件构件及底层软件构件设计为主线,基于嵌入式软件工程的思想,按照“通用知识—驱动构件使用方法—测试实例—芯片编程结构—构件的设计方法”的线条,逐步阐述电子系统智能化嵌入式应用的软件与硬件设计。使读者逐步掌握嵌入式系统的基本知识要素、基本原理与设计方法,获得嵌入式系统的基本脉络,打好软硬设计基础,逐步学会电子系统智能化嵌入式应用的软硬件设计,强化实践训练。

本课程教学用书为普通高等教育“十二五”国家级规划教材、江苏省高等学校重点教材《嵌入式技术基础与实践(第4版)—ARM Cortex-M0+ KL系列微控制器》(王宜怀等著),该教材历经十多年凝练,仔细梳理了嵌入式系统的通用基础知识要素,注重把握通用知识与芯片相关知识之间的平衡、把握硬件与软件的关系、对底层驱动进行构件化封装、设计合理的测试用例、提供硬件核心板、写入调试器,网上光盘提供了所有模块完整的底层驱动构件化封装程序与测试用例,方便读者进行实践与应用。

网上光盘下载地址及路径:苏州大学嵌入式学习社区;

“http://sumcu.suda.edu.cn/”->“教学与培训”—>“教学资料”->“嵌入式基础书4版”,右边的下载专区

实验套件:MOOC学员优惠价格:160元/套,联系电话:黄鑫,13773136699

实验套件技术咨询:0512-65214835,苏州大学本部理工楼215

授课目标
本课程教学目的在于通过“通用知识—驱动构件使用方法—测试实例—芯片编程结构—构件的设计方法”的线条,使学生逐步掌握嵌入式系统的基本概念、基本原理与设计方法,获得嵌入式系统的基本脉络,打好嵌入式系统软硬设计的基础,逐步学会电子系统智能化嵌入式应用的软件与硬件设计,强化实践训练。
课程大纲

教学计划进度如下表


单元名称章节名称小节名称教学周
第一单元   基础与硬件第1章 概 述第1讲 嵌入式系统概述(书1.1~1.3)第01周
第2讲 嵌入式系统常用术语(书1.4)
第3讲 嵌入式系统常用的C语言基本语法概要(书1.5)
第2章 ARM Cortex M0+处理器第4讲   M0+体系结构与指令系统简介(书第2章)第02周
第3章 存储映像、中断源与硬件最小系统第5讲   存储映像、中断源与硬件最小系统(书第3章)
第一单元 单元测试
第二单元   入门与软件框架第4章 GPIO及程序框架第6讲   GPIO及基本打通原理(书4.1~4.2)第03周
第7讲 程序的基本调试方法(补充)
第8讲 用构件方法进行GPIO应用编程(书4.3~4.4)第04周
第9讲 分析一个汇编实例(书4.5~4.6)
第5章 嵌入式硬件构件与底层驱动构件基本规范第10讲   嵌入式硬件构件与底层驱动构件基本规范(书第5章)第05周
第6章   串行通信模块及第一个中断程序结构第11讲   串行通信基础知识与UART驱动构件使用方法(书6.1~6.2)
第12讲 ARM Cortex-M0+中断机制与中断编程步骤(书6.3)
第13讲 UART驱动构件的设计方法(书6.4)第06周
第14C#快速入门与串口通信编程方法(补充)
第二单元 单元测试
第三单元   基本模块第7章 定时器相关模块第15讲 ARM   Cortex-M0+内核定时器(Systick)(书7.1)第08周
第16讲 脉宽调制、输入捕捉、输出比较(书7.2~7.3)
第17讲 周期中断定时器、低功耗定时器、实时时钟(书7.4~7.7)
第8章   GPIO应用—键盘、LED及LCD第18讲 GPIO应用—键盘(书8.1)第09周
第19讲 GPIO应用—LED(书8.2)
第20讲 GPIO应用—LCD(书8.3)
第9章   Flash在线编程第21讲   Flash在线编程构件的使用(书9.1~9.2)第10周
第22讲 Flash在线编程构件的设计方法(书9.3)
第10章   ADC、DAC与CMP模块第23讲 模数转换ADC模块(书10.1)第11周
第24讲 数模转换DAC与CMP模块(书10.2~10.3)
第三单元 单元测试
第四单元   较复杂通信模块第11章 SPI、I2C与TSI模块第25讲   串行外设接口SPI模块(书11.1)第12周
第26讲 集成电路互联总线I2C模块(书11.2)
第27讲 触摸感应接口TSI模块(书11.3)
第12章   USB编程第28讲   USB基本概念及从机编程方法(书12.1~12.2)第13周
第29讲 USB主机编程方法(书12.3)
第30讲 MCU的USB底层驱动设计方法(上)(书12.4~12.7)第14周
第31讲 MCU的USB底层驱动设计方法(下)(书12.4~12.7)
第四单元 单元测试
第五单元   其他第13章 系统时钟与其他功能模块第32讲 时钟系统(书13.1)第15周
第33讲 看门狗相关模块(书13.5)
第34讲 位操作引擎技术及应用方法(书13.4)第16周
第14章 进一步学习指导第35讲 进一步学习指导(书第14章)
第五单元 单元测试第17周
期末考试



第一单元 基础与硬件(第1~3章(1~5讲))

第一章 概述(第1~3讲)

【目的和要求】本章作为导引,要求学生掌握嵌入式系统定义、由来、分类及特点;了解初学者在学习嵌入式系统时可能遇到的困惑认识,从而消除这些困惑;掌握嵌入式系统的知识体系,理解学习建议;掌握MCU的基本含义及MCU给测控系统设计带来的变化及嵌入式产品的一般构成与开发方法。了解嵌入式系统的基本术语,快速收拢与复习本书所用到的C语言基本知识要素。

【重点和难点】嵌入式系统分类及不同类型的学习方法、嵌入式系统的学习困惑、MCU的基本含义、嵌入式产品的一般构成与开发方法。

【教学内容】

1.1 嵌入式系统定义、发展简史、分类及特点

1.2 嵌入式系统的学习困惑、知识体系及学习建议

1.3 微控制器与应用处理器简介

1.4 嵌入式系统常用术语

1.5 嵌入式系统常用的C语言基本语法概要


第2章 ARM Cortex-M0+处理器(第4讲)

【目的和要求】了解CMO+内核结构、存储映像;掌握CM0+内部寄存器,记忆部分指令保留字;理解CM0+寻址方式;了解指令系统及机器码;记忆部分伪指令。

【重点和难点】内部寄存器、记忆指令保留字、记忆部分伪指令

【教学内容】

2.1 ARM Cortex-M0+处理器简介

2.2 ARM Cortex-M0+处理器的指令系统

2.3 ARM Cortex-M0+指令集与机器码对应表

2.4 GNU汇编语言的基本语法


第3章 存储映像、中断源与硬件最小系统(第5讲)

【目的和要求】本章通过介绍Kinetis L 系列MCU与最小硬件系统,结合开发板,对基于AMR Cortex-M0+内核的微控制器有更进一步了解,更快速入门学习嵌入式开发技术。

【重点和难点】存储器映像结构、引脚功能分类(分成硬件最小系统引脚及功能引脚)、硬件最小系统电路的理解

【教学内容】

3.1 恩智浦Kinetis系列微控制器简介

3.2 KL系列MCU简介与体系结构概述

3.3 KL25/26系列存储映像与中断源

3.4 KL25/26的引脚功能

3.5 KL25/26硬件最小系统原理图


第二单元 入门与软件框架(第4~6章(6~14讲))

第4章 第一个样例程序及工程组织(第6~9讲)

【目的和要求】需要花功夫透彻理解,达到快速且规范入门的目的。本章通过GPIO实例完成第一个工程的入门,学会下载程序与调试程序的基本方法,理解启动过程。主要目的是理解程序框架和工作过程。了解汇编工程。

【重点和难点】底层驱动、程序框架和程序的调试方法。

【教学内容】

4.1 通用I/O接口基本概念及连接方法

4.2 端口控制模块与GPIO模块的编程结构

4.3 GPIO驱动构件封装方法与驱动构件封装规范

4.4 利用构件方法控制小灯闪烁

4.5 工程文件组织框架与第一个C语言工程分析

4.6 第一个汇编语言工程:控制小灯闪烁


第5章 构件化开发方法与底层驱动构件封装规范(第10讲)

【目的和要求】本章主要分析嵌入式系统构件化设计的重要性和必要性,给出嵌入式硬件构件概念及嵌入式硬件构件的分类、基于嵌入式硬件构件的电路原理图设计简明规则;给出嵌入式底层驱动构件的概念与层次模型;给出底层驱动构件的封装规范,包括构件设计的基本思想与基本原则、编码风格基本规范、头文件及源程序设计规范;给出硬件构件及底层软件构件的重用与移植方法。这一章的目的,是期望通过一定的规范,提高嵌入式软硬件设计的可重用性和可移植性。

【重点和难点】底层软件构件的编程规范。

【教学内容】

5.1 嵌入式硬件构件

5.2 嵌入式底层驱动构件的概念与层次模型

5.3 底层驱动构件的封装规范

5.4 硬件构件及底层软件构件的重用与移植方法


第6章 串行通信模块及第一个中断程序结构(第11~14讲)

【目的和要求】本章阐述KL25的串行通信模块构件化编程,并且阐述ARM Cortex-M0+的中断编程框架,通过这一章的学习,掌握嵌入式系统中断程序的设计。

【重点和难点】中断的产生,中断处理函数的作用,学会处理其他中断的方法。对要求较高的学生,UART驱动构件的制作也是重点和难点之一。

【教学内容】。

6.1 异步串行通信的通用基础知识

6.2 KL25/26芯片UART驱动构件及使用方法

6.3 ARM Cortex-M0+中断机制及KL25/26中断编程步骤

6.4 UART驱动构件的设计方法


第三单元 基本模块(第7~10章(第15~24讲))

第7章 定时器相关模块(第15~17讲)

【目的和要求】掌握ARM Cortex-M0+内核定时器(Systick)的编程方法定时接口模块;掌握脉宽调制、输入捕捉与输出比较通用基础知识及其构件使用方法;理解脉宽调制、输入捕捉与输出比较构件的设计方法;了解周期中断定时器PIT模块、低功耗定时器LPTMR模块、实时时钟RTC模块构件使用方法。

【重点和难点】Systick的编程方法、脉宽调制、输入捕捉与输出比较通用基础知识。

【教学内容】

7.1 ARM Cortex-M0+内核定时器(Systick)

7.2 脉宽调制、输入捕捉与输出比较通用基础知识

7.3 TPM模块的驱动构件及使用方法

7.4 TPM模块驱动构件的设计方法

7.5 周期中断定时器PIT模块

7.6 低功耗定时器LPTMR模块

7.7 实时时钟RTC模块


第8章 GPIO应用—键盘、LED与LCD(第18~20讲)

【目的和要求】对于键盘,主要掌握查询法、定时扫描法与中断法,掌握键值转为定义值的编程方法。对于LED编程,掌握扫描法的基本工作原理、接口方法和编程要点。对于LCD编程,了解LCD驱动程序的编写以及LCD显示的原理。同时,通过对构件封装过程的学习加深对构件思想的理解。

【重点和难点】应用构件的设计方法。

【教学内容】

把嵌入式系统中常用的输入/输出设备,键盘、LED数码管和LCD液晶显示,作为GPIO的应用实例来看待,分析它们的工作原理和编程方法。

8.1 键盘基础知识与键盘驱动构件设计

8.2 LED数码管基础知识与LED驱动构件设计

8.3 LCD基础知识与LCD驱动构件设计

8.4 键盘、LED及LCD驱动构件测试实例


第9章 Flash在线编程(第21~22讲)

【目的和要求】了解Flash存储器的基本特点及编程模式,掌握Flash存储器在线编程的基本概念,理解的Flash存储器编程的基本操作。掌握Flash存储器在线编程驱动构件的使用方法。

【重点和难点】Flash存储器编程的基本操作,Flash编程方法。

【教学内容】主要内容有:

9.1 Flash驱动构件及使用方法

9.2 Flash保护与加密

9.3 Flash驱动构件的设计方法。


第10章 ADC、DAC与CMP模块(第23~24讲)

【目的和要求】掌握模/数转换(ADC)、数/模转换(DAC)以及比较器(CMP)模块的基本原理和构件的使用方法。

【重点和难点】ADC转换的技术参数及构件设计。

【教学内容】主要内容有:

10.1 模拟/数字转换器ADC

10.2 数字/模拟转换器DAC

10.3 比较器CMP


第四单元 较复杂通信模块(第11~12章(第25~31讲))

第11章 SPI、I2C与TSI模块(第25~27讲)

【目的和要求】串行外设接口SPI、集成电路互联总线I2C和触摸感应输入(TSI)模块的工作原理和编程方法。

【重点和难点】SPI、I2C、TSI的基本原理。

【教学内容】主要内容有:

11.1 串行外设接口SPI模块

11.2 集成电路互联总线I2C模块

11.3 触摸感应接口TSI模块


第12章 USB2.0编程(第28~31讲)

【目的和要求】了解USB通信接口的优点及基本特点,掌握USB驱动构件的使用方法。了解USB驱动构件的设计方法。

【重点和难点】USB设备上电的枚举过程。

【教学内容】

12.1 USB应用开发基础知识

12.2 USB设备(从机)的应用编程方法

12.3 USB主机的应用编程方法

12.4 设计微控制器的USB驱动构件应掌握的基础知识

12.5 KL25/26芯片USB模块的编程结构

12.6 KL25/26芯片作为USB设备(从机)的驱动构件设计

12.7 KL25/26芯片作为USB主机的驱动构件设计


第五单元 其他(第13~14章(第32~35讲))

第13章 系统时钟与其他功能模块(第32~34讲)

【目的和要求】掌握时钟系统、看门狗的编程方法;了解电源模块、低漏唤醒单元、复位模块、位操作引擎技术及应用方法。理解冷复位及热复位。

【重点和难点】重点是时钟系统、看门狗定时器、冷复位及热复位。难点是位操作引擎技术。

【教学内容】

13.1 时钟系统

13.2 电源模块

13.3 低漏唤醒单元

13.4 看门狗

13.5 复位模块

13.6 位操作引擎技术及应用方法


第14章 进一步学习指导(第35讲)

14.1 关于更为详细的技术资料

14.2 关于实时操作系统RTOS

14.3 关于嵌入式系统稳定性问题


预备知识

必须具备以下知识:

  1. C语言

  2. 具备一定的电子线路知识

证书要求

无证书


参考资料

[1] NXP. KL25 Sub-Family Reference Manual Rev.3,2012.(简称KL25参考手册)

[2] NXP. KL25 Sub-Family Data Sheet Rev.3,2012.(简称KL25数据手册)

[3] NXP. Kinetis L Peripheral Module Rev.0,2012.(简称KL25外设快速参考手册)

[4] NXP. Kinetis Design Studio V3.0.0- User's Guide Rev3.0,2015.(简称KDS用户指南)

[5] NXP. KL26 Sub-Family Reference Manual,2015.(简称KL26参考手册)

[6] NXP. KL26 Sub-Family Data Sheet Rev.3,2014.(简称KL26数据手册)

[7] NXP. Kinetis SDK V1.1.0 For KL26,2015.(简称KL26软件开发工具包)

[8] NXP. FRDMKL26ZUser Guide,2013. (简称KL26用户指南)

[9] ARM. Cortex-M0+ Technical Reference Manual Rev.r0p1,2012. (简称M0+参考手册)

[10] ARM. Cortex-M0+ Devices Generic User Guide,2012. (简称M0+用户指南)

[11] ARM. ARMv6-M Architecture Reference Manual,2010.

[12] ARM.ARMv7-M Architecture Reference Manual,2010.

[13] Joseph Yiu. The Definitive Guide to the ARM Cortex-M0,Elsevier Inc. 2011(简称CM0权威指南)

[14] Joseph Yiu著,宋岩译. Cortex-M3权威指南(中文版). 北京航空航天大学出版社. 2011. (简称Cortex-M3权威指南)

[15] Free Software Foundation Inc.Using as The gnu Assembler Version2.11.90,2012. (简称GNU汇编语法)

[16] NATO Communications and Information Systems Agency. NATO Standard for Development of Reusable Software Components, 1991.(简称NATO)

[17] 边海龙,贾少华,USB 2.0设备的设计与开发.人民邮电出版社,2004.

[18] [美]Jack Ganssle, Michael Barr著.马广云等译.英汉双解嵌入式系统词典.北京航空航天大学出版社.2006.

[19] [美]Colin Walls著.沈建华译.嵌入式软件概论.北京航空航天大学出版社.2007.

[20] [美]Jack Ganssle著.嵌入式系统设计的艺术(英文版•第2版).人民邮电出版社,2009

常见问题

1.学习本课程有什么用?

      本课程为软硬件结合,理论紧密联系实践的一门程序开发课程,学习本课程有利于加强硬件开发的学习,有利于提高动手编程的能力。

2.学习本课程需要什么基础?

      学习本课程需要具备C语言,计算机基础操作,具备一定的电子线路知识。

3.本课程主要学习什么内容?

     本课程以MCU为核心的嵌入式技术基础与实践。要完成一个以MCU为核心的嵌入式系统应用产品设计,需要有硬件、软件及行业领域相关知识。硬件主要有MCU的硬件最小系统、输入/输出外围电路、人机接口设计。软件设计有固化软件的设计,也可能含PC机软件的设计。

概括地说,学习以MCU为核心的嵌入式系统,需要以下软件硬件基础知识与实践训练:

(1)硬件最小系统(包括电源、晶振、复位、写入调试器接口等);

(2)通用I/O(开关量输入/输出,涉及各种二值量检测与控制);

(3)模数转换A/D(各种传感器信号的采集与处理,如红外、温度、光敏、超声波、方向等);

(4)数模转换D/A(对模拟量设备利用数字进行控制);

(5)通信(串行通信接口UART、串行外设接口SPI、集成电路互联总线I2C,CAN、USB、嵌入式以太网、无线传感器网络等);

(6)显示(LED、LCD、触摸屏等);

(7)控制(控制各种设备,包括PWM等控制技术);

(8)数据处理(图形、图像、语音、视频等处理或识别);

(9)各种具体应用。

4.嵌入式系统学习困惑2-选择操作系统:NOS,RTOS或EOS

      首先把嵌入式系统软件与硬件基础打好了,再根据实际应用需要,选择一种实时操作系统(RTOS)进行实践。RTOS是开发某些嵌入式产品的辅助工具,是手段,不是目的。况且一些小型微型嵌入式产品并不需要RTOS。所以,一开始就学习RTOS,并不符合“由浅入深、循序渐进”的学习规律。

5.嵌入式系统学习困惑1-选择入门芯片:是微控制器还是微处理器?

      选择一个较典型的微控制器作为入门芯片,且从不带操作系统(No Operating System,NOS)学起,由浅入深,逐步推进。

6.嵌入式系统学习困惑3-硬件与软件:如何平衡?

       嵌入式系统设计是一个软件、硬件协同设计工程,不能像通用计算机那样,软件、硬件完全分开来看,要在一个大的框架内协调工作。

       要想成为一名真正的嵌入式系统设计师,在初学阶段,必须重视打好嵌入式系统的硬件与软件基础。嵌入式系统与硬件紧密相关,是软件与硬件的综合体,没有对硬件的理解就不可能写好嵌入式软件,同样没有对软件的理解也不可能设计好嵌入式硬件。