Download presentation
Presentation is loading. Please wait.
Published byBastian Winkler Modified 6年之前
2
内容提要 概述 Nucleus PLUS介绍 Nucleus开发环境
3
Nucleus—嵌入式实时多任务操作系统
产品概况 美国ATI(Accelerated Technology Inc.)公司出品 提供完全源代码,无产品版税(Royalties Free) 模块化结构,可随意裁剪 支持几乎所有的嵌入式微处理器 开发应用非常方便: 无BSP开发 可移植性强 目前在源码RTOS市场占据第一位
4
ATI公司简介 Accelerated Technology, Inc. 成长历程 成立于 1990年 平均增长率: 70%
加入著名的Mentor Graphics公司 成长历程 1990 – 发布Nucleus RTX for AMD29k 1993 – 第一家商用 RTOS for ARM6 1997 -第一家商用 RTOS for PPC601 1998 – 位列全球增长最快的500家企业之中 Motorola 黄金搭档 1999, 2000 《软件》, 位列500 强1999, 2000 《财富》, 位列最快500强 1999, 2000 Nucleus EDE, 嵌入式产品10佳, 电子工业年报, 1999
5
ATI公司简介 ATI的使命 Provide embedded software developers the widest choice of affordable products with source code. + 强而大的公司 + 全方位的产品线 + 低价格 + 源代码 + 无产品版税 + 强大的技术支持
6
Nucleus 产品线一览 开发工具 (Develop tools) 图形软件包 TCP/IP协议包 (Grafix)
(Nucleus NET) 系统内核 (Kernel) 文件系统
7
Nucleus 产品线一览—— Kernels
Re_entrant Dynamic Download# Memory Mgt.Unit# Kernel Object Access (Nucleus Debug+) C Library (Nucleus CLIB) Driver RAM File System 系统内核 (Plus,C++,OSEK) FMM Drivers Floppy SCSI IDE PCMCIA ATA Plug&play** Drivers 1394/ FIREWIRE** Serial PCI# USB**l
8
Nucleus 产品线一览—— Grafix
Client# Basic Services Drivers GUI VGA LCD Keyboard Touch Screen Mouse 图形软件包 (Nucleus GRAFIX)
9
Nucleus 产品线一览—— Nucleus Net
SNMPv2 TFTP Client HTTP Client# TFTP Server FTP Client FTP server Web Server SNMPv3 RMONv2 SNMPv1 Telnet RMONv1 RMONv1 Lite# (Nucleus Webservl) TCP/IP软件包 (Nucleus NET) POP3 Client SMTP(cli/serv) MIME# Java (Nucleus JVi**) (Nucleus span) RIP2 OSPF# Spanning Tree Net Drivers PCMICA Ethernet PPP SLIP
10
Nucleus开发工具 Nucleus Lauterbach IAR Paradigm Green Hills CAD-UL
Diab-SDS Nucleus EPI ARM EDE DBG+ MNT UDB Tasking Microsoft Others
11
Nucleus支持的部分CPU Any CPU! Intel: x86, StrongARM, i960…
Motorola: 680x0, 683xx, 68HCxx, PowerPC, ColdFire,M-core… Hitachi: H8/300H, H8S, SH1/2/3/4 NEC: V8xx NS: CR16A/B, CR32A Other: C167, TriCore, CPP48k, M16C/80… ARM: ARM6/7/9, Atmel, Cirrus logic, Hyundai, Samsung, TI MIPS: Atlas, IDT, Lexra, LSI, NEC, NKK, QED, Toshiba DSP: AD, TI … Any CPU!
12
Nucleus的应用 导航 路由 GPS 手机 PDA 控制 医疗 Nucleus 机顶盒 网络 汽车电子 通信设备 智能卡 …
13
Design Wins January 1998 – March 2000
Nucleus主要嵌入式市场 工业自动化 81 电讯 234 军事/航空 13 医疗 42 消费电子 92 计算机/外设 57 汽车 23 互联网设备 57 网络/数据通信 96 实验室设备 42 办公设备/自动零售业 7 其他 308 总数 1052 Design Wins January 1998 – March 2000
14
Nucleus PLUS提供的服务 任务间通信 任务间同步 任务控制 存储器管理 Nucleus Plus I/O设备驱动 定时器/
系统时钟 中断控制
15
操作系统在产品开发中的位置 Application RTOS Nucleus BSP Board Hardware
16
操作系统的基本功能 任务调度 任务通信 内存管理 中断处理 其他功能 设备驱动 图形 协议 其他...
17
Development Basics 系统启动和存储空间分配 custom- 如中断向量表(.vectors) .code -代码段
Start - crt0.s custom- 如中断向量表(.vectors) .code -代码段 .data - 初始化数据段 .bss - 未初始化数据段 板级初始化 - int.s 操作系统初始化 - inc.c 应用程序初始化 .code .data(initialized ) .vectors .bss(uninitialized) 循环调度
18
RTOS的基本概念 什么是任务 什么是任务(Task)? A task is a semi-independent program
segment with a dedicated purpose 任务是具有特定目的的半独立的程序段 任务是Nucleus中最常用的应用程序处理线程 任务的属性 状态、优先级、时间片、堆栈、程序指针、寄存器……
19
任务的属性 . 状态 Ready - 就绪,等待执行. Running - 正在执行. Suspended - 挂起,等待特定的事件触发.
Finished 已完成处理. 任务的属性、信息都存放在任务控制块中(TCB) Priority 优先级 当前的状态 堆栈指针 ... Stack * State .
20
任务调度执行 传统单任务的特点: 传统单任务执行 一个任务完成系统全部操作 A single 单个执行线索(execute thread)
单个堆栈空间 A single task /* Main control of program */ main() { ….. do_something(); } /* A function to do something */ void do_something() stack
21
任务调度执行 多任务模式 Task 1 Task 2 Task 3 多个任务竞争、并发执行 多个执行线索 多个相互独立的堆栈空间
/* Main control of program */ main() { do_something(); } /* A function to do something */ void do_something() Task 2 Task 1 Stack 1 Stack 2 Stack 3 多个任务竞争、并发执行 多个执行线索 多个相互独立的堆栈空间
22
任务调度执行 调度控制程序 优先级(priority) - 反应任务的重要性 时间片 (time_slice) - 任务一次所占用CPU
的最长时间. 抢占性(preemptive) - 除了被中断抢占外,任务可以无限期的占用CPU。
23
任务调度执行 调度控制程序 . 基于优先级排列的已创建任务链表 最高优先级 (0) 最低优先级 (255) Task List (255)
24
任务调度执行 上下文切换 CPU 任务之间切换需要保存上下文 机器状态 -CPU当前状态(由CPU内部寄存器的值表征) 通用寄存器
程序计数器 状态寄存器 其他 Register 6 Register 5 CPU Register 4 Register 1 Register 1 Register 1 Register 4 Register 4 Register 4 Register 3 Register 2 Register 2 Register 2 Register 5 Register 5 Register 5 Register 2 Register 3 Register 3 Register 3 Register 6 Register 6 Register 6 Register 1 stack
25
任务调度执行 任务的挂起 无条件挂起 中断产生时挂起. 保存所有的内部寄存器. 条件挂起 由内核调用产生挂起. 只保存相关寄存器
26
任务间通信 通信方式 任务间通信 - 在两个或多个任务间传递数据 Mailboxes -邮箱 Queues -队列 Pipes -管道
27
任务间通信 Mailboxes 定长(4个长字) 系统开销小 在两个或多个任务间一次传递一条消息 1 Message Task X
Task Y
28
任务间通信 Queues/Pipes 容纳多条消息 定长或变长 用来传送多条消息 Queue消息长度以长字为单位,Pipe以字节为单位。
Task X Task Y
29
任务间同步 同步方式 任务间同步 - 任务间同步控制 Semaphores-信号量(旗语) Events -事件
Signals -信号(软中断)
30
任务间同步 二元信号量(0,1) 控制对共享资源的访问 Program Execution 获取信号量 共享 资源 释放信号量
31
任务间同步 Events 当一个任务试图得到事件标志位未置位的事件时,任务将挂起;置位后,任务恢复 1 1 1 Task 1 事件处理
1 1 1 事件处理 1 1 1 Task 1 当一个任务试图得到事件标志位未置位的事件时,任务将挂起;置位后,任务恢复
32
任务间同步 Signals EP 由任务触发. 当Task1、Task2发出一个信号,Task P中信号处理程序将立即执行.
信号处理程序相当于一个超级任务. Task 2 Task P Task 1 EP signal_handler { … }
33
存储器管理 分区与动态 分区- 提供定长的内存分配和释放 动态 - 提供变长的内存分配和释放 T2 200bytes T2 T3 T1 T1
分区- 提供定长的内存分配和释放 分区与动态 100bytes 100bytes T2 100bytes 100bytes 100bytes 200bytes T2 50bytes T3 50bytes 100bytes 100bytes T1 T1 100bytes T3 200bytes 100bytes 动态 - 提供变长的内存分配和释放
34
中断处理 中断的基本概念 ISRX 中断是来自设备的一个服务请求(异步). 中断应该在尽可能短的时间内响应.
中断处理须有一些必要的上下文保护 Device 1 IX 一个外部中断打断 一个任务,使自己得到响应 interrupt_service_routine() { handle_the_interrupt() } 中断服务程序开始启动 ISRX
35
Nucleus软件方案 原型工具(Prototyping Tools) 嵌入式产品(Embedded Products)
开发工具(Development Tools) Nucleus MNT Nucleus EDE Nucleus UDB
36
Nucleus MNT 完全的原型环境 利用Microsoft Developer Studio 在 Windows 95 / NT下
适用于所有产品的原型环境
37
Nucleus MNT PLUS for MNT NET GRAFIX for Target Application
38
Nucleus MNT 目的 Nucleus 库 Application MNT Target
开发者可以使用Windows开发环境设计嵌入式应用程序 使用两个不同的Nucleus库 其一是针对Windows的(MNT) 其二是针对Target的 但应用程序是相同的 MNT Target Nucleus 库 Application
39
Nucleus EDE 完全的开发环境 Nucleus嵌入式开发环境 集成已有的工具. 提高效率.
40
Nucleus EDE 特点 与现有工具一起工作. 将工程由原型转换成嵌入式应用. 生成目标环境可执行代码. 主要功能: 工程管理 浏览
现有工具的管理和调用 Motorola ARM MIPS SH X86 Processor Support Development Tool Diab/SDS ARM/UDB GNU/UDB GNU/Hitachi UDB CAD-UL
41
Nucleus UDB 完全的调试环境 同一调试环境用于不同的目标平台. 基于Kernel的调试器 内核目标资源显示 任务相关断点
多任务调试 混合C/汇编窗口 自动追踪 …
42
Nucleus UDB MNT, EDE和UDB 与 Nucleus MNT相同的Windows风格 原型用 Nucleus MNT
生成目标代码用 Nucleus EDE 调试目标代码用 Nucleus UDB
43
第三方工具 支持ARM的Nucleus编译工具 ARM公司推出的编译调试环境 ADS1.2(IDE) 支持C、C++、汇编语言
包括调试器AXD和ARMulator 号称在以下方面比其他编译器好30%以上: 代码尺寸 性能 可靠性
44
第三方工具 支持ARM的Nucleus仿真调试工具 Trace32系列:最优秀的仿真调试工具 强大、灵活的调试手段 支持RTOS调试
丰富的断点类型 强大的运行控制 统一的命令集,支持批处理 高效灵活的脚本语言Practice 支持RTOS调试 支持FLASH在线编程 支持嵌入式软件测试 支持多CPU调试和多内核调试 个性化界面,用户可自行设计菜单、按键等
45
Trace32-ICD TRACE32支持的RTOS超过20种,主要有 Trace32对RTOS主要调试手段:
Nucleus OSE Rubus CMX RTXC pSOS VxWORKS... Trace32对RTOS主要调试手段: RTOS专用菜单 Kernel资源显示 Task状态显示、统计评估 任务级调试... 实现方法(以Nucleus为例): Task.Config Nuc ;配置多任务调试器 Menu.Reprogram Nuc ;启动Nucleus菜单 相关命令: Task.TaskStat Task.MbxStat Task.QueueStat Task.EventStat ...
46
最佳方案 基于ARM的嵌入式开发最佳方案 RTOS:Nucleus 编译器:ADS1.2 仿真器/调试器:Trace32-ICD
47
谢谢大家
Similar presentations