嵌入式必备
- 格式:doc
- 大小:206.00 KB
- 文档页数:2
获取更多权威电子书请登录ARM嵌入式系统开发综述ARM开发工程师入门宝典获取更多权威电子书请登录 前言嵌入式系统通常是以具体应用为中心,以处理器为核心且面向实际应用的软硬件系统,其硬件是整个嵌入式系统运行的基础和平台,提供了软件运行所需的物理平台和通信接口;而嵌入式系统的软件一般包括操作系统和应用软件,它们是整个系统的控制核心,提供人机交互的信息等。
所以,嵌入式系统的开发通常包括硬件和软件两部分的开发,硬件部分主要包括选择合适的MCU或者SOC 器件、存储器类型、通讯接口及I/O、电源及其他的辅助设备等;软件部分主要涉及OS porting和应用程序的开发等,与此同时,软件中断调试和实时调试、代码的优化、可移植性/可重用以及软件固化等也是嵌入式软件开发的关键。
嵌入式系统开发的每一个环节都可以独立地展开进行详细的阐述,而本文的出发点主要是为嵌入式开发的初学者者提供一个流程参考。
因为对于初学者在面对一个嵌入式开发项目的时候,往往面临着诸多困难,如选择什么样的开发平台?什么样的器件类型?在进行编译时怎样实现代码优化?开发工具该如何选择和使用?在进行程序调试时应该注意那些问题以及选择什么样的嵌入式OS 等等。
希望通过本文,能帮助初学者了解有关ARM嵌入式系统开发流程。
获取更多权威电子书请登录目录前言 (2)1 嵌入式开发平台 (4)1.1 ARM的开发平台: (4)1.2 器件选型 (7)2 工具选择 (11)3 编译和连接 (13)3.1 RVCT的优化级别与优化方向 (16)3.2 Multifile compilation (21)3.3调试 (22)4 操作系统 (23)4.1 哪里可以得到os 软件包 (Open Source and LinuxKernel) (25)4.2 安装镜像 (26)4.3 交叉编译 (26)总结 (27)获取更多权威电子书请登录 1 嵌入式开发平台通常嵌入式开发的平台主要包括基于SoC或MCU开发板,板上提供常用的外设、接口和其他功能模块,开发者一般根据自己的应用需要选择适合自己板级开发平台。
嵌入式软件使用说明随着科技的不断发展,嵌入式系统在我们的日常生活中发挥着越来越重要的作用,而嵌入式软件则成为了嵌入式系统中不可或缺的一部分。
嵌入式软件的使用可能存在一些问题,本文将对嵌入式软件的使用进行一些说明和指导。
一、了解嵌入式软件嵌入式软件,是一种针对特定应用领域及使用环境、具有特殊功能和特殊结构的软件。
它运行在嵌入式系统中,通常不需要人工干预。
与常用的计算机操作系统不同,嵌入式软件的特点是占用系统资源小、运行速度快、可靠性高。
但是嵌入式软件也有其自身的限制,主要体现在硬件资源、运行环境和应用场景方面。
二、选择嵌入式软件在选择嵌入式软件时,需要考虑以下几个方面:1、应用场景:不同的应用场景需要的嵌入式软件是不同的,需要评估所选软件是否能满足应用场景的需求。
2、开发成本:嵌入式软件的开发成本一般比较高,需要考虑所选软件的开发成本是否在预算范围内。
3、可维护性:嵌入式软件的可维护性对于长期运行的嵌入式系统非常重要,需要考虑所选软件的可维护性是否足够好。
4、技术支持:选择一个拥有足够技术支持的软件供应商很重要,这样在出现问题时可以得到及时的解决。
三、嵌入式软件的安装嵌入式软件的安装需要先进行下载,然后进行解压、安装等操作。
在解压和安装过程中,需要根据嵌入式软件的使用说明选择相应的文件路径和配置信息。
安装完毕后,需要进行软件的配置和对相应的参数进行设置,确保软件可以正常运行。
四、嵌入式软件的调试嵌入式软件的调试是非常重要的一项工作。
在调试过程中,需要根据嵌入式软件的使用说明,了解嵌入式软件的运行流程和相关接口。
在调试过程中,需要注意以下几个方面:1、调试工具:需要选择适合的调试工具,如仿真器、示波器等。
2、调试方法:嵌入式软件调试方法多种多样,如断点调试、跟踪调试、远程调试等。
3、调试技巧:需要掌握一些调试技巧,如错误定位、变量观测等。
五、嵌入式软件的优化在嵌入式软件的开发过程中,为了提高软件的性能和可靠性,可以进行优化。
嵌入式工程师工作中的问题与不足1. 引言嵌入式系统是现代科技发展中的重要组成部分,广泛应用于各个领域,如电子设备、汽车、医疗设备等。
嵌入式工程师作为开发和维护嵌入式系统的专业人员,在日常工作中面临着一系列问题与不足。
本文将探讨这些问题,并提供相应的解决方案。
2. 技术更新速度快嵌入式系统的技术更新速度非常快,新的处理器、传感器和通信技术不断涌现,给嵌入式工程师带来了巨大压力。
他们需要不断学习新技术,跟上行业的发展趋势。
然而,由于时间有限,很难对所有新技术进行深入研究和掌握。
解决方案:持续学习是嵌入式工程师必备的能力之一。
可以通过参加行业会议、培训课程和阅读相关书籍来增加自己的知识储备。
此外,建立良好的合作网络也是非常重要的,可以与其他工程师交流经验和学习新技术。
3. 复杂性与可靠性之间的平衡嵌入式系统通常需要在复杂环境中运行,并具有高可靠性的要求。
然而,增加系统的可靠性通常会增加其复杂性。
嵌入式工程师需要在复杂性与可靠性之间进行权衡,以确保系统既能正常运行又能满足用户需求。
解决方案:在设计嵌入式系统时,工程师应该采用模块化和层次化的方法,将系统划分为多个模块,并对每个模块进行独立设计和测试。
此外,使用合适的软件开发方法和工具也可以提高系统的可靠性。
最后,在整个开发过程中进行充分的测试和验证是确保系统可靠性的关键。
4. 资源限制嵌入式系统通常具有资源限制,如处理器速度、内存容量和功耗等。
这些限制给嵌入式工程师带来了一系列挑战。
他们需要在有限的资源下实现功能丰富、高效率和低功耗的系统。
解决方案:优化算法和数据结构是提高嵌入式系统效率的有效方法。
工程师可以使用优化编译器和调试工具来改善代码性能。
此外,合理利用硬件资源,如使用中断、DMA等技术来减少处理器的负载,可以进一步提高系统性能。
5. 实时性要求很多嵌入式系统需要满足实时性要求,即在严格的时间限制下完成任务。
这对嵌入式工程师来说是一个巨大的挑战,因为他们需要设计和实现能够满足实时要求的系统。
嵌入式开发分类嵌入式开发是当今信息技术领域中一个极为重要且不断发展的分支。
随着物联网、人工智能、自动驾驶等技术的迅速崛起,嵌入式系统的应用范围越来越广泛,从家用电器、智能穿戴设备到工业自动化、航空航天等领域都有它的身影。
在这个庞大的领域中,嵌入式开发因其应用场景和需求的多样性,形成了多个不同的分类。
本文将对嵌入式开发的主要分类进行详细的探讨。
一、按应用领域分类1. 消费电子嵌入式开发消费电子是嵌入式系统应用最为广泛的领域之一。
智能手机、平板电脑、智能电视、智能家居设备等都属于这一范畴。
这类嵌入式开发注重用户体验、功耗优化、多媒体处理能力和网络连接性能。
开发人员需要熟悉各种消费电子产品的硬件架构,掌握操作系统移植、驱动程序开发、应用程序设计等技术。
2. 工业控制嵌入式开发工业控制是嵌入式系统的另一个重要应用领域,包括自动化设备、传感器网络、生产线监控等。
这类嵌入式开发要求系统具有高度的可靠性、实时性和稳定性。
开发人员需要了解工业控制领域的相关标准,如PLC编程、现场总线技术等,并能够根据实际需求进行系统设计和优化。
3. 汽车电子嵌入式开发随着汽车电子化水平的提高,嵌入式系统在汽车中的应用也越来越广泛,包括发动机控制、车身稳定系统、信息娱乐系统等。
汽车电子嵌入式开发对系统的安全性、可靠性和实时性要求极高。
开发人员需要熟悉汽车电子硬件架构和相关标准,掌握汽车级软件开发流程和测试方法。
4. 航空航天嵌入式开发航空航天领域对嵌入式系统的要求最为苛刻,因为任何一点小小的失误都可能导致严重的后果。
航空航天嵌入式开发需要确保系统在极端环境下的稳定性、可靠性和安全性。
开发人员需要具备深厚的航空航天背景知识,熟悉相关标准和认证流程,并能够进行严格的系统测试和验证。
二、按硬件平台分类1. ARM嵌入式开发ARM架构是目前最为流行的嵌入式硬件平台之一,广泛应用于各种消费电子产品和工业控制设备中。
ARM嵌入式开发主要涉及基于ARM处理器的系统设计和应用开发,包括硬件选型、操作系统移植、驱动程序开发等。
嵌入式软件工程师必须要掌握那些知识?嵌入式是当下最流行的开发模式,早在Android之前,这一领域的发展势头就非常强劲,但我们想想看,是不是Android从本质上来讲,也属于嵌入式开发的一部分,在最近几年被Android开发的风头盖过,但随之移动互联网时代的高速发展,嵌入式软件开发又开始羽翼丰满,重新占领舞台,下面就简单来了解下嵌入式开发的一些必备技能吧。
必备技能一、c/c++, 没有之一。
c/c++即能很好的跟底层硬件打交道,程序执行效率那也是相当有效率的。
基础的东西,就一定要学扎实,如果没有基础,那都是花把势。
所以嵌入式学习必需学习c/c++。
所谓基础是前提,有前提的后面的才会有保障。
对于嵌入式来讲,主要有两大发展方向,一是硬件方向,另外一种则是软件方向。
从硬件方向来讲,需要掌握的内容有:第一步:PCB设计,拿个芯片解决方案公版改改电路,换换零件,设计自己的电路,做自己的产品。
第二步:SOPC技术,一般为FPGA,CPLD开发,利用VHDL等硬件描述语言做专用芯片开发,写出自己的逻辑电路,搞个简单的外围芯片还是可以的。
第三步:整个arm架构,学学习习arm指令,看看芯片手册,搞搞bootloader。
第四步:玩玩系统移植,写写驱动这个已经上一个层次了第五步:SOC设计,这是硬件设计的核心技术:芯片设计。
能做到这步,已经不属于平凡的技术人员。
从软件方向来讲,需要掌握的内容有:除了一些基础语言开发之外,我们还必须要掌握一些更多的东西。
1、懂得linux系统,并会应用linux系统博大精深。
要想会玩那也是需要下工夫的。
基本命令会不会,简单脚本能不能写。
2、掌握相关的调试手段说道这个也是一个重要指标,嵌入式开发不同于pc开发,在pc 上断点跟踪代码什么的都十分方便,在嵌入设备上就比较麻烦了,串口,文件等这些是我们常用的调试手段,找问题基本上是看打印输出。
3、熟悉相关的环境配置嵌入式开发要想顺利,配置各种环境也是必需,没环境搞啥!学嵌入式开发要不停的折腾,环境配置虽然是个力气活,没它你还真干不了活。
嵌入式系统的分类1、以硬件划分1.1嵌入式微控制器(Microcontrol lerUnit,也称MCU)单片机就属于嵌入式微控制器,单片机机心由ROM(或EPROM)、总线、总线逻辑、定时器(或计数器)、Watch Dog、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等组成,它属于单片式设计,体积小、功耗低、成本小、可靠性高的特点,该类型的品种、数量都是最多的,目前嵌入式系统中,MCU在70年代就已经研制出来,但由于以上的特点,直到现在,它依然占有70%的市场份额。
1.2嵌入式微处理器(MicroProcessor Unit,又称MPU)嵌入式微处理器是根据计算机的CPU演变来的,然而与计算机处理器不同的是,它要求性能高、功耗低、体积小、成本小、重量轻、可靠性高的特点,以满足嵌入式环境下的特殊需求,如ARM系列广泛应用于手机终端,PowerPC系列广泛应用于航空系统。
1.3嵌入式DSP处理器(EmbeddedDigitalSignalProcessor,又称EDSP)DSP的算法理论在70年代就已经出现,那时还没有专门的DSP 处理器,只能用MPU的分立元件实现,然而处理的速度无法满足DSP算法要求,1982年,首枚DSP处理器诞生,它是专门用于处理信号的处理器,以信号处理的特殊要求在系统结构处理、算法上进行专门设计的处理器,它具有很高的编译效果与执行速度的功能。
80年代中期,诞生出基于CMOS工艺的DSP处理器,它的储容量和运算速度与前代相比都有飞跃性的提高、现在随着DSP处理器的不断发展,它的集成度更高、应用范围更广。
1.4嵌入片上系统(SystemOnChip,又称SOC)嵌入片上系统追求包容性最强的集成器件,它使现了软硬件无缝结合,在处理器片上直接嵌入操作系统的代码模块,因此具有很高的综合性。
使用SOC,SOC一般是专用的芯片,它具有系统简洁、体积小、功耗小、可靠性高、生产效率高的特点。
嵌入式系统的例子(一)嵌入式系统什么是嵌入式系统嵌入式系统(Embedded System)是集成了计算机硬件和软件,专门用来控制特定功能的计算机系统。
它通常被嵌入到一些特定的物理设备或系统中,不像常见的通用计算机系统那样具备多样化的功能。
嵌入式系统在现代科技中起着重要的作用,应用广泛,包括但不限于:- 汽车 - 手机 - 家电 - 医疗设备 - 无人机 - 工业控制设备等。
嵌入式系统的重要性嵌入式系统之所以如此重要,主要有以下几个原因:1. 特定功能由于嵌入式系统被设计用来控制特定功能,它们可以通过集成硬件和软件满足特定需求。
例如,汽车中的嵌入式系统可以控制车辆的引擎、导航系统和娱乐系统等。
这种特定功能使得嵌入式系统能够在各种复杂的设备中发挥作用。
2. 节省成本和空间相比于传统的计算机系统,嵌入式系统通常更简化、更紧凑。
它们通常集成在设备中的电路板上,不需要额外的外部连接。
这样可以节省空间,并减少设备的成本。
此外,嵌入式系统大多数时候不需要高速处理器和大容量存储器,这也降低了成本。
3. 实时性要求很多嵌入式系统需要实时响应,以满足特定应用的需求。
例如,在工业自动化中,嵌入式系统需要及时地接收和处理传感器数据,从而控制设备的运行。
这种实时性要求使得嵌入式系统能够在高压力、高并发的环境下稳定运行。
嵌入式系统的例子嵌入式系统有非常多的应用场景,下面列举几个常见的例子:1. 智能手机智能手机是目前最常见的嵌入式系统之一。
它们集成了处理器、操作系统、存储器、传感器和通信模块等组件,可以实现通话、上网、拍照和娱乐等功能。
智能手机的嵌入式系统需要满足性能稳定、省电和安全性等要求。
2. 家电现代家电产品如电视、空调、冰箱等,都配备了嵌入式系统。
这些嵌入式系统可以通过用户界面和传感器来实现智能控制和自动化。
例如,智能冰箱中的嵌入式系统可以监测食物的存储情况并提醒用户补货。
3. 无人机无人机也是一种广泛应用嵌入式系统的设备。
嵌入式面试必背知识点总结1. 嵌入式系统概述嵌入式系统是一种特殊的计算机系统,它被设计用于执行特定的任务。
与通用计算机系统不同,嵌入式系统通常具有较小的体积、低功耗、高可靠性和实时性要求。
常见的嵌入式系统包括智能手机、智能家居设备、汽车电子系统等。
2. 嵌入式系统设计流程嵌入式系统设计一般包括需求分析、软硬件设计、开发、测试和维护等阶段。
具体流程如下:需求分析阶段在这个阶段,需要明确系统的功能需求、性能要求、接口要求等,以及针对特定应用场景的特殊需求。
软硬件设计阶段在软硬件设计阶段,需要根据需求分析的结果,进行软件和硬件的设计。
软件设计包括算法设计、程序编写等;硬件设计包括电路设计、PCB设计等。
开发阶段在开发阶段,需要进行软硬件的实际开发工作。
软件开发包括编码、调试、测试等;硬件开发包括电路制板、焊接、测试等。
测试阶段在测试阶段,需要对开发完成的系统进行测试,包括功能测试、性能测试、可靠性测试等。
维护阶段在维护阶段,需要对已部署的嵌入式系统进行维护和升级,以确保其长期稳定运行。
3. 嵌入式系统常用的开发平台和工具开发平台常用的嵌入式系统开发平台包括:•Arduino:一种开源的物联网平台,适用于初学者。
•Raspberry Pi:一种基于Linux操作系统的嵌入式计算机平台,适用于中级开发者。
•ARM Cortex-M系列:一种常用的微控制器架构,适用于专业开发者。
开发工具常用的嵌入式系统开发工具包括:•Keil MDK:一种常用的嵌入式开发工具,支持ARM Cortex-M系列。
•IAR Embedded Workbench:一种流行的嵌入式开发工具,支持多种嵌入式平台。
•Eclipse:一种开源的集成开发环境,可用于嵌入式系统开发。
4. 嵌入式系统常用的编程语言C语言C语言是嵌入式系统开发中最常用的编程语言之一。
其优点包括高效性、可移植性和丰富的库支持。
嵌入式系统开发者通常使用C语言编写系统的底层驱动和控制程序。
嵌入式工程师技能要求一、电路基础对于嵌入式工程师来说,掌握电路基础知识是必备的技能。
这包括对模拟电路和数字电路的理解,以及对常用电子元件和集成电路的工作原理和使用方法的了解。
此外,还需要具备基本的电路设计、分析和调试能力。
二、嵌入式系统开发嵌入式工程师需要掌握一种或多种嵌入式系统的开发流程、开发工具以及常用的嵌入式操作系统。
同时,也需要理解嵌入式系统的主要构成部分,包括处理器、存储器、I/O设备等,以及它们之间的相互关系和作用。
三、微控制器编程微控制器是嵌入式系统中的核心部件,因此,嵌入式工程师需要掌握微控制器的编程技术。
这包括对汇编语言和C/C++语言等编程语言的熟练掌握,以及对于微控制器内部资源(如定时器、中断、串口等)的编程应用。
四、硬件接口开发嵌入式工程师需要了解并能够开发各种硬件接口,包括I/O接口、串行接口(如RS232、RS485)、并行接口、USB接口、网络接口等。
此外,还需要了解如何驱动这些接口,以及如何实现硬件的底层通信。
五、实时操作系统实时操作系统(RTOS)是嵌入式系统中的重要组成部分,因此,嵌入式工程师需要掌握常见的实时操作系统的原理和使用方法。
这包括对任务调度、内存管理、中断处理等方面的理解,以及在实际项目中应用RTOS的能力。
六、通信协议实现在嵌入式系统中,通信是非常重要的功能,因此,嵌入式工程师需要掌握常见的通信协议(如UART、SPI、I2C、CAN等)的实现和应用。
同时,也需要了解互联网通信协议(如TCP/IP)的基础知识和实现方法。
七、传感器技术应用传感器是嵌入式系统获取外部信息的主要手段,因此,嵌入式工程师需要了解并能够应用各种类型的传感器。
这包括对传感器的选型、接口设计和数据采集等方面的能力,以及根据具体需求对传感器进行优化和调整的能力。
八、嵌入式系统调试在嵌入式系统的开发过程中,调试是非常关键的一环。
嵌入式工程师需要掌握各种调试技术和工具(如JTAG、仿真器等),能够进行硬件和软件的调试,以及实时的系统监控和问题定位。
嵌入式系统三个基本要素-嵌入式系统应用实例嵌入式系统三个基本要素嵌入式系统的三个基本要素是嵌入性、专用性与计算机系统。
(1)嵌入性是把软件嵌入到Flash存储器中,(2)专用性是指针对某个具体应用领域和场合,量体裁衣式的定制适用该场合的专用系统,(3)计算机系统是指必须具有计算机系统的组成,核心是计算机系统。
三个要素决定了嵌入式系统是嵌入到对象体系中的一种专用的计算机系统。
嵌入式系统应用实例嵌入式系统现在发展的很迅速,从不知名到现在已经广泛进入我们的生活中,他的应用前景是非常广泛的,人们将会无时无处不接触到嵌入式产品,从家里的洗衣机、电冰箱,到作为交通工具的自行车、小汽车,到办公室里的远程会议系统等等。
在家中、办公室、公共场所,人们可能会使用数十片甚至更多这样的嵌入式无线电芯片,将一些电子信息设备甚至电气设备构成无线网络;在车上、旅途中,人们利用这样的嵌入式无线电芯片可以实现远程办公、远程遥控,真正实现把网络随身携带。
在这里我就举几个生活实例,让你来更加了解一下嵌入式系统。
在举例之前,我们先再来了解一下嵌入式系统到底是什么呢?在一般的解释中都是这样的:以应用为中心、以计算机技术为基础、软硬件可裁剪,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
其实简单的了解就是这几个点:软硬件,可裁剪,专用,对各种功能有要求的一个计算机系统。
现在我们来一个一个了解一下:嵌入式智能家居系统智能家居让用户采用更方便的手段来管理家庭设备,比如,通过无线遥控器、电话、互联网或者语音识别控制家用设备,根据场景设定设备动作,使多个设备形成联动。
智能家居内的各种设备相互间可以通讯,不需要用户指挥也能根据不同的状态互动运行,从而在最大程度上给用户提供高效、便利、舒适与安全的居住环境和工作环境。
智能家居是信息时代的产物,以计算机和网络技术为核心,渗透并应用到建筑行业,它的发展趋向于将建筑艺术与信息技术完美地结合,形成既有安全、舒适和高效等特性,又能将科学技术与文化艺术相互融合的综合体。
嵌入式系统开发必备知识学习嵌入式需要的条件:编程能力(C语言)内核框架的知识字符设备input子系统总线设备驱动模型platformI2C网卡驱动的框架framebuffer硬件的知识设备和CPU的连接方式1)GPIO2) 地址总线数据总线3)协议类总线中断号硬件的芯片手册CPU手册1 嵌入式系统:1)uCos-II–uC/OS-II是一种基于优先级的可抢先的硬实时内核。
应用广泛,专门为嵌入式设备设计,支持多种CPU,可运行在8位到64位的各种系统上。
–.51版本之后,就通过了美国FAA认证,可以运行在诸如航天器等对安全要求极为苛刻的系统之上(可用在生命攸关项目中)。
–商用要支付版权费,可以得到源代码。
2)Vxworks–vxworks 是这几种实时系统中性能最好的一个也是比较贵的,主要用于商业领域和科研领域。
飞到火星去的探测器上安装的就是这个系统。
实时性好。
3)Nuclues–实时性比较好。
对文件系统,网络协议栈的支持也比较不错,带的图形显示。
nuclues 内核很小。
4)Threadx–ThreadX是优秀的硬实时操作系统,具有规模小、实时性强、可靠性高、易于使用等特点。
–并且支持大量的处理器和SoC,包括ARM、PowerPC、SH 4、MIPS、ADI DSP、TI DPS、Nios II等,广泛应用于消费电子、汽车电子、工业自动化、网络解决方案、军事与航空航天等领域中–2005年7月4日,美国宇航局成功实施“深度撞击”号宇宙飞船对坦普尔1号彗星的准确撞击,此事件成为全球关注的焦点。
其中,“深度撞击”号宇宙飞船中关键的任务由著名的hreadX实时操作系统完成。
–2005年8月12日,美国宇航局发射的火星探测器MRO, 其关键任务仍由ThreadX实时操作系统担当。
5)freertos–FreeRTOS免费的开源实时操作系统,短小精悍。
6)eCos–ECOS由RedHat推出的小型实时系统(Real Time Operating System),最低编译核心可小至10K的级别,采用C++编写。
《嵌入式系统设计》课程标准1.课程说明《嵌入式系统设计》课程标准课程编码〔37604〕承担单位〔计算机信息学院〕制定〔〕制定日期〔2022.11.16〕审核〔专业指导委员会〕审核日期〔2022年11月20日〕批准〔二级学院(部)院长〕批准日期〔2022年11月28日〕(1)课程性质:本门课程是物联网应用技术专业的必修课(填写是基础课还是核心课,是必修课还是选修课等)课程。
(2)课程任务:主要针对软件和信息技术服务业的嵌入式系统设计工程技术人员、软件和信息技术服务人员等岗位开设,主要任务是培养学生在嵌入式系统设计岗位的底层应用程序开发能力,要求学生掌握嵌入式系统编程方面的基本技能。
(3)课程衔接:在课程设置上,前导课程有《物联网开源硬件基础》,后续课程有《无线传感器网络技术应用》。
2.学习目标(一)素质目标:(1)坚定拥护中国共产党领导和我国社会主义制度,在习近平新时代中国特色社会主义思想指引下,践行社会主义核心价值观,有深厚的爱国情感和中华民族自豪感;(2)崇尚宪法、遵法守纪、崇德向善、诚实守信、尊重生命、热爱劳动,履行道德准则和行为规范,具有社会责任感和社会参与意识;(3)具有质量意识、环保意识、安全意识、信息素养、工匠精神、创新思维;具有良好的通信工程施工安全与自我保护意识;(4)勇于奋斗、乐观向上,具有自我管理能力、职业生涯规划的意识,有较强的集体意识和团队合作精神;(5)具有健康的体魄、心理和健全的人格,掌握基本运动知识和一两项运动技能,养成良好的健身与卫生习惯,良好的行为习惯;(6)具有一定的审美和人文素养,能够形成一两项艺术特长或爱好。
(7)能够初步理解企业战略和适应企业文化,遵守通信纪律、严守通信秘密。
(二)知识目标:(1)掌握必备的思想政治理论、科学文化基础知识和中华优秀传统文化知识;(2)熟悉计算机程序设计基础;(3)掌握基于8051单片机架构的CC2530嵌入式系统的基础知识;(4)掌握CC2530嵌入式系统开发及应用知识;(5)掌握IAR嵌入式开发环境的应用。
嵌入式开发需要什么技术所以嵌入式的开发大致需要这么从下到上4类工程师:嵌入式硬件开发、嵌入式驱动开发、嵌入式系统开发、嵌入式软件开发。
他们应该会哪些技能呢?1,嵌入式硬件开发:这是硬件工程师来做,一般出身为自动化,电子,通信等专业,他们要求熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力,熟悉硬件开发模式和设计模式,熟悉各种芯片及外围设备,熟悉8位16位32位处理器嵌入式硬件平台开发。
有的要求有FPGA的开发经验,精通常用的硬件设计工具:Protel/PADS(PowerPCB)/Cadence/OrCad。
一般要有4~8层高速PCB设计经验。
由于本人不是做硬件的,对这一块的不熟悉,所以不敢妄言。
2,嵌入式驱动开发:这个可以硬件工程师来做,也可以软件工程师来做,主要还是取决于设备。
目前驱动开发,除非是简单的设备驱动,实际上很多时候都是移植,所以更多的是需要掌握目标平台的硬件和系统特性。
所以至少得掌握一些操作系统、系统结构、计算机组成原理、数据结构相关知识。
熟悉嵌入式ARM/MIPS/PowerPC架构。
具有单片机、某种或多种32位嵌入式处理器的移植开发能力,熟悉bootloader过程,具有扎实的硬件知识,理解硬件原理图,能独立完成相关硬件驱动调试,能够根据芯片手册编写软件驱动程序。
如果涉及到网络设备,或许还要掌握很多高层的网络协议的原理。
个人感觉这一块虽然大部分不是很难,但却是极为重要的。
当然如果要在这一层次提供对上层的多线程支持,某些驱动也是很难写的。
3,嵌入式系统开发:这个没听说硬件工程师来做的。
做这块,熟悉操作系统的原理是必不可少的,比如内存管理,比如线程调度,比如文件系统等等;还要精通处理器体系结构、指令集、寻址方式、调试、汇编和混合编程等方面的内容;熟悉操作系统启动流程。
对于linux,要熟悉Linux配置文件的修改,掌握内核裁减、内核移植、交叉编译、内核调试、启动程序Bootloader编写、根文件系统制作和集成部署Linux系统等整个流程。
第1章 嵌入式系统概述 1、什么是嵌入式系统?嵌入式系统指的是以应用为中心和以计算机技术为基础的,并且软硬件是可裁剪的,能满足应用系统对功能、可靠性、成本、体积、功耗等指标严格要求的专用计算机系统。
2、与通用计算机相比,嵌入式系统有哪些特点?1:嵌入式系统通常是面向特定应用的;2:嵌入式系统功耗低、体积小、集成度高、成本低;3:嵌入式系统具有较长的生命周期;4:嵌入式系统具有固化的代码;5:嵌入式系统开发需要专用开发工具和环境;6:嵌入式系统软件需要RTOS 开发平台;7:嵌入式系统开发人员以应用专家为主;8:嵌入式系统是知识集成系统。
3、根据嵌入式系统的复杂程度,嵌入式系统可分为哪4类?1:单个微处理器;2:嵌入式处理器可扩展的系统;3:复杂的嵌入式系统;4:在制造或过程控制中使用的计算机系统。
4、嵌入式微处理器有哪几类?试举例说明。
嵌入式微处理器,例如:Am186/88、386EX 、SC-400.;嵌入式微控制器,例如:8051、P51XA 、MCS-251;嵌入式DSP 处理器,例如:TMS320系列、DSP56000系列; 嵌入式片上系统,例如:TriCore 、M-Core 、Smarrt-XA 。
5、从硬件系统来看,嵌入式系统由哪几部份组成?画出简图。
6、嵌入式微处理器和嵌入式微控制器分别由哪些部件组成?两者有何区别? (1)组成:嵌入式微处理器:包括指令执行部件与总线接口部件。
嵌入式微控制器(单片机):将整个系统集成到一个芯片上。
(2)两者区别:嵌入式微处理器: 如果要构成一个系统,完成特定功能必须扩展Rom 、RAM 、总线接口等器件.并且将系统集成在一块板上。
嵌入式微控制器:一个芯片就是一个系统,芯片包括Rom 、RAM 、I/O 接口、通用接口(比如UART )特殊接口(比如网络接口、Can 接口). 不用外扩接口电路,即可完成一定功能。
第2章 ARM 微处理器硬件结构 2.1哈佛体系结构和冯·诺依曼体系结构有何不同? 冯·诺依曼结构:处理器使用一组总线(数据总线、地址总线、控制总线)连接程序存储器、数据存储器、接口器件。
所有器件共享一个地址空间。
并且程序存储单元与数据存储单元存储位数一致。
冯·诺依曼结构由于总线瓶颈,不适合流水线作业。
哈佛体系结构:有两组总线。
一组总线用于访问程序存储器;一组总线用于访问数据存储器。
程序与数据各自有自己独立的存储空间。
程序存储单元与数据存储单元存储位数可以不一致。
哈佛体系结构非常适合流水线作业。
2.2 回答下列关于ARM 编程模式的问题(1)在该模式下有多少通用寄存器(2)CPSR 的作用是什么(3)Z 位的作用是什么(4)程序计数器保存在何处(1)31个通用寄存器(2)为状态寄存器,保存当前的状态,可以在任何模式下访问(3)Z=1 运算结果为0,Z=0 运算结果不为0(4)R15(PC )2.4 arm 处理器有几种工作模式?各种工作模式有什么特点?有七种工作模式,①用户模式(usr )正常的程序执行状态②快速中断模式(fiq )用于高速数据处理或通道处理③外部中断模式(irq )用于通用的中断处理④管理模式(svc )操作系统的保护模式⑤中止模式(abt )用于虚拟存储及存储保护 ⑥未定义模式(und )用于支持硬件协处理器的软件仿真⑦系统模式(sys )运行特权级的操作系统任务 2.5 arm 处理器共有多少个寄存器?这些寄存器按其在用户编程中的功能如何进行划分?这些寄存器在使用中有什么特殊之处?(1)37个寄存器,其中有31个通用寄存器,其中包括程序计数器pc ,6个状态寄存器;寄存器均为32位(2)在七种模式中 R0~R7不分组,R8~R14按模式分组,R15为程序计数器,CPSR 为状态寄存器,SPSR 为保存程序状态寄存器。
R13为堆栈指针寄存器,R14为链接寄存器。
CPSR 在各种模式下多可以访问,而在用户模式及系统模式下SPSR 不可以被访问。
2.7 ARM 存储器的存储周期有几种类型?对应于Cache 访问和存储器访问是何存储周期?ARM 存储器有4种存储周期:空闲周期,非顺序周期,顺序周期,协处理器寄存器传送周期。
一般地,对应于Cache 访问的存储周期是:非顺序周期。
对应于存储器访问的存储周期是:顺序周期和非顺序周期。
2.8何谓Cache ?简述Cache 的工作原理。
高速缓存器:弥补主存速度,在CPU 与主存之间设置的高速,小容量存储器,构成Cache-主存存储层次,速度是Cache 的,容量是主存的。
工作原理:当CPU 要访问Cache 时,CPU 送来主存地址,放到主存地址寄存器中。
然后通过地址变换部件把主存地址中的块号M 变成Cache 的块号m ,并放到Cache 地址寄存器中;同时将主存地址中的块内地址N 直接作为Cache 的块内地址n 装入到Cache 地址寄存器中。
如果地址变换成功,就用得到的Cache 地址去访问Cache ,从Cache 中取出数据送到CPU 中。
如果地址变换不成功,则产生Cache 失效信息,接着使用主存地址直接去访问主存储器,从主存储器中读出一个字送到CPU ,同时将从主存储器中读出来的数据装入到Cache 中去。
此时如果Cache 已经满了,则需要采用某种Cache 替换策略把不常用的块先调出到主存储器中相应的块中,以便腾出空间来存放新调入的块。
2.9何谓写通Cache 和写回Ca che ?两者有何区别?写通法: write-throught ,指CPU 在执行写操作时,必须把数据同时写入Cache 和主存。
写回法: write-back ,指CPU 在执行写操作时,被写的数据只写入Cache ,不写入主存。
仅当需要替换时,才把已经修改的Cache 块写回到主存中。
区别在于写通法在Cache 中的内容发生改变时,相应的存储器中的内容会立即被修改,而写回法则是等到替换时才会使存储器中的内容发生改变。
2.10 ARM 的MMU 主要实现什么功能? (1)虚拟存储空间到物理存储空间的映射(2)存储器访问权限的控制(3)设置虚拟存储空间的缓冲特性。
2.11简述MMU 使能时存储访问过程。
当ARM 处理器请求存储访问时,对于允许缓存的存储访问,如果Cache 命中,直接操作数据即可。
对于允许缓存且Cache 不命中或不允许缓存的存储访问,首先在TLB 中查找虚拟地址。
如果该虚拟地址对应的地址变换条目不在TLB 中,CPU 将从位于内存中的页表中查询对应于该虚拟地址的地址变换条目,并把相应的结果添加到TLB 中。
如果TLB 已经满了,则需要根据一定的替换算法进行替换。
当得到了需要的地址变换条目后,将进行以下操作。
(1)得到该虚拟地址对应的物理地址。
(2)根据条目中C控制位和B 控制位决定是否缓存该内存访问的结果。
(3)根据存储权限控制位和域访问控制位确定该内存访问是否被允许。
如果该内存访问不被允许,CP15将向ARM 处理器报告存储访问中止。
(4)对于不允许缓存的存储访问,使用步骤(1)中得到的物理地址访问内存。
对于允许缓存的存储访问,如果Cache 命中,则忽略物理地址;如果Cache 没有命中,则使用步骤(1)中得到的物理地址访问内存,并将该块数据读取到Cache中。
2.12 ARM 支持的物理页有几种类型?其容量为何值?ARM 支持的物理页通常有4种类型,其容量值如下:段:大小为1MB 的存储块。
大页:大小为64KB 的存储块。
小页:大小为4KB 的存储块。
极小页:大小为1KB 的存储块。
第3章 ARM 寻址方式与指令系统 1.试述ARM 处理器对异常中断的响应过程。
异常处理过程:当异常发生时, (1)将返回地址存入对应异常模式下寄存器R14。
(2)当前寄存器CPSR 存入对应异常模式下的SPSR.(3)自动修改CPSR[4:0],进入相应的异常模式(4)如果异常模式为复位或快速中断(FIQ),则设置CPSR F=1 禁止所有FIQ 中断;设置 CPSR I=1禁止所有IRQ 中断(5)转到中断服务程序去执行2.如何从异常中断处理程序中返回?需要注意哪些问题?(1) 中断处理完成后返回指令:LDMFD SP!,{<other_registers>,RPC} (2)注意的问题①进入中断时,如果屏蔽了所有FIQ 或IRQ 中断,中断返回前要开放所有FIQ 或IRQ 中断②进入异常时,如果断点保护的是PC →LR,依据3流水线技术,恢复时LR-#4=〉PC ③状态保持寄存器SPSR →CPSR3.ARM 指令的寻址方式有几种?试分别叙述其各自的特点并举例说明。
(1)立即数寻址:操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也称为立即数。
ADD R0,R1,#5;R0=R1+5 (2)寄存器寻址:寄存器的值即为操作数ADD R0,R1,R ;R0=R1+R2(3)寄存器移位寻址:移位寻址的操作数由寄存器的数值做相应移位而得到,移位的方式在指令中以助记符的形式给出,而移位的位数可用立即数或寄存器寻址方式表示。
MOV R0,R1,LSL R3 R0=R1逻辑左移R3位以及其他寻址方式。
7.写出执行以下计算的指令序列,其中X,Y,Z,R,W 均为32位无符号数,两数乘积不超过32位数范围。
(1)Z ←W-(X+6)-(R+9) (2)Z ←(W*X)/16 LDR R4,=XLDR R2,[R4]; R2←X ADD R2,R2,#6 LDR R5,=RLDR R3,[R5]; R3←R ADD R3,R3,#9 LDR R6,=WLDR R1,[R6]; R1←W SUB R1,R1,R2 SUB R1,R1,R3 LDR R0,=ZSTR R1,[R0]; 存Z LDR R4,=XLDR R2,[R4]; R2←X LDR R6,=WLDR R1,[R6]; R1←W MUL R1,R1,R2 MOV R1,R1,LSR #4 LDR R0,=ZSTR R1,[R0]; 存Z8.假定R0,R1中的内容为带符号数,R2,R3中的内容为无符号数,写出指令实现以下判断。
(1)若R3的内容超过R2的内容,则转去执行EXCEED(2)若R1的内容超过R0的内容,则转去执行EXCEED (3)若R2的内容等于0,则转去执行ZERO (4)若R0的内容和R1的内容相等,则转去执行EQU 解:(1)CMP R3,R2 BHI EXCEED (2)CMP R1,R0 BGT EXCEED (3)CMP R2,#0 BEQ ZERO (4)CMP R0,R1 BEQ EQU9.已知数据段中的整数数组x 和y ,试将x 中的数按从大至小的顺序排序,并存入y 数组。