小型多任务操作系统miniOS的实现

发布者:760802csy最新更新时间:2016-04-26 来源: eefocus关键字:多任务  操作系统  miniOS 手机看文章 扫描二维码
随时随地手机看文章
关于miniOS的介绍

http://blog.csdn.net/mr_raptor/article/details/7338051

本实验源码包含三部分:

       miniOS源码:miniOS_xxxx(开发板名)工程目录下。

       miniOS应用程序跑马灯:miniOS_app_led工程目录下。

       miniOS应用程序打印程序:miniOS_app_print工程目录下。

       # miniOS源码:http://download.csdn.net/detail/mr_raptor/4179593

       # 程序下载:http://download.csdn.net/detail/mr_raptor/4382941

       操作步骤:

(1)在ADS下编译miniOS_xxxx工程,选择Norflash启动,然后通过H-Jtag将minios_org.bin烧写到Norflash中0地址处。

(2)编译应用程序miniOS_app_led和miniOS_app_print,选择Norflash启动,通过H-Jtag将miniOS_app_print.bin烧写到0x10000地址处,将miniOS_app_led.bin烧写0x20000地址处。

(3)启动开发板,可以看到miniOS启动信息。miniOS最多同时支持62个进程执行(在2440开发板64M内存上),miniOS启动完毕之后,默认只有系统内核进程在执行,可以通过按K1键,新创建进程,最多创建62个,按K2键,随机杀死一个进程,按K6键可以启动跑马灯进程。

(4)如果读者想写一个程序,让miniOS启动它,则根据编写规则,编写程序,如果需要系统调用,还要自己实现系统调用接口。

分析miniOS代码分为下面章节:

1. miniOS内存分布

2. 重要头文件说明

3. 启动代码分析

4. MMU与内存保护的实现

5. 内核定时器与中断处理

6. CPU模式切换

7. 进程调度与上下文切换技术

8. 软件中断与系统调用

9. 系统调试、优化及可改进地方

 

下面来看下第1节:

miniOS V2.0内存分布图:

Linux内核中内核地址空间分为:

  • 直接内存映射区(Direct Memory Region)即:低端物理内存
  • 动态内存映射区(VMalloc Region)即:高端物理内存
  • 其它映射区

miniOS里,虚拟地址空间分为两大部分:

  • 用户程序空间:0x0 ~ 0x80000000
  • 内核管理空间:0x80000000 ~ 0xC0000000

>> 用户程序空间每个进程使用其中的32M虚拟地址空间,其空间地址和其PID有如下关系:

             PID * 32M = PID的进程空间

其中,0~32M空间为0号进程空间,其实是当前正在运行的地址空间。

之所以这么设计,是因为ARM CPU在开启了MMU之后,将低于32M的地址作为进程内空间,当地址高于32M时,MMU会将其进行地址转换,具体内容,请参考:MMU与内存管理章节。

每个进程空间为32M,将来进行进程切换时,只需要按照上面定义的关系,线性偏移即可,减少进程切换时的复杂度。

每个进程的实际物理内存空间为1M,也就是说每个进程只有1M的物理地址空间,当用户程序超过1M时,程序不能运行(当然还没有超过1M的程序),它们的映射关系如下所示:

    0x30000000 ~ 0x34000000    ----> 0x0 ~ 0x80000000

>> 内核管理地址空间又可以细分为以下几个部分:

  • 物理内存完全映射区:0x80000000 ~ 0x84000000
  • 外设寄存器地址映射区:0x98000000 ~ 0xB0000000
  • 启动ROM映射区:0xC0100000 ~ 0xC0000000

>> 物理内存完全映射区,主要用于管理进程实际地址空间,它其实是0x30000000 ~ 0x80000000的一个线性偏移地址(0x50000000),当我们需要在内核空间里操作用户空间时,使用该完整映射区,非常方便操作,比如:加载程序到进程空间时,只需通过简单的计算即可知道其虚拟地址。

    例如:启动5号进程时,其物理地址放在0x30000000开始的第5M空间里,那么其虚拟地址为0x30000000 + 5M + 0x50000000(偏移地址)。

>> 外设寄存器地址映射区,用来操作外设寄存器,当使用到外设寄存器时,可以通过简单的加减运算可以得到其虚拟地址。

>> 启动ROM映射区,用来映射NOR FLASH。

 

物理内存空间结构:

 

由上图可知,0号进程物理空间里(0x30000000 ~ 0x30100000),其实除了存放os代码外,还有其它的用途。

  • 页表放到了内存地址0x30000000处
  • OS代码放到了0x300F0000,该地址是故意而为之

最开始的1MB物理内存地址0x30000000~0x30100000为0号内核进程地址空间,其实就是OS代码区和内核栈区及页表区。

由于OS代码放到了物理内存0x300F0000处,其被映射到虚拟地址0x800F0000处,所以ADS里设置的OS代码的运行地址为0x800F0000

关键字:多任务  操作系统  miniOS 引用地址:小型多任务操作系统miniOS的实现

上一篇:S3C2440系统中断
下一篇:mini6410中断控制器-VIC中断控制器

推荐阅读最新更新时间:2024-03-16 14:51

Android的系统架构之开发基础
Android的系统架构采用了分层架构的思想,如图1所示。从上层到底层共包括四层,分别是应用程序程序层、应用框架层、系统库和Android运行时和Linux内核。 图1:Android系统架构图 每层功能简要介绍如下: 一 应用程序层 该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。 二 应用程序框架层 该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管
[嵌入式]
苹果公司发布新一代移动操作系统iOS 8
    苹果公司最新一代移动操作系统iOS 8   新浪手机讯 北京时间6月3日凌晨消息,苹果公司在美国旧金山召开2014年度全球开发者大会。苹果公司发布了最新一代移动操作系统iOS 8,对短信、输入法、通知中心、搜索等多款应用的功能进行了大幅升级。iOS 8正式版将在今年秋天发布,支持iPhone 4s及以后的设备。   最新一代移动操作系统iOS 8与上一代iOS 7的界面基本相同,但是对一些常用功能进行了大幅改进。   首先,iOS 8系统中的顶部通知栏增强了互动性。以短信应用为例,用户在收到一条短信时,可以直接在通知栏里进行回复,而不用再进入短信应用界面。其他应用也是类似。   由于短
[手机便携]
操作系统打败Android唯一方法就是改造它?
    在智能手机领域,Android现在已处于主导地位。但是,并非每一家公司都心甘情愿在其智能 手机中使用Android,2013年将会出现很多可替代的操作系统。但是,它们要取得成功,还必须依赖Android:通过大量改造Android应用 程序来充实自己的应用程序库,从而吸引广大用户。 试以智能手机领域中最新的挑战者黑莓Z10为例。令人印象深刻的是,黑莓10操作系统的应用程序数量已超过了10万,尽管人们仍然质疑其应用程序的质量是否过硬。 RIM很小心,并未透露其最新发布的应用程序中有多少应用程序是直接在Android应用程序上基础上改造而成的。但是,在2月初,这些改造应用程序所占的比例约为40%。如果这个数字现在仍然一
[手机便携]
基于uITRON操作系统的嵌入式GUI设计
随着嵌入式系统技术的不断发展,各类嵌入式应用对人机交互界面的要求也越来越高,这就使得对嵌入式图形用户界面的需求越来越迫切。与一般系统上的图形用户界面相比,嵌入式系统图形用户界面要求轻型、占用资源少、高性能、高可靠性、可配置等特点。   本设计是在东南大学国家专用集成电路系统工程技术研究中心自主研发的,并在遵循uITRON 3.0标准的RTOS-ASIX OS基础上设计出一套适合于手持设备、仪器仪表等应用的图形用户界面——ASIX Window。该图形用户界面采用面向对象的设计思想,基于消息循环和事件驱动机制,构建了比较完整的窗口系统,为用户提供了类Win32 API的用户编程接口。考虑到一般嵌入式应用的屏幕较小,以及嵌入式系统处理器
[嵌入式]
利用MLD自动化操作系统移植降低Linux的成本
随着基于 Linux 的嵌入式系统得到日益广泛的应用,人们不禁要问,类似 Linux 这样的免费开放源代码操作系统的真正成本到底是多少?其实,最主要的成本是在劳动力上。要将 Linux 内核移植到定制嵌入式处理系统,您必须对产品所需要的内核功能、这些功能对其他内核服务的依赖程度以及您的工程团队的技能都有深入的了解。更重要的是,要了解可以借助哪些新技术来使这些任务自动化,以达到节省成本的目标。 开放源代码与商业操作系统 我们很多人都看过为如何使用 Linux 源代码提供指导的 GNU 通用公共许可证 (GPL)。要确定在系统中使用 Linux 的成本,一般来说,第一步是了解 Linux 的哪些部分是真正免费且不受法律约束的,哪些
[嵌入式]
汽车操作系统研究:整车操作系统的三种实现方式
国产化操作系统开始发力 2023年, 华为 、斑马智行、小米、蔚来等国产厂商纷纷在操作系统市场发力,推出具备竞争力优势的操作系统版本,适配了 国产芯片 方案并获得主机厂定点项目。 2023年汽车操作系统市场动态 图片来源:佐思汽研整理 譬如,小米、蔚来等推出了整车操作系统,普华和中兴等供应商加强了操作系统微内核的实时、安全等功能。 2023年10月,小米推出自研的HyperOS,底层采用 Linux 与Vela内核融合, 中间件 接入 AI 子系统,在多任务处理流程中设置优先级,采取分级调度的形式提升操作系统处理效率。 在生态上,小米打造了CarIoT生态,打通互联网IoT与汽车领域,实现“人车家全生态”理
[汽车电子]
汽车<font color='red'>操作系统</font>研究:整车<font color='red'>操作系统</font>的三种实现方式
百度发布AI操作系统和家用机器人 它能成为中国的Echo吗?
腾讯当年凭借微信拿到了中国移动互联网时代的第一张船票,而且是头等舱。 那么今天,放言全球,你觉得谁有拿到了人工智能时代的第一张船票? 请不要跟我说是阿尔法狗 …… 也许,目前看来,是那个大家都没有想到的一家电商——亚马逊,它的筹码,就是搭载了Alexa(内置虚拟语音助手)的智能音响Echo。当然只是也许,千万不要忘记Google Home 正在后面拼死拼活地追赶。 虽然联想在CES上发布了支持Alexa的智能语音助手,但显然Google和亚马逊现在还没有空抢占中国市场,于是一直喊着“互联网的下一幕是人工智能”的百度终于联手 小鱼在家 ,发布了中国版的Echo。不过,跟亚马逊和谷歌不一样,百度没有自己做硬件,硬件由小鱼在家提供。
[嵌入式]
基于AVR单片机多任务嵌入式Internet系统设计
1 引言 目前,嵌入式系统已经广泛渗透到人们的工作、生活中。从家用电器、信息终端、手持通信设备到仪器仪表、制造工业、过程控制等领域,嵌入式设备已随处可见。另一方面,近几年来Internet技术的飞速发展给嵌入式应用带来了新的契机,在未来嵌入式系统中应用Internet技术具有很大的优势。 目前嵌入式Internet技术的实现主要有下面三种方式 : 第一种方式是EMIT技术,采用支持TCP/IP协议的高性能服务器作为网关(emGateway), 嵌入式设备通过RS-232、RS-485或者CAN总线等与网关服务器连接,间接通过服务器网关连接Internet。经过多年的发展EMIT技术已经在工业设备的网络化中得到了广
[单片机]
基于AVR单片机<font color='red'>多任务</font>嵌入式Internet系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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