⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intgen.c

📁 VxWorks下VME总线使用源代码程序.
💻 C
字号:
/* intGen.c - a program that generates VMEbus interrupt to demonstrate *            synchronization  among tasks on multiple CPUs. *//* Copyright 1984-1997 Wind River Systems, Inc. *//*modification history--------------------01b,06nov97,mm  added copyright.01b,17sept97,ram added include files stdio.h, sysLib.h taskLib.h01a,14jan92,ms   written.*/#include "vxWorks.h"#include "intGen.h"#include "stdio.h"#include "sysLib.h"#include "taskLib.h"LOCAL int countdown = 25;  /*  countdown value  */LOCAL int intNum;LOCAL STATUS intGen ();/***************************************************************************** *  intGenDemo - Demo for generating a VMEbus interrupt * *  DESCRIPTION * *  intGen routine  counts down from the initialized countdown value to zero *  and then generates VME bus interrupt to synchronize with a task running on *  CPU 1.  This program is meant to be run on CPU 0. * *  The intGen task runs on CPU 0, intSync task runs on CPU 1 * *  CONFIGURATION: You need to set/change the value of INTNUM constant  *                 (VMEbus interrupt number to which intSync task's ISR *                 is connected) and intNum variable (interrupt number *                 for generating VMEbus interrupt). *   *  RETURNS: OK or ERROR * *  LIMITATION: Some VMEbus Single Board Computer systems can not generate *              VMEbus interrupts. Check your hardware and board specific *              BSP documents for VMEbus interrupts support. *  *  EXAMPLE * *  The following is an example from CPU 0's VxWorks shell after starting *  intSync task from CPU 1: * *  -> intGenDemo <intSyncTargetArchType> * where intSyncTargetArchType is the value for the intSync task's target * architecture type. Possible intSyncTargetArchType values and corresponding  * architecture types are given below: * * value     architecture type * ----      ----------------- *  1        68k *  2        sparc *  3        i960 * * example (to generate a VMEbus interrupt to synchronize with intSync task  * running on a Sparc architecture target): * *  -> intGenDemo 1 *  */STATUS intGenDemo     (    int intSyncTargetArchType      /* value:                                    * 1 for 68k architecture targets                                    * 2 for sparc architecure targets                                     * 3 for i960 architecture targets                                    */    )     {    int value;    int result;    intNum = 0;    switch (intSyncTargetArchType)        {        case 1:             intNum = 255;            break;        case 2:             intNum = 18;            break;        case 3:             intNum = 18;            break;        default:             printf ("Invalid target architecture type \n");            return (ERROR);        }    /* do some useful work here */    printf ("\n");    for (value = countdown; value >= 0; value--)        {        printf ("%2d\r", value);        taskDelay (5);        }     printf ("\n\nREADY for Synchronization\n\n");     printf ("CPU 0: Generating VME bus interrupt at level %d and number %d\n\n",                                                  INTLEVEL, intNum);     /* generate VMEbus interrupt */     result = intGen ();     return (result);     }/***************************************************************************** *  intGen - generates a VMEbus interrupt * *  RETURNS: OK or ERROR * */STATUS intGen ()     {          /* generate VME bus interrupt.      * sysBusIntGen requires hardware support for generating a VME bus      * interrupt.      */     if (sysBusIntGen (INTLEVEL, intNum) == ERROR)         {         perror ("Failed to generate interrupt");         return (ERROR);         }     else         {         printf ("interrupt generated\n\n");         return (OK);         }     }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -