当前位置:文档之家› 嵌入式系统设计的最后知识点总结

嵌入式系统设计的最后知识点总结

嵌入式系统设计的最后知识点总结
嵌入式系统设计的最后知识点总结

系统概念

1、嵌入式系统的定义?

以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。“嵌入”、“专用”、“计算机”

2、嵌入式系统的软、硬件组成?以及主要特点?

软件:从底层到上层:bootloader等系统初始化引导程序、设备驱动层(包括驱动程序、板级支持包BSP等)、操作系统、用户应用程序。(底层为上层提供服务)

开发软件:即集成开发环境(asemmbler&&compiler&&linker&&debugger&&loader)

硬件组成:核心板+外围板+外设(核心板:微控制器(CPU和外设接口、外设控制器)、电源、时钟、复位、SDRAM、flash。外围板面向外围设备,一般是引脚的集合、电平转换电路。外围设备。),当然也可以将核心板和外围板放在一起。

硬件特点:通常由嵌入式处理器和嵌入式外围设备组成,高度集成,常采用SOC设计方法,对功耗、体积等有严格要求,定制性决定了它的可裁剪性,没有像计算机领域的垄断,解决方案不唯一。

软件特点:采用交叉开发方式,系统软件层次分明,操作系统为用户程序提供标准API,提供图形接口和文件系统。用户调用系统服务,系统调用设备驱动从而操纵硬件。

3、嵌入式系统产品设计的基本流程?

需求分析

功能性需求是系统的基本功能,如输入输出信号、操作方式等;

非功能性需求包括系统性能、成本、功耗、体积、重量等因素。

规格说明

精确地反映客户的需求并且作为设计时必须明确遵循的要求。

体系结构设计

描述系统如何实现所述的功能和非功能需求,包括对硬件、软件和执行装置的功能划分以及系统的软件、硬件选型等。

软硬件设计

基于体系结构,对系统的软件、硬件进行详细设计。

系统集成

把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。系统测试

对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。

4、处理器及操作系统的选型主要考虑哪些方面?

①操作系统本身所提供的开发工具。

②操作系统向硬件接口移植难度。

③操作系统的内存要求。

④开发人员是否熟悉此操作系统及其提供的系统API。

⑤操作系统是否提供硬件的驱动程序,如网卡驱动程序等。

⑥操作系统的是否具有可剪裁性。

⑦操作系统是否具有实时性能。

5、交叉开发、交叉开发环境?为何需要交叉开发环境?

在一台通用计算机(宿主机)上进行软件的编辑编译,然后下载到嵌入式设备(目标机)中运行调试的开发方式

交叉开发环境一般由运行于宿主机上的交叉开发软件(assembler&&compiler&&linker&&debugger&&loader)、宿主机到目标机的调试通道组成

需要交叉开发环境是因为目标机一般对体积、功耗等有严格限制,资源也面向应用,较为紧张,要求仅仅能流畅运行代码即可,而将用户开发软件(包括各种库、工具)放置在主机上,而且现在的集成开发环境提供了各种修改好的功能库,用起来也方便。

6、嵌入式集成开发环境的主要功能?

这是由其组成决定的。Assembler将.c源代码汇编,compiler形成目标文件,linker根据链接描述文件将各个目标代码链接定位生成可执行代码。Debugger有些交叉开发工具提供了仿真调试通道。Loader可以将目标文件烧录进设备中(有时需要内部引导代码的配合)

7、嵌入式Linux 开发主要流程?

搭建开发环境--烧写bootloader--烧写内核--烧写根文件系统--烧写应用程序。

开发环境:REDHA T-LINUX、下载相应的GCC 交叉编译器进行安装、配置开发主机(配置MINICOM和配置网络,MINICOM 软件的作用是作为调试嵌入式开发板信息输出的监视器和键盘输入的工具,配置网络主要是配置IP地址、NFS 网络文件系统,需要关闭防火墙)

烧写bootloader

下载一些公开源代码的BOOTLOADER根据自己具体芯片进行移植修改。

下载时,

有些芯片没有内置引导装载程序,比如三星的ARM7、ARM9 系列芯片,这样就需要编写烧写开发板上flash 的烧写程序。

或者网络上有免费下载的WINDOWS 下通过JTAG 并口简易仿真器烧写ARM 外围flash 芯片的程序。也有LINUX 下公开源代码的J-FLASH 程序。

下载内核

如果有专门针对你所使用的CPU 移植好的LINUX 操作系统那是再好不过,下载后再添加自己的特定硬件的驱动程序,进行调试修改。

下载根文件系统

从https://www.doczj.com/doc/274887137.html, 下载使用BUSYBOX 软件进行功能裁减,产生一个最基本的根文件系统。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs 、genromfs 等工具产生烧写映象文件。

文件系统就是把你硬盘上数据按照一定格式组织成一棵树。数据块对应名称。删了它就相当于把硬盘格式化了。

根文件系统就是出了内核以外,所有的系统文件存储的地方。之所以成为根,是因为有根才能成生长成树,是其它文件的最终挂载点。

我们要明白根文件系统和内核是完全独立的两个部分,它是内核启动时所mount的第一个文件系统,里面有内核启动所必须的数据,不然就退出启动

文件系统这种机制有利于用户和操作系统的交互。数据块对应名称。尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具,尤其是LINUX。

下载用户程序

可以下载到根文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序和内核设

计在一起,这有点类似于UCOS-II的方式。

8、嵌入式Linux 开发环境中配置NFS服务的目的?

可以使不同机器、不同操作系统之间通过网络共享文件,像访问本地文件一样访问远端系统上的文件,在开发阶段,主机制作基于NFS的文件系统,制定开放目录,开放对象的IP范围,将目录挂载到嵌入式设备后,嵌入式设备可以方便地访问、修改主机主机文件。

9、硬件重定向?

上课的时候老师举得printf()是个很好的例子,重定向程序是面向编译环境中的连接器的,是用户自己定义的C库函数,有了它,在程序连接时连接器会连接用户自己编写的C库中的功能函数而不是标准C库。相当于将标准C库进行了一次移植。从主机环境到实际运行环境的移植。

比如:本来库函数fputc()是把字符输出到调试器控制窗口中去的,但用户把输出设备改成了UART端口,这样一来,所有基于fputc()函数的printf()系列函数输出都被重定向到UART端口上去了。相当于实现类似的功能,但是底层的驱动变了。

10、你认为一名好的嵌入式系统设计专业学生,应具备哪些能力?如何培养和提高这些能力?

专业技能:微机原理的知识,即知道微处理器的工作过程、工作原理,对51

单片机、X86T体系、ARM体系的架构有一定的认识、。电路知识,虽然在系统设计中,硬件只占30%的工作量,而且随着系统复杂度的提高,对硬件的关心越来越少,但是对电路的了解程度会限制你代码的优化,是有寄存器编程不了解底层电路根本编不出程序来,而且在硬件出现问题的时候,要有能力准确判断。操作系统,随着ARM在嵌入式系统中占据主导地位,单片机已经退出复杂应用,操作系统引入了嵌入式系统设计中,在操作系统提供的平台上做开发,对操作系统功能、使用、层次组成的理解的重要性不言而喻。算法与数学,这关系着软件代码的优化实现,在高层次的编程中,算法结构和数学知识将发挥很大的作用。控制理论,因为嵌入式系统实现的最主要的功能就是智能控制,对控制思想、控制算法、控制理论的理解有一定的重要性。

专业思维:

对嵌入式软硬件层次相当了解;

对开发环境及其原理开发流程有一定的认识;

计算思维:将计算思想、能力贯穿于“需选改用学”,解决计算问题,一切归于二进制。

职业病思维:用嵌入式系统的思维去分析生活中遇到的设备,如果能分析明白或者做出推测,将是一件很开心的事情。

“编码”思想:其实整个计算机世界,都体现着一种“编码”思想,人如何与机器交互、器件之间如何交互、通信双方如何定义通信协议,这都体现着编码的思想。

管理的思维:因为在复杂的计算机系统也是人设计得,各模块的工作协调无处不散发着管理的思想,把系统调用抽象为人事安排,将变得很有爱。

要相信你要你想到的解决问题的方法(算法),肯定能编出来。

要相信,真理肯定是存在的,你还没有到遇到未解之谜的程度,即只要是问题就能解决,遇到需要反复测试的时候,不能气馁,也许只是哪个知识点理解的有偏颇,离真理只有一步之遥。

从历史看起、从总体看起:用历史的眼光和谦虚但不自卑的态度看待复杂的系统和知识,这样一切就都简单又好理解。

认识指导实践,实践反作用认识。管理的思想。

个人品质:

不悲不喜:在嵌入式开发过程中,会有一个又一个问题出现,不要因为一个问题的解决和搁置而悲喜,更大的喜剧在前方,也许更大的悲剧也在酝酿。

勇于钻研:对解决问题有强烈的向往,有征服的渴望。所以一些很恬淡的人往往不会成为IT行业的精英。并从中找到成就感、存在感

乐在其中:俗话说兴趣是最好的老师,拿欣赏的眼光看待内核的管理思想、看待精妙的算法、看待精密的电路设计,你会发现一切都美好起来。

要会学习:

有强大的学习能力,要会查资料、会聊天、会推测。

用“学道”的思维去学习一切知识,抓住本质,老子说,‘为学日益,为道日损,损之又损,以至于无为,无为而无不为。’,最复杂的科学,也能用最朴素的话解释。

用历史的眼光、用总体的眼光去学习。

耐得住寂寞还得有兴趣爱好。有时会比较枯燥和辛苦,除了对专业的兴趣之外,最好能有些调节生活的兴趣爱好,比如唱歌、画画、旅行、摄影、健身等等。

如何提高?

因为嵌入式系统设计所涉及的知识面相当广,微机原理知识、电路知识、接口知识、操作系统、甚至是控制理论、数学计算等等,所以单单学习知识点的话,会很枯燥而且提高很慢,一切以应用为中心,在做项目中成长,加深理解,边学变做,把解决问题当做学习的目标。找若干良师益友,他们能带给你好的影响,包括做项目和做人,在与他们的交流共事中你可以迅速提高。大量的阅读,开阔眼界,了解当前行业的发展状况,大量阅览一些典型系统的设计,所谓书到用时方很少是很有道理的。学一些跟专业相关的知识,如数据库、网站设计等,不但能在设计系统时打开思维,还可以给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、核心寄存器的作用:

