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

📄 vrtxcftb.tpl

📁 VRTX 商用嵌入式实时操作系统
💻 TPL
字号:
/***************************************************************************
*
*		Copyright (c) 1993 MICROTEC RESEARCH INCORPORATED.
*
*	All rights reserved. MICROTEC RESEARCH's source code is an unpublished
*	work and the use of a copyright notice does not imply otherwise.
*	This source code contains confidential, trade secret material of
*	MICROTEC RESEARCH. Any attempt or participation in deciphering, decoding,
*	reverse engineering or in any way altering the source code is
*	strictly prohibited, unless the prior written consent of
*	MICROTEC RESEARCH is obtained.
*
*
*	Module Name:		%M%
*
*	Identification:		%Z% %I% %M%
*
*	Date:			%G%  %U%
*
****************************************************************************
*/

/* VRTX configuration table */

#include <vrtxil.h>
#include <logio.h>
#include <sysvrtx.h>

extern CVT sys_vrtx_cvt;
@ifelse(@(vrtx.txrdy_driver),,,extern void @(vrtx.txrdy_driver)(_ANSIPROT1(int));)
@ifelse(@(vrtx.tcreate_hook),,,extern void @(vrtx.tcreate_hook)(_ANSIPROT2(TCB *, TCB *));)
@ifelse(@(vrtx.tdelete_hook),,,extern void @(vrtx.tdelete_hook)(_ANSIPROT2(TCB *, TCB *));)
@ifelse(@(vrtx.tswitch_hook),,,extern void @(vrtx.tswitch_hook)(_ANSIPROT2(TCB *, TCB *));)
@ifelse(@(board.tool.type),ix86,@ifelse(@(vrtx.desc_alloc_routine),,,extern void @(vrtx.desc_alloc_routine)(_ANSIPROT0);))


