ucos在s3c2410上运行过程整体剖析之基础知识

发布者:创意航海最新更新时间:2017-01-19 来源: eefocus关键字:ucos  s3c2410  基础知识 手机看文章 扫描二维码
随时随地手机看文章

用户模式(user模式),运行应用的普通模式;

快速中断模式(fiq模式),用于支持数据传输或通道处理;

中断模式(irq模式),用于普通中断处理。

超级用户模式(svc模式),操作系统的保护模式

异常中断模式(abt模式),输入数据后登入或预取异常中断指令

系统模式(sys模式),是操作系统使用的一个有特权的用户模式

未定义模式(und模式),执行了未定义指令时进入该模式

 

外部中断,异常操作或软件控制都可以改变中断模式。大多数应用程序都时是在用户模式下运行。进入特权模式是为了处理中断或异常请求或操作保护资源服务的。

 

这些工作模式是芯片硬件提供的程序运行的不同环境,不同的模式有不同的硬件访问权限,使用不同的寄存器。这就给不同的程序提供了不同的权限机制,你比如说你的操作系统代码运行在权限比较高的模式下,而你的应用程序运行在权限比较低的模式下。这样就起到了对操作系统代码的保护作用。

寄存器,各个模式下可见的寄存器以及各个寄存器的功能:

ARM共有37个32位的寄存器,其中31个是通用寄存器,6个是状态寄存器。但在同一时间,

对程序员来说并不是所有的寄存器都可见。在某一时刻存储器是否可见(可被访问),是处

理器当前的工作状态和工作模式决定的。其各个模式下的寄存器如图1所示:

其中系统模式和用户模式所用的寄存器是一样的。画三角阴影的寄存器表示在不同模式下

有不同的物理寄存器。

以下对其进行分类说明:

通用寄存器

ARM的通用寄存器包括R0~R15,其中R0~R7是属于未分组寄存器,各个模式下都使用同样的寄

存器。R8~R14在FIQ模式下是有独立的物理寄存器,其目的是加快中断响应速度,从硬件上

保存程序执行现场。R13和R14这两个寄存器在每种模式下都有自己的独立寄存器。R15只有

一个,所有模式公用。

下对这些寄存器中的比较有特殊功能的做一下介绍:

寄存器R13:在ARM指令中,常用R13做堆栈指针用。每种运行模式都有自己独立的堆栈,用于保存中断发生时的程序运行环境和C语言执行时进行过程控制。

寄存器R14:专职持有返回点的地址,在系统执行一条“跳转并链接(link)”(BL)指令

的时候,R14将收到一个R15的拷贝。其他的时候,它可以用作一个通用寄存器。相应的它

在其他模式下的私有寄存器R14_svc,R14_irq,R14_fiq,R14_abt和R14_und都同样用来保

存在中断或异常发生时,或时在中断和异常中执行了BL指令时,R15的返回值。

寄存器R15是程序计数器(PC)。在ARM状态下,R15的bits[1:0]为0,bits[31:2]保存了PC

的值。在Thumb状态下,bits[0]为0同时bits[31:1]保存了PC值。

FIQ模式拥有7个私有寄存器R8-14(R8_fiq-R14_fiq)。在ARM状态下,多数FIQ处理都不需要保存任何寄存器。用户、中断、异常中止,超级用户和未定义模式都拥有2个私有寄存器,R13和R14。允许这些模式都可拥有1个私有堆栈指针和链接(link)寄存器。

程序状态寄存器

ARM920T具有一个当前程序状态寄存器(CPSR),另外还有5个保存程序状态寄存器(SPSRs)用于异常中断处理。这些寄存器的功能有:

保留最近完成的ALU操作的信息;

控制中断的使能和禁止;

设置处理器的操作模式。

 

下图2显示了程序状态寄存器的位定义:


 

关于这些位的具体含义请参见datasheet

异常:

当正常的程序执行流程因一些原因发生暂时的停止时,称之为异常。比如芯片取到了一条不认识的指令,当这条指令执行时就会发生Abort异常中止,从而进入Abort模式。也就是说不通的条件会发生不通的异常,而不同的异常就会使处理器进入不同的处理模式。

