ARM速成教材2633.docx

上传人:jix****n11 文档编号:68677748 上传时间:2022-12-29 格式:DOCX 页数:10 大小:28.05KB
返回 下载 相关 举报
ARM速成教材2633.docx_第1页
第1页 / 共10页
ARM速成教材2633.docx_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《ARM速成教材2633.docx》由会员分享,可在线阅读,更多相关《ARM速成教材2633.docx(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、实时操作系统(RTOS)n RTOS是一段嵌入在目标代码中的程序,系统复位后首先执行 ,相当于用户的主程序,用户的其它应用程序都建立在RTOS之上。不仅如此,RTOS还是一个标准的内核,将CPU时间、中断、I/O、定时器等资源都包装起来,留给用户一个标准的API,并根据各个任务的优先级,合理地在不同任务之间分配CPU时间。n RTOS是针对不同处理器优化设计的高效率实时多任务内核,RTOS可以面对几十个系列的嵌入式处理器MPU、MCU、DSP、SOC等提供类同的API接口,这是RTOS基于设备独立的应用程序开发基础。优秀RTOS上跨处理器平台的程序移植只需要修改1-4 的内容。 n 在RTOS

2、基础上可以编写出各种硬件驱动 程序、专家库函数、行业库函数、产品库函数,和通用性的应用程序一起,可以作为产品销售,促进行业的知识产权交流,因此RTOS又是一个软件开发平台。 n RTOS的基本结构 RTOS最关键的部分是实时多任务内核,它的基本功能包括任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理、旗语管理等,这些管理功能是通过内核服务函数形式交给用户调用的,也就是RTOS的 API。 ARM7启动顺序n ARM7启动过程n 嵌入式系统资源有限,程序通常都固化在ROM总运行。n ROM中程序执行前,需要对系统硬件和软件运行环境进行初始化,这些工作是用汇编语言

3、编写的启动程序完成。n 启动程序是嵌入式程序的开头部分,应与应用程序一起固化在ROM中,应首先在系统上运行的启动程序应包含各模块中可能出现的所有段类,并合理安排他们的次序。 Boot Loade设计Boot Loader概念n 在嵌入式系统中,通常没有像PC机BIOS那样的固件程序,因此整个系统的加载启动任务就完全由Boot Loader来完成。对于我们的实验开发板,由于flash接的是微处理器Bank0的片选信号。映射的地址为0x00000000。而实验系统在上电或复位时从地址0x00000000处开始执行,所以在这个地址处安排系统的Boot Loader程序。由于Boot Loader与硬

4、件结合非常紧密,所以对于不同结构的CPU其Boot Loader程序都是不同的。Boot Loader总体设计n Stage1stage2根文件和映像文件关系如图n Boot Loader的stage1完成以下功能:(1)硬件设备初始化。(2)设置堆栈。(3)为加载Boot Loader的stage2准备RAM空间(4)拷贝Boot Loader的stage2到RAM空间中。(5)跳转到stage2的C入口点.n Boot Loader的stage2必须完成以下功能:(1)初始化本阶段要使用到的硬件设备。(2)将kernel映像和根文件系统映像从flash上读到RAM空间中。(3)为内核设置启

5、动参数。(4)调用内核。n uClinux根文件及系统映象文件n 对于uClinux根文件系统的制作则使用uClinux的dist包,在宿主机的Linux环境下通过make menuconfig命令来完成对根文件系统的配置,编译,连接等一系列工作,生成所需要的根文件系统映象文件。注意:n 不同CPU,依赖于CPU体系结构的代码。设备初始化代码都放在stage1中,并且都用汇编语言来实现,以达到短小精悍的目的。而stage2则用C语言来实现,实现系统功能。Boot Loader实现n Boot Loader Stage1功能n 术语解释n 映象文件(IMAGE):指一个可以执行的文件,ELF格式

6、.n 段(section):描述映象文件的代码或数据块。n RO:是Read-only的简写形式.一般存放的代码。n RW:是Read-write的简写形式。一般是存放初始化的数据。n ZI:是Zero-initialized的简写形式。一般是存放零初始化数据。n 输入段(input section):它包含代码、初始化数据或描述了在应用程序运行之前必须要初始化为0的一段内存。n 输出段(output section):它包含一系列具有相同R0, RW, ZI属性的输入段。n 域(Regions):在一个映象文件中,一个域包含了1-3个输出段。多个域组织在一起就构成了最终的映象文件1、硬件的初

7、始化n 目的:为stage2的执行以及随后的kernel的执行准备好一些基本的硬件环境n 1).屏蔽所有的中断。为中断提供服务是操作系统的设备驱动程序的责任,因此在Boot Loader的执行全过程中不必响应任何中断。中断屏蔽可以通过写ARM的CPSR寄存器来完成PI。n 2).设置CPU的速度和时钟频率。n 3)堆栈初始化。设置堆栈指针是为执行C语言代码作准备。把sp的值设置在RAM空间距最顶端1. 5KB的地方(堆栈向上生长)。因为在不同的工作模式下所访问的堆栈指针寄存器(R13)不同,所以要初始化各种工作模式的堆栈。n 4). RAM初始化。包括正确地设置系统内存控制器的功能寄存器以及各

8、内存库控制寄存器等共有13个需要初始设置的寄存器.2、为stage2准备RAM空间n S3C44BOX开实验板来说,在Bank6的片选信号上我们接了8m的SDRAM,而Bank6映射的起始地址为OXOCOOOOOO,进而RAM的空间范围为OxOcOOOOOO-OxOc7fffff3、拷贝stage2到RAMn 设计了一个拷贝程序,负责将stage2的代码搬运到RAM中,让它在RAM中运行,以获得更快的速度。n 在上述一切都就绪后,就可以跳转到Boot Loader的stage2去执行了。在ARM系统中,通过修改PC寄存器为合适的地址来实现。n Boot Loader Stage2的功能n st

9、age2的代码用C语言实现,以便于实现更复杂的功能和取得更好的代码可读性和可移植性。当stage1的工作完成,为stage2准备好运行环境后就可以跳转进main()函数了。直接把main ()函数的起始地址作为整个。stage2执行映像的入口点是最直接的想法。但是这样做将无法处理main()返回的情况。n 为解决这个问题,可以写一段ARM的汇编程序,作为main() 函数的外部包裹。1、硬件初始化1)初始化I/0端口及两个串口,以便对终端用户输出I/0信息及与GPRS模块通信2)设定系统主频 2、内核映象文件及根文件系统的下载将uClinux的内核及根文件系统的映象文件下载到开发板上需要两个途

10、径(1) 利用网口,使用TFTP下载;(2) 利用串口下载;(在PC上的串口工具都有发送文件的功能,传输内核和根文件系统映象文件的到SDRAM)3 、加载内核映像和根文件系统映像对内存进行规划时包括两方面:(1) 内核映像所占用的内存范围,基地址和映像的大小;(2) 根文件系统所占用的内存范围,基地址和映像的大小。uClinux映象文件的执行方式:(1 )一种方式是内核映象文件直接在FLASH中运行。(2) 另一种方式是先将其解压到SDRAM中,再在SDRAM中运行。对于内核映像,因为嵌入式Linux的内核一般都不操过1MB,所以我们将其拷贝到SDRAM地址OxOc300000处。这样当开始启

11、动uClinux时,压缩的uClinux内核将自动解压到0X0c008000处开始运行。当然也可以修改为其它的地址范围,但这样做就需要对uClinux源代码包的、kefile文件进行相应的修改,操作起来非常麻烦,所以我们不对它进行改动。对根文件系统映像,我们将其拷贝到。x0c000000+0x00100000开始的地方。像ARM这样的嵌入式微处理器都是在统一的内存地址空间中寻址Flash等固态存储设备的,所以从Flash上读取数据与从RAM单元中读取数据的操作并没有什么不同。4、调用内核Boot Loader调用Linux内核的方法是直接跳转到内核的第一条指令处,对S3C44BOX来说也即直接