const CFTBL sys_vrtx_config_rom =
@ifelse(@(board.tool.type),ix86,`
       {
        /* VRTX workspace selector */
        @(vrtx.workspace_selector),
        /* VRTX workspace address */
        0,
        /* workspace size */
        @(vrtx.workspace_size),            
        /* system stack size */
        @(vrtx.system.stack_size),         
        /* ISR stack size */
        @(vrtx.interrupt.stack_size),      
        /* control block count */
        @(vrtx.control_block_count),       
        /* partition count */
        @eval(@(vrtx.partition_count)+@ifelse(@(rtl.enabled),yes,1,0)),
        /* idle task stack size */
        @(vrtx.idle_task.stack_size),      
        /* queue count */
        @(vrtx.queue_count),               
        /* component disable level */
        @(vrtx.component_disable_level),   
        /* user stack size */
        @(vrtx.user.stack_size),           
        /* maximum task ID */
	@(vrtx.max_task_id),
        /* target type */
        target_unspecified,                                 
        /* user task count */
        @(vrtx.user_task_count),           
        /* Configuration options */
        @ifelse(@(vrtx.strict_sc_putc),yes,1,0), 
        /* transmit ready driver address */
        @ifelse(@(vrtx.txrdy_driver),,0,`@(vrtx.txrdy_driver)'), 0,
        /* task create hook routine */
        @ifelse(@(vrtx.tcreate_hook),,0,`@(vrtx.tcreate_hook)'), 0,
        /* task delete hook routine */
        @ifelse(@(vrtx.tdelete_hook),,0,`@(vrtx.tdelete_hook)'), 0,
        /* task switch hook routine */
        @ifelse(@(vrtx.tswitch_hook),,0,`@(vrtx.tswitch_hook)'), 0,
        /* component vector table address */
        &sys_vrtx_cvt, 0,
        /* descriptor allocation routine */
        @ifelse(@(vrtx.desc_alloc_routine),,0,`@(vrtx.desc_alloc_routine)'), 0
        };',`
@dnl Configuration table for targets other that ix86 starts here
       {
        0,
        /* workspace size */
        @(vrtx.workspace_size),
        /* system stack size */
        @(vrtx.system.stack_size),
        /* ISR stack size */
        @(vrtx.interrupt.stack_size),
        /* control block count */
        @(vrtx.control_block_count),
        /* partition count */
        @eval(@(vrtx.partition_count)+@ifelse(@(rtl.enabled),yes,1,0)),
        /* idle task stack size */
        @(vrtx.idle_task.stack_size),
        /* queue count */
        @(vrtx.queue_count),
        /* component disable level */
        @(vrtx.component_disable_level),
        /* user stack size */
        @(vrtx.user.stack_size),
        /* maximum task ID */
        @(vrtx.max_task_id),
        /* target type */
        target_unspecified,
        /* user task count */
        @(vrtx.user_task_count),
        /* Configuration options */
        @ifelse(@(vrtx.strict_sc_putc),yes,1,0),
        /* transmit ready driver address */
        @ifelse(@(vrtx.txrdy_driver),,0,`@(vrtx.txrdy_driver)'),
        /* task create hook routine */
        @ifelse(@(vrtx.tcreate_hook),,0,`@(vrtx.tcreate_hook)'),
        /* task delete hook routine */
        @ifelse(@(vrtx.tdelete_hook),,0,`@(vrtx.tdelete_hook)'),
        /* task switch hook routine */
        @ifelse(@(vrtx.tswitch_hook),,0,`@(vrtx.tswitch_hook)'),
        /* component vector table address */
        &sys_vrtx_cvt,
        /* ARTX reserved field */
        0,
        /* ARTX number of entries allocated per task */
        @(artx.entry_count),
        /* ARTX number of tasks using entry tables */
        @(artx.task_count),
        /* ARTX master frame control block count */
        @(artx.master_frame_count)
        };')
        

const int sys_os_mode = @ifelse(@(vrtxos.trap_handler),`yes',1965,1992);      /* trap_handler == 1965 else 1992 */

struct v32_config *sys_vrtx_config_ptr;

@ifelse(@(sys.entry_point1),,,`extern void @(sys.entry_point1)(_ANSIPROT0);')
@ifelse(@(sys.entry_point2),,,`extern void @(sys.entry_point2)(_ANSIPROT0);')
void (* const sys_entry_pt1)(_ANSIPROT0) = @ifelse(@(sys.entry_point1),,`0',`@(sys.entry_point1)');
void (* const sys_entry_pt2)(_ANSIPROT0) = @ifelse(@(sys.entry_point2),,`0',`@(sys.entry_point2)');
@dnl *** why is usr.entry_point not declared external if non-blank?
@dnl *** is it because it might be a hex constant?
void (* const sys_usr_entry_pt)(_ANSIPROT0) = @ifelse(@(usr.entry_point),,`0',`(void (* const)())@(usr.entry_point)');

extern void @(sys.vrtx.intr.hndlr.installer)(_ANSIPROT3(int, void *, char *));
void (* const sys_interrupt_handler_installer)(_ANSIPROT3(int, void *, char *)) = @(sys.vrtx.intr.hndlr.installer);

@ifelse(@(sys.syscall_server)@(sys.os_mode),yesyes,`
extern int @ifelse(@(sys.vrtx32),yes,sys_syscall_handler_vrtx32(),sys_syscall_handler_vrtxsa());
int (* const sys_syscall_handler_ptr)() = @ifelse(@(sys.vrtx32),yes,sys_syscall_handler_vrtx32,sys_syscall_handler_vrtxsa);
extern int sys_syscall_handler();
int (* const sys_syscall_dummy)() = sys_syscall_handler;
')@dnl

@ifelse(@(board.tool.type)@(sys.vrtx32),ix86yes,`const short sys_v32_x86_wssel = @(vrtx.workspace_selector);
const short sys_v32_startsel = @(vrtx.start_selector);
const short sys_v32_cftbsel = @(vrtx.config_table.descriptor);
const short sys_vrtx_trapsel = @(vrtx.trap.descriptor);
const short sys_v32_codesel = @(vrtx.code.descriptor);
#define V32_SMALL 1
#define V32_COMPACT 2
const long sys_v32_task_type = @(vrtx.memory_model);
')

@ifelse(@(board.tool.type),ix86,`const short sys_flat_data_alias = @(vrtx.flat_data_alias);
const short sys_ldt_alias = @(vrtx.ldt_alias);')

const sys_vrtx_type_t sys_vrtx_type = @ifelse(@(sys.vrtx32),yes,sys_vrtx32,sys_vrtxsa);

@ifelse(@(sys.vrtx32),yes,,extern void *(sys_load_vrtx_isr)(_ANSIPROT2(int, void *));) 
void *(* const sys_load_vrtxsa_isr)(_ANSIPROT2(int, void *)) = @ifelse(@(sys.vrtx32),yes,0,sys_load_vrtx_isr);

⌨️ 快捷键说明

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