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

📄 main.c

📁 一个基于MMU的操作系统
💻 C
字号:
#include <s3c2410.h>
#include <serial.h>
#include <sched.h> 
#include <swi.h>
#include <interrupt.h> 

#define	GPB7_out	(1<<(7*2))
#define	GPB8_out	(1<<(8*2))
#define	GPB9_out	(1<<(9*2))
#define	GPB10_out	(1<<(10*2))
#define	NULL	0
 
static unsigned long m_RandSeed;

/* 随机函数 */
inline unsigned long  Rand(void)  
{
    return (m_RandSeed=1664525L*m_RandSeed+1013904223L)>>5;
}

void wait(unsigned long dly)
{
	for(; dly > 0; dly--);
}

int main(void)
{
	unsigned long i=0;
	char str[2];
	str[1] = '\0';

	init_uart();	//波特率57600,8N1(8个数据位,无校验位,1个停止位)
	
	DPRINTK(KERNEL_DEBUG,"\n\rkernel:enter main\n\r");			

	OS_ENTER_CRITICAL();	
	
	sched_init();

	/**************************************************************
	* int OSCreateProcess(unsigned long nand_start_addr, unsigned long len, char *parameters, long priority)
	* 参数为:用户进程在nand flash的位置、长度,运行参数,优先级
	* 运行参数与在linux台下运行命令相似:比如我们执行echo  "usr/local",那么:
	* 您应该把你编的echo代码下载到nand flah中,让parameters="usr/local"
	**************************************************************/

	//创建26个进程,每个进程重复输出一个子母
	//代码在user_program/UART中
	for(i = 'A'; i <= 'Z'; i++){
		
		str[0] = i;
		
		OSCreateProcess(12*1024,1024,str,5+(Rand()&0x3f));
	}

	//创建10个进程,每个进程重复输出一个数字
	//代码在user_program/UART中
//	for(i = '0'; i <= '9'; i++){
//		
//		str[0] = i;
//		
//		OSCreateProcess(12*1024,1024,str,5+(Rand()&0x3f));
//	}
	
	/****************************************************************
	* 创建进程,代码在user_program/LEDS中
	* 本进程使用4个LED进行计数,我的开发板使用GPB7-10引脚
 	****************************************************************/
	OSCreateProcess(13*1024,1024,NULL,40);	

	OS_EXIT_CRITICAL();		

	DPRINTK(KERNEL_DEBUG,"\n\rkernel:first\n\r");	

	while(1){
		DPRINTK(KERNEL_DEBUG,"kernel:process 0\n\r");
		printk("process 0, idle\n\r");
		wait(5000000);
	}

	return 0;
}

⌨️ 快捷键说明

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