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

📄 drv_conf.c

📁 用于TM1300/PNX1300系列DSP(主要用于视频处理)的操作系统pSOS。包括全部源码
💻 C
📖 第 1 页 / 共 4 页
字号:
/* @(#) pSOSystem PowerPC/V2.5.0-F3: apps.v22/xxxx/drv_conf.c 3.17 (hello) 98/04/21 16:36:01 *//***********************************************************************//*                                                                     *//*   MODULE:  drv_conf.c                                               *//*   DATE:    98/04/21                                                 *//*   PURPOSE: pSOSystem driver configuration and initialization        *//*                                                                     *//*            There are two functions in this file:                    *//*                                                                     *//*            SetUpDrivers to setup drivers except for Network drivers *//*            SetUpNI      to setup Network drivers                    *//*                                                                     *//*---------------------------------------------------------------------*//*                                                                     *//*           Copyright 1993 - 1997, Integrated Systems, Inc.           *//*                      ALL RIGHTS RESERVED                            *//*                                                                     *//*   Permission is hereby granted to licensees of Integrated Systems,  *//*   Inc. products to use or abstract this computer program for the    *//*   sole purpose of implementing a product based on Integrated        *//*   Systems, Inc. products.   No other rights to reproduce, use,      *//*   or disseminate this computer program, whether in part or in       *//*   whole, are granted.                                               *//*                                                                     *//*   Integrated Systems, Inc. makes no representation or warranties    *//*   with respect to the performance of this computer program, and     *//*   specifically disclaims any responsibility for any damages,        *//*   special or consequential, connected with the use of this program. *//*                                                                     *//*---------------------------------------------------------------------*//*                                                                     *//*                                                                     *//*                                                                     *//***********************************************************************/#include "sys_conf.h"#include "bsp.h"#include "bspfuncs.h"#include "configs.h"#include "sysvars.h"#include "pna.h"#ifdef SC_INIT_DNTABLE#include <stdarg.h>static long GenerateString(char *dest, char *format, ...);#endif#if SC_DEV_SPI    #include "spi.h"#endif#if (SC_PSE)#include <psecfg.h>#include <sys/stream.h>#endif#if (SC_DEV_DLPI)#include <sys/enetdlpi.h>#endif#ifndef KC_DNLEN /*should be defined in "sys_conf.h"*/#define KC_DNLEN 8#endif#define NULLF 0extern struct SD_parms SysVars;void InstallNi(int (*entry)(), int, int, int, int, int, int);#if SC_PSOS || SC_PSOSM/***********************************************************************//* SetUpDrivers: installs drivers in PsosIO table via a call to        *//*               InstallDriver and then calls driver setup function if *//*               needed. NOTE: If the driver is to be part of the      *//*               Network Interface then it should be placed in the     *//*               SetUpNI function.                                     *//*                                                                     *//*       INPUT: FreeMemPtr = A pointer to unused memory that can be    *//*                           used to allocate space for a driver.      *//*                           NOTE: Be sure to advance FreeMemPtr if    *//*                           memory is allocates!                      *//*                                                                     *//*     RETURNS: The new address of free memory after the drivers have  *//*              allocated space.                                       *//*                                                                     *//*        NOTE: This function does many precompile checks so errors    *//*              can be found during compile-time rather then at run-   *//*              time.                                                  *//*                                                                     *//* To add a non-Network driver to pSOSystem, call InstallDriver().     *//* This adds a device driver to the PsosIO table.  InstallDriver()     *//* takes the following arguments:                                      *//*                                                                     *//*     unsigned short major_number    device major number              *//*     void (*dev_init)(),            device init procedure            *//*     void (*dev_open)(),            device open procedure            *//*     void (*dev_close)(),           device close procedure           *//*     void (*dev_read)(),            device read procedure            *//*     void (*dev_write)(),           device write procedure           *//*     void (*dev_ioctl)(),           device control procedure         *//*     unsigned long rsvd1,           reserved                         *//*     unsigned long rsvd2_and_flags  If set to IO_AUTOINIT << 16, pSOS*//*                                    will automatically call the      *//*                                    drivers initialization           *//*                                    function. The SC_AUTOINIT        *//*                                    #define which is set in          *//*                                    sys_conf.h can be used to set    *//*                                    this element.                    *//*                                                                     *//* InstallDriver() does not return a value.  InstallDriver() assumes   *//* SC_DEVMAX is defined in sys_conf.h and is useful only before pSOS+  *//* has been initialized.                                               *//*                                                                     *//* If you are adding a driver that needs to be initialized before      *//* either pSOS+ is initialized or the driver's init function is        *//* called, then you can call a setup function (that you create) for    *//* the driver (for example, see the CnslSetup call for the serial      *//* device driver).  If your initialization function needs to allocate  *//* memory, you may pass it the FreeMemPtr.  The function should return *//* a new FreeMemPtr which points to the end of the memory it has       *//* allocated.                                                          *//*                                                                     *//* When adding code to install a new driver, it is a good idea to add  *//* precompile checks so errors can be found during compile-time rather *//* then at run-time.  Precompile checks are used, for example, in the  *//* code that installs the pSOSystem serial device driver below.        *//*                                                                     *//***********************************************************************/UCHAR *SetUpDrivers(UCHAR *FreeMemPtr){extern ULONG PsosNumDntEnts;/*---------------------------------------------------------------------*//* Install the pSOSystem serial device driver.                         *//*---------------------------------------------------------------------*/#if (SC_DEV_SERIAL && BSP_SERIAL)    #if(SC_DEV_SERIAL > SC_DEVMAX)        #error "SC_DEV_SERIAL cannot be > SC_DEVMAX"    #endif    InstallDriver(SC_DEV_SERIAL, CnslInit, NULLF, NULLF,CnslRead,          CnslWrite, CnslCntrl, 0, 0, IO_AUTOINIT);    FreeMemPtr = CnslSetup(FreeMemPtr, SysVars.DefBaud,                           SC_APP_CONSOLE);    PsosNumDntEnts++;#endif/*---------------------------------------------------------------------*//* Install Pseudo driver                                               *//* NOTE: This driver must be called from a task it cannot use the      *//*       auto initialization freature of pSOS+                         *//*---------------------------------------------------------------------*/#if (SC_DEV_PSEUDO)    InstallDriver(SC_DEV_PSEUDO, PseudoIOInit, NULLF, NULLF,                  PseudoIORead, PseudoIOWrite, PseudoIOCntrl, 0, 0, 0);    PsosNumDntEnts++;#endif/*--------------------------------------------------------------------*//* Setup pSOSystem PC console device driver                           *//*--------------------------------------------------------------------*/#if (SC_DEV_CONSOLE && BSP_CONSOLE)    #if (SC_DEV_CONSOLE >SC_DEVMAX)    #error "SC_DEV_CONSOLE cannot be > SC_DEVMAX"    #endif    InstallDriver(SC_DEV_CONSOLE, PcCnslInit, NULLF, NULLF,                  PcCnslRead, PcCnslWrite, PcCnslCntrl, 0, 0, IO_AUTOINIT);    PsosNumDntEnts++;#endif/*---------------------------------------------------------------------*//* Install the pSOSystem tick timer.                                   *//*---------------------------------------------------------------------*/#if SC_DEV_TIMER    #if(SC_DEV_TIMER > SC_DEVMAX)        #error "SC_DEV_TIMER cannot be > SC_DEVMAX"    #endif    #if (!SC_PSOS && !SC_PSOSM)        #error "Must have pSOS+ or pSOS+m in system to use tick timer!"    #endif    InstallDriver(SC_DEV_TIMER, RtcInit, NULLF, NULLF, NULLF, NULLF,          NULLF, 0, 0, IO_AUTOINIT);    PsosNumDntEnts++;#endif/*---------------------------------------------------------------------*//* Install the pSOSystem ramdisk driver.                               *//* NOTE: This driver must be called from a task it cannot use the      *//*       auto initialization freature of pSOS+                         *//*---------------------------------------------------------------------*/#if SC_DEV_RAMDISK    #if(SC_DEV_RAMDISK > SC_DEVMAX)        #error "SC_DEV_RAMDISK cannot be > SC_DEVMAX"    #endif    InstallDriver(SC_DEV_RAMDISK, RdskInit, RdskOpen, RdskClose, RdskRead,                  RdskWrite, RdskCntrl, 0, 0, 0);    PsosNumDntEnts++;#endif/*---------------------------------------------------------------------*//* Install the pSOSystem SCSI driver.                                  *//* NOTE: This driver must be called from a task it cannot use the      *//*       auto initialization freature of pSOS+                         *//*---------------------------------------------------------------------*/#if (SC_DEV_SCSI && BSP_SCSI)    #if(SC_DEV_SCSI > SC_DEVMAX)        #error "SC_DEV_SCSI cannot be > SC_DEVMAX"    #endif    InstallDriver(SC_DEV_SCSI, SdrvInit, SdskOpen, SdskClose, SdskRead,                  SdskWrite, SdrvCntrl, 0, 0, 0);    PsosNumDntEnts += (8*5);#endif/*---------------------------------------------------------------------*//* Install the pSOSystem SCSI Tape driver.                             *//* NOTE: This driver must be called from a task it cannot use the      *//*       auto initialization freature of pSOS+                         *//*---------------------------------------------------------------------*/#if (SC_DEV_SCSI_TAPE && BSP_SCSI_TAPE)    #if(SC_DEV_SCSI_TAPE > SC_DEVMAX)        #error "SC_DEV_SCSI_TAPE cannot be > SC_DEVMAX"    #endif    InstallDriver(SC_DEV_SCSI_TAPE, SdrvInit, StapeOpen, StapeClose,                  StapeRead, StapeWrite, SdrvCntrl, 0, 0, 0);     PsosNumDntEnts += 8;    /*-----------------------------------------------------------------*/    /* Don't need to call SdrvSetup this time since it was done before */    /*-----------------------------------------------------------------*/    /* SdrvSetup(); */#endif/*---------------------------------------------------------------------*//* Setup pSOSystem CMOS clock driver                                   *//*---------------------------------------------------------------------*/#if (SC_DEV_CMOS && BSP_CLOCK)    #if (SC_DEV_CMOS >SC_DEVMAX)    #error "SC_DEV_CMOS cannot be > SC_DEVMAX"    #endif    InstallDriver(SC_DEV_CMOS, NULLF, NULLF, NULLF, CmcRead,                  CmcWrite, NULLF, 0, 0, 0);    PsosNumDntEnts++;#endif/*---------------------------------------------------------------------*//* Setup pSOSystem printer driver                                      *//*---------------------------------------------------------------------*/#if (SC_DEV_PARALLEL && BSP_PARALLEL)    #if (SC_DEV_PARALLEL >SC_DEVMAX)    #error "SC_DEV_PARALLEL cannot be > SC_DEVMAX"    #endif    InstallDriver(SC_DEV_PARALLEL, ParInit, ParOpen, ParClose, NULLF,                  ParWrite, ParCntrl, 0, 0, 0);    PsosNumDntEnts++;#endif /*---------------------------------------------------------------------*//* Setup pSOSystem floppy diskette driver                              *//* NOTE: This driver must be called from a task it cannot use the      *//*       auto initialization freature of pSOS+                         *//*---------------------------------------------------------------------*/#if (SC_DEV_FLOPPY && BSP_FLOPPY)    #if (SC_DEV_FLOPPY >SC_DEVMAX)    #error "SC_DEV_FLOPPY cannot be > SC_DEVMAX"    #endif    InstallDriver(SC_DEV_FLOPPY, FlpInit, NULLF, NULLF, FlpRead,                  FlpWrite, NULLF, 0, 0, 0);    PsosNumDntEnts += 2;#endif /*---------------------------------------------------------------------*//* Setup pSOSystem IDE disk driver                                     *//* NOTE: This driver must be called from a task it cannot use the      *//*       auto initialization freature of pSOS+                         *//*---------------------------------------------------------------------*/#if (SC_DEV_IDE && BSP_IDE)    #if (SC_DEV_IDE >SC_DEVMAX)

⌨️ 快捷键说明

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