R13通常用作堆栈指针,称为SP,被初始化为多个模式下的堆栈。R14用作子程序连接寄存器LR,中断异常或执行BL时得到PC即R15的备份。

Cpsr程序状态寄存器,32位只用12位,所有模式下均可见。

Spsr保存程序状态寄存器,即发生异常时对CPSR进行保存,保存当前状态。5个异常模式下均有各自的SPSR。

14、ARM处理器的启动过程?

首先,看一下,ARM启动时的硬件机制,上电产生复位异常,CPU强制PC为0x00000000,执行复位异常处理函数,接下来就相当于执行了STRARTUP.S的功能。是给用户程序执行给以合适的工作环境,设置中断向量表、堆栈、时钟、完成内存拷贝等,相当于STARTUP.S 或者bootloader的前端代码,是开机执行的程序。.拿2410的启动代码举例,它启动CPU的过程是:

1、在起始地址分配中断向量表即中断处理函数(CPU要求的),以为向量空间只有4字节,所以一般只是一个跳转指令,去别处执行。在跳到复位异常之后,关闭中断,关闭看门狗。//

2、之后初始化存储器系统

3、初始多个模式下的堆栈(模式切换时,硬件给SP置位)

//4、初始化有特殊要求的外围设备,如LED灯、看门狗

5、初始化用户的执行环境(在FLASH中运行太慢了,把代码整体搬迁到RAM中)

//6、切换处理器的工作模式

7、调用主程序

15、

当正常的程序执行流程发生暂时的停止时,称之为异常

对异常的处理有优先级,处理异常需要跳转至异常模式。并根据异常向量跳转至响应的子程序(执行之前必须保存现场),即异常出现后强制跳转至固定的存储器地址执行。异常是比中断更大的概念。ARM有7种异常。包括

复位管理模式0x00000000

软中断SWI 管理模式0x00000008

IRQ IRQ模式0x00000018

FIQ FIQ模式0x0000001c

还包括预取中止、数据中止、未定义。

(异常出现时,异常模式分组的R14和SPSR用于保存下一条程序地址和CPSR。异常返回时,SPSR->CPSR,R14->PC)

在启动代码中首先就是设置所谓的异常向量表,也就是在指定的位置放置异常处理程序(一般是跳转指令)。异常发生时,CPU会根据规定强制置PC,恰好去执行我们设置好的跳转指令,接着执行服务程序。

异常处理流程:(硬件机制,只做这些,跟代码无关。)

1、根据异常类型,强制设置CPSR的运行模式位

2、在切换到的异常模式下,在当前的链接寄存器LR (r14)中保存上个模式的PC 值-4,以便程序在处理异常返回时能从正确的位置重新开始执行

3、将上一个模式的CPSR复制到当前异常模式的SPSR中

(注意1与2、3的矛盾,不能独立执行,但是是硬件实现的,无关代码)

4、强制PC。然后就到了执行代码的时候从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。

异常返回流程:(有指令)

1、将LR寄存器中的值减去相应的偏移量(对于IRQ/FIQ是4)送到PC中

2.、将SPSR复制回CPSR

(注意1与2的矛盾,不能独立执行,用一条带∧的指令执行,怎么着都是一条)

3、清除禁止中断标志,如果它被设置成使能

4、所有修改过的用户寄存器必须从处理程序的保护堆栈中恢复(即出栈)。

对中断嵌套的处理:

注意:

1、保存在LR中的PC值,和该值返回时的处理过程。

