学校云 建设你的专属在线教育平台
中国大学MOOC
SPOC学校专有课程
嵌入式系统概论
分享
spContent=本课程以ARM Cortex-M0+内核的KL系列微控制器为蓝本阐述嵌入式系统基本知识要素及软硬件设计方法,利用构件化方法提高软硬件设计规范、降低学习难度。包括知识体系、学习误区与学习建议;硬件最小系统与软件最小系统;硬件构件与底层驱动构件基本规范;GPIO、UART、SysTick、RTC、Flash等模块。
—— 课程团队
课程概述

课程简介:

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

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

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

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

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

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

实验套件:MOOC学员优惠价格:160元/套,需购买或借用的学员可加QQ群:808701915


授课目标

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

成绩 要求

无证书


课程大纲
预备知识

必须具备以下知识:

  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-硬件与软件:如何平衡?

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

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