你想知道异常什么时候发生,怎么发生的?发生后芯片都要干些什么?怎么从这些异常中返回?异常向量表是什么?那就请你仔细阅读datasheet的第二章program’s model,这一章对这些问题都做了详细的说明和讲解。

当然,这些和后面的UCOS是有关系的,比如UCOS和用户的应用程序是统一编译的,都运行在SVC模式下,当外部中断来时会切换到中断模式。

请看下面的异常(中断)向量表:


地址

异常中断类型

进入时处理器模式

0x00000000

Reset

Supervisor

0x00000004

Undefined instruction

Undefined

0x00000008

Software Interrupt

Supervisor

0x0000000C

Abort (prefetch)

Abort

0x00000010

Abort (data)

Abort

0x00000014

Reserved

Reserved

0x00000018

IRQ

IRQ

0x0000001C

FIQ

FIQ


 

异常向量表是一个填好了的跳转指令表,中断向量表就位于内存地址的0开始处。当相应的异常发生时,CPU最后要把PC值改成向量表里的跳转指令实现跳转去执行相应的服务程序。当然这时CPU的运行模式就更改了。我们看IRQ中断异常,这个地址向量是外部中断的入口地址,那我们知道ARM9芯片上支持的中断源有很多,那中断入口就一个,怎么识别到底是哪一个具体中断源发生了那。这一部分知识就是中断控制器的内容了,请参加下面的文章或者参加datasheet的十四章interrupt controller。

关于更详细的资料请参考920t的datasheet!!!!!   

关于arm中断系统请参考arm920t中断系统详解。和ucos相关的arm芯片知识讲完了,当然arm芯片知识还很多,参考920t的datasheet!!!!


关键字:ucos  s3c2410  基础知识 引用地址:ucos在s3c2410上运行过程整体剖析之基础知识

上一篇:ucos在s3c2410上运行过程整体剖析-从main函数到UCOS初始化完毕
下一篇:ucos在s3c2410上运行过程整体剖析-从加电到执行main函数

推荐阅读最新更新时间:2024-03-16 15:31

