以ucos为例,做详细说明。Ucos分为任务级任务切换和中断级任务切换。 Ucos整个用户程序和操作系统程序都运行在一个模式下(SVC模式)。所以在不用切换芯片运行模式的情况下就可以做任务级任务切换。 任务级进程切换原因是任务本身显示调用进程切换函数。 比如新建了一个优先级比较高的任务时就要显示调用任务切换函数。还有就是任务本身代码中调用了OSTimeDly()函数时也会产生
基础知识里已经基本上讲解了UCOS要生活的家(即硬件平台环境),还有就是为了让高级语言写的程序能变成在硬件平台上直接运行的程序,编译器都干了些什么。还有这个C语言运行的环境问题,也就是从硬件和汇编语言的角度去理解高级语言。 下面我们就从硬件加电到UCOS真正运行起来这样一种思路讲解一个嵌入式实时操作系统的实现原理以及它所包含的精髓。好了,现在就介绍一下我们所有的软
下面要讲解的内容基本上都是c语言编写的了,还有一部分代码是用汇编写的。以下我就以这个系统移植的实验源码为例做详细讲解。讲解的方式是根据程序执行的顺序进行,如果感觉有什么难理解的地方,会做一个宏观讲解和分析。 好了废话不多说,进入main()函数之后做的事情有: 对硬件平台做进一步的初始化操作 对ucos操作系统做初始化操作 对硬件的初始化主要包括: 初始化
用户模式(user模式),运行应用的普通模式; 快速中断模式(fiq模式),用于支持数据传输或通道处理; 中断模式(irq模式),用于普通中断处理。 超级用户模式(svc模式),操作系统的保护模式 异常中断模式(abt模式),输入数据后登入或预取异常中断指令 系统模式(sys模式),是操作系统使用的一个有特权的用户模式 未定义模式(u
先说明一下在加电之前的这个软硬件情况,这个三星公司根据ARM920T软核生产的这个s3c2410集成了64M的sdram和64M的nandflash存储器。Vivi和UCOS都存储在这个nandflash中,因为nandflash断电后不会丢失信息。这个VIVI是三星公公司为ARM系列芯片书写的bootloader,用于开发阶段,做系统的引导程序。 VIVI存放在flash 0x
阅读这些内容前,希望你对计算机有了一点简单的概念,最好学习过计算机组成原理并知道一些最基本的概念。如果你学习过51系列的单片机并且利用51系列的单片机做过一些开发,那看这些内容就很简单了。如果你没这些知识也没关系,以我的学习经历来看,可以给大家一个学习计算机组成原理的建议。你可以先大致学习一下计算机组成原理,学完之后一般会对计算机有一个大体的了解,计算机专业在开设这门课时一般会安排
我在学习嵌入式操作系统UCOS时,有很大的迷茫之处,在于我不知道我用的工具到底帮我干了些神马工作。下面就说一下我当时的疑问: 1:编译器和链接器干了些神马?我现在也还没能力知道它是怎么干的这些工作。以后慢慢来呗。但当时我连它干了神马都不清楚。 2:它输入的是源程序,那他输出的是什么?有格式吗?是什么样子那? 重重疑问。 ADS编译器的目的是怎么
我们知道C语言是一种高级语言,所谓高级语言就是要经过翻译才能在具体平台上运行的程序。而编译程序是一种比较繁琐的程序,它要把高级语言编译和链接后,成为能够在具体平台运行的程序。这其中有很多知识是和操作系统和具体硬件平台相关的,如果你想弄清楚编译程序请学习编译原理,有一本书可以参考《linkers_and_loaders》。 我们这里只是说明一下C语言运行的环境以及和
我是一名计算机系的学生,总想弄明白我们现在学的计算机到底是怎么工作的。而整个计算机知识是一个庞大的理论体系,且是分为很多层次结构的,简单说有硬件层,软件层。而理解这些不同层次的知识的关键在于理解层次之间的借口,借口理解透彻了,那你就能把各层次的知识融为一体,这些知识也必然可以为你所用了。研究中间件最好的就是操作系统了,但是我们学习的操作系统课程太过于理论化和复杂化,学完了仍然不知所
今天又看了一下ucos保护临界段代码,ucos是利用禁止中断来保护临界段的。 ucos给我们提供了三种方法: 一:直接关中断和直接开中断。即成对使用,保证临界段的安全。 二:先把原来的中断状态压入栈中,然后再关闭中断。恢复时直接从栈中返回原来存储的中断状态。 三:先保存原来的中断状态到一个变量中,然后再关闭中断。 三种情况我都说完了,下面我说一
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号