当IRQ异常中断产生时,程序计数器pc的值已经更新,它指向当前指令后面第3条指令(对于ARM指令,它指向当前指令地址加12字节的位置;当IRQ异常中断产生时,处理器将值(pc-4)保存到IRQ异常模式下的寄存器lr_irq中,它指向当前指令之后的第2条指令,因此返回操作可以通过下面指令实现:subs pc, lr, #4

有两种返回机制:

1、当返回地址保存在当前异常模式的r14时使用其中一种机制

2、当返回地址保存在堆栈时使用另一种机制(进中断的时候保存的)。

1、SUBS PC,R14_fiq ,#4 (不同模式有不同的指令,返回PC的同时返回CPSR,一条指令实现)

2、

SUB LR,LR,#4

STMFD R13!,{R0,R4-R12,LR}

;将寄存器列表中的寄存器R0,R4到R12,LR存入堆栈。

LDMFD R13!,{R0,R4-R12,PC} ∧

;将堆栈内容恢复到寄存器R0,R4到R12,PC,同时SPSR复制到CPSR {∧}为可选后缀,当指令为LDM且寄存器列表中包含R15,选用该后缀时表示:除了正常的数据传送之外,还将SPSR复制到CPSR,一条指令实现。

代码指令分析:

AREA Init,CODE,READONL Y;代码段Init、只读

……

CODE32 ;32位ARM指令集

LDR R0,=NEXT+1 ;给R0赋地址值

BX R0 ;程序跳,并将处理器切换到Thumb工作状态

……

CODE16 ;16位thumb指令集

NEXT LDR R3,=0x3FF 给R3赋值

……

END

16、高级语言和汇编语言函数间的相互调用(应该会考):

汇编调用C:

IMPORT Main ;通知编译器该标号为一个外部标号

AREA Init,CODE,READONLY ;定义一个代码段

ENTRY ;定义程序的入口点

LDR R0,=0x3FF0000;初始化系统配置寄存器

LDR R1,=0xE7FFFF80

STR R1,[R0]

LDR SP,=0x3FE1000 ;初始化用户堆栈

BL Main ;跳转到Main()函数处的C/C++代码执行

END ;标识汇编程序的结束

以上的程序段完成一些简单的初始化,然后跳转到Main()函数所标识的

C/C ++代码处执行主要的任务,此处的Main仅为一个标号,也可使用其他名称。

17、程序代码段的组成分析、例如:

标注下面程序各条语句中的含义

AREA Init , CODE , READONLY ;已定义代码段

ENTRY;程序入口

LDR R0, =0x3ff5000;R0赋寄存器地址值

LDR R1, 0x0f;要给寄存器赋的值

STR R1,[R0];赋值

LDR R0, =0x3ff5008

LDR R1, 0x01

STR R1,[R0];给另一个寄存器赋值的过程

BL PROC;跳转至标号为PROC的程序出执行

:

:

:

:

PROC

:

:

MOV PC, LR //将LR保存的程序指针返回,即跳到BL下一句接着执行

:

:

END

2410设计

18、阐述CPU、外设、外设控制器、时序、寄存器的相互关系?

CPU与外设控制器构成微处理器,微处理器在核心板(最小系统)上发挥作用,将引脚集合成外设接口加上电平转换等就是外围板,外设通过外围板连接至外设控制器。CPU通过寄存器编程控制外设控制器产生时序控制外设。若是没有外设控制器,则需要CPU自己产生时序来与外设交互,这种时序相当于一种约定好的意思表示,相当于“语言”或者“通信协议”,

例如若是2410与一个带有IIC接口的器件通信,只需要连接起来,对IIC进行寄存器编程,控制它们之间的工作模式,可能收发数据就变成了在中断中读写寄存器操作,屏蔽了IIC规

定的通信细节。若是51单片机要与IIC通信的话,就复杂多了,首先要仔细阅读IIC的协议,不容丝毫差错,然后用IO口模拟时序,CPU的工作量很大。

19、寄存器编程的本质?如何获取寄存器的配置?

寄存器编程的本质是CPU控制外设寄存器工作模式的方法。可以想象寄存器的每一位肯定是外设控制器功能模块中的一个个“开关”,给某一位赋值0或者1,就相当于使能或关闭某一个功能。

20、2410最小电路设计?(晶振选择、启动选择、数据宽度)

与一般的ARM系统相同,都需要微处理器、电源、晶振、复位、存储器(flash、SDRAM)、JTAG接口等,具体情况如下:(需要对OM0和OM1配置电平以决定启动方式,对OM2和OM3配置电平以决定时钟源。)

电源设计:处理器用1.8V,RTC给时钟模块供电1.8V,存储器和普通IO用3.3V,ADC模块用3.3V,可见最小系统最少要用3.3和1.8两种直流稳压。课程实验中电源电压5V,分别用LM1085稳压3.3V,用AS1117稳压1.8V。

晶振设计

2410的时钟控制逻辑可以产生系统所需要的时钟,包括CPU的FCLK,和AHB 总线的HCLK,APB的PCLK。内部有两个锁相环PLL,MPLL提供前三个,UPLL给USB提供48MHZ的时钟。

主时钟源(UPLL和MPLL的时钟源)可以选择是来自外部时钟还是外部晶振,这是由OM2和OM3的管脚确定的,可以OM2和OM3同时接低电平,选择外部晶振,12M晶振加上15pF起振电容(经过锁相环倍频可以达到203M)。

复位电路设计

可以在nRESET端设计像51单片机那样的阻容复位电路,但为了稳定,可以使用复位芯片如MAX811或IMP811。

JTAG接口设计

有20针和14针两种JTAG接口。

存储器设计

2410有自己的存储器控制器,并且规定了哪些bank空间是RAM哪些是FLASH,存储器芯片严格按照DA TASHEET上的要求和标明的引脚连接方式与存储器控制器的存储器接口相连就可以,控制器会根据地址产生读写存储器芯片的时序,完成存取数据的操作。

21、2410nor和nand启动过程分析?

NOR flash:读取速度高、而擦写速度低,容量小,价格高,地址线和数据线分开,采用SRAM接口。

NAND flash :读速度不如NORflash 但是擦写速度高,容量大,价格低,有取代硬盘的趋势,但是地址线和数据复用,需要程序配合才能读写数据。

可以通过跳线设置时从NAND FLASH启动还是从NOR FLASH启动。

NAND启动的优势:便宜、容量大。但是读写逻辑不能用硬件产生,也就是没办法接到BANK空间里,必须有程序配合才能读写(有专门的控制器接口,肯定要寄存器编程加上程序配合才能读写,没有PC的根正苗红),所以理论上它是不可以用来启动系统的,因为那之前什么程序都没有,要想读写它必须是系统装载完了而且有程序了。但是三星采用了SRAM映射解决了这个问题,下面就是这个过程:

电路中使OM1和OM0都接低电平,从NAND FLASH中启动。(2410有NAND FLASH控制器,连接NAND Flash芯片,产生读写时序)

在该模式下,2410的前4KB地址空间对应一个名字叫做“起步石”的SRAM,系统启动时,自动将NAND FLASH的前4KB数据加载到起步石中,然后系统自动执行这些启动引导代码,CPU从内部RAM的0x00000000位置开始启动。这个过程不需要程序干涉。也就是类似于STARTUP.S的功能,初始化异常向量表、堆栈、将NAND FLASH中的代码(有代码支持喽)拷贝到SDRAM中运行。NOR FLASH 采用的的是SRAM接口,可以直接到存储器控制器上,ARM内核产生的时序能对其读写。将bank0上接上NORflash芯片。上电产生复位异常后会自动从NOR flash中启动。

22、S3C2410的中断处理流程?

首先应该明确2410与ARM内核的异常处理系统的角色,根据之前的ARM异常处理流程,我们清楚明了了哪些是CPU的硬件机制。2410通过中断控制器允许以优先级的方式将几十个中断源共同用一个IRQ。一个中断申请提出后,IRQ异常发生,切换模式、保存CPSR、保存PC,然后跳转到handleIRQ函数,然后跳转到ISRIRQ(这只是一个大概流程,也许会定义更多的跳转)根据中断源向量表的首地址和偏移量寄存器找出到底是哪个中断发生了。然后跳转到相应的中断处理函数,比如跳到串口中断,还可以根据挂起位(即中断标志位)再次判断到底是接收中断还是发送完成中断。也就是说2410处理流程除了ARM对异常的响应是硬件机制外,其余的都是代码实现的。我们在编程的时候没有写的话,那也是编译器加进去的。

2410对嵌套的处理

比起2410的处理流程不同的是,因为有了中断控制器,这就是实现高优先级嵌套的硬件基础,因为每一次进入异常模式用户都会保存环境,这就是中断嵌套的软件基础。CPU的异常处理机制总是那些,很明确的。我正在执行一个中断服务程序,然后再次发生异常,保存,跳转(CPU)、再次判断是哪个中断,进去之后压栈,运行另一个中断的服务程序,运行完返回,这是就是返回到上一个中断了。上一个中断运行完,一返回就是返回发生异常前的状态。

23、S3C2410的串口、端口、外部中断、AD等及寄存器的编程能力(会读datasheet、会编程、作业、实验的相关代码)

ARM的汇编语言程序.PPT

仔细阅读DA TASHEET,记住寄存器的赋值指令。

LDR R0,=GPHCON

LDR R1,=0X2AFAAA

STR R1,[R0]

24、时钟、看门狗的相关概念

时钟为整个系统提供同步脉冲,像人的脉搏一样。

看门狗:其实是一个计数器,当它计数溢出的时候,会使系统复位,所以它的作用是防止系统死机。打开看门狗之后,当代码跑飞或者陷入死循环之后,就不能喂狗,也就是不能清除计数值,那么它就会使系统重启。

VIVI

25、什么是bootloader

Bootloader,为引导加载程序,是嵌入式系统加电后运行的第一段代码,相当于PC机的BIOS。Bootloader在系统中的位置

通常固化在硬件上的某个固态存储设备上,加电后自启动。

Bootloader功能

初始化,给CPU合适的工作环境(相当于STARTUP.S),以便为最终调用操作系统内核或用户应用程序境。

加载内核

下载内核或者根文件系统。

Bootloader操作模式

有启动加载和下载两种模式。

启动加载模式是Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。即初始化CPU的工作环境之后,将内核如RAM执行。

下载模式:

目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。

主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被Bootloader写到目标机上的FLASH 类固态存储设备中。Bootloader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用到这种工作模式。

Bootloader启动过程

上电之后,先启动CPU即执行startup.s类似功能代码(配置中断、初始化堆栈、拷贝代码等),

然后进行加载内核的准备

1、至少初始化一个串口,以便向终端用户反馈数据。

2、检测系统内存映射,哪些是可用的RAM?

在这一步之后,将检测外部按键,有按键按下将进入下载模式,没有按键的话将执行下面的步骤,加载内核:

3、将kenel和根文件系统从flash调入RAM

4、为内核启动设置参数

5、调用内核。

UCOS_II

26、概念分析

可重入函数

可以被一个以上的任务调用,而不必担心数据的破坏。

可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数或者只使用局部变量,(关中断、只用局部变量、用互斥型信号量可以使函数变成可重入的)

互斥

任务在处理共享数据时的排它性,以避免竞争和数据的破坏。也就是任务在某一个时间段独占共享资源,在释放之前别的任务没有该资源的运行权。

满足互斥条件的方法:

1、关中断:最简便快捷的办法,即处理共享资源属于临界区代码。

2、使用测试并置位指令

3、禁止做任务切换

4、利用信号量,其中2和4的道理是相似的,标志位。

死锁

死锁也称作抱死,指两个任务无限期地互相等待对方控制着的资源,不然都不会执行。两个任务都是“你不给我,我就不给你”的心态。最简单的防止发生死锁的方法是让每个任务都:先得到全部需要的资源再做下一步的工作。一般内核会允许在申请信号量时定义申请超时。剥夺型与不可剥夺型内核

即占先式还是非占先式。

不可剥夺:合作型内核,即除非自己主动放弃CPU的运行权,不然没办法被切换。不知道什么时候最高优先级的任务才能拿到CPU的控制权,完全取决于应用程序什么时候释放CPU。(顾名思义:每个任务不会被其它任务剥夺去,除非中断的到来,即便如此,当中断结束后,还是会回到原来被中断的程序,而不会切换到具有高优先级的任务中去。)

可剥夺:最高优先级的任务一旦就绪,总能得到CPU的控制权。可以被挂起,可以再中断退出时失去对CPU的运行权。

使用占先式内核时,应用程序不应直接使用不可重入型函数

非占先式内核的一个特点是几乎不需要使用信号量保护共享数据。运行着的任务占有CPU,而不必担心被别的任务抢占,什么时候释放,自己说了算。

可剥夺型的内核是实时系统所必须的。即实时不在于立即,而在于可预测性,高优先级得到CPU的时刻是可以预测的。

进程上下文是进程运行寄存器环境的总和:对arm而言,RO-R12,LR,PC,CPSR,SPSR。STMFD sp!, {pc} ; save pc

STMFD sp!, {lr} ; save lr

STMFD sp!, {r0-r12} ; save registers and ret address

MRS r4, CPSR

STMFD sp!, {r4} ; save current PSR

MRS r4, SPSR

STMFD sp!, {r4} ; save SPSR

27、实时系统本质是:可预测性

28、内核的相关知识

初始化:OSINT();系统初始化,创建系统任务、创建链表,等待将TCB赋值后放进去。

启动:OSStart(); 就是将就绪的状态的任务中找到优先级最高的出栈运行,调用OSStartHighRdy()。

(在启动之前要调用OS_Taskcreat()规定一创建就进入就绪态(初始化就绪态表)它一定是对TCB赋值(调用TCBinit)放到链表里,从空闲链表头取一个链表,放在使用链表里。) 任务组成:

任务由三个部分构成

1、任务控制块TCB,保存着任务的所有属性,可以说内核对任务的管理就是对TCB的管理。它包含了一个任务的前一个任务、后一个任务、指向任务代码的指针、指向任务堆栈的指针、任务优先级、任务状态、延时值等等。对任务的控制都是通过访问任务控制块来实现

的。

2、任务栈保存任务的工作环境。

3、任务代码。

状态:

任务(无限循环代码)的五个状态:

休眠态:没有加入运行队列。

挂起态(waiting,等待,最复杂,有很多种情况),在等待满足运行条件,如一个信号量、或者延时结束等。

就绪态(ready):具备运行的一切条件,等待切换,只是有更高级的任务占据着CPU。

运行态:正在占用CPU的运行权

被中断态。

五种状态间的转换在课件中的图里说的比较清楚。

注意:一个任务在运行态时被挂起时清除就绪态,变成挂起态。而被占先时则虽然不运行但保持就绪态。

任务的调度(占先式,就绪表)

UCOS的就绪表实现:

就绪表的实现依靠两个变量一张表实现:OS_Rdy_Tbl[7](8个8位数)和OS_Rdy_Grp。OSMapTbl相当于掩码表。

由优先级找到对应位:64个优先级最高6位。高三位右移三位,确定GRP,即在第几行,低三位,找到行中的某位。如优先级12,001100,则第1行,第4个单元(从0开始计数,这个转换由OSMAPTbl掩码表完成),实现的代码如下:

OSRdyGrp |=OSMapTbl[prio>>3]; (行标)

OSRdyTbl[prio>>3] |=OSMapTbl[prio & 0x07];(由低三位找到行,由高三位找到列)

有对应位找到优先级:另一种巧妙的查表算法。

任务的切换:就是有更高优先级的任务处于就绪态,需要让其得到CPU的运行权,我们所要做的就是保存当前任务的上下文(进行压栈操作),保存当前的TCB,根据优先级找到要运行任务的TCB地址,切换当前堆栈,将堆栈中保存的内容弹出,并运行。

优先级管理:共有64任务,每个任务都有一个优先级,0--63,数字越大,优先级越低。

中断退出(sourcecode)

29、相关任务管理、时间管理内核代码分析

30、移植代码分析:

任务调度函数

void OS_Sched (void) /*os_core.c中*/

{

INT8U y;

OS_ENTER_CRITICAL(); 临界区代码,关中断

if ((OSLockNesting =0)&&(OSIntNesting= 0)) {没有任务切换上锁,且是任务级切换y = OSUnMapTbl[OSRdyGrp];获得最高优先级的高三位

OSPrioHighRdy = (INT8U)((y << 3) + OSUnMapTbl[OSRdyTbl[y]])

找到就绪态的最高优先级任务if (OSPrioHighRdy != OSPrioCur) { 若当前不是最高优先级,准备切换。

OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];

根据优先级找到相应TCB地址

OSCtxSwCtr++;

OS_TASK_SW(); 调用任务切换函数}

}

OS_EXIT_CRITICAL(); 关中断。

}

全局变量OSIntNesting判断是否还有中断

全局变量OSLockNesting判断是否给调度器上锁

任务级切换函数示意性代码(错了)

#define OS_TASK_SW() OSCtxSw()

V oid OSCtxSw(void)

{

将R1,R2,R3及R4推入当前堆栈;

OSTCBCur OSTCBStkPtr = SP; 保存堆栈指针

OSTCBCur = OSTCBHighRdy;

SP= OSTCBHighRdy ->OSTCBSTKPtr;

将R4,R3,R2及R1从新堆栈中弹出;

执行中断返回指令;

}

