代码供学习参考,请仔细阅读代码中的注释


#include "vxWorks.h"
#include "spyLib.h"
#include "stdio.h"
#include "ioLib.h"
#include "stdarg.h"
#include "taskLib.h" 
#include "sysLib.h" 
#include "string.h"
 
#define SPYTASKSMAX 100 
 
int data_ana(const char*,...); 
 
/* 函数功能:检测CPU使用率并调用data_ana函数进行处理,最后将使用率打印在shell 上,也可通过重定向打印 
 * 在别的位置,main函数直接调用该函数即可 
 * 输入参数:
 * 返回值:0 
 */ 
int CPU_utilization(void) 
{ 
    spyLibInit(SPYTASKSMAX);//初始化spy,最大可spy任务数为SPYTASKSMAX 
    spyCommon(5,100,(FUNCPTR)data_ana);//此例程收集任务活动数据并定期运行spyReport()。数据每秒被收集几次,每几秒钟都会生成一个报告。如果freq为零,则默认为5秒。如果ticksPerSec被省略或为零,则默认为100s 
    return 0; 
} 
 
/* 函数功能:可以向不同ip地址发送udp信息 
 * 输入参数:const char* fmtPtn,... 该参数为不定长参数,其所有参数类型均为const char*,通过 
 * v1指针循环赋给rbuf,从而得到spy函数在shell上输出的每行内容,从而在经过处理行内容 
 * 后得到cpu的使用率 
 * 返回值: 0 
 */ 
int data_ana(const char* fmtPtn,...) 
{ 
    char rbuf[256]; 
    const char* IDEL = "IDLE"; 
    char percent[50]; 
    int i=0; 
    int j=0; 
    int p; 
    va_list vl; 
    va_start(vl,fmtPtn); 
    vsprintf(rbuf,fmtPtn,vl); //将v1按格式fmtptn写入字符串buf中,得到一行字符串。
 
    if(strstr(rbuf,IDEL)!= NULL) 
        /* 
         IDLE占用率表示cpu空闲占比,spy输出信息中,有一行是idel的值,得到该值后用100减去它,就得到cpu使用率 
     */ 
    { 
        printf("%s\n",rbuf); 
 
        for(i=0;(i<256)&&(rbuf[i] != '%');i++) 
        { 
     
            if(rbuf[i]>='0'&&rbuf[i]<='9') 
                { 
                    percent[j] = rbuf[i]; 
                    j++; 
                } 
        } 
        percent[j]='\0'; 
        //printf("CPU free percent= %s \n",percent); 
        p=atoi(percent); 
        printf("CPU use percent= %i%%\n",100-p); 
    } 
    va_end(vl); 
    return 0; 
} 

目的:

本实验演示了如何使用VxWorks下的timex()函数来计算一个程序执行的时间。

语法:

void timex(FUNCPTR function_name, int arg1, .., int arg8)

注意: timex函数的第一是参数是指向将被计时的程序的函数指针

实验原理:

 


#include "vxworks.h" /* Always include this as the first thing in every program */
#include "timexLib.h"
#include "stdio.h"

#define ITERATIONS 200

int printit (void);

void timing ()
{

/* Function to perfrom the timing */
FUNCPTR function_ptr = print;
timex(function_ptr, NULL,NULL,NULL,NULL,NULL,NULL,NULL); /* Timing the "print" function */
}

int print(void) /* Function being timed */
{
int i;
for(i=0; i<ITERATIONS; i++) /* printing the task id number and the increment Variable "i" */
printf("Hello, I am task %d and is i = %d\n", taskIdSelf(), i);
return 0;
}
  • 1. VxWorks操作系统概述
  • 1.1.VxWorks 操作系统简介
  • 1.2.VxWorks操作系统内核
  • 1.3.任务管理
  • 1.4.通信、同步和互斥机制
  • 1.5.网络通信
  • 1.6.中断服务程序
  • 1.7.时间管理器
  • 2.VxWorks应用指导
  • 2.1.系统启动
  • 2.2.应用系统配置
  • 2.3.板级支持包BSP
  • 2.4.VxWorks系统任务
  • 2.5.应用软件开发指导
  • 2.6.应用示例分析

下载地址

(16 votes)
Date 2021-03-27
File Size 316.39 KB
Download 1,406

一种VxWorks系统CPU利用率图形化显示方法的设计与实现

下载地址

Files:
Date 2021-03-28
File Size 299.44 KB
Download 342

VxWorks Encryption

1 介绍

VxWorks是由风河(Wind River)提供的一个实时操作系统(RTOS),它支持目标常驻文件系统的创建和使用。VxWorks支持各种类型的文件系统,包括DOS兼容的文件系统还有Wind River自己专有的高度可靠文件系统(HRFS)。

本文描述了如何在VxWorks 7上配置加密的DOS兼容文件系统分区。 

2 前提条件

 以下的指导步骤假设你正在使用:

  • Wind River VxWorks 7, SR0620安装在一个Windows的工作站上
  • 从UEFI BIOS启动的Intel目标机
  • 两个USB闪存盘
  • 目标机上有两个文件系统分区:
    1. /bd0:1 – USB闪存盘1,uEFI引导加载程序和VxWorks内核镜像所在的引导分区
    2. /bd16:1- USB闪存盘2,你打算加密的DOS兼容文件系统分区 

3 相关文档

有关本主题的更多信息,请参考:

  • VxWorks 7安全程序员指南
  • VxWorks 7文件系统和I/O程序员指南 

4 创建并编译安全的VxWorks源码编译(VSB)项目

 打开一个DOS Shell终端,配置编译环境,然后编译项目。