12、跳转到0x0c300000地址处.当调转后uClinux就开始启动。我们的Boot Loader使用mrun命令,设置启动参数,将内核映象从flash拷贝到地址0x0c300000处,并开始运行,将控制权交给操作系统,进而启动操作系统。由于mrun命令使用的函数调用及宏定义比较多,这里就不给出源代码了。完成了上述任务以后,Boot Loader设计完成ARM系统引导n 启动程序一般流程如下: (1) 设置入口指针 (2) 设置中断向量 ARM7要求中断向量必须设置从0地址开始,连续8*4字节的空间,分别是复位、未定义指令错误、软件中断、预取指令中断、数据存取错误、IRQ、FIQ和一个保留的中断

13、向量 (如果ROM位于0地址,向量表包含一系列指令跳转到中断服务程序,否则向量必须被动态初始化。可以在启动程序中添加一段代码,使其在运行时将向量表拷贝到0地址开始的存储空间) 对于各未用的中断,用一个只包含返回指令的哑函数,以防止错误引起系统的混乱。 (3) 初始化堆栈和寄存器 取决于使用了哪些中断,一般系统需要处理哪些错误类型。一般来说管理者堆栈必须设置,如果使用了IRQ中断,则IRQ堆栈必须设置。如果系统使用了DRAM或者其他的外设,则需要设置相关的寄存器,以确定其刷新频率,数据总线宽度等信息 (4) 初始化存储器系统 有些芯片可通过寄存器编程初始化存储器系统,而对于复杂系统通常集成了MM

14、U来管理内存(5) 如果有必要改变处理器模式、状态 如果系统应用程序是运行在用户模式下,可在此处将系统改为用户模式并初始化用户的堆栈指针。 (6) 初始化C语言所需要的存储器空间 为正确运行应用程序,在初始化期间应将系统需要读写的数据和变量从ROM拷贝到RAM里;一些要求快速响应的程序,如中断处理程序,也需要在RAM中运行;如果使用FLASH,对FALSH的檫除和写入也一定要在RAM里运行。ARM公司软件开发工具包中链接器提供了分布装载的功能,可实现这一目的。 (7) 呼叫C语言 ARM有两种指令集:16位的Thumb指令集和32位的指令集。使用16位的存储器可以降低成本,在这种情况下,Thu

15、mb指令集的整体执行速度要比ARM32位指令集体,而且提高了代码密度,所以一般用Thumb 编译器将C语言 程序编译成16位代码。 处理器在一开始总是处于ARM状态,可使用BX指令转换到Thumb状态呼唤C语言程序,要注意的是用C语言编写的嵌入式程序时,要避免使用不能被固化到ROM的库函数。n 技术难点分析- MMU的使用MMU 是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。MMU通常是CPU的一部分,本身有少量的存储空间存放从虚拟地址到物理地址的匹配表。此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由MMU决定数据只在RAM中还是在大容量的存储器设备内。如果数据不在存储

16、空间内,MMU将产生页面错误中断 n MMU的两个主要功能是: n 将虚拟地址转换为物理地址 n 控制存储器存取允许。MMU关掉时,虚地址直接输出到物理地址总线。 n 使用MMU解决了以下几个问题:a 使用DRAM作为大容量存储器时,如果DRAM行列是非平方的,会导致该DRAM的物理地址不连续,这将给程序的编写调试造成极大的不方便,而适当的配置MMU可将其转换成虚拟地址连续的空间 b ARM内核的中断向量表放在0地址,对于ROM在0地址的情况,无法调用中断服务程序,所以在调试阶段有必要将可读写的存储器空间映射到0地址。 c 系统的某些地址是不允许被访问的,否则会产生不可预料的后果,为避免这类错

17、误,可以通过MMU匹配表的设置将这些地址设为用户不可以存取类型; d 启动程序中生成的匹配表中包含地址映射,存储页面大小(1M、64K 或者4K)以及是否允许存取等信息。 ARM系统初始化1、Bootloader引导程序Bootloader 是由汇编语言编写的芯片引导程序。它固化在目标板的ROM中,用于启动存放在RAM中或者ROM中的嵌入式软件的程序。如果CPU 支持,在bootloader 开发过程中也可以将它放在RAM中运行。在嵌入式ucLinux 的开发中,首先要根据硬件目标板的特性开发出bootloader 程序,以完成下面的任务:1. 1 初始化处理器使用bootloader 初始化

18、处理器中的一些配置寄存器。比如:如果需要使用ARM720T 处理器的MMU 的话,就应当在bootloader 中使用控制命令打开MMU。1. 2 初始化必备的硬件使用bootloader 初始化和设置板上的必备硬件。n 初始化内存、FlashROM和中断控制器等n 从主机下载系统映像到硬件板上的接口设备也是由它完成初始化的n 有些硬件板使用以太网传输嵌入式系统映像文件,那么在bootloader 中会使用以太网卡驱动程序初始化硬件,随后与客户端的bootloader 客户端程序通讯,并完成下载工作。 2、系统初始化( Bootloader)2、1 初始化中断向量表n ARM要求中断向量表必须

19、放置在从0 地址开始,连续8x4 字节的空间内(ARM720T和ARM9P10 及以后的ARM处理器也支持从0xFFFF0000 开始的高地址向量表) 。各个中断向量表中的位置分配如下图所示:n 中断向量表的程序实现通常如下所示:n AREA Bootloader , CODE , READONLYn ENTRYn B Reset - Handler ; Reset - Handler is a lablen B Undef - Handlern B SWI- Handlern B PreAbort - Handlern B DataAbort - Handlern B . ; for res

20、erved interrupt , stop heren B IRQ- Handlern B FIQ- Handler ; 其中,B 为跳转指令。2、2 初始化堆栈n 因为ARM有7 种执行状态,每一种状态的堆栈指针寄存器(SP) 都是独立的(System 和User 模式使用相同的SP 寄存器) 。因此,对程序中需要用到的每一种模式都要给SP 寄存器定义一个堆栈地址。n 方法是改变状态寄存器(CPSR) 内的状态位,使处理器切换到不同的状态,然后给SP 赋值。n 注意不要切换到User 模式进行User 模式的堆栈设置,因为进入User 模式后就不能再操作CPSR 回到别的模式了。一般堆栈的

21、大小要根据需要而定,但是要尽可能给堆栈分配快速和高速带宽的存储器。这对系统整体性能的提高是非常明显地。 n 堆栈初始化的代码实例,其中只定义了两种模式的SP 指针:n MRS R0 , CPSR ; CPSR = R0n BIC R0 , R0 , # MODEMASK; 安全起见,屏蔽模式位以外的其他位n ORR R1 , R0 , # IRQMODE ; 把设置模式位设置成需要的模式n MSR CPSR- cxsf , R1 ; 转到IRQ 模式n LDR SP , = UndefStack ;设置SP- irq ,n ORR R1 , R0 , # FRQMODEn MSR CPSR-

22、cxsf , R1 ; 转到FRQ 模式n LDR SP , = FIQStackn 注意:上面用到的两个SP 是不同的物理寄存器:SP- irq ,SP- fiq 。2、3 改变处理器模式n ARM处理器一共有7 种模式。除用户模式外,其他6 种都是特权模式。因为在初始化过程中,许多操作都需要在特权模式下才能进行(比如CPSR 的修改) ,所以要特别注意不能过早的进入用户模式。一般的,在初始化过程中会经历如下图所示的模式变化:n 在最后阶段才能把模式转换到最终应用程序运行所需的模式,一般是用户模式。n 内核级的中断使能(CPSR 的I、F状态位) 也可以考虑在这一步进行,如果系统中另外存在一

23、个专门的中断控制器,这样做总是安全的,否则就需要考虑过早地打开中断可能带来的问题,比如在系统初始化完成之前就触发了有效中断,导致系统的死机。 3、下载系统映像n 系统映像是由bootloader 从主机下载到目标板的。通过bootloader 提供的命令行或者交互Shell 界面可以指定内核映像和文件系统映像的下载位置,也可以检查目标板上内存地址中的内容。在目标端的bootloader 程序中提供了接收映像的服务端程序,在主机端的程序提供了发送数据包动作(可以通过串口,也可以通过以太网卡等其他方式发送) 。发送系统映像结束之后,如果硬件允许,bootloader 还可以提供命令将下载成功的映像

24、写入到Flash 中。一般bootloader 都提供对Flash 的驱动,支持擦写命令,为写入Flash 和检查Flash 带来了很大的便利。n 通过指定具体的启动地址,bootloader 也可以启动已经下载好的系统,把程序流程转入主应用程序。最简单的一种情况是:n IMPORT main ; get the label main if main() is defined in other filesn B main ; jump to main () 4、存储器管理4. 1 存储器空间的划分n 由于系统软件平台由以下部分组成:系统引导程序,嵌入式操作系统内核,文件系统n 软件平台固化在F

25、lash 中,通常根据软件平台的内容对Flash 的地址空间进行分区,一般分三个区:Bootloader,Linux 内核,文件系统。n 系统引导程序(bootloader) ,代码量虽少,但是作用非常大,相当于PC 上的BIOS ,负责将操作系统内核固化到Flash中和系统初始化工作,然后将系统控制权交给操作系统。n 嵌入式操作系统内核是嵌入式系统加电运行后的管理平台,负责实时性任务和多任务的管理。n 文件系统是嵌入式系统软件平台占用存储量最大的一部分,也是与用户开发最相关的一部分;它存储了系统配置文件、系统程序、用户应用程序和必需的驱动程序。4. 2 接口和时序的划分n 一个复杂的系统可能

26、存在多种存储类型的接口,需要根据实际的系统设计对此加以正确配置。对同一种存储器类型来说,也因为访问速度的差异,需要不同的时序配置。通常Flash 和SRAM同属于静态存储器类型,可以共用同一个存储器端口; 而DRAM因为有动态刷新和地址线复用等特性,通常配有专用的存储器端口。n 存储器端口的接口时序是非常重要的,这会影响到整个系统的性能。因为一般系统运行的速度瓶颈都存在于存储器的访问,所以存储器访问时序应尽可能地快; 但同时又要考虑由此带来的稳定性问题,只有根据多次测试后才能确定最佳的时序配置。 4. 3 存储器地址重映射(remap)n 当一个系统上电后,程序将自动从0 地址开始执行,因此在

27、系统的初始状态,必须保证在0 地址处存在正确的代码,即要求0 地址开始处的存储器是非易性的ROM或Flash等。但是因为ROM或Flash 的访问速度相对较慢,每次中断发生后,都从读取ROM 或Flash 上面的中断向量表开始,影响了中断响应速度。因此,有的系统便提供一种灵活的地址重映射方法,可以把0 地址重新指向到RAM 中去。在这种地址映射的变化过程中要注意:程序的执行流程不能被这种变化所打断。ARM系统引导bootloader1、环境设置硬件环境n ARM为内核的处理器、存储器和必要的外部接口与设备。n 内嵌ARM7TDMI的Samsung公司的S3C4510处理器n 存储器使用2MB的

28、Flash和16MB的SDRAMn 外部接口除了用于下载和通信的串口,还配备了一个以太网接口软件环境n 系统引导程序、嵌入式操作系统内核、文件系统。n 系统引导程序通常也称为bootloader,代码量虽少,但是作用非常大,相当于PC上的BIOS,负责将操作系统内核固化到Flash中和系统初始化工作,然后将系统控制权交给操作系统。n 嵌入式操作系统内核是嵌入式系统加电运行后的管理平台,负责实时性任务和多任务的管理。ARM7TDMI是一款没有MMU的处理器,因此采用CLinux作为本系统的操作系统内核。CLinux是Linux是一个分支,专为无MMU的处理器设计。n 文件系统是嵌入式系统软件平台

29、占用存储量最大的一部分,也是与用户开发最相关的一部分。它存储了系统配置文件、系统程序、用户应用程序和必需的驱动程序。软件分区n 软件平台固化在Flash中。通常根据软件平台的内容对Flash的地址空间进行分区,一般分三个区,分别存放bootloader、CLinux内核和文件系统。n 分区方式有两种:n 一种是根据三个部分预定的存储空量,允许bootloader、内核和文件系统拥有自己固定的分区和首地址; 该方式,虽然可能会浪费一部分Flash空间,但是方便内核的加载和文件系统的挂载,同时也利于系统的调试和开发。n 另一种就是按照这三部分的实际分配区间,一个部分紧跟着另一个部分后存储,没有固定

