mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@154 4ee2a332-4b2b-5046-8439-1ba90f034370
435 lines
12 KiB
C
435 lines
12 KiB
C
#include "kernel_cfg.h"
|
||
#ifndef ATTRIBUTE_ALIGN
|
||
#define ATTRIBUTE_ALIGN(n) __attribute__ ((aligned(n)))
|
||
#endif
|
||
|
||
#define MAIN_TASK 1
|
||
|
||
#define TNUM_TSKID 32
|
||
#define TNUM_SEMID 32
|
||
#define TNUM_FLGID 32
|
||
#define TNUM_DTQID 32
|
||
#define TNUM_MBXID 32
|
||
#define TNUM_MPFID 32
|
||
#define TNUM_CYCID 32
|
||
#define TNUM_INHNO 32
|
||
#define TNUM_EXCNO 0
|
||
#define TNUM_MPLID 32
|
||
#define TNUM_ALMID 32
|
||
#define TNUM_ATTACHED_ISRNO 0
|
||
#define TNUM_ISRID 0
|
||
#define TNUM_MBFID 32
|
||
#define TNUM_MTXID 32
|
||
#define TNUM_PORID 0
|
||
#define TNUM_SVCNO 0
|
||
#if (CTR_DEF_SYSTEM_IOP == 1)
|
||
#define TSIZE_KERNEL_BUFFER (256*1024) /* 256KByte */
|
||
#define TSIZE_MAIN_STACK (32*1024) /* 32KByte */
|
||
#else
|
||
#define TSIZE_KERNEL_BUFFER (1024*1024) /* 1MByte */
|
||
#define TSIZE_MAIN_STACK (128*1024) /* 128KByte */
|
||
#endif
|
||
#define KERNEL_MAGIC_NUMBER 0x01234567
|
||
|
||
|
||
#if TKERNEL_PRVER >= 0x1040
|
||
#define CFG_INTHDR_ENTRY(inthdr) INTHDR_ENTRY(inthdr)
|
||
#define CFG_EXCHDR_ENTRY(exchdr) EXCHDR_ENTRY(exchdr)
|
||
#define CFG_INT_ENTRY(inthdr) INT_ENTRY(inthdr)
|
||
#define CFG_EXC_ENTRY(exchdr) EXC_ENTRY(exchdr)
|
||
#else
|
||
#error "This configuration file has no compatibility with TOPPERS/JSP rel 1.3 or earlier."
|
||
#endif
|
||
|
||
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
||
#define __ZERO(x,y) _declspec(naked) void y(void){}
|
||
#else
|
||
#define __ZERO(x,y) x y[1]
|
||
#endif
|
||
|
||
/* User specified include files*/
|
||
#include "sample1.h"
|
||
#include "hw_timer.h"
|
||
#include "timer.h"
|
||
#include "logtask.h"
|
||
|
||
|
||
/********* Object initializer [task] *********/
|
||
|
||
const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);
|
||
|
||
static VP __stack_MAIN_TASK[TSIZE_MAIN_STACK/sizeof(VP)] ATTRIBUTE_ALIGN(32);
|
||
|
||
#define TNUM_TINIA (1)
|
||
const UINT _kernel_tnum_tinia = TNUM_TINIA;
|
||
const TINIA _kernel_tinia_table[TNUM_TINIA] = {
|
||
{MAIN_TASK, {0x00u | 0x02u, (VP_INT)(0), (FP)(main_task), INT_PRIORITY(5), sizeof(__stack_MAIN_TASK), __stack_MAIN_TASK, TA_NULL, (FP)(NULL)}}};
|
||
|
||
const ID _kernel_torder_table[TNUM_TINIA] = {1};
|
||
|
||
TCB _kernel_tcb_table[TNUM_TSKID] ATTRIBUTE_ALIGN(32);
|
||
TINIB _kernel_tinib_table[TNUM_TSKID];
|
||
|
||
#define TNUM_TSK_RID (0) /* <20>\<5C><>ID<49>̐ݒ<CC90> */
|
||
const UINT _kernel_tnum_trid = TNUM_TSK_RID;
|
||
__ZERO(const ID, _kernel_trid_table);
|
||
|
||
|
||
/************** Object initializer [semaphore] ****************/
|
||
//miya #define TNUM_SEMID 4
|
||
|
||
const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);
|
||
|
||
#define TNUM_SEMINIA (0)
|
||
const UINT _kernel_tnum_seminia = TNUM_SEMINIA;
|
||
__ZERO(const SEMINIA, _kernel_seminia_table);
|
||
|
||
|
||
SEMCB _kernel_semcb_table[TNUM_SEMID] ATTRIBUTE_ALIGN(32);
|
||
SEMINIB _kernel_seminib_table[TNUM_SEMID];
|
||
|
||
#define TNUM_SEM_RID (0)
|
||
const UINT _kernel_tnum_semrid = TNUM_SEM_RID;
|
||
__ZERO(const ID, _kernel_semrid_table);
|
||
|
||
|
||
/********** Object initializer [eventflag] *********/
|
||
|
||
// miya #define TNUM_FLGID 0
|
||
|
||
const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);
|
||
|
||
#define TNUM_FLGINIA (0)
|
||
const UINT _kernel_tnum_flginia = TNUM_FLGINIA;
|
||
__ZERO(const FLGINIA,_kernel_flginia_table);
|
||
|
||
FLGCB _kernel_flgcb_table[TNUM_FLGID] ATTRIBUTE_ALIGN(32);
|
||
FLGINIB _kernel_flginib_table[TNUM_FLGID];
|
||
|
||
|
||
#define TNUM_FLG_RID (0)
|
||
const UINT _kernel_tnum_flgrid = TNUM_FLG_RID;
|
||
__ZERO(const ID, _kernel_flgrid_table);
|
||
|
||
|
||
/******** Object initializer [dataqueue] ********/
|
||
|
||
// miya #define TNUM_DTQID 0
|
||
|
||
const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);
|
||
|
||
#define TNUM_DTQINIA (0)
|
||
const UINT _kernel_tnum_dtqinia = TNUM_DTQINIA;
|
||
__ZERO(const DTQINIA,_kernel_dtqinia_table);
|
||
|
||
DTQCB _kernel_dtqcb_table[TNUM_DTQID] ATTRIBUTE_ALIGN(32);
|
||
DTQINIB _kernel_dtqinib_table[TNUM_DTQID];
|
||
|
||
#define TNUM_DTQ_RID (0)
|
||
const UINT _kernel_tnum_dtqrid = TNUM_DTQ_RID;
|
||
__ZERO(const ID, _kernel_dtqrid_table);
|
||
|
||
|
||
/******** Object initializer [mailbox] ********/
|
||
|
||
// miya #define TNUM_MBXID 0
|
||
|
||
const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);
|
||
|
||
#define TNUM_MBXINIA (0)
|
||
const UINT _kernel_tnum_mbxinia = TNUM_MBXINIA;
|
||
__ZERO(const MBXINIA,_kernel_mbxinia_table);
|
||
MBXCB _kernel_mbxcb_table[TNUM_MBXID] ATTRIBUTE_ALIGN(32);
|
||
MBXINIB _kernel_mbxinib_table[TNUM_MBXID];
|
||
|
||
#define TNUM_MBX_RID (0)
|
||
const UINT _kernel_tnum_mbxrid = TNUM_MBX_RID;
|
||
__ZERO(const ID, _kernel_mbxrid_table);
|
||
|
||
|
||
/******** Object initializer [mempfix] *******/
|
||
|
||
// miya #define TNUM_MPFID 0
|
||
|
||
const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);
|
||
|
||
#define TNUM_MPFINIA (0)
|
||
const UINT _kernel_tnum_mpfinia = TNUM_MPFINIA;
|
||
__ZERO(const MPFINIA,_kernel_mpfinia_table);
|
||
|
||
MPFCB _kernel_mpfcb_table[TNUM_MPFID] ATTRIBUTE_ALIGN(32);
|
||
MPFINIB _kernel_mpfinib_table[TNUM_MPFID];
|
||
|
||
#define TNUM_MPF_RID (0)
|
||
const UINT _kernel_tnum_mpfrid = TNUM_MPF_RID;
|
||
__ZERO(const ID, _kernel_mpfrid_table);
|
||
|
||
|
||
/************* Object initializer [cyclic] ***********/
|
||
|
||
// miya #define TNUM_CYCID 1
|
||
|
||
const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);
|
||
|
||
#define TNUM_CYCINIA (0)
|
||
const UINT _kernel_tnum_cycinia = TNUM_CYCINIA;
|
||
__ZERO(const CYCINIA, _kernel_cycinia_table);
|
||
|
||
CYCCB _kernel_cyccb_table[TNUM_CYCID] ATTRIBUTE_ALIGN(32);
|
||
CYCINIB _kernel_cycinib_table[TNUM_CYCID];
|
||
|
||
#define TNUM_CYC_RID (0)
|
||
const UINT _kernel_tnum_cycrid = TNUM_CYC_RID;
|
||
__ZERO(const ID, _kernel_cycrid_table);
|
||
|
||
|
||
/******* Object initializer [interrupt] *********/
|
||
|
||
// miya #define TNUM_INHNO 1
|
||
|
||
const UINT _kernel_tnum_inhno = TNUM_INHNO;
|
||
|
||
#if (CTR_DEF_SYSTEM_IOP == 1)
|
||
CFG_INTHDR_ENTRY(timer_handler);
|
||
|
||
const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {
|
||
{OS_INTR_ID_TIMER1,0,(FP)CFG_INT_ENTRY(timer_handler)}};
|
||
#else
|
||
__ZERO(const INHINIB, _kernel_inhinib_table);
|
||
#endif
|
||
|
||
/******** Object initializer [exception] **********/
|
||
|
||
|
||
/********** Object initializer [mempvar] ***********/
|
||
|
||
// miya #define TNUM_MPLID 0
|
||
|
||
const ID _kernel_tmax_mplid = (TMIN_MPLID + TNUM_MPLID - 1);
|
||
|
||
#define TNUM_MPLINIA (0)
|
||
const UINT _kernel_tnum_mplinia = TNUM_MPLINIA;
|
||
__ZERO(const MPLINIA,_kernel_mplinia_table);
|
||
MPLCB _kernel_mplcb_table[TNUM_MPLID] ATTRIBUTE_ALIGN(32);
|
||
MPLINIB _kernel_mplinib_table[TNUM_MPLID];
|
||
|
||
|
||
#define TNUM_MPL_RID (0)
|
||
const UINT _kernel_tnum_mplrid = TNUM_MPL_RID;
|
||
__ZERO(const ID, _kernel_mplrid_table);
|
||
|
||
|
||
/******* Object initializer [alarm] ********/
|
||
|
||
// miya #define TNUM_ALMID 0
|
||
|
||
const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);
|
||
|
||
#define TNUM_ALMINIA (0)
|
||
const UINT _kernel_tnum_alminia = TNUM_ALMINIA;
|
||
__ZERO(const ALMINIA,_kernel_alminia_table);
|
||
__ZERO(ALMCB, _kernel_almcb_table) ATTRIBUTE_ALIGN(32);
|
||
__ZERO(ALMINIB, _kernel_alminib_table);
|
||
|
||
#define TNUM_ALM_RID (0)
|
||
const UINT _kernel_tnum_almrid = TNUM_ALM_RID;
|
||
__ZERO(const ID, _kernel_almrid_table);
|
||
|
||
/* Overrun handler */
|
||
|
||
void (null)(ID tskid, VP_INT exinf);
|
||
FP _kernel_overrun_handler_function = (FP)NULL;
|
||
|
||
|
||
|
||
/******** Object initializer [attached_isr] ********/
|
||
|
||
// miya #define TNUM_ATTACHED_ISRNO 0
|
||
|
||
const UINT _kernel_tnum_attached_isrno = TNUM_ATTACHED_ISRNO;
|
||
|
||
__ZERO(const ATTACHED_ISRINIB,_kernel_attached_isrinib_table);
|
||
|
||
|
||
/******* Object initializer [interrupt_service] ********/
|
||
|
||
// miya #define TNUM_ISRID 0
|
||
|
||
const ID _kernel_tmax_isrid = (TMIN_ISRID + TNUM_ISRID - 1);
|
||
|
||
#define TNUM_ISRINIA (0)
|
||
const UINT _kernel_tnum_isrinia = TNUM_ISRINIA;
|
||
__ZERO(const ISRINIA,_kernel_isrinia_table);
|
||
__ZERO(ISRCB, _kernel_isrcb_table) ATTRIBUTE_ALIGN(32);
|
||
__ZERO(ISRINIB, _kernel_isrinib_table);
|
||
|
||
#define TNUM_ISR_RID (0)
|
||
const UINT _kernel_tnum_isrrid = TNUM_ISR_RID;
|
||
__ZERO(const ID, _kernel_isrrid_table);
|
||
|
||
|
||
/******** Object initializer [messagebuffer] ********/
|
||
|
||
// miya #define TNUM_MBFID 0
|
||
|
||
const ID _kernel_tmax_mbfid = (TMIN_MBFID + TNUM_MBFID - 1);
|
||
|
||
#define TNUM_MBFINIA (0)
|
||
const UINT _kernel_tnum_mbfinia = TNUM_MBFINIA;
|
||
__ZERO(const MBFINIA,_kernel_mbfinia_table);
|
||
MBFCB _kernel_mbfcb_table[TNUM_MBFID] ATTRIBUTE_ALIGN(32);
|
||
MBFINIB _kernel_mbfinib_table[TNUM_MBFID];
|
||
|
||
#define TNUM_MBF_RID (0)
|
||
const UINT _kernel_tnum_mbfrid = TNUM_MBF_RID;
|
||
__ZERO(const ID, _kernel_mbfrid_table);
|
||
|
||
|
||
/********* Object initializer [mutex] ************/
|
||
|
||
// miya #define TNUM_MTXID 0
|
||
|
||
const ID _kernel_tmax_mtxid = (TMIN_MTXID + TNUM_MTXID - 1);
|
||
|
||
#define TNUM_MTXINIA (0)
|
||
const UINT _kernel_tnum_mtxinia = TNUM_MTXINIA;
|
||
__ZERO(const MTXINIA,_kernel_mtxinia_table);
|
||
MTXCB _kernel_mtxcb_table[TNUM_MTXID] ATTRIBUTE_ALIGN(32);
|
||
MTXINIB _kernel_mtxinib_table[TNUM_MTXID];
|
||
|
||
#define TNUM_MTX_RID (0)
|
||
const UINT _kernel_tnum_mtxrid = TNUM_MTX_RID;
|
||
__ZERO(const ID, _kernel_mtxrid_table);
|
||
|
||
|
||
/******** Object initializer [rendezvous] ********/
|
||
|
||
// miya #define TNUM_PORID 0
|
||
|
||
const ID _kernel_tmax_porid = (TMIN_PORID + TNUM_PORID - 1);
|
||
|
||
#define TNUM_PORINIA (0)
|
||
const UINT _kernel_tnum_porinia = TNUM_PORINIA;
|
||
__ZERO(const PORINIA,_kernel_porinia_table);
|
||
__ZERO(PORCB, _kernel_porcb_table) ATTRIBUTE_ALIGN(32);
|
||
__ZERO(PORINIB, _kernel_porinib_table);
|
||
|
||
#define TNUM_POR_RID (0)
|
||
const UINT _kernel_tnum_porrid = TNUM_POR_RID;
|
||
__ZERO(const ID, _kernel_porrid_table);
|
||
|
||
|
||
/***** Object initializer [exservicecall] *****/
|
||
|
||
// miya #define TNUM_SVCNO 0
|
||
|
||
const UINT _kernel_tnum_svcno = TNUM_SVCNO;
|
||
|
||
__ZERO(const SVCINIB,_kernel_svcinib_table);
|
||
__ZERO(SVCCB, _kernel_svccb_table) ATTRIBUTE_ALIGN(32);
|
||
|
||
#define TNUM_SVC_RID (0)
|
||
const UINT _kernel_tnum_svcrid = TNUM_SVC_RID;
|
||
__ZERO(const ID, _kernel_svcrid_table);
|
||
|
||
/******* Kernel buffer ********/
|
||
|
||
// miya #define TSIZE_KERNEL_BUFFER (1024*1024)
|
||
|
||
VP __kernel_bufmgr_buffer[TSIZE_KERNEL_BUFFER/sizeof(VP)] ATTRIBUTE_ALIGN(32);
|
||
const SIZE __kernel_bufmgr_buffer_size = TSIZE_KERNEL_BUFFER;
|
||
|
||
TMEVTN _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];
|
||
|
||
|
||
/******** Variables for kernel checker ********/
|
||
#if (CTR_DEF_SYSTEM_IOP == 1)
|
||
static const UW _checker_magic_number = KERNEL_MAGIC_NUMBER;
|
||
#endif
|
||
/************************************************************/
|
||
|
||
// miya #define TNUM_EXCNO 0
|
||
|
||
const UINT _kernel_tnum_excno = TNUM_EXCNO;
|
||
|
||
__ZERO(const EXCINIB,_kernel_excinib_table);
|
||
/* Initialization handler */
|
||
|
||
void
|
||
_kernel_call_inirtn(void)
|
||
{
|
||
timer_initialize( (VP_INT)(0) );
|
||
// serial_initialize( (VP_INT)(0) );
|
||
}
|
||
|
||
void
|
||
_kernel_call_terrtn(void)
|
||
{
|
||
timer_terminate( (VP_INT)(0) );
|
||
}
|
||
|
||
/* Object initialization routine */
|
||
|
||
void
|
||
_kernel_object_initialize(void)
|
||
{
|
||
_kernel_bufmgr_initialize();
|
||
|
||
if( _kernel_tmax_tskid ) {
|
||
_kernel_task_initialize();
|
||
}
|
||
if( _kernel_tmax_semid ) {
|
||
_kernel_semaphore_initialize();
|
||
}
|
||
if( _kernel_tmax_flgid ) {
|
||
_kernel_eventflag_initialize();
|
||
}
|
||
if( _kernel_tmax_dtqid ) {
|
||
_kernel_dataqueue_initialize();
|
||
}
|
||
|
||
if( _kernel_tmax_mtxid ) {
|
||
_kernel_mutex_initialize();
|
||
}
|
||
if( _kernel_tmax_mbxid ) {
|
||
_kernel_mailbox_initialize();
|
||
}
|
||
if( _kernel_tmax_mpfid ) {
|
||
_kernel_mempfix_initialize();
|
||
}
|
||
|
||
if( _kernel_tmax_mplid ) {
|
||
_kernel_mempvar_initialize();
|
||
}
|
||
|
||
if( _kernel_tmax_cycid ) {
|
||
_kernel_cyclic_initialize();
|
||
}
|
||
if( _kernel_tmax_mbfid ) {
|
||
_kernel_messagebuffer_initialize();
|
||
}
|
||
if( _kernel_tmax_almid ) {
|
||
_kernel_alarm_initialize();
|
||
}
|
||
if( _kernel_tmax_porid ) {
|
||
_kernel_rendezvous_initialize();
|
||
}
|
||
#if 0
|
||
|
||
if( _kernel_tmax_isrid )
|
||
//_kernel_svchash_initialize();
|
||
|
||
task_overrun.c:overrun_initialize();
|
||
exception.c:exception_initialize();
|
||
interrupt.c:attached_isr_initialize();
|
||
interrupt.c:interrupt_service_initialize();
|
||
servicecall.c:_kernel_svchash_initialize();
|
||
servicecall.c:exservicecall_initialize();
|
||
#endif
|
||
|
||
#if (CTR_DEF_SYSTEM_IOP == 1)
|
||
_kernel_interrupt_initialize();
|
||
#endif
|
||
}
|
||
|