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

📄 osal.c

📁 本程序为ST公司开发的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************                O S A L  . C***************************************************************************************************************************************************************  Project           : CDM M8 CAV2*  Organisation      : Philips Optical Storage*  Module            : Operating System Abstraction Layer**  Description       : interface-layer functions of the OS Abstraction Layer* ******************************************************************************* * *  \par          Change History: * * - MR060911e    Moved HostIfTask() from osal.c to hostif.c. * *************************************************** * * STM CVS Log: * * $Log: osal.c,v $ * Revision 1.37  2007/09/27 11:37:30  belardi * Increased Decoder stack size to fix overflow with low bitrate WMA * * Revision 1.36  2007/09/20 21:35:52  longauer * virtual iPod authentication is working * * Revision 1.35  2007/08/14 15:28:26  dellorto * multiple mechanisms * * Revision 1.34  2007/08/10 12:33:29  longauer * IPOD_AP compilation switch enables future iAP * * Revision 1.33  2007/04/11 14:20:14  belardi * Integration of HAVE_CD_MECHA modification by [GP] * * Revision 1.32  2007/02/09 12:12:27  belardi * First integration of iPod pass-through * - increased USB task stack in case of debug mode * * Revision 1.31  2006/10/09 15:18:52  dellorto * LoaderTask and CaptureTask moved to related files * * Revision 1.30  2006/09/18 09:55:24  belardi * Corrected CVS keyword usage * * Revision 1.29  2006/09/18 09:24:52  belardi * Added Log CVS keyword into file header * * ******************************************************************************/#include "configuration.h"#define  DEBUG_MODID       DEBUG_MODULE_ID_OSAL#include "gendef.h"        // for uint32 etc.#include "os20.h"#include "lld_eic.h"       // for EIC_CH_xx#include "osal.h"#ifdef APM_PICKUP#include "service.h"#endif#if (DEBUG_INCLUDE_PCDEB == 1)#include "pcdeb.h"#endif#define DEBUG_OSAL(s)   DEBUG_printf(s)/******************************************************************************                    Macro Definitions*****************************************************************************/// implementator's note: avoid runtime malloc// unfortunately there is a hardcoded connection between the// number of threads (OSAL_THREAD_LAST) and the number of stacks...// (who knows a more elegant way?)#define STACKSIZE_IDLE        (512)#define STACKSIZE_HOSTIF      (512)#define STACKSIZE_SERVO       (512)#define STACKSIZE_PLAYER      (1024)#define STACKSIZE_LOADER      (256)#if (HAVE_WMA!=0 || HAVE_AAC!=0)#define STACKSIZE_DECODER     (2048)#else#define STACKSIZE_DECODER     (1024)#endif#define STACKSIZE_CONTROLLER  (768)#define STACKSIZE_CAPTURE     (512)#define STACKSIZE_FILESYS     (3*1024)#if (0 != HAVE_USB)#if (MUSB_DIAG > 0) // this is defined in the project, not in configuration.h! #define STACKSIZE_USB         (5*256)#else #define STACKSIZE_USB         (4*256)#endif#endif#if (0 != HAVE_SDC)#define STACKSIZE_SDC         (256)#endif /* HAVE_SDC */#if (0 != IPOD_AP)	//[LL]new#define STACKSIZE_ACP         (256)	//[LL]new#endif/*IPOD_AP*/	//[LL]new#define HOSTIF_TASK_PRIORITY      (MAX_USER_PRIORITY - 1)#define LOADER_TASK_PRIORITY      (MAX_USER_PRIORITY - 2)#define PLAYER_TASK_PRIORITY      (MAX_USER_PRIORITY - 3)#define SERVO_TASK_PRIORITY       (MAX_USER_PRIORITY - 4)#define CAPTURE_TASK_PRIORITY     (MAX_USER_PRIORITY - 5)#define USB_TASK_PRIORITY         (MAX_USER_PRIORITY - 6)#define SDC_TASK_PRIORITY         (MAX_USER_PRIORITY - 7)#define CONTROLLER_TASK_PRIORITY  (MAX_USER_PRIORITY - 9)#define DECODER_TASK_PRIORITY     (MAX_USER_PRIORITY - 10)#define FILESYS_TASK_PRIORITY     (MAX_USER_PRIORITY - 11)#if (0 != IPOD_AP)	//[LL]new#define ACP_TASK_PRIORITY         (MAX_USER_PRIORITY - 12)	//[LL]new#endif/*IPOD_AP*/	//[LL]new#ifdef APM_PICKUP#define LOADER_START    0#else#define LOADER_START    1#endif#define IDLE_TASK_PRIORITY        (MIN_USER_PRIORITY + 1)/******************************************************************************                    Type Definitions*****************************************************************************/// static (initialization) info for each threadtypedef struct{  uint8 *                   stack;  uint16                    stacksize;  uint8                     priority;  OSAL_THREAD_FPTR          fptr;  int                       sem_cnt;  OSAL_THREAD_ID_t          thread_id;  char                      tname[16];} OSAL_THREAD_STARTUP_t;/******************************************************************************                    Static Function Prototypes*****************************************************************************//******************************************************************************                    Static Data Definitions*****************************************************************************/static   OSAL_THREAD_DATA_t thread_admin[OSAL_THREAD_LAST];static __align(8) uint8 idle_stack[STACKSIZE_IDLE];static __align(8) uint8 hostif_stack[STACKSIZE_HOSTIF];#if (HAVE_CD_MECHA == 1)static __align(8) uint8 servo_stack[STACKSIZE_SERVO];#endifstatic __align(8) uint8 player_stack[STACKSIZE_PLAYER];#if (HAVE_CD_MECHA == 1)static __align(8) uint8 loader_stack[STACKSIZE_LOADER];#endifstatic __align(8) uint8 decoder_stack[STACKSIZE_DECODER];static __align(8) uint8 controller_stack[STACKSIZE_CONTROLLER];static __align(8) uint8 capture_stack[STACKSIZE_CAPTURE];static __align(8) uint8 filesys_stack[STACKSIZE_FILESYS];#if (0 != HAVE_USB)static __align(8) uint8 usb_stack[STACKSIZE_USB];#endif#if (0 != HAVE_SDC)static __align(8) uint8 sdc_stack[STACKSIZE_SDC];#endif /* HAVE_SDC */#if (0 != IPOD_AP)	//[LL]newstatic __align(8) uint8 acp_stack[STACKSIZE_ACP];	//[LL]new#endif /*IPOD_AP*/	//[LL]newvoid IdleTask(void *unused);#if (HAVE_CD_MECHA == 1)void LoaderTask(void *unused);#endifvoid HostIfTask(void *unused);   /* Implementation in hostif.c. */#if (0 != HAVE_USB)void USBTask(void *unused);#endif#if (0 != HAVE_SDC)void SDCTask(void *unused);#endif /* HAVE_SDC */#if (HAVE_CD_MECHA == 1)void ServoTask(void *unused);#endifvoid PlayerTask(void *unused);void DecoderTask(void *unused);void ControllerTask(void *unused);void CaptureTask(void *unused);void FileSystemTask(void *unused);#if (0 != IPOD_AP)	//[LL]newvoid ACPTask(void *unused);	//[LL]new#endif/*IPOD_AP*/	//[LL]newconst OSAL_THREAD_STARTUP_t OSAL_thread_startup_list[OSAL_THREAD_LAST] ={  //stack             stacksize             priority                  fptr  { idle_stack,       STACKSIZE_IDLE,       IDLE_TASK_PRIORITY,       IdleTask,         0,  OSAL_THREAD_IdleTask            ,"Idle"      },  { hostif_stack,     STACKSIZE_HOSTIF,     HOSTIF_TASK_PRIORITY,     HostIfTask,       0,  OSAL_THREAD_HostIfTask          ,"HostIf"    },#if (HAVE_CD_MECHA == 1)  { servo_stack,      STACKSIZE_SERVO,      SERVO_TASK_PRIORITY,      ServoTask,        1,  OSAL_THREAD_ServoTask           ,"Servo"     },#endif  { player_stack,     STACKSIZE_PLAYER,     PLAYER_TASK_PRIORITY,     PlayerTask,       1,  OSAL_THREAD_PlayerTask          ,"Player"    },#if (HAVE_CD_MECHA == 1)  { loader_stack,     STACKSIZE_LOADER,     LOADER_TASK_PRIORITY,     LoaderTask,       LOADER_START,  OSAL_THREAD_LoaderTask ,"Loader"  },#endif  { decoder_stack,    STACKSIZE_DECODER,    DECODER_TASK_PRIORITY,    DecoderTask,      0,  OSAL_THREAD_DecoderTask         ,"Decoder"   },  { controller_stack, STACKSIZE_CONTROLLER, CONTROLLER_TASK_PRIORITY, ControllerTask,   0,  OSAL_THREAD_ControllerTask      ,"Controller"},  { capture_stack,    STACKSIZE_CAPTURE,    CAPTURE_TASK_PRIORITY,    CaptureTask,      1,  OSAL_THREAD_CaptureTask         ,"Capture"   },  { filesys_stack,    STACKSIZE_FILESYS,    FILESYS_TASK_PRIORITY,    FileSystemTask,   0,  OSAL_THREAD_FilesysTask         ,"FileSystem"},#if (0 != HAVE_USB)  { usb_stack,        STACKSIZE_USB,        USB_TASK_PRIORITY,        USBTask,          1,  OSAL_THREAD_USBTask             ,"USBTask"   },#endif#if (0 != HAVE_SDC)  { sdc_stack,        STACKSIZE_SDC,        SDC_TASK_PRIORITY,        SDCTask,          1,  OSAL_THREAD_SDCTask                 ,"SDCTask"   },#endif /* HAVE_SDC */#if (0 != IPOD_AP)	//[LL]new  { acp_stack,        STACKSIZE_ACP,        ACP_TASK_PRIORITY,        ACPTask,          1,  OSAL_THREAD_ACPTask             ,"ACPTask"   },	//[LL]new#endif /*IPOD_AP*/	//[LL]new};#if (OS20_PROFILING == 1) && (0 != HAVE_PRINTF)static const int8 isrnames[][15] ={   "EINT0_3",   "EINT4_7",   "EINT8",   "EINT_I2C0",   "WIU",   "RCCU",   "SPI",   "UART0",

⌨️ 快捷键说明

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