30、的分区和首地址。可以充分利用Flash的存储区间,节约成本。2、系统配置系统固化n 固化常见方法JTAG口;将内核和文件系统的映像文件烧写到指定的Flash位置上以太网接口;将映像文件下载到Flash中串口;将映像文件烧写到Flash。n 本系统采用采用串口烧写Flash这是因为一方面配置一个串口方便且廉价,而JTAG烧写还要配置昂贵的 JTAG仿真器和相关的驱动程序以及协议转换程序,网口下载还要有以太网支持;另一方面CLinux默认通过串口打印其运行的信息,那么串口不但可以提供烧写Flash的功能,还可作为调试CLinux内核的通道。n 固化的信息内容:在本系统中,Flash在刚开始时,只存

31、储了bootloader,存储CLinux内核,文件系统系统初始化n 在本系统中,Flash在刚开始时,只存储了bootloader,还没有存储CLinux内核和文件系统。因此bootloader在系统加电完成初始化工作后,要初始化一条链接主机和目标机的串口通道,并提供串口下载功能。n 因为系统刚加电时,操作系统的内核还没有被加载,系统的初始化工作由bootloader完成。它主要是将系统、初始化存储系统、配置ARM各种模式下的数据栈、使能屏常中断、根据需要切换处理器模式和状态。CLinux内核运行方式n 两种运行方式:n 内核加载方式。一种方式是直接在Flash中运行CLinux自带的引导程

32、序;该方式是bootloader进行系统初始化工作后,跳到内核固化在Flash中的首地址处,将控制权交给CLinux,开始在Flash中逐句执行内核自带的引导程序,由该引导程序完成内核的加载工作。n SDRAM加载方式。另一种方式是将固化在Flash中的内核先拷贝到SDRAM的某一段地址区间,再从该段地址区间的首地址运行uCLinux内核。该方式是bootloader完成系统初始化工作后,把内核的映像文件由Flash拷贝到SDRAM中,再从SDRAM中执行CLinux内核的引导程序,加载CLinux内核。n 在本系统中,由于采用NOR型Flash存储bootloader、内核和文件系统,所以可

33、以直接访问内核所在地址区间的首地址,执行内核自己的引导程序,而且内核自带的引导程序功能强大,可以方便地实现内核的加载,向内核传递有关的硬件参数。本系统采用第一种加载方式。地址映射表n 地址映射表的配置包括:设置Flash地址空间SDRAM地址空间外部I/O地址范围和处理器寄存器地址范围。n ARM处理器加电后执行在地址0x0处的代码,因此在加电启动时,首先将存储了bootlader的Flash地址空间设置为 0x0-0x200000,将SDRAM的地址空间设置为0x1000000-0x2000000,当内核引导程序将内核拷贝到SDRAM后,再设置 SDRAM的地址空间为0x00-x100000

34、0,而Flash的地址空间为0x1800000-0x1A00000。这需要在内核引导程序中对 Flash和SDRAM的地址空间进行重映射。3、系统引导BOOTLOADER启动模式n 两种启动模式:自举模式和内核启动模式。n 自举模式也称为 bootstrap模式,该模式的主要作用是目标机通过串口与主机通信,可以接收主机发送过来的映像文件,例如内核、文件系统和应用程序,并将其固化在 Flash中,也可以将Flash中的映像文件上传到主机。n 内核启动模式允许嵌入式系统加电启动后加载CLinux内核,将系统交由CLinux操作系统管理。n 在本系统中,采用一个开关实现两种模式的切换。在系统的Fla

35、sh中只有 bootloader时,首先将开关拔上去,提示系统进入自举模式,加电启动后,bootloader根据开关的状态,进入自举模式,接收主机发送过来的内核和文件系统的映像文件。接着将开关拔下来,提示系统进入内核启动模式,再按链,bootloader根据此时的开关状态进入内核启动模式,加载内核和文件系统,由操作系统接管系统。4、CLinux自带引导程序加载内核CLinux自带的文件n 代码在linux/arch/armnommu/boot/compressed目录n Head.s的作用最关键,它完成了加载内核的大部分工作;n Misc.c则提供加载内核所需要的子程序,n 解压内核的子程序是

36、Head.s调用的重要程序,n 内核的加载还必须知道系统必要的硬件信息,该硬件信息在hardware.h中并被Head.s所引用。CLinux引导流程n 当bootloader将控制权交给内核的引导程序时,第一个执行的程序就是 Head.s。n Head.s被执行首先配置S3C4510的系统寄存器;再初始化S3C4510的ROM、RAM以及总线等控制寄存器,将Flash和SDRAM的地址范围分别设置为0x0-0x200000和0x1000000-0x2000000;接着将内核的映像文件从Flash拷贝到SDRAM,并将Flash和SDRAM的地址区间分别重映射为0x1800000-0x1A00

37、000和0x0- 0x1000000;n 调用Misc.c调用Misc.c中的解压内核函数(decompress_kernel),对拷贝到SDRAM的内核映像文件进行解压缩;最后跳转到执行调用内核函数(call_kernel),将控制权交给解压后的CLinux系统。n 执行Call_kernel执行Call_kernel函数实际上是执行linux/init/main.c中的start_kernel函数,中包括处理器结构的初始化、中断的初始化、进程相关的初始化以及内存初始化等重要工作。5、启动引导方案优点n 实现了自举模式和内核启动模式以及两种模式的切换n 本方案采用简易的串口通道作业主机与目标

38、系统的通信渠道n 针对ARM7TDMI的无MMU特性,采用修改后的CLinux内核引导程序加载操作系统和初始化操作系统环境,解决内核加载的地址重映射问题和操作系统的内存管理问题无线通讯类型红外数据通讯IRDAn 红外通讯协议将红外数据通讯所采用的光波波长的范围限定在850nm至900nm之内n 更适合应用在短距离无线通讯的场合,进行点对点的直线数据传输n IRDA 有着成本低廉、连接方便、简单易用和结构紧凑的特点n IRDA标准包括三个基本的规范和协议:n 物理层规范(Physical Layer Link Specification)n 连接建立协议(Link Access Protocol

39、:IrLAP)n 连接管理协议(Link Management Protocol:IrLMP )IEEE802.11无线通讯标准n IEEE802.11有三个标准:n IEEE802.11n IEEE802.11an IEEE802.11bn IEEE802.11业务主要限于数据存取,传输速率最高只能达到2Mbpsn IEEE802. l 1b标准:IEEE802.l 1b (Wi-Fi)使用开放的2.4GHz直接序, 。IEEE802. l l b运作模式基本分为两种:点对点模式和基本模式,点对点模式是指无线网卡和无线网卡之间的通信方式。基本模式是指无线网络规模扩充或无线和有线网络并存时的通

40、信方式.n IEEE802.11 a标准:IEEE802.1Ia T作在5GHz U-NII频带,物理层速率可达54Mbps,传输层可达25Mb.采用正交频分复用(OFDM)的独特扩频技术.优于IEEE802. l 1b.家庭射频家庭射频HomeRFn HomeRF=无绳电话技术DECT+无线局域网WLANn 共享无线应用协议(SWAP: Shared Wireless Access Protocol)n 适合话音和数据业务,并且特地为家庭小型网络进行了优化蓝牙技术Bluetoothn 蓝牙技术是一种低功率短距离的无线链接技术标准的代称,其实质是要建立通用的无线空中接口及其控制软件的公开标准,

41、使通信和计算机进一步结合,使不同厂家生产的便携式设备在没有电线或电缆相互连接的情况下,能在近距离范围内具有互用、互操作的性能。n 优点n 适用设备多n 工作频段全球通用n 安全加密、抗干扰能力强n 多路多方向链接n 通信距离10Mn 连接对象MAX7个无线通讯比较n IRDA技术适用于传输速率高、使用次数少、移动范围小的设备,如打印机、扫描仪和数码相机等:n IEEE802.11标准适用于传输距离长、速度要求高的应用,它主要面向大规模工业和商业方面的应用;n HomeRF是专门为家庭用户设计的,它通过一台主机再移动数据和语音设备之间实现通讯;n Bluetooth技术面向的是小范围的移动设备,从技术本质上来说,它是一种电缆替代技术,它适合在嵌入式的便携设备中使用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com