内容提要 概述 Nucleus PLUS介绍 Nucleus开发环境
Nucleus—嵌入式实时多任务操作系统 产品概况 美国ATI(Accelerated Technology Inc.)公司出品 提供完全源代码,无产品版税(Royalties Free) 模块化结构,可随意裁剪 支持几乎所有的嵌入式微处理器 开发应用非常方便: 无BSP开发 可移植性强 目前在源码RTOS市场占据第一位
ATI公司简介 Accelerated Technology, Inc. 成长历程 成立于 1990年 平均增长率: 70% 加入著名的Mentor Graphics公司 成长历程 1990 – 发布Nucleus RTX for AMD29k 1993 – 第一家商用 RTOS for ARM6 1997 -第一家商用 RTOS for PPC601 1998 – 位列全球增长最快的500家企业之中 1999 - 2000 Motorola 黄金搭档 1999, 2000 《软件》, 位列500 强1999, 2000 《财富》, 位列最快500强 1999, 2000 Nucleus EDE, 嵌入式产品10佳, 电子工业年报, 1999
ATI公司简介 ATI的使命 Provide embedded software developers the widest choice of affordable products with source code. + 强而大的公司 + 全方位的产品线 + 低价格 + 源代码 + 无产品版税 + 强大的技术支持
Nucleus 产品线一览 开发工具 (Develop tools) 图形软件包 TCP/IP协议包 (Grafix) (Nucleus NET) 系统内核 (Kernel) 文件系统
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
Nucleus 产品线一览—— Grafix Email Client# Basic Services Drivers GUI VGA LCD Keyboard Touch Screen Mouse 图形软件包 (Nucleus GRAFIX)
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) Email POP3 Client SMTP(cli/serv) MIME# Java (Nucleus JVi**) (Nucleus span) RIP2 OSPF# Spanning Tree Net Drivers PCMICA Ethernet PPP SLIP
Nucleus开发工具 Nucleus Lauterbach IAR Paradigm Green Hills CAD-UL Diab-SDS Nucleus EPI ARM EDE DBG+ MNT UDB Tasking Microsoft Others
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!
Nucleus的应用 导航 路由 GPS 手机 PDA 控制 医疗 Nucleus 机顶盒 网络 汽车电子 通信设备 智能卡 …
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
Nucleus PLUS提供的服务 任务间通信 任务间同步 任务控制 存储器管理 Nucleus Plus I/O设备驱动 定时器/ 系统时钟 中断控制
操作系统在产品开发中的位置 Application RTOS Nucleus BSP Board Hardware
操作系统的基本功能 任务调度 任务通信 内存管理 中断处理 其他功能 设备驱动 图形 协议 其他...
Development Basics 系统启动和存储空间分配 custom- 如中断向量表(.vectors) .code -代码段 Start - crt0.s custom- 如中断向量表(.vectors) .code -代码段 .data - 初始化数据段 .bss - 未初始化数据段 板级初始化 - int.s 操作系统初始化 - inc.c 应用程序初始化 .code .data(initialized ) .vectors .bss(uninitialized) 循环调度
RTOS的基本概念 什么是任务 什么是任务(Task)? A task is a semi-independent program segment with a dedicated purpose 任务是具有特定目的的半独立的程序段 任务是Nucleus中最常用的应用程序处理线程 任务的属性 状态、优先级、时间片、堆栈、程序指针、寄存器……
任务的属性 . 状态 Ready - 就绪,等待执行. Running - 正在执行. Suspended - 挂起,等待特定的事件触发. Finished - 已完成处理. 任务的属性、信息都存放在任务控制块中(TCB) Priority 优先级 当前的状态 堆栈指针 ... Stack * State .
任务调度执行 传统单任务的特点: 传统单任务执行 一个任务完成系统全部操作 A single 单个执行线索(execute thread) 单个堆栈空间 A single task /* Main control of program */ main() { ….. do_something(); } /* A function to do something */ void do_something() stack
任务调度执行 多任务模式 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 多个任务竞争、并发执行 多个执行线索 多个相互独立的堆栈空间
任务调度执行 调度控制程序 优先级(priority) - 反应任务的重要性 时间片 (time_slice) - 任务一次所占用CPU 的最长时间. 抢占性(preemptive) - 除了被中断抢占外,任务可以无限期的占用CPU。
任务调度执行 调度控制程序 . 基于优先级排列的已创建任务链表 最高优先级 (0) 最低优先级 (255) Task List (255)
任务调度执行 上下文切换 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
任务调度执行 任务的挂起 无条件挂起 中断产生时挂起. 保存所有的内部寄存器. 条件挂起 由内核调用产生挂起. 只保存相关寄存器
任务间通信 通信方式 任务间通信 - 在两个或多个任务间传递数据 Mailboxes -邮箱 Queues -队列 Pipes -管道
任务间通信 Mailboxes 定长(4个长字) 系统开销小 在两个或多个任务间一次传递一条消息 1 Message Task X Task Y
任务间通信 Queues/Pipes 容纳多条消息 定长或变长 用来传送多条消息 Queue消息长度以长字为单位,Pipe以字节为单位。 Task X Task Y
任务间同步 同步方式 任务间同步 - 任务间同步控制 Semaphores-信号量(旗语) Events -事件 Signals -信号(软中断)
任务间同步 二元信号量(0,1) 控制对共享资源的访问 Program Execution 获取信号量 共享 资源 释放信号量
任务间同步 Events 当一个任务试图得到事件标志位未置位的事件时,任务将挂起;置位后,任务恢复 1 1 1 Task 1 事件处理 1 1 1 事件处理 1 1 1 Task 1 当一个任务试图得到事件标志位未置位的事件时,任务将挂起;置位后,任务恢复
任务间同步 Signals EP 由任务触发. 当Task1、Task2发出一个信号,Task P中信号处理程序将立即执行. 信号处理程序相当于一个超级任务. Task 2 Task P Task 1 EP signal_handler { … }
存储器管理 分区与动态 分区- 提供定长的内存分配和释放 动态 - 提供变长的内存分配和释放 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 动态 - 提供变长的内存分配和释放
中断处理 中断的基本概念 ISRX 中断是来自设备的一个服务请求(异步). 中断应该在尽可能短的时间内响应. 中断处理须有一些必要的上下文保护 Device 1 IX 一个外部中断打断 一个任务,使自己得到响应 interrupt_service_routine() { handle_the_interrupt() } 中断服务程序开始启动 ISRX
Nucleus软件方案 原型工具(Prototyping Tools) 嵌入式产品(Embedded Products) 开发工具(Development Tools) Nucleus MNT Nucleus EDE Nucleus UDB
Nucleus MNT 完全的原型环境 利用Microsoft Developer Studio 在 Windows 95 / NT下 适用于所有产品的原型环境
Nucleus MNT PLUS for MNT NET GRAFIX for Target Application
Nucleus MNT 目的 Nucleus 库 Application MNT Target 开发者可以使用Windows开发环境设计嵌入式应用程序 使用两个不同的Nucleus库 其一是针对Windows的(MNT) 其二是针对Target的 但应用程序是相同的 MNT Target Nucleus 库 Application
Nucleus EDE 完全的开发环境 Nucleus嵌入式开发环境 集成已有的工具. 提高效率.
Nucleus EDE 特点 与现有工具一起工作. 将工程由原型转换成嵌入式应用. 生成目标环境可执行代码. 主要功能: 工程管理 浏览 现有工具的管理和调用 Motorola ARM MIPS SH X86 Processor Support Development Tool Diab/SDS ARM/UDB GNU/UDB GNU/Hitachi UDB CAD-UL
Nucleus UDB 完全的调试环境 同一调试环境用于不同的目标平台. 基于Kernel的调试器 内核目标资源显示 任务相关断点 多任务调试 混合C/汇编窗口 自动追踪 …
Nucleus UDB MNT, EDE和UDB 与 Nucleus MNT相同的Windows风格 原型用 Nucleus MNT 生成目标代码用 Nucleus EDE 调试目标代码用 Nucleus UDB
第三方工具 支持ARM的Nucleus编译工具 ARM公司推出的编译调试环境 ADS1.2(IDE) 支持C、C++、汇编语言 包括调试器AXD和ARMulator 号称在以下方面比其他编译器好30%以上: 代码尺寸 性能 可靠性
第三方工具 支持ARM的Nucleus仿真调试工具 Trace32系列:最优秀的仿真调试工具 强大、灵活的调试手段 支持RTOS调试 丰富的断点类型 强大的运行控制 统一的命令集,支持批处理 高效灵活的脚本语言Practice 支持RTOS调试 支持FLASH在线编程 支持嵌入式软件测试 支持多CPU调试和多内核调试 个性化界面,用户可自行设计菜单、按键等
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 ...
最佳方案 基于ARM的嵌入式开发最佳方案 RTOS:Nucleus 编译器:ADS1.2 仿真器/调试器:Trace32-ICD
谢谢大家