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

📄 control.c

📁 linux下三星4510的BSP驱动程序!已经试验成功
💻 C
字号:
#include "../inc/def.h"
#include "../inc/config.h"
#include "../inc/board.h"
#include "s3c4510b.h"

void ShowBootInfo(void)
{
	puts("\n******************************************\n");
	puts("*                                        *\n");
	puts("*      BIOS for FS4510 Board V4.00       *\n");
	puts("*        Http://www.uCdragon.com         *\n");
	puts("*                                        *\n");
	puts("******************************************\n");
}

void PortInit(void)
{
	outl(0xff, IOPMOD);	//PIO 0~7 output
	outl(0, IOPCON);
	//outl((0x530<<20)|(0x500<<10),ROMCON1);
	//outl((inl(REFEXTCON)&0x000)&0x3f0,REFEXTCON);
}

void Beep(U32 freq, U32 ms)
{	
	outl(inl(IOPDATA)&~0x10, IOPDATA);
	Delay(ms);
	outl(inl(IOPDATA)|0x10, IOPDATA);
}

#define	LED1_ON()	outl(inl(IOPDATA)&~1, IOPDATA)
#define	LED2_ON()	outl(inl(IOPDATA)&~2, IOPDATA)
#define	LED3_ON()	outl(inl(IOPDATA)&~4, IOPDATA)
#define	LED4_ON()	outl(inl(IOPDATA)&~8, IOPDATA)
#define	LED5_ON()	outl(inl(IOPDATA)&~0x10, IOPDATA)
#define	LED6_ON()	outl(inl(IOPDATA)&~0x20, IOPDATA)
#define	LED7_ON()	outl(inl(IOPDATA)&~0x40, IOPDATA)
#define	LED8_ON()	outl(inl(IOPDATA)&~0x80, IOPDATA)

#define	LED1_OFF()	outl(inl(IOPDATA)|1, IOPDATA)
#define	LED2_OFF()	outl(inl(IOPDATA)|2, IOPDATA)
#define	LED3_OFF()	outl(inl(IOPDATA)|4, IOPDATA)
#define	LED4_OFF()	outl(inl(IOPDATA)|8, IOPDATA)
#define	LED5_OFF()	outl(inl(IOPDATA)|0x10, IOPDATA)
#define	LED6_OFF()	outl(inl(IOPDATA)|0x20, IOPDATA)
#define	LED7_OFF()	outl(inl(IOPDATA)|0x40, IOPDATA)
#define	LED8_OFF()	outl(inl(IOPDATA)|0x80, IOPDATA)

void LedSet(U32 LedStatus)
{
	if(LedStatus&1)
		LED1_ON();
	else
		LED1_OFF();
	
	if(LedStatus&2)
		LED2_ON();
	else
		LED2_OFF();
		
	if(LedStatus&4)
		LED3_ON();
	else
		LED3_OFF();
		
	if(LedStatus&8)
		LED4_ON();
	else
		LED4_OFF();
	//*********************************************************		
	if(LedStatus&0x10)
		LED5_ON();
	else
		LED5_OFF();
		
	if(LedStatus&0x20)
		LED6_ON();
	else
		LED6_OFF();
		
	if(LedStatus&0x40)
		LED7_ON();
	else
		LED7_OFF();
		
	if(LedStatus&0x80)
		LED8_ON();
	else
		LED8_OFF();
}

void CacheDisable(void)
{
	outl(inl(SYSCFG)&~0xf, SYSCFG);
}

void CacheEnable(void)
{
	outl(inl(SYSCFG)|6, SYSCFG);
}

void CacheFlush(void)
{
	int i;
	U32 *pTag = (U32 *)TAG_BASE;
	
	for(i=0; i<256; i++)
		pTag[i] = 0;
}

U16 GetKeyStatus(void)
{
	U16 key, k4;
	
	key = inl(IOPDATA)>>9;
	k4 = key&0x80;
	key &= ~8;
	key |= k4?8:0;
	return key;
}

//nand flash operation
#define	NAND_DAT	0x02000000
#define	NAND_ALE	0x02000004
#define	NAND_CLE	0x02000002


void NFChipSel(U32 sel)
{
}

int NFIsReady(void)
{
	return 1;
}

void NFWrCmd(int cmd)
{
}

void NFWrAddr(int addr)
{
}

void NFWrDat(int dat)
{
}

int NFRdDat(void)
{
	return 0;
}

⌨️ 快捷键说明

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