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

📄 qbsl.cpp

📁 针对嵌入式反应式系统开发的量子操作系统,见http://code.google.com/p/qfinet 包含一个基于linux平台的模拟器, 量子框架,基于量子框架的TCP/IP协议栈 后续将发布A
💻 CPP
字号:
/* \file qbsl.cpp
 *		This part covers interrupt handling, power mangement
 *		and work done at system boot.
 */
#include <stdlib.h>
#include "qf/qfpkg.h"

DEFINE_THIS_FILE;

//...................................................................
/// store original global interrupt bit
static bool_t gie_;

//...................................................................
void cirticalsect()
{
	VIC *vic = VIC::instance();
	gie_ = (bool_t)vic->gie((bool)gie_);
}

//...................................................................
// interrupt vector table
void vectbl(int32_t vectnr)
{
	uint32_t irq = VEC_TO_IRQ(vectnr);	
	
	QLog(LEV_LOG, 
		"branch to vector table, irqnr = %d\n", irq);
	
	QIrq::doit(irq);
}

//...................................................................
void tickIsr(uint32_t irq, void *me)
{
	Qdbg("tick ISR\n");
	QF::tick();
}

//...................................................................
void QF::osInit() 
{	
	// interrupt vector table 
	VIC *vic = VIC::instance();
	vic->set_vectable(vectbl);

	// IRQ source channels to vector
	vic->map_vector(VEC_SYSTIMER,IRQ_SYSTIMER);
	vic->map_vector(VEC_ETHNIC, IRQ_ETHNIC);

	// interrupt handling framework
	QIrq::init();	

	// system heartbeat
	SYSTIMER *timer = SYSTIMER::instance();
	timer->map_irq(IRQ_SYSTIMER);	
	timer->reset(1000);
	QIrq::requestIrq(IRQ_SYSTIMER, NULL, tickIsr);
}

//...................................................................
void QF::osCleanup() 
{
	Qdbg("QF exited\n"); 
	exit(0);	
}

//...................................................................
void QF::osStart()
{
	gie_ = 0;

	VIC *vic = VIC::instance();
	vic->gie(true);
	vic->ie(IRQ_SYSTIMER, true);
	vic->ie(IRQ_ETHNIC, true);	
	
	SYSTIMER * timer = SYSTIMER::instance();
	timer->start();
}



⌨️ 快捷键说明

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