基于嵌入式ARM9的μCOS-II移植

基于嵌入式ARM9的μCOS-II移植
基于嵌入式ARM9的μCOS-II移植

嵌入式系统原理与设计

目录

一、简介

1.1 ARM9与S3C2440简介 (1)

1.2μCOS-II简介 (3)

二、μCOS-II在ARM9上移植

2.1移植的可行性分析 (5)

2.2移植过程 (6)

2.3移植测试 (11)

一、简介

1.1 ARM9与S3C2440简介

1.ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包括ARM9TDMI 和ARM9E-S等系列。

ARM9采用哈佛体系结构,指令和数据分属不同的总线,可以并行处理。在流水线上,ARM7是三级流水线,ARM9是五级流水线。由于结构不同,ARM7的执行效率低于ARM9。平时所说的ARM7、ARM9实际上指的是ARM7TDMI、ARM9TDMI软核,这种处理器软核并不带有MMU和cache,不能够运行诸如linux这样的嵌入式操作系统。而ARM公司对这种架构进行了扩展,所以有了ARM710T、ARM720T、ARM920T、ARM922T 等带有MMU和cache的处理器内核。

2.在ARM9系列处理器中S3C2440A是三星公司推出的一款功能强大,功耗极低的基于ARM920T核心的嵌入式处理器,它为手持设备和普通应用提供了低功耗和高性能的小型芯片微控制器的解决方案。

S3C2440A采用ARM920T内核,集成如下片上功能:

● 1.2V内核,1.8V/2.5V/3.3V储存器,3.3V扩展I/O,16KB指令Cache(I-Cache)/16KB

数据Cache(D-Cache)

●外部储存控制器(SDRAM控制盒片选逻辑)

●集成LCD专用DMA的LCD控制器(支持最大4K色STN和256K色TFT)

● 4路拥有外部请求引脚的DMA控制器

● 3路URAT(IrDA1.0,64-Byte Tx FIFO,64Byte Rx FIFO)

● 2路SPI

● IIC总线接口(多主支持)

● IIS音频编解码器接口