任务级切换函数汇编代码

void OS_TASK_SW(void) /任务:保存当前任务上下文,装入新任务上下文/ ;

; Perform a context switch.

;

; On entry, OSTCBCur and OSPrioCur hold the current TCB and priority

; and OSTCBHighRdy and OSPrioHighRdy contain the same for the task

; to be switched to.

OS_TASK_SW

STMFD sp!, {pc} ; save pc,保存当前的任务环境。压栈上下文

STMFD sp!, {lr} ; save lr

STMFD sp!, {r0-r12} ; save registers and ret address

MRS r4, CPSR

STMFD sp!, {r4} ; save current PSR

MRS r4, SPSR

STMFD sp!, {r4} ; save SPSR

改变当前任务的优先级值

LDR r4, addr_OSPrioCur

LDR r5, addr_OSPrioHighRdy

LDRB r6, [r5] ;优先级仅为一个字节

STRB r6, [r4]

; Get current task TCB address;找到当前TCB,并将SP指针保存进去。

LDR r4, addr_OSTCBCur

LDR r5, [r4]

STR sp, [r5] ; store sp in preempted tasks's TCB

; Get highest priority task TCB address

LDR r6, addr_OSTCBHighRdy注意这是在传送变量地址,该地址内存储的是所要的地址

LDR r6, [r6]

LDR sp, [r6] ; get new task's stack pointer

; 改变当前运行的TCB地址,即OSTCBCur = OSTCBHighRdy

STR r6, [r4] ; set new current task TCB address

; restore task's mode regsiters//将当前任务的上下文出栈,注意这是压栈和出栈的顺序。

LDMFD sp!, {r4}

MSR SPSR, r4

LDMFD sp!, {r4}

MSR CPSR, r4

; return in new task context

LDMFD sp!, {r0-r12, lr, pc}

中断服务子程序示意代码(注意中断栈和任务栈)

保存全部CPU寄存器;//即将被打断的进程上下文保存在中断堆栈。

调用OSIntEnter()或OSIntNesting直接加1;//中断层次标示。

if(OSIntNesting==1){

OSTCBCur->OSTCBStkPtr=SP;

}

清中断源;

重新开中断;

执行用户代码做中断服务;

调用OSIntExit();

恢复所有CPU寄存器;

执行中断返回指令;

中断退出函数汇编代码

void OSIntExit (void)

{

OS_ENTER_CRITICAL();

if (OSIntNesting > 0) { /* Prevent OSIntNesting from wrapping */

OSIntNesting--; //只在没有嵌套的情况下,进行任务切换。

}

if ((OSIntNesting == 0) && (OSLockNesting == 0)) { /* Reschedule only if all ISRs complete ... */

OSIntExitY= OSUnMapTbl[OSRdyGrp]; /* ... and not locked. */

OSPrioHighRdy = (INT8U)((OSIntExitY<< 3) + OSUnMapTbl[OSRdyTbl[OSIntExitY]]);

if (OSPrioHighRdy != OSPrioCur) { /* No Ctx Sw if current task is highest rdy */

OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];

//找就绪态的最高优先级,并找到相应TCB。

OSCtxIntCtr++; /* Keep track of the number of context switches */

OSIntCtxSw(); //调用中断级的任务调度函数/* Perform interrupt level context switch */

}

}

OS_EXIT_CRITICAL();

}

中断级任务切换函数

执行出栈指令之后还用中断返回指令?没有包含关系?模式(代码分析)?

OSIntCtxSw

; post FIQ Context switcher. This is called from OSIntExit when a hooked ISR

; wants to return in the context of another task. We load the new tasks context

; (from OSPrioHighRdy) and do the return from interrupt.

;

; Get pointer to stack where ISR_FiqHandler saved interrupted context ; ISR entry only saves

找到异常模式堆栈,它只保存了.first seven regs and LR

#16?

add r7, sp, #16 ; save pointer to register file (point to r0)

LDR sp, =IRQStack ;FIQ_STACK ;test to del it意义?

; Change ARM CPU to SVC mode for stack operations.

将CPU切换至管理模式,以操作不同模式的堆栈。

; This gets the CPU off the interrupt stack and back to the

; interrupted task's stack, which is the one we want to alter.

;

mrs r1, SPSR ; get suspended PSR

orr r1, r1, #0xC0 ; disable IRQ, FIQ.

msr CPSR_cxsf, r1 ; switch mode (shold be SVC_MODE)

; PSR, SP, LR regs are now restored to the interrupted SVC_MODE.

; now set up the task's stack frame as OS_TASK_SW does...

将进入IRQ异常的时候保存的上下文,从IRQ栈中赋值到SVC栈中

ldr r0, [r7, #52] ; get IRQ's LR (tasks PC) from IRQ stack

sub r0, r0, #4 ; Actual PC address is (saved_LR - 4)

STMFD sp!, {r0} ; save task PC放入管理模式栈中

STMFD sp!, {lr} ; save LR

mov lr, r7 ; save FIQ stack ptr in LR (going to nuke r7) ldmfd lr!, {r0-r12} ; get saved registers from FIQ stack

STMFD sp!, {r0-r12} ; save registers on task stack

; save PSR and PSR for task on task's stack

MRS r4, CPSR

bic r4, r4, #0xC0 ; leave interrupt bits in enabled mode

STMFD sp!, {r4} ; save task's current PSR

MRS r4, SPSR

STMFD sp!, {r4} ; SPSR too

; OSPrioCur = OSPrioHighRdy // change the current process

LDR r4, addr_OSPrioCur

LDR r5, addr_OSPrioHighRdy

LDRB r6, [r5]

STRB r6, [r4]

; Get preempted tasks's TCB

LDR r4, addr_OSTCBCur

LDR r5, [r4]

STR sp, [r5] ; store sp in preempted tasks's TCB

; Get new task TCB address

LDR r6, addr_OSTCBHighRdy

LDR r6, [r6]

LDR sp, [r6] ; get new task's stack pointer

; OSTCBCur = OSTCBHighRdy

STR r6, [r4] ; set new current task TCB address

LDMFD sp!, {r4}

MSR SPSR, r4

LDMFD sp!, {r4}

BIC r4,r4,#0xC0 ; we must exit to new task with ints enabled

MSR CPSR, r4

LDMFD sp!, {r0-r12, lr, pc}

时钟节拍中断服务子程序

V oid OSTickISR(void)

{

保存处理器寄存器的值;

调用OSIntEnter(),或是将OSIntNesting加1

if(OSIntNesting==1){

OSTCBCur->OSTCBStkPtr=SP;

}

调用OSTimeTick(); 功能根据链表遍历每个TCB,将非零的延时值--,有减到零,若非suspend状态,则置就绪位。

清发出中断设备的中断;

重新允许中断(可选用)

调用OSIntExit();

恢复处理器寄存器的值;

执行中断返回指令;

}

中断节拍函数

void OSTimeTick (void)

{

OS_TCB *ptcb;

OSTimeTickHook(); /*OS_CFG中#define OS_CPU_HOOKS_EN 1*/

ptcb = OSTCBList; (2)

while (ptcb->OSTCBPrio != OS_IDLE_PRIO) { (3)

OS_ENTER_CRITICAL();

if (ptcb->OSTCBDly != 0) {

if (--ptcb->OSTCBDly == 0) {

if (!(ptcb->OSTCBStat & OS_STA T_SUSPEND)) { (4)/若是SUSPEND,则不能就绪,

OSRdyGrp |= ptcb->OSTCBBitY; (5) 否则就绪到

OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;

} else {

ptcb->OSTCBDly = 1;

}

}

}

ptcb = ptcb->OSTCBNext;

OS_EXIT_CRITICAL();

}

OS_ENTER_CRITICAL(); (6)

OSTime++; (7)累加从开机以来的时间,用的是一个无符号32位变量OS_EXIT_CRITICAL();

}

任务控制块初始化函数OS_TCBInit()

在创建任务时调用,它获得TCB控制块并对其进行初始化,并让对应任务就绪,完成任务创建的大部分任务。

Delay()和节拍中断的对应关系

Delay函数是自行挂起,等待延时时间到的函数,它的功能就设置TCB中的延时值,清除自己的就绪位。而在每个节拍中断处理函数中,会将延时值--。减到零时重新就绪。并在中断退出时进行任务切换,有可能再次得到CPU的运行权。

2020年高考语文必背知识点汇总(精选)

2020年高考语文必背知识点汇总(精选) 高考语文必背知识点:文学常识及名段名句 文学常识: ①朱自清(1898~1948),原名自华,字、,号秋实。祖籍浙江绍兴。朱自清是诗人、散文家、学者,又是民主战士、爱国知识分子。毛泽东称他“、”。 ②郁达夫(1896~1945),原名郁文,现代小说家、散文家,浙江富阳人。1922年与郭沫若、成仿吾等组织了“创造社”。1930年参加中国左翼作家联盟。主要作品有短篇小说《沉沦》《、》等,在不同程度上揭露了旧社会的罪恶,向封建道德大胆挑战,有一定的积极意义,但也有颓废色彩。散文以游记著称,情景交融,自成一家。 ③陆蠡(1908—1942)现代散文作家、翻译家。他以散文诗集《海星》步上文坛,崭露头角。后来又出版了散文集《竹刀》和《、》。太平洋战争爆发后,日军进驻上海租界,由于在沦陷后的上海坚守文化工作岗位,他于1942年4月13日被捕,刑审数月,惨遭杀害,时年34岁。 名段名句 (1)曲曲折折的荷塘上面,弥望的是田田的叶子。……遮住了,不能见一些颜色;而叶子却更见风致了。(学习作者运用的比喻、排比

和通感的修辞手法,并学习合理安排描写顺序。平时养成细心观察周围事物的习惯。) (2)秋天,无论是什么地方的秋天,总是好的;可是啊,北国的秋,却特别地来得清,来得静,来得悲凉。(学会使用“文眼”,总领全文。) (3)南国之秋,当然是也有它的特异的地方的,譬如廿四桥的明月,钱塘江的秋潮,普陀山的凉雾,荔枝湾的残荷等等,可是色彩不浓,回味不永。比起北国的秋来,正像是黄酒之与白干,稀饭之与馍馍,鲈鱼之与大蟹,黄犬之与骆驼。(学会使用对比的手法,突出要描写的事物。) (4)从槐树叶底,朝东细数着一丝一丝漏下来的日光,或在破壁腰中,静对着像喇叭似的牵牛花的蓝朵,自然而然地也能感觉到十分的秋意。说到了牵牛花,我以为以蓝色或白色者为佳,紫黑色次之,淡红者最下。最好,还要在牵牛花底,教长着几根疏疏落落的尖细且长的秋草,使作陪衬。(描写景物要细致,要有自己的主观感受。) 高考语文必背知识点:字词、成语 字词:沉闷、梦幻、嫦娥、诞生、落伍、翌年、酝酿、苛刻、横亘、辉煌、蓊蓊郁郁、弥望、袅娜、羞涩、渺茫

嵌入式系统开发课程-多路数据采集系统设计

嵌入式系统开发课程-多路数据采集系统设计 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

多路数据采集系统设计

1题目要求 所设计的数据采集系统,共有16路信号输入,每路信号都是0~10mV,每秒钟采集一遍,将其数据传给上位PC计算机,本采集地址为50H。要求多路模拟开关用4067,A/D转换用ADC0809,运算放大器用OP07,单片机用89C51,芯片用 MAX232。 设计其电路原理图,用C51语言编制工作程序。 2总体方案设计 根据题目要求,传感器首先采集16路信号,然后被多路模拟开关4067选通某一路信号,接着通过信号调理电路,由A/D转换器进行模/数转换后发送给单片机,之后通过MAX232由RS232串口进行通讯,最终将数据传递到上位PC计算机。因此,数据采集系统主要包括以下几个主要环节: 2.1信号选通环节 由于题目要求采集的信号路数达到了16路,每一路信号的流通路线均相同。如果为每路信号都设置相应的放大、A/D转换单元,成本将大幅度提升。因此可以接入一个多路模拟开关4076,轮流选通每一路信号,实现多路信号共用一个运算放大器和A/D转换单元,即降低了成本,又简化了电路。 4067为16路模拟开关,其内部包括一个16选1的译码器和被译码输出所控制的16个双向模拟开关。当禁止端INH置0时,在I/N0-I/N15中被选中的某个输入端与输出公共端X接通,外部地址输入端A、B、C、D决定了被选通端;当INH置1时,所有模拟开关均处于断路状态。 2.2信号调理电路 为了方便信号的进一步传输和处理,一般均要在传感器的输出端接入信号调理电路,对传感器输出的信号进行变换、隔离、放大、滤波等处理。此处的信号波动范围只有0~10mV,属于微弱信号,需要进行放大处理。按照题目要求,本文设计的系统选用运算放大器OP07。OP07是一种高精的度单片运算放大器,其输入失调电压和漂移值均很低,适合用作前级放大器。 2.3A/D转换器 由于单片机只能处理数字信号,所以需要接入A/D转换器将模拟信号转换成数字信号。本文采用题目提供的ADC0809,它可以和单片机直接通讯。ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。 此处采用中断的方式使数据在单片机与ADC0809之间进行交换,端口地址为 FF50H;P0口和WR信号共同生成单片机的启动转换信号;为了在启动转换的同时选通通道,将通道地址锁存信号ALE与START相连;把P0口和RD同时处在有效位的组

结构动力学心得汇总

结构动力学学习总结

通过对本课程的学习,感受颇深。我谈一下自己对这门课的理解: 一.结构动力学的基本概念和研究内容 随着经济的飞速发展,工程界对结构系统进行动力分析的要求日益提高。我国是个多地震的国家,保证多荷载作用下结构的安全、经济适用,是我们结构工程专业人员的基本任务。结构动力学研究结构系统在动力荷载作用下的位移和应力的分析原理和计算方法。它是振动力学的理论和方法在一些复杂工程问题中的综合应用和发展,是以改善结构系统在动力环境中的安全和可靠性为目的的。高老师讲课认真负责,结合实例,提高了教学效率,也便于我们学生寻找事物的内在联系。这门课的主要内容包括运动方程的建立、单自

由度体系、多自由度体系、无限自由度体系的动力学问题、随机振动、结构抗震计算及结构动力学的前沿研究课题。既有线性系统的计算,又有非线性系统的计算;既有确定性荷载作用下结构动力影响的计算,又有随机荷载作用下结构动力影响的随机振动问题;阻尼理论既有粘性阻尼计算,又有滞变阻尼、摩擦阻尼的计算,对结构工程最为突出的地震影响。 二.动力分析及荷载计算 1.动力计算的特点 动力荷载或动荷载是指荷载的大小、方向和作用位置随时间而变化的荷载。如果从荷载本身性质来看,绝大多数实际荷载都应属于动荷载。但是,如果荷载随时间变化得很慢,荷载对结构产生的影响与

静荷载相比相差甚微,这种荷载计算下的结构计算问题仍可以简化为静荷载作用下的结构计算问题。如果荷载不仅随时间变化,而且变化很快,荷载对结构产生的影响与静荷载相比相差较大,这种荷载作用下的结构计算问题就属于动力计算问题。 荷载变化的快与慢是相对与结构的固有周期而言的,确定一种随时间变化的荷载是否为动荷载,须将其本身的特征和结构的动力特性结合起来考虑才能决定。 在结构动力计算中,由于荷载时时间的函数,结构的影响也应是时间的函数。另外,结构中的内力不仅要平衡动力荷载,而且要平衡由于结构的变形加速度所引起的惯性力。结构的动力方程中除了动力荷载和弹簧力之外,还要引入因其质量产生的惯性力和耗散能量的阻尼力。而

嵌入式软件开发流程图

嵌入式软件开发流程 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。 图1.1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成本,但能大大提高产品的性能和可靠性。 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。

1.2 嵌入式软件开发概述 嵌入式软件开发总体流程为图4.15中“软件设计实现”部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单归纳。 嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS 的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境Tornado,WindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADS、IAR和RealView等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。图4.16是嵌入式开发的不同阶段的常用软件。 图1.2 嵌入式开发不同阶段的常用软件 嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。 1.交叉编译 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。

水环境化学氧还整理

? 4.5 天然水中的氧化还原平衡 氧化还原反应的化学计量关系 例:在测定某水样的CODCr时,50ml水样中加入25ml的重铬酸钾溶液和其他试剂,加热回留2h后,以硫酸亚铁铵溶液滴定,消耗19.06ml。以50ml蒸馏水为空白,经过同样的测定步骤,消耗滴定液20.70ml。已知硫酸亚铁铵的浓度经标定为0.311 mol/L ,求该水样的CODCr值。 氧化还原半反应 任一氧化还原反应都可以看成由两个半反应组成。氧化还原半反应都包含着同一元素不同氧化态的两种物质,其中氧化态高的称氧化型,氧化态低的称还原型。氧化型+ ne 还原型? ? 4.5.1 天然水中的氧化还原反应和平衡 ? ? 体系的氧化还原平衡有两方面的含义: 1)表示体系中电子给予体和受体间处于相对平衡状态,电子势位发生无限小变化时,随即发生可逆性的电子迁移;2)包含在系统中的所有氧化还原电对的电极电位都相等。 ? 4.5.2 水体氧化还原反应的类型 水体中的氧化还原反应分为化学氧化还原反应、光化学氧化还原反应和生物氧化还原反应。 ? 4.5.3 电子活度和氧化还原电位 (1 )氧化还原电位 半反应发生氧化反应或还原反应的倾向可以用氧化还原电位(电极电势)值反映。这个数值越大,表明该体系内氧化剂的强度愈大。故又称之为氧化电位或氧化势。 用一种元素的氧化型和还原型组成氧化还原电对,简称电对,如Zn2+/Zn。

标准电极电势(电极电位、氧化还原电位) 在标准状态下测定的电极电势称标准电极电势。以单位E0表示,单位为伏特(V )。 ? E0(H+/H2)= 0.0000V E0(Cu2+/Cu )= 0.337V E0(Pb2+/Pb )= -0.126V 标准条件下,一个体系的标准氧化还原电位的测定是设标准氢电极的电位为零。 在25℃、[H +]为1.0 mol/L (pH =0)、一个大气压的氢气压力下,硬性规定标准氢电 极的氧化还原电势为0,即E0=0.0000V 。 判断氧化剂,还原剂的强弱 标准电极电势数值越小,其还原型的还原性越强,氧化型的氧化性越弱,反之亦然。 强氧化剂 + 强还原剂 弱氧化剂+弱还原剂 Zn + Cu2+=Zn2++ Cu E0(Cu2+/Cu )= 0.337V E0(Zn2+/Zn )= -0.762V 若使原电池在恒温、恒压条件下放电,原电池所做最大有用功(电功)应等于化学反应中Gibbs 自由能变的降低,即 由电学原理,任意一个原电池所做的最大电功等于电极之间的电势差(即电动势ε )和通过的电量(Q )的乘积:电功(W) = 电量(Q) × 电势差(E) ε — 电动势(V ),F — 法拉第常数 96485(C·mol-1),表示每摩尔电子所带的电量 。n — 电池反应中转移的电子的物质的量 当半反应中还原型物种含量增加,则氧化还原电位减小,还原型的还原性增强。 当半反应中氧化型物种含量增加,则氧化还原电位增加,氧化型的氧化性增强 正确书写Nernst 方程式: ① 气体物质用分压(Pa)表示并除以 p (105 Pa),溶液中的物质用浓度(mol L -1)表示并除c°(1mol L- 1)。 ② 纯固体或纯液体物质不写入。 ③电极反应中电对以外物质也应写 入,但溶剂(如H2O )不写入。 Z n n -0.76280.00000.3370.5350.7701.0851.3583 Fe 22H 22Ni -0.232Cu I - Fe 2+Br --氧化型还原型+n e - /V 氧化型的氧化性增强 还原型的还原性增强 2

嵌入式系统设计课程设计

电气与电子信息工程学院 嵌入式系统设计课程设计 设计题目:基于AT89S52单片机的游戏机嵌入式系统设计与制作专业班级:电子信息工程2008级(2)班 学号:200840210212 姓名:童俊 指导教师:邓彬伟李玉平 设计时间:2011/11/14~2011/12/2 设计地点:K2自动化综合实验室

嵌入式系统设计课程设计成绩评定表 姓名童俊学号200840210212 专业班级电子信息工程2008级(2)班 课程设计题目:基于AT89S52单片机的游戏机嵌入式系统设计与制作 课程设计答辩或质疑记录: 1、什么叫嵌入式系统? 答:以应用为中心,以计算机技术为基础,软硬件可剪裁适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2.所做的电路中有哪几个任务? 答:总共六个,分别是:功能选择,贪吃蛇游戏,时间温度显示,PS2键盘控制,温度采集,时间采集。 3.贪吃蛇这个游戏是怎么实现的? 答:在这个游戏中主要用到两个长度为二的数组控制蛇的头部坐标和尾部坐标,蛇的初始化长度为3,通过定时器没隔一定的时间给蛇一个步进信号,在蛇移动的过程中和转弯的过程中需判断前面是否有食物,是否碰到自己身体。食物的坐标也是通过定时器的高八位和第八位的数字余上30所的。 成绩评定依据: 实物制作(40%): 课程设计考勤情况(20%): 课程设计答辩情况(20%): 完成设计任务及报告规范性(20%): 最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 2010年12 月20 日

课程设计任务书 2011 ~2012 学年第 1 学期 学生姓名:林忠航专业班级: 08电信本1、2 指导教师:邓彬伟、李玉平工作部门:电信教研室 一、课程设计题目 嵌入式系统设计课程设计 二、课程设计目的 为了提高嵌入式系统设计与实际的应用能力,开始为期三周的嵌入式系统设计课程设计。通过实训使学生在巩固所学单片机知识的基础之进一步把其与μC/OS-II操作系统的移植结合起来,增强学生对所学知识的实际应用能力和以及与当前专业的前沿知识结合,达到对μC/OS-II操作系统的学习和理解,为以后从事嵌入式工作的研究和开发打好基础。 三、课程设计内容 设计基于51单片机的嵌入式系统,把μC/OS-II操作系统移植到51单片机上,能完成基本的输入和输出,输入采用4*4的键盘,输出采用1602液晶。再此基础之上,每个同学根据自己的特长扩展应用系统,具体可参考以下五种扩展方案的实现。 1、设计的游戏机,在游戏机工作时有背景音乐放出。 2、设计的是电子琴以及1602液晶显示。 3、设计的流水灯、蜂鸣器、闪烁灯任务。, 4、设计的流水灯和电子书功能。 5、(1)所有灯灭,(2)1602显示 93)LED灯闪烁,显示字符。 四、进度安排 序号设计内容所用时间 1 布置任务,学习μC/OS-II操作系统5天 2 开发μC/OS-II操作系统的移植代码3天 3 制作基于51单片机的硬件系统2天 4 软硬件集成和调试2天 5 答辩、撰写设计报告书3天 合计15天 五、基本要求 1、设计基于51单片机的输入和输出电路。 2、用4×4的键盘作为输入设备。 3、用LED或LCD进行显示。

结构动力学读书报告

《结构动力学》 读书报告

结构动力学读书报告 学习完本门课程和结合自身所学专业,我对本门课程内容的理解和在各方面的应用总结如下: 1. (1)结构动力学及其研究内容: 结构动力学是研究结构系统在动力荷载作用下的振动特性的一门科学技术,它是振动力学的理论和方法在一些复杂工程问题中的综合应用和发展,是以改善结构系统在动力环境中的安全和可靠性为目的的。本书的主要内容包括运动方程的建立、单自由度体系、多自由度体系、无限自由度体系的动力学问题、随机振动、结构抗震计算及结构动力学的前沿研究课题。 (2)主要理论分析 结构的质量是一连续的空间函数,因此结构的运动方程是一个含有空间坐标和时间的偏微分方程,只是对某些简单结构,这些方程才有可能直接求解。对于绝大多数实际结构,在工程分析中主要采用数值方法。作法是先把结构离散化成为一个具有有限自由度的数学模型,在确定载荷后,导出模型的运动方程,然后选用合适的方法求解。 (3)数学模型 将结构离散化的方法主要有以下三种:①集聚质量法:把结构的分布质量集聚于一系列离散的质点或块,而把结构本身看作是仅具有弹性性能的无质量系统。由于仅是这些质点或块才产生惯性力,故离散系统的运动方程只以这些质点的位移或块的位移和转动作为自由

度。对于大部分质量集中在若干离散点上的结构,这种方法特别有效。 ②广义位移法:假定结构在振动时的位形(偏离平衡位置的位移形态)可用一系列事先规定的容许位移函数fi (它们必须满足支承处的约束条件以及结构内部位移的连续性条件)之和来表示,例如,对于一维结构,它的位形u(x)可以近似地表为: @7710 二送 结构动力学 (1)式中的qj称为广义坐标,它表示相应位移函数的幅值。这样,离散系统的运动方程就以广义坐标作为自由度。对于质量分布比较均匀,形状规则且边界条件易于处理的结构,这种方法很有效。 ③有限元法:可以看作是分区的瑞利-里兹法,其要点是先把结构划 分成适当数量的区域(称为单元),然后对每一单元施行瑞利-里兹法。通常取单元边界上(有时也包括单元内部)若干个几何特征点(例如三角形的顶点、边中点等)处的广义位移qj作为广义坐标,并对每个广义坐标取相应的插值函数作为单元内部的位移函数(或称形状函数)。在这样的数学模型中,要求形状函数的组合在相邻单元的公共边界上满足位移连续条件。一般地说,有限元法是最灵活有效的离散化方法,它提供了既方便又可靠的理想化模型,并特别适合于用电子计算机进行分析,是目前最为流行的方法,已有不少专用的或通用的程序可供结构动力学分析之用。 (4)运动方程

初中必备知识点汇总

初中必备知识点汇总 初中地理基础知识必背(一)1、填下表: 形状长度指示 方向 划分半球的线 经线半 圆 相等南北东西半球:西经2 0°和东经160°两条 经线组成的经线圈 纬线圆 圈 不都 相等 东西南北半球:赤道 2、任举一例说明地球是个球体: ①地球卫星照片;②麦哲伦环球航行; ③月食照片;④海边看帆船从远处驶来,总是先看到桅杆再看到船身;⑤站得高看得远。 3、地球绕地轴自转,转一周是一天,产生了昼夜更替现象和时

间的差异,地球公转则产生了四季(季节)的变化。(还有五带的划分,昼夜长短的变化,正午太阳高度的变化等) 4、地图的三要素是比例尺、方向和图例。 5、在等高线地形图上,等高线稠密,说明坡度陡。(稀疏说明坡度缓) 6、在分层设色地形图上,绿色常表示平原地形。 7、世界上面积最大的洲是亚洲,最小的洲是大洋洲。 8、世界上面积最大的洋是太平洋,我国面临太平洋。 9、亚非两洲的分界线是苏伊士运河,南北美洲的分界线是巴拿马运河。(亚欧分界海峡:土耳其海峡) 10、全球的岩石圈可分为六大板块,板块和板块交界处多火山地震。

11、在卫星云图上,白色常表示云区,表示台风。 12、一天当中气温最高出现在午后2时时刻,最低出现在日出前后。13、一般来说,低纬度气温高,高 纬度气温低。 同纬度地带,夏季陆地气温高,海洋气温低。(冬季相反) 14、受地形影响,山地的迎风坡降水多,背风坡降水少。 15、青藏高原之所以比同纬度其它地区寒冷,主要是受地形的影响。我国海南岛终年如夏,而黑龙江省北部却冬季漫长,最主要的影响因素是纬度。 (我国新疆塔里木盆地降水稀少,气候干旱而同纬度的北京却比较湿润:海陆因素)16、世界的三大宗教是基 督教、伊斯兰教和佛教。

嵌入式Linux应用软件开发流程

从软件工程的角度来说,嵌入式应用软件也有一定的生命周期,如要进行需求分析、系统设计、代码编写、调试和维护等工作,软件工程的许多理论对它也是适用的。 但和其他通用软件相比,它的开发有许多独特之处: ·在需求分析时,必须考虑硬件性能的影响,具体功能必须考虑由何种硬件实现。 ·在系统设计阶段,重点考虑的是任务的划分及其接口,而不是模块的划分。模块划分则放在了任务的设计阶段。 ·在调试时采用交叉调试方式。 ·软件调试完毕固化到嵌入式系统中后,它的后期维护工作较少。 下面主要介绍分析和设计阶段的步骤与原则: 1、需求分析 对需求加以分析产生需求说明,需求说明过程给出系统功能需求,它包括:·系统所有实现的功能 ·系统的输入、输出 ·系统的外部接口需求(如用户界面) ·它的性能以及诸如文件/数据库安全等其他要求 在实时系统中,常用状态变迁图来描述系统。在设计状态图时,应对系统运行过程进行详细考虑,尽量在状态图中列出所有系统状态,包括许多用户无需知道的内部状态,对许多异常也应有相应处理。 此外,应清楚地说明人机接口,即操作员与系统间地相互作用。对于比较复杂地系统,形成一本操作手册是必要的,为用户提供使用该系统的操作步骤。为使系统说明更清楚,可以将状态变迁图与操作手册脚本结合起来。

在对需求进行分析,了解系统所要实现的功能的基础上,系统开发选用何种硬件、软件平台就可以确定了。 对于硬件平台,要考虑的是微处理器的处理速度、内存空间的大小、外部扩展设备是否满足功能要求等。如微处理器对外部事件的响应速度是否满足系统的实时性要求,它的稳定性如何,内存空间是否满足操作系统及应用软件的运行要求,对于要求网络功能的系统,是否扩展有以太网接口等。 对于软件平台而言,操作系统是否支持实时性及支持的程度、对多任务的管理能力是否支持前面选中的微处理器、网络功能是否满足系统要求以及开发环境是否完善等都是必须考虑的。 当然,不管选用何种软硬件平台,成本因素都是要考虑的,嵌入式Linux 正是在这方面具有突出的优势。 2、任务和模块划分 在进行需求分析和明确系统功能后,就可以对系统进行任务划分。任务是代码运行的一个映象,是无限循环的一段代码。从系统的角度来看,任务是嵌入式系统中竞争系统资源的最小运行单元,任务可以使用或等待CPU、I/O设备和内存空间等系统资源。 在设计一个较为复杂的多任务应用系统时,进行合理的任务划分对系统的运行效率、实时性和吞吐量影响都极大。任务分解过细会不断地在各任务之间切换,而任务之间的通信量也会很大,这样将会大大地增加系统的开销,影响系统的效率。而任务分解过粗、不够彻底又会造成原本可以并行的操作只能按顺序串行执行,从而影响系统的吞吐量。为了达到系统效率和吞吐量之间的平衡折中,在划分任务时应在数据流图的基础上,遵循下列步骤和原则:

嵌入式系统课程设计

《嵌入式系统课程设计》 姓名:梅航赵震王继潘晨阳陈川江李洪波朱啸林何永强张智炫班级:10计算机 专业:计算机科学与技术 学院:电气与信息工程学院 2013年12月

1.题目选择 如皋港港口物流交易平台 2.项目描述 如皋港物流交易平台一共分为两期完成:一期工程主要是宣传如皋港的港口文化和港口风采,弘扬如皋港精神;二期工程着重于港口的物流交易部分,一个关于货主,物流公司和平台方的三方交易。 2.1 一期内容描述 2.1.1 首页 首页版面内容主要包括会员登录区域、董事长致辞、港口要闻(图文展示)、招商引资(项目发布)、视频新闻、创先争优、港口论坛、港航资讯、如皋港电子信息交易平台图片链接、如皋港货运物流信息平台图片链接、如皋港电子口岸平台图片链接,及各相关行业网站图片链接等内容: 1.会员登录区域 提供会员登录,会员登录分为员工登录和客户登录两部分,所有用户均由管理员根据员工及客户级别统一分配用户和初始密码及用户权限,用户登录后可修改初始密码。 2.董事长致辞 董事长致辞版块在首页的左上角显眼位置,提供董事长的工作照及亲笔致辞、签名印章等等。

3.港口要闻 作为中国·如皋港对外新闻发布的唯一官方平台,该版块将置于整版最中央最上方位置,作为如皋港的重大新闻、图文资讯发布浏览平台,右侧区域作为新闻图片展示窗口,实现图片定时切换功能。 4.招商引资 作为如皋港重大招商项目信息发布的官方平台,提供招商项目信息的发布浏览,包括项目简介、项目前景、项目现状、合作方式等内容的发布。 5.视频新闻 发布关于如皋港重大活动、会议的视频新闻供会员及游客观看,更直观的展示如皋港对外形象。 6.创先争优剪影(社会管理创新) 作为新型国有企业,在市委市政府的统一领导下,党建工作尤为重要,在此区域将发布党建工作活动新闻。 7.港口论坛 港口论坛作为思想的聚集地,为港口的发展建言献策,同时提升港口凝聚力。 8.港航资讯 提供港航资讯浏览,通过抓取相关港航业新闻,保持与港口行业与时俱进。 9.如皋港电子信息交易平台 作为中国·如皋港的重要子系统,如皋港电子商务平台的登录页面须在整版的右侧提供显眼的图片登录链接,点击图片链接后进入如皋港电子商务平台,提供马木材贸易、长江煤市、邦略再生资源等交易平台。客户用户根据自身用户权限可直接进入各大平台进行在线咨询交易。(具体功能描述见后) 10.如皋港货运物流信息交易平台 首页提供图片链接,点击后进入如皋港货运物流信息交易平台页面,登录用户可直接进入交易平台(具体功能描述见后) 11.如皋港电子口岸平台 首页提供图片链接,登录用户点击后直接进入如皋港电子口岸平台(具体功能描述见后) 12.各行业网站链接

高中政治必背知识点汇总

第一单元、生活与消费 第一课、神奇的货币 1.商品: 含义:用于交换的劳动产品 必须具备的条件:A、必须是劳动产品。B、必须用于交换。 商品的两个基本属性:使用价值和价值。 2、货币产生:偶然物物交换——扩大的物物交换——一般等价物——一般等价物固定在金银上货币产生。 货币的本质——一般等价物。 原因:它本身是一种商品。作用:能表现其他一切商品的价值,充当商品交换的媒介。 货币的基本职能:流通手段,需现实的货币,价值尺度,只需观念上的货币。 3、金属货币与纸币

区别联系 货币货币是商品;货币有价值;货币有五种职能;货币的本质是一般等价物;货币是商品交换长期发展的产物。纸币是价值的符号,纸币由货币发展而来;纸币的发行量必须以流通中所需要的货币量为限度。 纸币纸币不是商品;纸币没有价值,有使用价值;纸币只代替货币执行流通手段的职能;纸币的本质是价值符号;纸币是国家发行的。(国家能决定纸币的发行量、纸币的面值,但不能决定纸币的购买力或者纸币所代表的价值)。 注:流通中所需货币量=商品价格总额/货币流通次数 4、社会总需求与总供给不平衡引起的通货膨胀通货紧缩 通货膨胀通货紧缩 含义物价总水平全面地持续地上涨。物价总水平全面地持续地下跌。 表现需求旺盛,物价上涨,纸币贬值,经济过热。需求不足,物价下跌,纸币升值,经济衰退。

本质社会总供给小于社会总需求,流通中的纸币量过多。社会总供给大于社会总需求,流通中的纸币量过少。 成因纸币发行过多;社会需求旺盛;成本上升等。纸币发行过少;社会需求不足等。 影响适度的通货膨胀可以刺激消费,扩大内需,推动经济发展。但通货膨胀使纸币贬值,物价上涨,居民的购买力和生活水平下降,影响人民的生活和社会的经济秩序。短期内适度的通货紧缩使得纸币升值,物价上涨,居民的购买力增强,给居民带来实惠。但从长远看会使商品销售发生困难,直接阻碍商品流通,严重影响投资者的信心,对经济的长远发展和人民的长远利益不利。 措施紧缩型财政政策(增加税收、减发国债、减少财政支出); 紧缩型货币政策(提高存贷款利率、提高存款准备金率、减少货币发行量)。扩张型财政政策(减少税收、增发国债、增加财政支出); 扩张型货币政策(降低存贷款利率、降低存款准备金率、增加货币发行量)。 5、结算有哪两种方式?结算中常用的信用工具及优点是什么? 结算方式:现金结算;转帐结算。

高中化学学业水平测试知识点总结(非常详细非常好)

2015高中化学学业水平测试知识点总结 专题一物质的分类、结构、反应及实验基本操作 一、物质的分类及转化 溶液 混合物胶体 浊液有机化合物 物质 纯净物无机化合物 非金属 金属 二、化学反应的类型 1、四种基本反应类型:化合反应分解反应置换反应复分解反应 2、四种基本反应类型与氧化还原反应的关系: 置换反应一定是氧化还原反应,复分解反应一定不是氧化还原反应,化合反应、分解反应可能是氧化还原反应 3、氧化还原反应 本质:电子的转移(得失或者偏移)特征:化合价的改变(判断氧化还原反应的依据) 概念:升(化合价)---失(电子)---氧(氧化反应)------还(还原剂) 降(化合价)--- 得(电子)---还(氧化反应)------ 氧(还原剂) 表示方法: 单线桥双线桥 2e- 失去2e- -1 0 -1 0 0 -1 2 KBr + Cl2====Br2+2KCl 2 KBr + Cl2 ==== Br2+2KCl 得到2e- 三、物质的量 1、定义:表示一定数目微粒的集合体符号:n 单位:摩尔 2、阿伏加德罗常数:0.012kgC-12中所含有的碳原子数。用N A表示。约为6.02x1023 N 3、微粒与物质的量的关系:公式:n= NA 4、摩尔质量:单位物质的量的物质所具有的质量用M表示单位:g/mol 数值上等于该物质的式量

5、质量与物质的量的关系:公式:n= M m 6、体积与物质的量的关系:公式:n=Vm V 标准状况下 ,1mol 任何气体的体积都约为22.4l 7、阿伏加德罗定律:同温同压下, 相同体积的任何气体都含有相同的分子数 8、物质的量浓度:单位体积溶液中所含溶质B 的物质的量。符号C B 单位:mol/l 9、物质的量浓度与物质的量的关系:公式:C B = V nB 10、物质的量浓度的配制 配制前要检查容量瓶是否漏水 步骤:①. 计算 m=c ×v ×M ②.称量③. 溶解 ④.转移 (洗涤2---3次 洗涤液转入容量瓶) ⑤.定容⑥.摇匀⑦. 装瓶贴签 四、分散系 溶 液 胶体 浊液 1、分散质大小(nm ) <10-9 10-9 ~10-7 >10-7 2、胶体的性质:丁达儿现象(光亮的通路 ) 用于 区分溶液与胶体 3、电解质:在水溶液中或者熔化状态下能导电的化合物 4、非电解质:在水溶液中和熔化状态下能导电的化合物 蔗糖 酒精 SO 2 CO 2 NH 3等 强酸HCl H 2SO 4 HNO 3 5、强电解质:在水溶液中能全部电离的电解质 强碱NaOH KOH Ca (OH )2 Ba (OH )2 大多数的盐 弱酸 弱电解质:在水溶液中能部分电离的电解质 弱碱 水 五、物质的分离与提纯 1、过滤法:适用于分离一种组分可溶,另一种不溶的固态混合物 如:粗盐的提纯 2、蒸发结晶:混合物中各组分物质在溶剂中溶解性的差异 3、蒸馏法:适用于分离各组分互溶,但沸点不同的液态混合物。如:酒精与水的分离 主要仪器: 蒸馏烧瓶 冷凝器 4、分液:分离互不相容的两种液体 5、萃取:溶质在互不相溶的溶剂里溶解度不同 溴水 CCl4 分层 上层无色 下层橙红色 不用酒精萃取 六、离子的检验 焰色反应 钠焰色:黄色 钾的焰色:紫色 (透过蓝色钴玻璃) Cl-检验 :加硝酸银产生的白色沉淀不溶解于稀硝酸 SO42-检验: 加Ba(NO3)2产生的白色沉淀不溶解于稀硝酸 NH 4+ 检验:加入NaOH 加热产生气体使湿润的红色石蕊试纸变蓝 Fe 3+检验:加入KSCN 溶液出现红色 Fe3++3SCN-==Fe (SCN )3 Al 3+检验:加入NaOH 先出现白色沉淀后沉淀消失 七、原子结构 质子 Z 原子核 1、原子 A Z X 中子 N = A-Z 核外电子 Z

嵌入式系统设计课程设计

嵌入式理论及应用 设计题目:基于μC/OS-II8*8点阵的设计与制作 嵌入式系统设计课程设计 一、概述 1. 单片机介绍 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 2. 单片机历史 单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。 1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。 2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。 3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。 3. 单片机的应用领域 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。 二、单片机的结构与原理 1.AT89C55芯片 AT89C55单片机芯片内部结构框图如图1所示。

结构动力学课程总结

结构动力学课程学习总结 本学期我们开了《结构动力学》课程,作为结构工程专业的一名学生,《结构动力学》是我们的一门重要的基础课,所以同学们都认真的学习相关知识。《结构动力学》是研究结构体系在各种形式动荷载作用下动力学行为的一门技术学科。它是一门技术性很强的专业基础课程,涉及数学建模、演绎、计算方法、测试技术和数值模拟等多个研究领域,同时具有鲜明的工程与应用背景。学习该门学科的根本目的是为改善工程结构系统在动力环境中的安全和可靠性提供坚实的理论基础。通过该课程的学习,可以掌握动力学的基本规律,有助于在今后工程建设中减少振动危害。 对一般的内容,老师通常是让学生个人讲述所学内容,课前布置他们预习,授课时采用讨论式,先由一名学生主讲,老师纠正补充,加深讲解,同时回答其他同学提出的问题。对较难或较重要的内容,由教师直接讲解,最后大家共同讨论教材后面的思考题,以加深对相关知识点的理解。 通过本课程的学习,我们了解到:结构的动力计算与静力计算有很大的区别。静力计算是研究静荷载作用下的平衡问题。这时结构的质量不随时间快速运动,因而无惯性力。动力计算研究的是动荷载作用下的运动问题,这时结构的质量随时间快速运动,惯性力的作用成为必须考虑的重要问题。根据达朗伯原理,动力计算问题可以转化为静力平衡问题来处理。但是,这是一种形式上的平衡,是一种动平衡,是在引进惯性力的条件下的平衡。也就是说,在动力计算中,虽然形式上仍是是在列平衡方程,但是这里要注意两个问题:所考虑的力系中要包括惯性力这个新的力、考虑的是瞬间的平衡,荷载、内力等都是时间的函数。 我们首先学习了单自由度系统自由振动和受迫振动的概念,所以在学习多自由度系统和弹性体系的振动分析时,则重点学习后者的振动特点以及与前者的联系和区别,这样既节省了时间,又抓住了重点。由于多自由度系统振动分析的公式推导是以矩阵形式表达为基础的,我们开始学习时感到有点不适应,但是随着课程的进展,加上学过矩阵理论这门课后,我们自觉地体会到用矩阵形式表达非常有利于数值计算时的编程,从中也感受到数学知识的魅力和现代技术的优越性,这样就大大增强了我们学习的兴趣。

小学数学必背知识点汇总

小学数学必背知识点汇总 基本性质 ※小数的基本性质:在小数末尾添上零或者去掉零,小数的大小不变。 ※分数的基本性质:分数的分子和分母都乘以或者除以相同的数(零除外),分数的大小不变。 ※比的基本性质:比的前项和后项都乘以或者除以相同的数(零除外),比值不变。 ※比例的基本性质:在比例里,两个外项的积等于两个内项的积。 ※比例尺=图上距离÷实际距离(单位要相同) ※商不变的性质:在除法里,被除数和除数都乘以或者除以相同的数(零除外),商的大小不变。 一.公式 路程=速度×时间 总路程=速度和×相遇时间 追及时间=路程差÷速度差 平均数=总数量÷总份数 工作量=工作时间×工作效率 总价=单价×数量 长方形的周长=(长+宽)×2 正方形的周长=边长×4 圆形的周长=直径×(半径×2×) 长方形面积=长×宽 正方形面积=边长×边长 平行四边形的面积=底×高

三角形面积=底×高÷2 梯形面积=(上底+下底)×高÷2 圆形面积=半径×半径× 扇形面积= 圆柱体侧面积=底面周长×高 圆柱体表面积=侧面积+底面积×2 即: 正方体面积=棱长×棱长×6 长方体表面积=(长×宽+长×高+宽×高)×2 长方体有12条棱:4条长,4条宽,4条高,六个面; 正方本有12条棱:每条棱都相等,有六个面,每个面都相等。 长立方体体积=长×宽×高正方体体积=棱长×棱长×棱长圆柱体体积=半径2××高 圆锥体体积=半径2××高× 当赚钱时 卖价=成本×(1+赚率) 求赚了多少=成本×赚率 成本=卖价÷(1+赚率) 赚率=[(卖价-成本)÷成本]×100% 当赔钱时 卖价=成本×(1-赔率) 求赔了多少=成本×赔率

环境化学知识点梳理

1影响重金属在土壤—植物体系中迁移的因素 土壤的理化性质(PH,土壤质地,土壤的氧化还原电位,土壤中有机质含量) 重金属的种类、浓度及在土壤中的存在形态,植物的种类、生长发育期(4)复合污染(5)施肥 2生物富集biologicaNTRATION:指生物通过对环境(水、土壤、大气)中某种元素或难降解的物质的积累,使其在集体内的浓度超过周围环境中浓度的现象。条件:1、污染物在环境中较稳定2生物能吸收3不易被生物转化分解的 3生物放大biomagification:指在同一食物链上的高营养级生物,通过吞食低营养级生物蓄积某种元素或难降解物质,使其在机体内的浓度随营养级数提高而增大的现象 4生物积累;生物从周围环境(水、土壤,大气)和食物链蓄积某种元素或难降解物质,使其在机体内的浓度随营养级数提高而增大的现象 5多氯联苯(PCBs)在环境中的迁移和转化:光化学分解和生物转化 6持久性有机物污染物为什么能够进行远距离传输 1、持久性有机污染物(POPs)具有挥发性和半挥发性有机物,易于挥发至大气中,随大气进行传输2.POPs具有稳定性(或称为持久性),能在环境中长时间存在而不发生降解 正是由于其挥发性强流动性大,并且持久性强,导致其能能在环境中持续存在并远距离传播. 7全称是Pharmaceutical and Personal Care Products,简称PPCPs药物及个人护理品:PPCPs 作为一种新兴污染物日益受到人们的关注。PPCPs种类繁杂,包括各类抗生素、人工合成麝香、止痛药、降压药、避孕药、催眠药、减肥药、发胶、染发剂和杀菌剂等。许多PPCPs 组分具有较强的生物活性、旋光性和极性,大都以痕量浓度存在于环境中。兽类医药、农用医药、人类服用医药以及化妆品的使用是其导入环境的主要方式。由于该类物质在被去除的同时也在源源不断地被引入到环境中,人们还将其称为“伪持续性”污染物。城市污水是一种重要的资源,其处理的好坏将直接影响到人体的健康和受纳水体的水质。大多数PPCPs 以原始或被转化形式排人到污水中随污水进入污水处理厂。 8持久性有机物(POPs):是指通过各种环境介质(大气、水、生物体等)能够长距离迁移并长期存在于环境,具有长期残留性、生物蓄积性、挥发性和高毒性,对人类健康和环境有严重危害的天然或人工合成的有机污染物 PCPBS多氯联苯,二噁英,多环芳烃。多溴联苯(PBBS) 特性:(1)持久性,能在环境中持久地存在(2)生物蓄积性,能蓄积在食物链中对有较高营养等级的生物造成影响(3)半挥发性,能够经过长距离迁移到达偏远的极地地区(4)有毒性,在相应的环境浓度下会对接触该物质的生物造成有害或有毒效应,在POPs公约规

水环境化学

二、污染物在不同水体中的迁移转化规律 污染物排人河流后,在随河水往下游流动的过程中受到稀释、扩散和降解等作用,污染物浓度逐步减小。污染物在河流中的扩散和分解受到河流的流量、流速、水深等因素的影响。大河和小河的纳污能力差别很大。 河口是指河流进入海洋前的感潮河段。一般以落潮时最大断面的平均流速与涨潮时最小断面的平均流速之差等于0.05m/s的断面作为河口与河流的分界。河口污染物的迁移转化受潮汐影响,受涨潮、落潮、平潮时的水位、流向和流速的影响。污染物排人后随水流不断回荡,在河流中停留时间较长,对排放口上游的河水也会产生影响。 湖泊、水库的贮水量大,但水流一般比较慢,对污染物的稀释、扩散能力较弱。污染物不能很快地和湖、库的水混合,易在局部形成污染。当湖泊和水库的平均水深超过一定深度时,由于水温变化使湖(库)水产生温度分层,当季节变化时易出现翻湖现象,湖底的污泥翻上水面。 海洋虽有巨大的自净能力,但是海湾或海域局部的纳污和自净能力差别很大。此外,污水的水温较高,含盐量少,密度较海水小,易于浮在表面,在排放口处易形成污水层。 地下水埋藏在地质介质中,其污染是一个缓慢的过程,但地下水一旦污染要恢复原状非常困难。污染物在地下水中的迁移转化受对流与弥散、机械过滤、吸附与解吸、化学反应、溶解与沉淀、降解与转化等过程的影响。 污染物在环境中的迁移转化 污染物进入环境后,会发生迁移和转化,并通过这种迁移和转化与其他环境要素和物质发生化学的和物理的,或物理化学的作用。迁移是指污染物在环境中发生空间位置和范围的变化,这种变化往往伴随着污染物在环境中浓度的变化。污染物迁移的方式主要有以下几种:物理迁移、化学迁和生物迁移。化学迁移一般都包含着物理迁移,而生物迁移又都包含着化学迁移和物理迁移。物理迁移就是污染物在环境中的机械运动,如随水流、气流的运动和扩散,在重力作用下的沉降等。化学迁移是指污染物经过化学过程发生的迁移,包括溶解、离解、氧化还原、水解、络合、螯合、化学沉淀、生物降解等等。生物迁移是指污染物通过有机体的吸收、新陈代谢、生育、死亡等生理过程实现的迁移。有的污染物(如一些重金属元素、有机氯等稳定的有机化合物)一旦被生物吸收,就很难排出生物体外,这些物质就会在生物体内积累,并通过食物链进一步富集,使得生物体中该污染物的含量达到物理环境的数百倍、数千倍甚至数百万倍,这种现象叫做富集。污染物的转化是指污染物在环境中经过物理、化学或生物的作用改变其存在形态或转变为另外的不同物质的过程。污染物的转化必然伴随着它的迁移。污染物的转化可分为物理转化、化学转化和生物化学转化。物理转化包括污染物的相变、渗透、吸附、放射性衰变等。化学转化则以光化学反应、氧化还原反应及水解反应和络合反应最为常见。生物化学转化就是代谢反应污染物的迁移转化受其本身的物理化学性质和它所处的环境条件的影响,其迁移的速率、范围和转化的快慢、产物以及迁移转化的主导形式等都会变化

相关主题
文本预览
相关文档 最新文档