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

📄 start.c

📁 深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心
💻 C
字号:
/******************************************************
Copyright(c) 版权所有,1998-2005微逻辑。保留所有权利。
******************************************************/

/*****************************************************
文件说明:Kingmos 启动(初始化)
版本号:2.0.0
开发时期:2000
作者:李林
修改记录:
    2003-05-28: 加入版权消息
******************************************************/

#include <eframe.h>
#include <eprogram.h>
#include <eassert.h>
#include <coresrv.h>
#include <epcore.h>
#include <romheader.h>
#include <oemfunc.h>
#include <emlos.h>
extern BOOL InitialKingmosSystem( HINSTANCE );
extern BOOL InitScheduler( void );
extern BOOL _InitSysMem( void );

// ********************************************************************
// 声明:void CpuIdle( void )
// 参数:
//		无
// 返回值:
//		无
// 功能描述:
//		当内核初始化完成后,进入该代码进入闲置状态
// 引用:
//		
// ********************************************************************
//DWORD dwSysIdleTickCount;
static void CpuIdle( void )
{
	//DWORD dwPreTickCount;
	//BOOL bEnterIdleMode = FALSE;


    EdbgOutputDebugString( "***********************************************\r\n" );
	EdbgOutputDebugString( "*                                             *\r\n" );
	EdbgOutputDebugString( "*              巨果.Kingmos(R)                *\r\n" );
	EdbgOutputDebugString( "*           Version:%d.%d.%d                  *\r\n", MAJOR_VERSION, MINOR_VERSION, BUILD_VERSION );
	EdbgOutputDebugString( "*                                             *\r\n" );
	EdbgOutputDebugString( "* Copyright(c) 1998-2005 微逻辑(WEILUOJI)     *\r\n" );
	EdbgOutputDebugString( "*            All rights reserved              *\r\n" );
	EdbgOutputDebugString( "*           http://www.mlg.com.cn             *\r\n" );
    EdbgOutputDebugString( "* Core Make Date:%s,Time:%s *\r\n", __DATE__, __TIME__ );
	EdbgOutputDebugString( "***********************************************\r\n" );

	bNeedResched = 1;

	Schedule();
    while( 1 )
    {
        lpCurThread->nTickCount = 0;

#ifndef TIMER_RESCHE
		// 如果系统是不用时间片来执行自动调度过程,这里必须加入相关代码
		// 去调度,否则,系统永远就在这里了
        if( bNeedResched )	// 是否有调度请求 ?
        { // 有,执行调度
            Schedule();
        }
#endif
		// 判断是否有信号 ?如果有并且没有屏蔽,则执行相关信号处理
	    if( lpCurThread->dwSignal & ~lpCurThread->dwBlocked )
		{	// 是
		    HandleSignal();
			Schedule();
		}
		else
		{	// 否,检查是否进入闲置模式 
			OEM_EnterIdleMode( 0 );
		}
    }
}
// ********************************************************************
// 声明:DWORD KingmosStart( LPVOID lParam )
// 参数:
//		IN lParam - 保留 
// 返回值:
//		0
// 功能描述:
//		当CPU初始化完以后,进入该代码初始化Kingmos系统
// 引用:
//		
// ********************************************************************
DWORD KingmosStart( LPVOID lParam )
{

#ifdef EML_WIN32
	INTR_OFF();	// 不可能中断
#endif

	if( InitialKingmosSystem( 0 ) == FALSE )	// 初始化系统
		return FALSE;

#ifdef EML_WIN32 
	INTR_ON();// 打开中断,enable intr
#endif

	CpuIdle();
    return 0;
}

⌨️ 快捷键说明

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