`
isiqi
  • 浏览: 16549270 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

vxWorks学习笔记

阅读更多

1.VxWorks开发方式:交叉开发,即将开发分为主机(host)和目标机(target)两部分。
类似于dos下C语言程序的开发。
合并开发的优点:简单
缺点:资源消耗量大,CPU支持,非标准体系的支持
host (Tornado) target(vxWork) 小程序模块
vxWorks实际采用开发模式
Tornado提供:编辑,编译,调试,性能分析工具,是vxWorks的开发工具
vxWorks:面向对象可以剪裁的实际运行操作系统
2.vxWorks启动方式
<1>Rom方式 (vxWork_rom)
vxWorks直接烧入rom
<2>Rom引导方式(bootrom+vxWorks)
其中bootrom烧入rom,vxWorks可以通过从串口,网口,硬盘,flash等下载!这里的bootrom不是开发环境中的bootable,在开发环境里bootable指的是vxWorks,downloadable指application
3.调试
<1>attach
用来在多任务调试时将调试对象绑定到某个任务
<2>任务级调试(attach taskName)
单个任务的调试不会影响到其他任务的运行,主要用来调用户的应用程序。
全局断点:在调另一任务或本任务时,系统运行本任务断点,则停下。各任务要配合使用。
任务断点:调本任务时,系统运行到本任务断点,则停下。如果没有attach到本任务,不起作用。
一次性断点:跑到一次之后自动删除。
<3>系统级调试(attach system)
把所有task和系统core、中断看成一个整体,可用于调试系统和中断。对中断调试,如果不是系统级调试,无论是那种断点都不起作用
!wdbAgent不在调试范围内,当任务级调试时工作在中断方式,系统级调试工作在轮询方式。
!可是使用命令行方式的调试,参看crossWind教程。
4.调度
优先级调度(无条件)
时间片:同优先级,如果时间片没有打开,任务采取先到先运行,运行完毕在交出cpu,如果打开,则轮流使用cpu。
!死循环使比它优先级低的任务都不能运行。
5.任务间通讯
信号量,全局变量,管道,signal,message queue,socket
信号量:分互斥、同步(二进制)、计数三种。其中互斥用于资源管理,禁止多任务同时共享内存。它的优势是:速度快;同一任务如果已经take到,再次take还会成功。
!全局变量一定要有信号量保护。
Message queue:封装了全局变量和信号量,优势是:快;有很多操作项(send多recv少:消息可以排队,用priority_urgent选项加到队列头。send少recv多:取的时候支持fifo和优先级,即有消息到达时给高优先级任务还是先被recv阻塞的任务)
signal:紧急通信机制,仅次于中断,依赖于系统调度,不依赖时间片(中断依赖于硬件时间),因此signal又称为软中断。
!exeption:内部中断,属于硬中断(例如除法出错)。它与signal的关系如下图:
taskA taskB 软中断处理 signal taskC taskB User’s tasks exception signal 软中断处理 Exception中断处理历程1. 查TCB(task control block),得到正在执行的任务信息 2. 如果注册了这个signal,则挂起任务 3. 打印exception号,pc指针,reg值 4. 如果注册了这个signal,给任务发signal
6.内存分配
在config.h中由宏定义指定。
user_reserved mem (保存热启动时 的一些参数) System Memory pool Wdb poll vxWorks Memory的最终布局 LOCAL_MEM_LOCAL_ADRSRAM_LOW_ADRS FREE_RAM_ADRS WDB_POOL_SIZE sysMemTop() sysPhyMemTop() Bootrom {romInit() romStart()}Bootrom {usrInit() usrRoot()} VxWorks ROM RAM ROM_SIZEROM_BASE_SIZEROM_TEXT_ADRSRAM_HIGH_ADRSRAM_LOW_ADRS启动时的ROM和RAM布局
!bootrom中的内存驱动在config/scr/drv/mem下,直接include *.c就可以使用其中的函数。对于flash必须在config.h中加上类型的定义,换flash芯片在flash***.h中修改控制字等宏定义。
7.中断
中断分三层含义:
中断引脚号(或从中断控制器得到)(interrupt level) ***_LEVEL
中断号(interrupt number) INT_VEC_GET(***_LEVEL)
中断向量(对x86是中断号*4)(interrupt vector) INUM_TO_IVEC(INT_VEC_GET(***_LEVEL)
!中断处理程序和中断向量必须connect再enable后才能被激活,对x86使用sysIntEnablePIC(),对MIPS,ARM,PPC等使用intEnable()。
!中断中不能含有会使中断阻塞的函数接口。(例如printf就不行,使用logMsg)
8.Timer
vxWorks使用3个timer,分别用于系统时钟,辅助时钟和时标。
Timer0:用于系统时钟(system clock),可用sysClkRateSet()改变速率,默认值时60次/秒。
!vxWorks下的watchdog基于timer0,因为是在interrupt尺度,使用必须谨慎,否则会降低系统效率。
Timer1:用于辅助时钟(auxiliary clock),在bsp.h中定义了最大速率,最小速率和实际速率初始值。可用sysAuxClkRateSet()改变速度。用sysAuxClkConnect()定义辅助时钟的定时任务。
Timer2:用于时标(timestamp)。从系统开始运行时就一直递增,可以用来获得系统运行时间,在windview工具中被使用。用户程序也可以通过sysTimestamp()得到运行时间。
9.*.o,*.out,vxWorks
一个板子跑起来之后可以有多个*.o和*.out(类似于window下的应用程序)和有且仅有一个的vxWorks(类似于window操作系统),但这些*.o和*.out的编译必须和vxWorks基于同一种cpu。
!bootrom在启动时被部分复制到ram里在运行,这一部分将下载vxWorks到ram,然

后跳转到vxWorks入口处运行,然后vxWorks将这一部分的bootrom重新划分到系统池。
10.符号表(symbol table)
符号表就是一个数组,定义了函数和全局变量跟他们的地址的对应关系,默认情况下符号表放在主机上,如果定义了standalone symbol table,则目标机上也有一份符号表,一般与target shell绑定使用。
11.一些配置
pci的配置默认使用自动配置,如果要手工配置,必须定义pci configuration
键盘和显示器的驱动归入串口部分,默认输入输出是显示器和键盘,可以重定向到串口。
12.使用watchdog产生周期性调用例程
主程序:watchdog(func,param,tick)
被watchdog调用的程序:func(param)
{
watchdog(func,param,tick);
……
}
13.任务切换速度:us量级,Cache关闭时上升到10us量级。
例如对于x86,233Mhz,cache打开,中断响应典型值3.5us。其中c function挂接0.7us,中断推出+task重调度2.5us
14.tornado文件结构
用户主要需要目录:
tornado/host:tcl控制语句、主机上运行的exe
tornado/docs:帮助文件,其中的books.html提供总览
tornado/target:头文件,库文件,bsp
修改bsp主要修改target目录下的文件,bsp的修改影响到bootrom和vxworks两部分,下面介绍的是使用工程方法建立的bootrom和vxWorks.
15.bootrom的启动顺序和源码位置
函数: romInit

分享到:
评论

相关推荐

    VxWorks学习笔记——实战之在VMWare上安装VxWorks操作系统.rar

    总的来说,这份“VxWorks学习笔记——实战之在VMWare上安装VxWorks操作系统”文档将深入浅出地介绍如何在虚拟环境中搭建VxWorks开发环境,以及如何利用其强大的实时性、安全性、多任务处理等功能。对于想要涉足...

    Tornado和VxWorks学习笔记

    Tornado和VxWorks学习笔记, 包括Tornado和VxWorks的一些基础知识, 实际应用

    vxworks学习笔记2

    ### VxWorks 学习笔记2 - X86romInit.s 分析与 VxWorks 启动过程详解 #### X86romInit.s 分析概述 在深入探讨 VxWorks 操作系统的启动过程之前,我们先来理解一下 X86romInit.s 文件中的关键概念及其在启动过程中...

    vxworks学习笔记

    本学习笔记将深入探讨VxWorks的基础概念、核心组件以及如何进行系统开发。 一、VxWorks概述 VxWorks以其高效的实时性、稳定性及强大的网络功能著称。它提供了微内核结构,允许开发者根据需求选择必要的服务,以降低...

    Vxworks学习笔记

    个人前几年学习Vxworks时,整理的笔记,总给大家了。 1 基于硬盘启动的Vxworks环境搭建 3 2 Vxworks引导盘制作 6 2.1 通过DOS加载VxWorks方法 6 2.2 Bootrom三种类型 7 2.3 VxWorks映象 7 2.4 Bootrom.sys最快制作...

    vxworks学习笔记3

    ### VxWorks网络驱动配置与分析 #### 一、引言 VxWorks是一款实时操作系统(RTOS),广泛应用于嵌入式系统开发领域。它以其高效性和稳定性著称,在航空航天、国防工业、通信设备等领域有着重要的应用。对于从事...

    vxWorks学习笔记.doc

    VxWorks是一个实时操作系统(RTOS),专为嵌入式系统设计。它的主要特点是高效、可靠且可裁剪,能够满足不同设备对操作系统的需求。以下是对VxWorks关键知识点的详细说明: 1. **VxWorks开发方式**: VxWorks的...

    vxworks读书笔记

    VXWORKS 是一个著名的实时操作系统(RTOS),广泛应用于通信、航空、军事和其他对响应速度有严格要求的领域。...通过深入学习和实践,开发者能够更好地利用VxWorks的强大功能来构建高效、可靠的实时系统。

    VxWorks 培训学习笔记(6)

    VxWorks 培训学习笔记(6) -bootrom 启动顺序和源码位置 -VxWorks 启动顺序和源码位置

    vxWorks全套学习资料

    阅读这样的学习笔记,不仅可以节省自己摸索的时间,还能站在巨人的肩膀上进一步拓展自己的视野。 总之,这套vxWorks全套学习资料提供了一个系统的学习框架,无论是对初学者还是对有一定经验的开发者,都是极其宝贵...

    VxWorks 培训学习笔记(5)

    ### VxWorks培训学习笔记(5):Timer与*.o、*.out的理解 #### Timer机制详解 VxWorks是一款实时操作系统(RTOS),广泛应用于嵌入式系统开发领域。本章节重点介绍VxWorks中的计时器(Timer)机制及其三种类型的...

    VxWorks 培训学习笔记(2)

    VxWorks是一个实时操作系统(RTOS),广泛应用于嵌入式系统开发。本文主要探讨VxWorks的启动方式和调试方法,这对于理解和使用VxWorks至关重要。 首先,我们来深入理解VxWorks的启动方式: 1. **Rom方式 (vxWorks_...

    VxWorks 培训学习笔记(1)

    ### VxWorks培训学习笔记(1) #### 一、嵌入式开发涉及的内容 嵌入式开发是一项综合性强的工作,涉及到硬件与软件两个层面。在实际项目开发过程中,需要综合考虑多个方面,确保最终产品的稳定性和高效性。 #####...

    VxWorks 培训学习笔记(3)

    本篇笔记主要探讨了VxWorks中的两个关键概念:调度和任务间通讯。 首先,我们来了解一下VxWorks的调度机制。VxWorks支持优先级调度,这意味着任务按照它们的优先级顺序获得CPU的执行权。这种无条件的优先级调度策略...

    VxWorks 培训学习笔记(4)

    VxWorks是一个实时操作系统(RTOS),被广泛应用于嵌入式系统中。本文将深入探讨在VxWorks中关于内存分配和中断管理的关键知识点。 **内存分配** 在VxWorks中,内存分配策略是通过配置文件`config.h`来定制的。这个...

    VxWorks操作系统学习笔记

    ### VxWorks操作系统学习笔记知识点总结 #### 一、任务状态与转换 在VxWorks操作系统中,任务是操作系统中最基本的执行单元。一个任务在不同的执行阶段会处于不同的状态,这些状态及其转换机制对理解任务的行为至...

Global site tag (gtag.js) - Google Analytics