● AC`97编解码器接口

● 1.0版SD主接口,兼容2.11版MMC接口

● 2路USB主机控制/1路USB期间控制(ver1.1)

● 4路PWM定时器/1路内部定时器/看门狗定时器

● 8路10位ADC和触摸屏接口

●具有日历功能的RTC

●摄像头接口(支持最大4096x4096的输入,2048x2048缩放输入)

● 130个通用I/O,24个外部中断源

●电源控制:正常,慢速,空闲,睡眠模式

●带PLL的片上时钟发生器

工作电压:

内核: 300MHZ@1.20V

400MHZ@1.30V

储存器:1.8V/2.5V/3.0V/3.3V

I/O: 3.3V

操作频率:

Fclk: 400MHZ

Hclk: 136MHZ

Pclk: 68MHZ

接下来的Table1-1位管脚的位置及名称,在Figure1-2管脚分配图上横坐标为数字,纵坐标

为字母,交叉点坐标为PinNumber,在表中被分配了不同的名字。

Table1-2为引脚在CPU各状态下所处的状态与功能。

表1-2的说明:1、@BUS REQ显示了管脚在外部总线时的状态,此时总线被其他总线控制器控

制。

2、'-'表示在总线请求状态中无变化。

3、Hi-z或Pre表示高阻或先前的状态,由设置MISCCR决定。

4、AI/AO表示模拟输入/模拟输出。

5、P,I,O分别表示电源,输入和输出。

6、‘I/O state @nRESET’表示nRESET处于低电平下管脚状态

1.2μCOS-II简介

μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。

μC /OS-II是一个完整的、可移植、可固化、可裁剪的抢占式实时多任务内核。μC/OS-II绝大部分的代码是用ANSII的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。至今,从8位到64位,μC/OS-II已在超过40种不同架构上的微处理器上运行。μC/OS-II已经在世界范围内得到广泛应用,包括很多领域,如手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制上。

μC/OS-II的特点:

1、源代码:μC/OS-II全部以源代码的方式提供给使用者(约5500行)。该源码清晰易读,结构协调,且注解详尽,组织有序;

2、可移植(portable):μC/OS-II的源代码绝大部分是用移植性很强的ANSI C 写的,与微处理器硬件相关的部分是用汇编语言写的。μC/OS-II可以移植到许许多多不同的微处理器上,条件是:该微处理器具有堆栈指针,具有CPU内部寄存器入栈、出栈指令,使用的C编译器必须支持内嵌汇编,或者该C语言可扩展和可链接汇编模块,使得关中断和开中断能在C语言程序中实现;

3、可固化(ROMable):μC/OS-II是为嵌入式应用而设计的,意味着只要具备合适的系列软件工具(C编译、汇编、链接以及下载/固化)就可以将μC/OS-II嵌入到产品中作为产品的一部分;

4、可裁减(scalable):可以只使用μC/OS-II中应用程序需要的系统服务。可裁减性是靠条件编译实现的,只需要在用户的应用程序中定义那些μC/OS-II中的功能应用程序需要的部分就可以了;

5、可抢占性(preemptive):μC/OS-II是完全可抢占型的实时内核,即μC/OS-II 总是运行就绪条件下优先级最高的任务;

6、多任务:μC/OS-II可以管理64个任务。赋予每个任务的优先级必须是不相同的,这就是说μC/OS-II不支持时间片轮转调度法(该调度法适用于调度优先级平等的任务);

7、可确定性:绝大多数μC/OS-II的函数调用和服务的执行时间具有可确定性。也就是说用户能知道μC/OS-II的函数调用与服务执行了多长时间。进而可以说,除了函数OSTimeTick()和某些事件标志服务,μC/OS-II系统服务的执行时间不依赖于用户应用程序任务数目的多少;

8、任务栈:每个任务都有自己单独的栈。μC/OS-II允许每个任务有不同的栈空间,以便降低应用程序对RAM的需求;

9、系统服务:μC/OS-II提供许多系统服务,比如信号量、互斥信号量、事件标志、消息邮箱、消息队列、时间管理等等;

10、中断管理:中断可以使正在执行的任务暂时挂起。如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可以达255层;

11、稳定性和可靠性:μC/OS-II的每一种功能、每一个函数以及每一行代码都经过了考验和测试,具有足够的安全性与稳定性,能用于与人性命攸关、安全性条件极为苛刻的系统中。

二、μCOS-II在ARM9上移植

2.1移植的可行性分析

所谓操作系统的移植,是指使一个实时操作系统能够在某个微处理器平台上运行。uC/OS-II其90%的代码是由标准的C语言写成的,移植方便。移植的主要工作是修改部分与处理器硬件相关的代码。而移植uC/OS-II满足的条件有:

1)处理器的C编译器能产生可重入代码

可重入的代码指的是一段代码(比如:一个函数)可以被多个任务同时调用,而不必担心会破坏数据。也就是说,可重入型函数在任何时候都可以被中断执行,过一段时间以后又可以继续运行,而不会因为在函数中断的时候被其他的任务重新调用,影响函数中的数据

2)在程序中可以打开或者关闭中断

在uC/OS-II中,可以通过:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()宏来控制系统关闭或者打开中断。这需要处理器的支持,而在ARM7的处理器上,可以设置相应的寄存器来关闭或者打开系统的所有中断。

3)处理器支持中断,并且能产生定时中断(通常在10—100Hz之间)uC/OS-II是通过处理器产生的定时器的中断来实现多任务之间的调度的,ARM7的处理器上可以产生定时器中断。

4)处理器支持能够容纳一定量数据的硬件堆栈

uC/OS-II进行任务调度的时候,会把当前任务的CPU寄存器存放到此任务的堆栈中,然后,再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。所以,寄存器的入栈和出栈是uC/OS-II多任务调度的基础。ARM7处理器中有专门的指令处理堆栈,可以灵活的使用堆栈。

5)处理器有将堆栈指针和其他CPU寄存器存储和读出到堆栈(或者内存)的指令

综上所述,ARM9符合uC/OS-II操作系统的移植条件,可以在ARM9上实现系统移植。

2.2移植过程

将uC/OS-II 移植到ARM处理器上,需要修改三个与ARM9体系结构相关的文件。它们是OS_CPU.H,OS_CPU_A.S,OS_CPU_C.C。

以下分别介绍这三个文件的移植工作:

1.OS_CPU.H文件中的主要内容包括:

a)把编译器的数据类型重定义为uCOS-II内核所用的数据类型;

b)编写相应的开关中断函数;

c)定义单个堆栈的数据宽度;

d)定义微处理器的堆栈的增长方向。

a)由于不同的微处理器有不同的字长,所以uCOS-II的移植工作包括了一系列的数据类型的重定义,以确保其可移植性。虽然uCOS-II不用浮点数据,但仍定义了浮点数据类型。

typedef unsigned char BOOLEAN; //布尔变量

typedef unsigned char INT8U; //无符号8位

typedef signed char INT8S; //有符号8位

typedef unsigned short INT16U; //无符号16位

typedef signed short INT16S; //有符号16位

typedef unsigned int INT32U; //无符号32位

typedef signed int INT32S; //有符号32位

typedef float FP32; //单精度浮点型

typedef double FP64; //双精度浮点型

#define BYTE INT8S //定义和以前兼容的数据类型

#define UBYTE INT8U

#define WORD INT16S

#define UWORD INT16U

#define LONG INT32S

#define ULONG INT32U

b) 与所有的实时内核一样,uCOS-II需要先禁止中断,然后再访问代码的临界区,并在访问完成后重新允许中断。这样,就使得uCOS-II能够保护临界区的代码免受

多任务或中断服务子程序的侵扰。在移植过程中,根据使用的编译器和处理器的不

同,对开中断和关中断函数的处理上会稍有不同,在ADS编译器和ARM920T下一

般的使用方法2或方法3。

方法2:

#if OS_CRITICAL_METHOD == 2

#define OS_ENTER_CRITICAL() IRQFIQDE //关中断

#define IRQFIQDE __asm

{

mrs r0, CPSR;

stmfd sp!, {r0};

orr r0, r0, #N0INT;

msr CPSR_c, r0;

}

#define OS_EXIT_CRITICAL() IRQFIQRE //开中断

#define IRQFIQRE __asm

{

ldmfd sp!, {r0};

msr CPSR_c, r0;

}

#endif

方法3

typedef unsigned int OS_CPU_SR; // OS_CPU_SR为32位

这条语句定义了CPU状态寄存器的容量,即CPSR的长度,它进一步定义了变量

cpu_sr的长度,即

OS_CPU_SR cpu_sr;

#if OS_CRITICAL_METHOD == 3

#define OS_ENTER_CRITICAL() (cpu_sr = OSCPUSaveSR())

//关中断

#define OS_EXIT_CRITICAL() (OSCPURestoreSR(cpu_sr))

//开中断

#endif

在OS_CPU_A.s中调用一下两段程序

EXPORT OSCPUSaveSR

OSCPUSaveSR

mrs r0, CPSR //保存当前的CPSR,即保存到了cpu_sr中

orr r1, r0, #N0INT //把当前的CPSR,加屏蔽保存到r1中

msr CPSR_c, r1 //把屏蔽的值给CPSR

mov pc, lr //返回

EXPORT OSCPURestoreSR

OSCPURestoreSR

msr CPSR_c, r0 //把关中断前保存到cpu_sr中的值恢复

mov pc, lr //返回

这样,就可以实现方法3来开中断或关中断了。

c) 接下来,用户还必须将任务的堆栈数据类型通知uCOS-II,以确定出入栈的宽度。typedef unsigned int OS_STK; //单个堆栈的宽度32位

d)最后,要确定堆栈的生长方向,大多数微控制器和微处理器的堆栈方向是由高地址

向低地址方向生长的。但有些微处理器却是相反的,uCOS-II可以使用两种方式工作。

#define OS_STK_GROWTH 1 //由高地址向低地址生长

#define OS_STK_GROWTH 0 //由低地址向高地址生长

三星的ARM9系列单片机是由高地址向低地址生长的。

2.在文件OS_CPU_C.C中

主要包括10个函数,其中一个是任务堆栈初始化函数,其它

9个为操作系统扩展的钩子函数。在OSTsakCreate()和OSTsakCreateExt()中,通过调用任务堆栈初始化函数OSTaskStkInit()来初始化任务的堆栈结构,初始化完毕后,堆

栈看起来就像刚发生过并将所有的寄存器内容保存到该任务堆栈中的情形一样。

OS_STK *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt)

{

OS_STK *stk;

Opt = opt; // 'opt' 没有使用,预防警告错误

Stk = ptos; //加载堆栈指针

*(stk) = (OS_STK)task; //进入点

*(--stk) = (INT32U)0; // lr

*(--stk) = (INT32U)0; // R12

*(--stk) = (INT32U)0; // R11

*(--stk) = (INT32U)0; // R10

*(--stk) = (INT32U)0; // R9

*(--stk) = (INT32U)0; //R8

*(--stk) = (INT32U)0; // R7

*(--stk) = (INT32U)0; // R6

*(--stk) = (INT32U)0; // R5

*(--stk) = (INT32U)0; // R4

*(--stk) = (INT32U)0; // R3

*(--stk) = (INT32U)0; //R2

*(--stk) = (INT32U)0; // R1

*(--stk) = (INT32U)p_arg; //R0:argument

*(--stk) = (INT32U)0x00000013L; // CPSR (SVC mode, Enable both IRQ and

//FIQ interrupts)

return (stk); //返回堆栈指针

}

钩子函数是为用户提供扩展的函数,根据具体的实际要求添加函数的具体内容。

3.文件OS_CPU_A.S中主要包括5个函数:

void OSStarHighRdy 启动最高优先级任务

void OSIntCtxSw 中断中的任务切换

void OStxSw 任务切换

void OSCPUSaveSR 保存中断前的寄存器状态

void OSCPURestoreSR 中断完成后,恢复中断前的状态

这5个函数主要完成的任务是:当uCOS-II初始化完成后,它要寻找最高优先级的任务,找到后跳到最高优先级任务中执行。

OSStartHighRdy()

μC/OS-II启动多任务环境的函数叫做OSStart(),用户在调用OSStart()函数之前,必须已经建立了一个或多个任务。OSStart()最终调用OSStartHighRdy()来使就绪态任务中优先级最高的任务开始运行,这个函数的示意性代码如下所示:

void OSStartHighRdy(void)

{

调用用户定义的OSTaskSwHook(); (1)

OSRunning = TRUE; (2)

获取将要恢复运行任务的堆栈指针:

SP = OSTCBHighRdy->OSTCBStkPtr; (3)

从新任务堆栈中恢复处理器的所有寄存器; (4)

执行中断返回指令; (5)

}

以上示意性代码对应的汇编代码见程序清单6.20。

程序清单3.0 OSStartHighRdy()函数代码

OSStartHighRdy

;----------------------------------------------------------------------------------

; OSTaskSwHook()

; OSRunning = TRUE;

;----------------------------------------------------------------------------------

BL OSTaskSwHook

LDR R0, =OSRunning ; Indicate that multitasking has started

MOV R1, #1

STRB R1, [R0]

;----------------------------------------------------------------------------------

; Stack pointer = OSTCBHighRdy->OSTCBStkPtr;

;----------------------------------------------------------------------------------

LDR R0, =OSTCBHighRdy ;把OSTCBHighRdy的地址传给R0

LDR R0, [R0] ;把R0作为地址的内容传给R0

LDR SP, [R0] ;获得最高优先级任务堆栈指针

;----------------------------------------------------------------------------------

;下面是恢复最高优先级任务的状态

;----------------------------------------------------------------------------------

LDMFD SP!, {R0} ;从堆栈中弹出处理器状态到R0

MSR SPSR_cxsf, R0 ;恢复SPSR

LDMFD SP!, {R0} ;

MSR CPSR_cxsf, R0 ;恢复CPSR

LDMFD SP!, {R0-R12, LR, PC};将堆栈中的内容恢复到寄存器(R0-R12,LR,PC)

这部分代码是比较严格的按照μC/OS-II提供的示意性代码编写的。

3.2 OSCtxSw()

在μC/OS-II中,任务切换时会调用宏(或是函数)OS_TASK_SW(),μC/OS-II建议OS_TASK_SW()通过某种途径最终调用函数OSCtxSw()。μC/OS-II提供的OSCtxSw()示意性代码如下所示:

void OSCtxSw(void)

{

保存处理器寄存器; (1)

将当前任务的堆栈指针保存到当前任务的任务控制块中:

OSTCBCur->OSTCBStkPtr = 堆栈指针; (2)

调用用户定义的OSTaskSwHook(); (3)

OSTCBCur = OSTCBHighRdy; (4)

OSPrioCur = OSPrioHighRdy; (5)

得到将要重新开始运行的任务的堆栈指针:

堆栈指针= OSTCBHighRdy->OSTCBStkPtr; (6)

从新任务的任务堆栈中恢复处理器的所有寄存器; (7)

执行中断返回指令; (8)

}

以上示意性代码对应的汇编代码见程序清单3.1。

程序清单3.1 OSCtxSw()函数

OSCtxSw

STMFD SP!, {LR} ;获取当前任务堆栈指针

STMFD SP!, {R0-R12, LR} ;保存当前任务处理器寄存器状态到当前任务堆栈

MRS R0, CPSR ;

STMFD SP!, {R0} ;保存CPSR

MRS R0, SPSR

STMFD SP!, {R0} ;保存SPSR

LDR R0, =OSTCBCur

LDR R0, [R0]

STR SP, [R0] ;当前任务的堆栈指针保存到当前任务OS_TCB中

BL OSTaskSwHook

LDR R0, =OSTCBHighRdy ; OSTCBCur = OSTCBHighRdy;

LDR R1, =OSTCBCur

LDR R0, [R0]

STR R0, [R1]

LDR R0, =OSPrioHighRdy ; OSPrioCur = OSPrioHighRdy;

LDR R1, =OSPrioCur

LDRB R0, [R0]

STRB R0, [R1]

LDR R0, =OSTCBHighRdy

LDR R0, [R0]

LDR R0, [R0]

MOV SP, R0 ;得到需要恢复任务堆栈的指针

LDMFD SP!, {R0}

MSR SPSR_cxsf, R0 ;将所有处理器寄存器从新堆栈中恢复出来

LDMFD SP!, {R0}

MSR CPSR_cxsf, R0

LDMFD SP!, {R0-R12, LR, PC}

2.3移植测试

用户将uC/OS-II移植到ARM9后,紧接着的工作是验证移植的uC/OS-II是否正常工作。当修改完需要根据CPU更改的文件后,紧接着要把这些文件和uC/OS-II中与处理器无关的文件进行编译和连接,这里使用ADS1.2完成编译工作。

编写用户自定义的程序,主要是编写优先级不同的任务,不断的挂起和恢复任务来检验uC/OS-II是否成功运行。

截取部分用户自定义代码如下:

void Task0 (void *pdata)

{

INT8U err;

for (;;) {

printf("a\n\r");

OSTimeDly(500);

}

}

void Task1 (void *pdata)

{

INT8U err;

for (;;) {

printf("b\n\r");

OSTaskSuspend(4);//挂起TASK0

OSTimeDly(500);

}

}

void Task2 (void *pdata)

{

INT8U err;

for (;;) {

printf("c\n\r");

OSTaskResume(4);//恢复TASK0 OSTimeDly(500);

}

}

如果代码能成功运行,则确定移植成功。

arm9嵌入式课后答案

arm9嵌入式课后答案 【篇一:arm嵌入式系统结构与编程习题答案(全)】ass=txt>第一章绪论 1. 国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?答:国内嵌入式行业一个普遍认同的定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专业计算机系统。从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的剪裁利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专业计算机系统。 2.嵌入式系统是从何时产生的,简述其发展历程。 答:从20世纪70年代单片机的出现到目前各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了30多年的发展历史。 嵌入式系统的出现最初是基于单片机的。intel公司1971年开发出第一片具有4位总线结构的微处理器4004,可以说是嵌入式系统的萌芽阶段。80年代初的8051是单片机历史上值得纪念的一页。20世纪80年代早期,出现了商业级的“实时操作系统内核”,在实时内核下编写应用软件可以使新产品的沿着更快,更节省资金。20世纪90年代实时内核发展为实时多任务操作系统。步入21世纪以来,嵌入式系统得到了极大的发展。在硬件上,mcu的性能得到了极大的提升,特别是arm技术的出现与完善,为嵌入式操作系统提供了功能强大的硬件载体,将嵌入式系统推向了一个崭新的阶段。 3.当前最常用的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点。答:主要有嵌入式linux和嵌入式实时操作内核uc/os-ii 嵌入式linux操作系统是针对嵌入式微控制器的特点而量身定做的一种linux操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。主要有以下特点:源码开放,易于移植,内核小,功能强大,运行稳定,效率高等。 uc/os是源码工卡的实时嵌入式系统内核,主要有以下特点:源码公开,可移植性强,可固化,可剪裁,占先式,多任务,可确定性,提供系统服务等。

寄存器简单理解

GPIOB_BASE是一个地址,这个地址是GPIOB一系列寄存器的首地址,后面地址依次是GPIOB 的寄存器,将这个地址转换为结构体形式,并将后面寄存器按顺序定义在结构体里面,这样访问寄存器就可以通过引用结构体的形式了而不必书写寄存器的地址来访问寄存器。 寄存器用途: 1.可将寄存器内的数据执行算术及逻辑运算; 2.存于寄存器内的地址可用来指向内存的某个位置,即寻址; 3.可以用来读写数据到电脑的周边设备。 AX 累加器,得名原因是最初常使用ADD AX,n这样的指令 CX 计数器,得名原因是最常使用CX的值作为重复操作的次数 BX 常用作地址寄存器,如MOV AX,[BX],把BX所指地址中的数取到AX中去 DX 通用寄存器 所讲的寄存器都是以x86为基础的,那么这种CPU内,寄存器可分为以下几种: 1.EAX、EBX、ECX、EDX等通用寄存器——从通用上来讲,它所存储的东西,只要它的容积所容许的话,什么都是可以存储的; 2.CS、SS、ES等段寄存器——它所存储的只能是地址,它的作用是从寻址上可以体现出来; 3.EIP,也称为指令指针 4.EFLAGS寄存器,俗称为标志寄存器——所存储的是与CPU的每一个执行的指令有关。是关系到CPU每一个指令的执行相关内容与特殊的关联,即CPU所执行的指令是否违规,它的指令是否有进位,它的指令是否有溢出,都是在标志寄存器中能表现与表达出来; 5.浮点单元,这里面之所以只浮点单元,是因为在它里面还有一些小的寄存分类,主要是数学上的浮点上的计算 6.MMX指令使用的8个64位寄存器 7.单指令、多数据操作(SIMD,single-instruction,multiple-data)使用的8个128位XMM寄存器

基于ARM9的人脸识别系统 嵌入式报告 课程设计

嵌入式课程设计报告 学院信息电子技术 专业通信工程 班级 学号 姓名 指导教师 2017年07月01日

基于ARM9的人脸识别系统 一、引言 人脸识别背景和意义 人脸识别系统的研究始于20世纪60年代,80年代后随着计算机技术和光学成像技术的发展得到提高,而真正进入初级的应用阶段则在90年后期,并且以美国、德国和日本的技术实现为主;人脸识别系统成功的关键在于是否拥有尖端的核心算法,并使识别结果具有实用化的识别率和识别速度;“人脸识别系统”集成了人工智能、机器识别、机器学习、模型理论、专家系统、视频图像处理等多种专业技术,同时需结合中间值处理的理论与实现,是生物特征识别的最新应用,其核心技术的实现,展现了弱人工智能向强人工智能的转化语音识别、体形识别等,而指纹识别、虹膜识别等都不具有自然性,因为人类或者其他生物并不通过此类生物特征区别个体。 人脸识别具有这方面的特点,它完全利用可见光获取人脸图像信息,而不同于指纹识别或者虹膜识别,需要利用电子压力传感器采集指纹,或者利用红外线采集虹膜图像,这些特殊的采集方式很容易被人察觉,从而更有可能被伪装欺骗。 二、系统设计 1、硬件电路设计 (1)ARM9处理器 本系统所采用的硬件平台是天嵌公司的TQ2440开发板,该开发板的微处理器采用基于ARM920T内核的S3C2440芯片。 ARM9对比ARM7的优势:虽然ARM7和ARM9内核架构相同,但ARM7处理器采用3级流水线的冯·诺伊曼结构,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9则至少在200MHz 以上。指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30%左右。ARM7一般没有MMU(内存管理单元),(ARM720T有MMU)。 (2)液晶显示屏 为显示摄像头当前采集图像的预览,系统采用三星的320x240像素的液晶屏,大小为206.68cm。该液晶显示屏的每个像素深度为2bit,采用RGB565色彩空间。 (3)摄像头 摄像头采用市场上常见的网眼2000摄像头,内部是含CMOS传感器的OV511+芯片。CMOS传感器采用感光元件作为影像捕获的基本手段,核心是1个感光二极

ARM9嵌入式复习总结

ARM9嵌入式复习 第一章 1.嵌入式微处理器的分类。 a)什么是嵌入式微处理器? 1.嵌入式微处理器是嵌入式系统硬件层的核心,嵌入式微处理器将通用CPU中许多 由板卡完成的任务集成到芯片内部,从而有利于系统设计趋于小型化、高效率和高可靠性。嵌入式微处理器大多工作在为特定用户群所专门设计的系统中。 2.嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令 系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令集系统CISC(Complex Instruction Set Computer, CISC)。 b) 嵌入式微处理器分类 1.按照系列分:ARM系列、MIPS系列、PowerPC系列。 2.按照指令复杂程度分:CISC和RISC两类 2.微处理器划分: a)嵌入式微控制器 b)嵌入式微处理器 c)DSP处理器 d)嵌入式片上系统 e)多核处理器 3.嵌入式操作系统(EOS)的特性 EOS除具备了一般操作系统最基本的任务调度、同步机制、中断处理、文件处理等功能外,还具有如下特点:强实时性;支持开放性和可伸缩性的体系结构,具有可裁减性;提供统一的设备驱动接口;提供操作方便、简单、友好的图形GUI和图形界面;支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,提供强大的网络功能。 第二章 1.ARM7TDMI命名 2.3级流水线与总线架构

三级流水线: 流水线使用3个阶段,因此指令分为3个阶段执行 1.取指:从程序存储器中读取指令,放入流水线中 2.译码:操作码和操作数被译码,决定执行什么功能,为下一个始终周期准备数据路 径所需要的控制信号。 3.执行:执行已译码的指令 注:程序计数器(PC)指向被取指的指令,而不是指向正在执行的指令 在正常操作的过程中,在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出 3.ARM的两种状态与7种工作模式 a)两种状态。 i.ARM状态:32位,这种状态下执行的是字方式的ARM指令; ii.Thumb状态:16位,这种状态下执行半字方式的Thumb指令。 注:两个状态之间的切换并不影响处理器模式或寄存器内容,可以使用BX指令切换两种状态.状态寄存器CPSR的T位反应了处理器运行不同指令的当前状态. b)7种工作模式。

ARM9上的嵌入式Linux系统移植

《自动化技术与应用》2009年第28卷第6期 Techniques of Automation & Applications | 43 1 引言 嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,是对功能、可靠性、成本、功耗有严格要求的专用计算机系统。它一般由以下几部分组成: 嵌入式微处理器、外围硬件设备、嵌入式操作系统、及特定的应用程序。 当前,人类进入信息爆炸的时代,各类信息极度丰富,数字信息技术和网络技术的高速发展,只有借助于各种计算机,才能够对各类信息进行处理,它们已不再局限于以前的PC,而是由形态各异、性能千差万别的嵌入式系统来完成。而嵌入式操作系统主要有:嵌入式Linux 、WindowsCE 、Vxworks 、uC/OS-II 等[1]。本文主要研究嵌入式Linux 在嵌入式系统中的应用。 2 嵌入式Linux 操作系统及特点 将Linux 应用于嵌入式环境,是基于其具有以下特点:(1)Linux 操作系统是层次结构,并且内核源代码完全开放。不同领域和不同层次的用户可以根据自己应用的需要,对内核进行修改,能够低成本的开发出满足自己需要的嵌入式系统。(2)其具有强大的网络支持功能。Linux 诞生于因特网时代,并具有 ARM9上的嵌入式Linux 系统移植 邹颖婷,李绍荣 (电子科技大学光电信息学院,四川 成都 610054) 摘 要:Linux 操作系统在各个嵌入式领域有着越来越广泛的应用。主要研究了在ARM9体系结构上,嵌入式Linux 系统的移植。介 绍了嵌入式Linux 操作系统、移植目标平台SBC2410、及Linux 内核源代码的目录结构。然后详细讲述了在SBC2410硬件平台上实现Uboot 移植的过程,及概要介绍了Linux 操作系统内核移植的过程。最后将嵌入式Linux 系统成功移植上SBC2410平台。 关键词:ARM9;嵌入式Linux;Uboot 移植;内核移植 中图分类号:TP311.54 文献标识码:B 文章编号:1003-7241(2009)06-0043-03 Transplant of the Linux System on ARM9 ZOU Ying-ting, LI Shao-rong ( School of Opto-Electronic Information, University of Electronic Science and Technology of China, Chengdu 610054 China )Abstract: Linux OS has been more and more widely applied in many embedded areas. This paper introduces the transplantation of the Embedded Linux System on the ARM9. The Embedded Linux OS, the SBC2410 board, and the directory structure of the Linux kernel are introduced. The transplant process of the Uboot and of the Linux kernel are also discussed. Key words: ARM9; embedded Linux; transplantation of Uboot; transplantation of the Linux kernel 收稿日期:2009-01-04 Unix 的特性,这保证了它支持所有标准因特网协议,并且可以利用Linux 的网络协议栈,将其开发成为嵌入式的TCP/IP 网络协议栈。此外,Linux 还支持ext2、fat16、fat32、romfs 等文件系统,为嵌入式系统应用开发打下了很好的基础。(3)Linux 具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。而且,Linux 也符合IEEE POSIX.1标准,使应用程序具有较好的可移植性[2]。 3 SBC2410硬件平台介绍 SBC2410是一款基于三星公司ARM9处理器S3C2410A,支持ARM-Linux 、WindowsCE 等操作系统的嵌入式硬件平台。平台的主要硬件资源有:一片64M SDRAM,一片64M Nand Flash,一片1M Nor Flash,一个串口 COM0,一个USB Host A 型接口,一个USB Slave B 型接口,一个标准JTAG 接口,等等。平台支持Linux2.4.18内核版本。 4 嵌入式Linux 系统移植 移植主要包括引导加载程序Uboot 的移植和Linux2.4.18内 计算机应用 Computer Applications

ARM嵌入式系统开发:软件设计与优化

作者简介 Andrew N.Sloss于1992年获得Herefordshire大学(英国)计算机科学学士学位,英国计算机协会认证注册工程师(C.Eng,MBCS)。他已在计算机行业工作了16年,从1987年开始参与有关ARM处理器的研发,在ARM处理器上开发了众多领域的应用项目,积累了丰富的经验。他为Emerald出版集团(英国)设计了首个能够在ARM2和ARM3处理器上运行的针对中文和埃及象形文字的编辑系统。他在ARM公司工作了6个多,目前是ARM在美国加州Los Gatos的技术销售工程师,负责为开发新产品的公司提供建议和支持。 编辑推荐 从事ARM嵌入式系统软件开发的每一位工程师的桌上都应摆着这本书。对于初学者来说,它是一本详尽、透彻的使用指南;对于ARM专家来说,它则是一本有益的参考书。从审阅本书的第一稿以来,我就一直在使用这本书,我愿向任何希望从基于ARM的产品获得最大收益的人推荐这本书。

在过去的10年间,ARM体系统结构已经成为世界上最流行的体系结构之一,从蜂窝电话到汽车制动系统,在这些产品中使用了超过20亿片基于ARM的处理器。许多半导体厂商和产品设计公司组成了全球范围的ARM开发者团体,包括软件开发者、系统设计师和硬件设计师。就ARM系统和软件开发来说,到目前为止,还没有其它任何一本书籍能够真正满足其需求,本书将填补这一空白。 本书涵盖了ARM和Thumb指令集、Intel的XScale处理器,概括了ARM体系结构的不同版本之间的差异,示范了如何实现DSP算法,解释了异常和中断处理,描述了围绕ARM内核的cache技术,以及最有效的存储器管理技术。最后一章介绍了ARMv6体系结构的特征和ARM未来的发展,以及对指令集所做的最新改进,这些改进增强了ARM体系结构的DSP和多媒体处理能务。 本收特色 本书从系统和软件我角度来描述了ARM内核,这是与其它书的显著差别。 作者结合了丰富的ARM软件工程经验和ARM开发者的需要的广泛、透彻的知识。 书中提供了许多实用的运行代码范例,并作了详尽的解释,可以从出版商的网站下载 :https://www.360docs.net/doc/8418772428.html,/companions/1558608745。 包含了一个简单的嵌入式操作系统。 本书简介 本书从软件设计的角度,全面、系统地介绍了ARM处理器的基本体系结构和软件设计与优化方法。内容包括:ARM处理器基础;ARM/Thumb指令集;C语言与汇编语言程序的设计与优化;基本运算、操作的优化;基于ARM的DSP;异常与中断处理;固件与嵌入式OS;cache与存储器管理 ;ARMv6体系结构的特点等。全书内容完整,针对各种不同的ARM内核系统结构都有详尽论述,并有大量的例子和源代码。附录给出了完整的ARMv4/v5/Thumb指令的功能、编码、周期定时以及汇编参考。 本书适于从事ARM嵌入式系统教学与研发,或想把其它嵌入式平台的软件移植到ARM平台上去的专业技术人员使用,要求对ARM处理器有一定的了解,并有C语言和汇编语言基础。若在编译原理、操作系统、数字信号处理、计算机体系结构等方面有一定的基础,则效果会更好。本书也可作为嵌入式系统专业方向的本科生和研究生相关课程的教材或教学参考书。 目录 第1章 基于ARM的嵌入式系统 1.1 RISC设计思想 1.2 ARM设计思想 1.3 嵌入式系统的硬件 1.3.1 ARM总线技术 1.3.2 AMBA总线协议 1.3.3 存储器 1.3.4 外设 1.4 嵌入式系统的软件 1.4.1 初始化(启动)代码 1.4.2 操作系统 1.4.3 应用程序 1.5 总结 第2章 ARM处理器基础 2.1 寄存器 2.2 当前程序状态寄存器 2.2.1 处理器模式 2.2.2 分组寄存器

西门子PLC的寄存器结构

西门子PLC的寄存器结构 一访问数据 CPU 将信息存储在不同存储单元,每个位置均具有唯一的地址。可以显式标识要访问的存储器地址。这样程序将直接访问该信息。要访问存储区中的位,必须指定地址,该地址包括存 储器标识符、字节地址和位号(也称为“字节.位”寻址)。 表格--存储区 M存储器最多32个(256个位、32个字节、16个字),从MB0~MB31,MW0~MW30,MD0~MD28。 V存储器最多可到几千~几万个。 M是位地址。比如M0.0,M0.1等。

MB0、MB1是字节地址,包括8个位地址,从M0.0~M0.7,从 M1.0~M1.7。 MW0是字地址,包括MB0和MB1,即从M0.0~M1.7共16个位 地址。常用于寄存16位数据。 MD0是双字地址,包括MW0和MW1,即从M0.0~M3.7共32 个位地址。常用于寄存32位数据。 在程序执行期间,使用过程映像寄存器比直接访问输入或输出点更有优势。使用映像寄存器共有三个原因: ●在扫描开始时对所有输入进行采样可在扫描周期的程序执行阶段同步和冻结输入值。程序执行完成后,使用映像寄存器中的值更新输出。这样会使系统更稳定。 ●程序访问映像寄存器的速度比访问 I/O 点的速度快得多,从而可以更快地执行程序。 ● I/O 点是位实体,必须以位或字节的形式访问,但可以采用位、字节、字或双字的形式访问映像寄存器。因此,映像寄存器更为灵活。 使用“字节地址”格式可按字节、字或双字访问多数存储区(V、I、 Q、 M、 S、 L 和 SM)中的数据。要按字节、字或双字访问存储器中的数据,必须采用类似于指定位地址的方法指定地址。这包括区域标识符、数据大小标识和字节、字或双字值的起始字节地

基于ARM9的嵌入式Linux网络通信系统设计与实现

基于ARM9的嵌入式Linux网络通信 系统设计与实现

随着计算机技术的发展,嵌入式系统已经成为计算机领域的一个重要组成部分。Internet现已成为社会重要的基础信息设施之一,是信息流通的重要渠道,如何让嵌入式设备连接到Internet上,和其他通信系统进行信息交换是当前嵌入式技术领域研究的热点所在。本文结合实际应用需求,详细研究实现了一种基于S3C2410平台和Linux操作系统的嵌入式网络通信系统。 1.嵌入式网络通信系统总体设计 经过大量的资料收集比较,深入地研究分析并结合现有的实验条件,我们对系统的体系结构、硬件平台和软件系统做出了以下选择: 1)目前嵌入式CPU很多,选择哪款CPU要根据自己产品的实际需要。一般而言,首先应尽量选择系统集成度高、外围电路简洁的CPU;其次,还应综合考察CPU的各项性能指标;最后,还应该考虑软硬件开发环境的建立、厂家的货源以及代理的软件支持力度。经过比较, 本设计采用三星的S3C2410微处理器。这是一款高性价比、低功耗、高集成度的CPU,基于ARM920T内核,主频最高为203MHz,专为手持设备和网络应用而设计,能满足嵌入式系统中的低成本、低功耗、高性能、小体积的要求。 图1为硬件平台的总体设计[ 1 ] 。CPU S3C2410模块是开发板的核心部件。S3C2410 在包含ARM920T核的同时,增加了丰富的外围资源,主要包括1个LCD 控制器,支持STN 和TFT液晶显示屏; 3个通道UART; 4个通道DMA; 4个具有PWM功能的16位定时/计数器和1个16位内部定时器, 支持外部时钟源; 8通道10位ADC,最高速率可达500kB / s;触摸屏、IIS总线、SD 卡和MMC卡接口;117位通用I/O口和24位外部中断源。存储系统包括64MB的NAND Flash存储器模块和SDRAM存储器模块; Flash用于存放嵌入式操作系统、应用程序和用户数据等,并作嵌入式文件系统; SDRAM作为系统运行时的主要区域,用于存放系统及用户数据。通信模块包括串口和以太网接口模块;以太网接口为系统提供以太网接入的物理通道, UART接口则通过RS232可以和宿主机做串口通讯。JTAG调试接口用于系统的嵌入式调试。扩展总线扩展出了系统总线供今后继续开发使用。 图1 硬件平台结构框图

51单片机内部结构及寄存器一览

51单片机内部结构及寄存器一览 在513、PSW-----程序状态字。这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0例:78H+97H(01111000+10010111)AC:辅助进、借位(高半字节与低半字节间的进、借位)。例:57H+3AH(01010111+00111010)F0:用户标志位由用户(编程人员)决定什么时候用,什么时候不用。RS1、RS0:工作寄存器组选择位通过修改PSW中的RS1、RS0两位的状态,就能任选一个工作寄存器区。这个特点提高了MCS-51现场保护和现场恢复的速度。对于提高CPU的工作效率和响应中断的速度是很有利的。若在一个实际的应用系统中,不需要四组工作寄存器,那么这个区域中多余单元可以作为一般的数据缓冲器使用。0V:溢出标志位运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。P:奇偶校验位它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。4、DPTR(DPH、DPL)--------数据指针可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。 5、P0、P1、P2、P3--------输入输出口(I/O)寄存器这个我们已经知道,是四个并行输入/输出口(I/O)的寄存器。它里面的内容对应着管脚的输出。 6、IE-----中断充许寄存器可按位寻址,地址:A8HEA (IE.7):EA=0时,所有中断禁止(即不产生中断);EA=1时,各中断的产生由个别的允许位决定- (IE.6):保留ET2(IE.5):定时2溢出中断允许(8052用)ES (IE.4):串行口中断允许(ES=1允许,ES=0禁止)ET1(IE.3):定时1中断允许EX1(IE.2):外中断INT1

【ARM9嵌入式系统硬件设计指南】嵌入式输入设备设计

【ARM9嵌入式系统硬件设计指南】嵌入式输入设备设计摘要:嵌入式系统可以对各种数据信息进行快速计算、分析、输出,即完成对数据的处理。但计算机系统无法主动产生数据和结果。对数据的处理结果做出何种决策和反应,很多时候就需要用户“告诉”系统如何执行下一步动作,或是给出决策的依据。 ZLG致远电子十余年的嵌入式硬件设计秘笈首度公开!《ARM9嵌入式系统硬件设计指南》配套划时代精品EasyARM-i.MX283A 开发平台同期发布,深入剖析ARM9 硬件设计的每一个毛孔,助您完成前所未有的技术飞跃! 7.1 嵌入式输入设备设计 嵌入式系统可以对各种数据信息进行快速计算、分析、输出,即完成对数据的处理。但计算机系统无法主动产生数据和结果。对数据的处理结果做出何种决策和反应,很多时候就需要用户“告诉”系统如何执行下一步动作,或是给出决策的依据。这时,就需要使用输入设备将用户的“指示”或“依据”传递给嵌入式系统。 常见的人机交互输入设备包括按键、触摸屏、麦克风及其他各类用户可控输入的传感器等。随着科技的发展,不仅我们常见的交互输入设备出现了新的形态,而且也出现了不少新的交互输入方式。比如,现在手机中的电容按键及重力感应传感器、距离传感器。现在的交互设备不仅体现在硬件设备的复杂性上,而且在相关数据的复杂性上也与以往有了较大的增加。比如,可用于语音输入的麦克和可用于人脸识别的摄像头,为了完成这些人机交互输入,除了硬件输入设备对信息采集外,还需要后台进行大量的数据处理,以帮助系统“理解”用户的“输入信息”。 下面我们详细介绍最常用的两种输入设备:键盘/按键、触摸屏。 7.1.1 键盘 键盘是嵌入式应用的常用外部设备之一。键盘是由若干个按键组成的开关矩阵,它是最简单的数字量输入设备。对系统而言,键盘上不同的按键代表着不同的含义(一般来说,按键的含义可通过软件定义)。用户通过按动键盘的按键,输入数据或命令,实现简单的人机交互。 1.键盘的基本电路 键盘的基本电路是一个接触开关,通、断两种状态分别表示逻辑“0”和“1”。如图7.1所示,当开关打开时,处理器检测到相应引脚为高电平,表示逻辑“1”;当开关闭合时,处理器检测到相应引脚为低电平,表示逻辑“0”。 2.键盘的分类 按键排布的方式,键盘可分为可分成独立式按键键盘和矩阵式按键键盘;按读入键值的方式,可分为直读方式和扫描方式;按编码方式,可分成非编码方式和硬件编码方式;按微处理器响应方式可分为中断方式和查询方式。以上各种方式组合可构成不同硬件结构和接口的键盘。以下介绍较为常用的两种方式。 (1)、独立式 独立式按键键盘是指将每个独立按键按一对一的方式直接接到微处理器的I/O输入端口,如图7.1所示。读键值时,处理器可以检测相应I/O输入端口的状态,判定输入电平,确定输入的逻辑值。按键之间在硬件和读取方式上均相互独立,所以习惯称这种按键为独立式按键。这种方式在软硬件上实现均比较简单,但每一个按键都占用一个I/O端口,占用的资源较多,一般在按键数量较少,微处理器I/O资源充足时采用。

基于arm9和linux的嵌入式小区智能娱乐点播系统设计

基于ARM9和Linux的嵌入式小区智能娱乐点播系统设计 编制: 校对: 审核: 批准:

摘要 本项目实现了一款基于ARM Linux操作系统和Qt/Embedded图形系统的嵌入式视频点播系统。该系统提供美观、友好的图形用户界面。用户可方便地进行播放、停止、 暂停、选曲等操作。mplayer播放器输出的音频视频品质优良。 VOD是Video On Demand的缩写,即视频点播的意思。顾名思义,它是一种可以按用户需要点播节目的交互式视频系统,或者更广义一点讲,它可以为用户提供各种交 互式信息服务。交互式视频点播系统一般由VOD前端处理系统、传输网络、用户机顶 盒三个部分组成。 交互式VOD集互联网、多媒体、通讯等多种技术于一体,向用户提供包括数字电 视在内的多种交互式服务的崭新技术。 本设计将研究目标定位是设计一个GEC2440+液晶屏的视频点播系统。采用的硬 件环境为国内外广泛使用的ARM9处理器S3C2440,操作系统采用的是嵌入式Linux家族中的ARM Linux。

目录 1绪论 (6) 1.1嵌入式系统概述 (6) 1.3项目内容和实现关键部分说明 (7) 2系统总体设计 (8) 2.1系统概述 (8) 2.2服务器端设计 (9) 2.2.1 FTP服务器 (9) 2.2.2目录服务器 (9) 2.3客户端设计框架 (9) 2.4 ARM微处理器 (9) 2.4.1 ARM概述 (9) 2.4.2 ARM微处理器的特点 (10) 2.4.3 ARM微处理器系列 (10) 2.5嵌入式操作系统 (11) 2.5.1嵌入式系统软件结构体系 (11) 2.5.2嵌入式操作系统简介 (11) 2.5.3 Linux操作系统简介 (12) 2.6 Q T/E MBEDDED用户界面 (14) 3系统硬件设计 (16) 3.1嵌入式系统硬件结构 (16) 3.2 GEC2440结构 (16) 3.3 GEC2440硬件资源 (17) 3.4 S3C2440简介 (18) 4系统软件设计 (19) 4.1搭建嵌入式L INUX开发环境 (19)

ARM9嵌入式系统设计基础课后答案全解

********************************************* ********************************************* 第一章 1.简述嵌入式的定义 以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2.举例说明嵌入式系统的“嵌入性”、“专用性”、“计算机系统”的基本特征。 按照嵌入式系统的定义,嵌入式系统有3个基本特点,即“嵌入性”、“专用性”与“计算机”。 “嵌入性”由早期微型机时代的嵌入式计算机应用而来,专指计算机嵌入到对象体系中,实现对象体系的智能控制。当嵌入式系统变成一个独立应用产品时,可将嵌入性理解为内部嵌有微处理器或计算机。 “计算机”是对象系统智能化控制的根本保证。随着单片机向MCU、SoC发展,片内计算机外围电路、接口电路、控制单元日益增多,“专用计算机系统”演变成为“内含微处理器”的现代电子系统。与传统的电子系统相比较,现代电子系统由于内含微处理器,能实现对象系统的计算机智能化控制能力。 “专用性”是指在满足对象控制要求及环境要求下的软硬件裁剪性。嵌入式系统的软、硬件配置必须依据嵌入对象的要求,设计成专用的嵌入式应用系统。 3. 简述嵌入式系统发展各阶段的特点。 (1)无操作系统阶段:使用简便、价格低廉;(2)简单操作系统阶段:初步具有了一定的兼容性和扩展性,内核精巧且效率高,大大缩短了开发周期,提高了开发效率。 (3)实时操作系统阶段:系统能够运行在各种不同类型的微处理器上,具备了文件和目录管理、设备管理、多任务、网络、图形用户界面Graphic User Interface,GUI)等功能,并提供了大量的应用程序接口Application Programming Interface,API),从而使应用软件的开发变得更加简单。 (4)面向Internet阶段:进入21世纪,Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式技术与Internet技术的结合正在推动着嵌入式系统的飞速发展

推荐-基于ARM9的μCOSⅡ嵌入式系统移植 精品

大庆师范学院 本科生毕业 基于ARM9的μC/OS-Ⅱ嵌入式系统移植 院(系)物理与电气信息工程 专业电子信息工程 研究方向嵌入式技术 学生姓名钮佳楠 学号20XX01071677 指导教师姓名成宝芝 指导教师职称讲师 20XX年5 月15 日

摘要 随着计算机和电子技术的发展,越来越多的嵌入式产品出现在人们的日常生活和工业生产之中。由于嵌入式设备的智能型,使得生活和生产变得极为方便,由此也带来了嵌入式操作系统的迅速发展。本文通过ADS1.2和JLink的软件平台,以及芯片为S3C2440的ARM9开发板,成功进行微型嵌入式操作系统μC/OS-Ⅱ在开发板上的移植。在此过程中对于μC/OS-Ⅱ进行了较为全面的学习,对于移植操作也有了深刻的认识。 关键词:μC/OS-Ⅱ;Arm9;移植

Abstract With the development of puter and electronic technology, more and more embedded in people's daily life and industrial production. Intelligent embedded devices, making life extremely convenient and production, which also brought the rapid development of embedded operating system.This article by ADS1.2 and JLink, software platforms, and chip S3C2440 ARM9 development board, the success of micro embedded operating system OS-II development board transplantation. In this process, the OS-II for a more prehensive learning, have a deep understanding for the transplant operation. Key words: u C/OS - Ⅱ; Arm9; transplant

ARM9嵌入式系统设计基于S3C2410与Linux

ARM9嵌入式系统设计:基于S3C2410与Linux》针对在嵌入式市场上颇具竞争力的ARM9处理器——S3C2410和开放源码的Linux操作系统,讲述嵌入式系统的概念、软硬件的开发和调试手段、嵌入式Linux驱动程序和应用程序的开发以及图形用户界面MiniGUI的移植和应用。《ARM9嵌入式系统设计:基于S3C2410与Linux》的特点是集嵌入式系统开发的理论知识和实验教学于一体,并结合北京精仪达盛科技有限公司的开发板,给出了大量实例。 编辑推荐 《ARM9嵌入式系统设计:基于S3C2410与Linux》可作为高等院校嵌入式系统课程的教材,也可作为对嵌入式系统开发感兴趣的读者的入门教材,同时还可以作为从事ARM嵌入式系统应用开发工程师的参考书。 当前,嵌入式技术的应用越来越广泛,从航天科技到民用产品,嵌入式产品的身影无处不在,而这些嵌入式产品的核心——处理器决定了产品的市场和性能。在32位嵌入式处理器市场中,ARM处理器占有很大的份额。ARM不仅是一个公司、一种技术,也是一种经营理念,即由ARM 公司提供核心技术,只出售芯片中的IP授权,采取了别具一格的“Chipless模式”(无芯片的芯片企业),不参与生产,而是由合作厂商去生产具体的芯片和产品。 现在由于存储空间等原因,在嵌入式芯片上编程有较大的困难,选取合适的平台就显得很重要。Linux自出现以来,得到了迅猛的发展。Linux是开放源码的操作系统,吸引着全世界的程序员参与到发展和完善的工作中来,所以Linux保持了稳定而且卓越的性能。Linux在服务器领域已经占有很大的份额,在图形界面方面也不输于Windows。由于源码可以修改、移植,Linux 在嵌入式领域中的应用也越来越广。选用Linux作为平台,可以根据具体需要自由地裁减源码,打造适合目标平台的环境,编写最有效率的应用程序。 查看所有商品描述

ARM9嵌入式系统设计期末复习

ARM复习 4.1基本IO实验(LED控制) 控制实验平台的发光二极管LED1,LED2,LED3,LED4,使它们有规律的点亮和熄灭,具体顺序如下:LED1 亮->LED2 亮->LED3 亮->LED4 亮->LED1 灭->LED2 灭->LED3 灭->LED4 灭->全亮->全灭,如此反复。 /****************************************************************************** * name: led_on * func: turn on the leds one by one ******************************************************************************/ void led_on(void) { int i,nOut; nOut = 0xF0; rGPFDAT = nOut & 0x70; for(i=0;i<100000;i++); rGPFDAT=nOut & 0x30; for(i=0;i<100000;i++); rGPFDAT=nOut & 0x10; for(i=0;i<100000;i++); rGPFDAT=nOut & 0x00; for(i=0;i<100000;i++); } /****************************************************************************** * name: led_off * func: turn off the leds one by one ******************************************************************************/ void led_off(void) { int i,nOut; nOut=0;

ARM嵌入式系统论文

ARM嵌入式系统论文 指导老师:张力一.ARM简介 如果说,“嵌入式”是2008年电子工程师谈论得最多的词之一,2009年谈论得最多的一个词就是“ARM”。究竟什么是ARM呢,他是英国一家电子公司的名字,全名的意思是Advanced RISC Machine。该公司成立于1990年11月,是苹果电脑,Acorn电脑集团和VLSI Technology的合资企业。Acorn曾推出世界上首个商用单芯片RISC处理器,而苹果电脑当时希望将RISC技术应用于自身系统,ARM微处理器新标准因此应运而生。 80年代末90年代初半导体行业产业链刚刚出现分工,台积电,联电等半导体代工厂正悄悄崛起,美国硅谷中的一些fabless公司也如雨后春笋一样涌现出来,所谓的fabless公司自己设计芯片,但是生产过程则包给台积电等代工厂生产。而ARM更是为天下先,19年前首创了chipless的生产模式,即该公司既不生产芯片,也不设计芯片,而是设计出高效的IP内核,授权给半导体公司使用,半导体公司在ARM技术的基础上添加自己的设计并推出芯片产品,最后由OEM客户采用这些芯片来构建基于ARM技术的系统产品。这种方式有点象通信行业的高通和半导体行业的RAMBUS,他们站在了半导体产业链上游的上游。19年前成立的ARM可能面临着很大风险,因为没有人知道这条路能不能行得通,但是现在的事实已经证明,ARM走了一条没人走过,却是正确的道路。,作为附加产品,他还让中国的行业人士从这个窗口认识到了英国的电子公司,ARM的成功带动了英国的chipless公司的发展。 因为ARM的产品是IP Core,没有任何物理意义上的硬件或者软件实体,所以只能在中国注册成为“咨询”公司,尽管咨询只是其业务中很小的一块。ARM的核心业务是销售芯片核心技术IP,目前全球有103家巨型IT公司在采用ARM技术,20家最大的半导体厂商中有19家是ARM的用户,包括德州仪器,意法半导体,Philips, Intel等。20大巨头中唯一没有购买ARM授权的是Intel的老对头AMD,因为Intel便携式处理器采用的是Strong ARM,而AMD则收购了Alchemy公司与之抗衡,采用的是MIPS结构。 二.ARM产品介绍 ARM提供一系列内核、体系扩展、微处理器和系统芯片方案。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行(理论上如此)。典型的产品如下。 CPU内核 ARM7:小型、快速、低能耗、集成式RISC内核,用于移动通信。 ARM7TDMI(Thumb):这是公司授权用户最多的一项产品,将ARM7指令集同Thumb扩展组合在一起,以减少内存容量和系统成本。同时,它还利用嵌入式ICE调试技术来简化系统设计,并用一个DSP增强扩展来改进性能。该产品的典型用途是数字蜂窝电话和硬盘驱动器。 ARM710系列,包括ARM710、ARM710T、ARM720T和ARM740T:低价、低能耗、封装式常规系统微型处理器,配有高速缓存(Cache)、内存管理、写缓冲和JTAG。广泛应用于手持式计算、数据通信和消费类多媒体。 ARM7优化用于对价位和功耗敏感的消费应用的低功耗32位核,非常低的功耗;三段流水线和冯·诺依曼结构,提供0.9MIPS/MHz。 ARM9TDMI:采用5阶段管道化ARM9内核,同时配备Thumb扩展、调试和Harvard 总线。在生产工艺相同的情况下,性能可达ARM7TDMI的两倍之多。常用于连网和顶置盒。 ARM940T系列低价、低能耗、高性能系统微处理器,配有、内存管理和写缓冲。应用于高级引擎管理、保安系统、顶置盒、便携计算机和高档打印机。StrongARM:性能很高、

ARM9在嵌入式中的应用实例

ARM9在嵌入式中的应用实例 ——启动程序的实现 【摘要】:本文给出了基于ARM9嵌入式系统的启动程序的实现流程,并针对存储器控制单元的使用以及目标文件的分布装载等技术难点进行详细分析。 【关键词】嵌入式系统、启动程序、ARM9 嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统的核心部件是各种类型的嵌入式处理器,随着嵌入式系统不断深入到人们生活中的各个领域,嵌入式处理器得到前所未有的飞速发展。 典型的32位RISC芯片──ARM处理器,不论是在PDA,STB,DVD等消费类电子产品中,还是在GPS,航空,勘探,测量等军方产品中都得到了广泛的应用。越来越多的芯片厂商早已看好ARM的前景,如Intel,NS,Ateml,Philips,NEC,CirrusLogic等公司都有相应的产品。在1999年,ARM突破1.5亿个,市场份额超过了50%,已经成为业界的龙头。 在基于ARM9的嵌入式系统过程中,发现技术难点主要在于系统启动程序的编写,为此本文详细论述了在ARM9基础上开发嵌入式系统时启动程序的实现。 1.启动程序流程 嵌入式系统的资源有限,程序通常都是固化在ROM中运行。ROM中程序执行前,需要对系统硬件和软件运行环境进行初始化,这些工作由用汇编语言编写的启动程序完成。 启动程序是嵌入式程序的开头部分,应与应用程序一起固化在ROM中,并首先在系统上运行。它应包含进各模块中可能出现的所有段类,并合理安排它们的次序。 写好启动程序是设计好嵌入式程序的关键,系统启动程序所执行的操作依赖于正在开发其软件的系统,一般流程如下: 2.详细步骤 (1)设置入口指针 启动程序首先必须定义入口指针,而且整个应用程序只有一个入口指针。 (2)设置中断向量 ARM7要求中断向量表必须设置在从0地址开始,连续8×4字节的空间,分别是复位、未定义指令错误、软件中断、预取指令错误、数据存取错误、IRQ、FIQ和一个保留的中断向量。

相关文档
最新文档