MiniARM2300电脑自动打铃器设计与实现ucos操作系统
单片机源程序如下: /****************************************Copyright (c)**************************************************** ** Guangzhou ZHIYUAN electronics Co.,LTD. ** ** **--------------File Info--------------------------------------------------------------------------------- ** File name
[单片机]
基于uCOS-II的任务池/线程池 模块
前言 线程池在软件开发中应用的很广泛,其很适合处理需要并行(并发)处理大量类似任务的情况。比如在web服务器端,需要为不同的socket(用户)同时提供服务,典型的模型就是为每个socket分别分配一个线程,一对一进行服务,这就涉及到大量的线程创建和销毁操作。当然,作为一个嵌入式软件,尤其还是以uCOS为操作系统的,一般是不会拿来作为高性能web服务器的。但是还是有很多时候会需要大量动态的线程。 线程池避免了创建和销毁线程带来的大量开销,使得软件效率得到了极大的提升。 uCOS-II中没有线程这个概念,而是使用了基于优先级的任务,同一时间只会运行所有准备好的任务中优先级最高的那个。但是有的时候又有使用类似线程池功能的需求,
[单片机]
基于<font color='red'>uCOS</font>-II的任务池/线程池 模块
断路器控制回路基础知识详解
今天为大家介绍的是断路器控制回路的基本要求分析,你了解了吗?   (1)应有对控制电源的监视回路。断路器的控制电源最为重要,一旦失去电源断路器便无法操作。因此,无论何种原因,当断路器控制电源消失时,应发出声、光信号,提示值班人员及时处理。对于遥控变电所,断路器控制电源的消失,应发出遥信。   (2)应有防止断路器“跳跃”的电气闭锁装置,发生“跳跃”对断路器是非常危险的,容易引起机构损伤,甚至引起断路器的爆炸,故必须采取闭锁措施。断路器的“跳跃”现象一般是在跳闸、合闸回路同时接通时才发生。“防跳”回路的设计应使得断路器出现“跳跃”时,将断路器闭锁到跳闸位置。   (3)应经常监视断路器跳闸、合闸回路的完好性。当跳闸或合闸回路故
[模拟电子]
linux 2.6.24.4在S3C2410上的移植(根文件系统cramfs,ramdisk,jffs2)(基于GEC2410)
内核可以跑起来,接下来就是移植根文件系统了. 我们使用BusyBox-1.10.1来创建根文件系统.下载地址为:http://www.busybox.net/downloads/ 1.设置BusyBox (1)解压 #tar -xvjf BusyBox-1.10.1.tar.bz2 #cd BusyBox-1.10.1 (2)修改Makefile,设置CROSS_COMPILE ARCH ?= arm CROSS_COMPILE ?= /home/GEC2410/toolchain/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu- (根据自己的交叉编译环境路径) (3)配置B
[单片机]
S3C2410与指纹传感器MBF200的SPI通信
  引 言   随着网络技术和通信技术的发展,传统的身份认证技术对于信息安全表现得越来越有些力不从心了。由于人的身体特征具有唯一性和稳定性,人们开始把目光转向了生物识别技术,如指纹、虹膜、DNA、掌形识别等。在众多的特征识别中,指纹采集设备由于具有体积小、功耗低、稳定性好、误判概率低等优点,而受到人们的青睐。指纹传感器是指纹采集设备中的核心器件,在此选用富士通公司的MBF200。它是一款先进的固态指纹传感器芯片,具有性能高、功耗低、成本低、接口方便等特点。这使得在嵌入式系统中实现数据的传输更加方便。S3C2410是三星公司推出的ARM920T核微处理器,主要面向手持设备以及高性价比、低功耗的应用,且在片上集成了丰富的组件,有利于其扩
[单片机]
<font color='red'>S3C2410</font>与指纹传感器MBF200的SPI通信
ucOS学习笔记(6)——一步一步移植ucOS到STM32
之前已经完成了基本的编译工作。 今天早上开始写了几个基本的设备驱动,同时编写了两个简单的测试任务。其间出现几个问题。 第一个问题是代码编译能通过,但是下载到板子上就是跑不动,根本运行不到main函数,估计是初始化系统部分存在一些问题,我也没有深入研究直接将stm32官方的stm32f10x_vector.s和现在的init.s整合得到以下的系统初始化代码,该代码能够保证测试任务LED流水灯正常运行。 ; If you need to use external SRAM mounted on STM3210E-EVAL board as data memory, ; change the following define value
[单片机]
基于S3C2410嵌入式设备的U-Boo移植及自启动的实现
  S3C2410是三星公司针对嵌入式系统推出的高性价比 微处理器 ,它是基于ARM9TDMI内核的16/32位RISC处理器,工作主频为200M Hz 。由于现有的Linux系统引入了设备文件的概念,读写串口可以像读写普通文件一样进行操作,非常方便。   一、Linux系统的安装   安装过程首先出现欢迎对话框,如上图所示。Red Hat先后会询问用户使用何种语言、用户使用的键盘类型(默认选项为美式键盘)以及安装软件的位置(选择本地CD -ROM)等许多需用户选择的问题。   使用Disk Druid建立Linux文件系统然后通过PC机对开发板进行设置,并执行以下命令,从而对开发板进行内核及文件系统的烧写工作:
[单片机]
基于<font color='red'>S3C2410</font>嵌入式设备的U-Boo移植及自启动的实现
uCOS II在ARM处理器上移植过程中的中断处理
uCOS II是一个源码公开、可移植、可固化、可剪裁和抢占式的实时多任务操作系统,其大部分源码是用ANSI C编写,与处理器硬件相关的部分使用汇编语言编写。总量约200行的汇编语言部分被压缩到最低限度,以便于移植到任何一种其它的CPU上。 uCOS II最多可支持56个任务,其内核为占先式,总是执行就绪态的优先级最高的任务,并支持Semaphore (信号量)、Mailbox (邮箱)、MessageQueue(消息队列)等多种常用的进程间通信机制。与大多商用RTOS不同的是,uCOS II公开所有的源代码.并可以免费获得,只对商业应用收取少量License费用。 uCOS II移植跟OS_CUP_C.C、OS_
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved