《嵌入式系统设计地最后知识点总结材料》由会员分享,可在线阅读,更多相关《嵌入式系统设计地最后知识点总结材料(20页珍藏版)》请在金锄头文库上搜索。
1、系统概念1、嵌入式系统的定义?以应用为 中心、以计算机技术为 基础、软硬件 可裁剪 、适应应用系统对功能、 可靠性、成本、 体积、功耗严格要求的 专用计算机系统 。“嵌入”、“专用”、“计算机”2、嵌入式系统的软、硬件组成?以及主要特点?软件:从底层到上层: bootloader 等系统初始化引导程序、设备驱动层(包括驱动程序、板 级支持包 BSP 等)、操作系统、用户应用程序。 (底层为上层提供服务) 开发软件 :即集成开发环境( asemmbler&compiler&linker&debugger&loader ) 硬件 组成:核心板 +外围板 +外设 (核心板:微控制器( CPU 和外设
2、接口、外设控制器) 、电 源、时钟、复位、SDRAM、flash。外围板面向外围设备,一般是引脚的集合、电平转换电 路。外围设备。 ) ,当然也可以将核心板和外围板放在一起。硬件特点 :通常由嵌入式处理器和嵌入式外围设备组成,高度集成,常采用 SOC 设计方法, 对功耗、体积等有严格要求,定制性决定了它的可裁剪性,没有像计算机领域的垄断,解决方案不唯一。软件特点 :采用交叉开发方式,系统软件层次分明,操作系统为用户程序提供标准API ,提供图形接口和文件系统。用户调用系统服务,系统调用设备驱动从而操纵硬件。3、嵌入式系统产品设计的基本流程?需求分析功能性需系统的基本功能,如输入输出信号、操作方
3、式等; 非功能性需求包括系统性能、成本、功耗、体积、重量等因素。规格说明精确地反映客户的需求并且作为设计时必须明确遵循的要求。体系结构设计 描述系统如何实现所述的功能和非功能需求, 包括对硬件、 软件和执行装置的功能划分以及 系统的软件、硬件选型等。软硬件设计基于体系结构,对系统的软件、硬件进行详细设计。系统集成把系统的软件、 硬件和执行装置集成在一起, 进行调试, 发现并改进单元设计过程中的错误。 系统测试对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。4、处理器及操作系统的选型主要考虑哪些方面? 操作系统本身所提供的 开发工具 。 操作系统向硬件接口 移植难度 。 操作系统
4、的 存要求 。 开发人员 是否熟悉 此操作系统及其提供的系统 API。 操作系统 是否提供硬件的驱动程序 ,如网卡驱动程序等。 操作系统的 是否具有可剪裁性 。 操作系统 是否具有实时性能 。5、交叉开发、交叉开发环境?为何需要交叉开发环境?在一台通用计算机(宿主机)上进行软件的编辑编译,然后下载到嵌入式设备(目标机)中 运行调试的开发方式交叉开发环境一般由运行于宿主机上的交叉开发软件(assembler&compiler&linker&debugger&loader)、宿主机到目标机的调试通道组成需要交叉开发环境是因为目标机一般对体积、功耗等有严格限制,资源也面向应用,较为紧,要求仅仅能流畅
5、运行代码即可,而将用户开发软件(包括各种库、工具)放置在主机上,而 且现在的集成开发环境提供了各种修改好的功能库,用起来也方便。6嵌入式集成开发环境的主要功能?这是由其组成决定的。Assembler将.c源代码汇编,compiler形成目标文件,linker根据描述文件将各个目标代码定位生成可执行代码。Debugger有些交叉开发工具提供了仿真调试通道。Loader可以将目标文件烧录进设备中(有时需要部引导代码的配合)7、嵌入式Linux开发主要流程?搭建开发环境-烧写bootloader-烧写核-烧写根文件系统-烧写应用程序。开发环境:REDHAT LINUX、下载相应的GCC交叉编译器进行
6、安装、配置开发主机(配置MINICOM 和配置网络,MINICOM 软件的作用是作为调试嵌入式开发板信息输出的监 视器和键盘输入的工具,配置网络主要是配置IP地址、NFS网络文件系统,需要关闭防火墙)烧写 bootloader下载一些公开源代码的BOOTLOADER根据自己具体芯片进行移植修改。下载时,有些芯片没有置引导装载程序,比如三星的ARM7、ARM9系列芯片,这样就需要编写烧写开发板上flash的烧写程序。或者网络上有免费下载的WINDOWS下通过JTAG并口简易仿真器烧写 ARM外围flash芯片的程序。也有 LINUX下公开源代码的J-FLASH程序。下载核如果有专门针对你所使用的
7、CPU移植好的LINUX操作系统那是再好不过,下载后再添加自己的特定硬件的驱动程序,进行调试修改。下载根文件系统从下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系 统。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs、genromfs等工具产生烧写映象文件。(文件系统就是把你硬盘上数据按照一定格式组织成一棵树。数据块对应名称。删了它就相当于把硬盘格式化了。根文件系统就是出了核以外,所有的系统文件存储的地方。之所以成为根,是因为有根才能成生长成树,是其它文件的最终挂载点。我们要明白根文件系统和核是完全独立的两个部分,它是核启动时所 mount的第一个文件系统,里面有
8、核启动所必须的数据,不然就退出启动文件系统这种机制有利于用户和操作系统的交互。数据块对应名称。尽管核是Linux的核心,但文件却是用户与操作系统交互所采用的主要工具,尤其是LINUX。而是直接将应用程序和核设计) 下载用户程序 可以下载到根文件系统中,有的应用程序不使用根文件系统,在一起,这有点类似于 UCOS-II的方式。8、嵌入式Linux开发环境中配置NFS服务的目的?可以使不同机器、不同操作系统之间通过网络共享文件,像访问本地文件一样访问远端系统上的文件,在开发阶段,主机制作基于 NFS的文件系统,制定开放目录,开放对象的IP围, 将目录挂载到嵌入式设备后,嵌入式设备可以方便地访问、修
9、改主机主机文件。9、硬件重定向?上课的时候老师举得 printf()是个很好的例子,重定向程序是面向编译环境中的连接器的, 是用户自己定义的 C库函数,有了它,在程序连接时连接器会连接用户自己编写的C库中的功能函数而不是标准 C库。相当于将标准C库进行了一次移植。从主机环境到实际运行 环境的移植。比如:本来库函数fputc()是把字符输出到调试器控制窗口中去的,但用户把输出设备改成了UART端口,这样一来,所有基于fputc()函数的printf()系列函数输出都被重定向到UART端口上去了。相当于实现类似的功能,但是底层的驱动变了。10、你认为一名好的嵌入式系统设计专业学生,应具备哪些能力?
10、如何培养和提高这些能 力?专业技能:微机原理的知识,即知道微处理器的工作过程、工作原理,对51单片机、X86T体系、ARM体系的架构有一定的认识、。电路知识,虽然在系统 设计中,硬件只占30%的工作量,而且随着系统复杂度的提高,对硬件的关心越 来越少,但是对电路的了解程度会限制你代码的优化,是有寄存器编程不了解底层电路根本编不出程序来,而且在硬件出现问题的时候,要有能力准确判断。操 作系统,随着ARM在嵌入式系统中占据主导地位,单片机已经退出复杂应用, 操作系统引入了嵌入式系统设计中, 在操作系统提供的平台上做开发,对操作系 统功能、使用、层次组成的理解的重要性不言而喻。算法与数学,这关系着软
11、件代码的优化实现,在高层次的编程中,算法结构和数学知识将发挥很大的作用。控制理论,因为嵌入式系统实现的最主要的功能就是智能控制,对控制思想、控 制算法、控制理论的理解有一定的重要性。专业思维:对嵌入式软硬件层次相当了解;对开发环境及其原理开发流程有一定的认识;计算思维:将计算思想、能力贯穿于“需选改用学”,解决计算问题,一切归于 二进制。职业病思维:用嵌入式系统的思维去分析生活中遇到的设备, 如果能分析明白或 者做出推测,将是一件很开心的事情。“编码”思想:其实整个计算机世界,都体现着一种“编码”思想,人如何与机 器交互、器件之间如何交互、通信双方如何定义通信协议,这都体现着编码的思 想。管理
12、的思维:因为在复杂的计算机系统也是人设计得, 各模块的工作协调无处不 散发着管理的思想,把系统调用抽象为人事安排,将变得很有爱。要相信你要你想到的解决问题的方法(算法),肯定能编出来。要相信 ,真理肯定是存在的, 你还没有到遇到未解之谜的程度, 即只要是问题就 能解决,遇到需要反复测试的时候, 不能气馁, 也许只是哪个知识点理解的有偏 颇,离真理只有一步之遥。从历史看起、 从总体看起 :用历史的眼光和谦虚但不自卑的态度看待复杂的系统 和知识,这样一切就都简单又好理解。认识指导实践,实践反作用认识。管理的思想。个人品质 :不悲不喜 :在嵌入式开发过程中, 会有一个又一个问题出现, 不要因为一个问
13、题 的解决和搁置而悲喜,更大的喜剧在前方,也许更大的悲剧也在酝酿。勇于钻研 :对解决问题有强烈的向往, 有征服的渴望。 所以一些很恬淡的人往往 不会成为 IT 行业的精英。并从中找到成就感、存在感乐在其中 :俗话说兴趣是最好的老师, 拿欣赏的眼光看待核的管理思想、 看待精 妙的算法、看待精密的电路设计,你会发现一切都美好起来。有强大的学习能力,要会查资料、会聊天、会推测。 用“学道”的思维去学习一切知识,抓住本质,老子说, 为学日益,为道日损, 损之又损,以至于无为,无为而无不为。 ,最复杂的科学,也能用最朴素的话解 释。用历史的眼光、用总体的眼光去学习。 耐得住寂寞还得有兴趣爱好 。有时会比
14、较枯燥和辛苦,除了对专业的兴趣之外, 最好能有些调节生活的兴趣爱好,比如唱歌、画画、旅行、摄影、健身等等。 如何提高 ?因为嵌入式系统设计所涉及的知识面相当广, 微机原理知识、 电路知识、 接口知 识、操作系统、甚至是控制理论、数学计算等等,所以单单学习知识点的话,会 很枯燥而且提高很慢,一切以应用为中心, 在做项目中成长 ,加深理解,边学变 做,把解决问题当做学习的目标。 找若干良师益友 ,他们能带给你好的影响,包 括做项目和做人, 在与他们的交流共事中你可以迅速提高。 大量的阅读, 开阔眼 界,了解当前行业的发展状况, 大量阅览 一些典型系统的设计, 所谓书到用时方 很少是很有道理的。学一
15、些跟专业 相关的知识 ,如数据库、设计等,不但能在设 计系统时打开思维,还可以给 IT 男换个口味,冶一下情操。ARM 体系结构11、ARM 硬件电路最小系统组成? 微控制器(例如 2410,CPU+ 外设接口 /外设控制器) 电源、时钟、复位、存储器( SDRAM/FLASH (NOR8 位、 NAND8 16 32 位)FLASH :存放操作系统、用户程序等需要掉电后保存的数据SDRAM :系统运行的主要区域,系统及用户数据及堆栈,都在这个区域。 有时启动模式选择 有时需要 JTAG :对芯片所有部件进行访问,通过该接口对系统调试、编程12、ARM 处理器的主要工作模式?ARM 的 7 种处理器模式 (不同的模式下有自己的行为准则)USR;正常程序执行模式FIQ ;支持高速数据传送和通道处理 IRQ ;用于通用中断的处理。管理(SVC);操作系统保护模式 中止未定义 系统除了 USR之外,其它6种又称为特权模式。6中种除了系统模式又称为异常模式(即处理异常时的工作模式)。在软件控制下可以改变模式(即改变CPSR相应),外部中断或异常处理也引起模式变化,用户模式下不能改变模式。13、核心寄存器的作用: