亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 該程序為AT91RM9200引導程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "AT91RM9200.h"
#include "lib_AT91RM9200.h"
#include "def.h"
#include "config.h"
#include "slib.h"
#include "console.h"
#include "twi.h"
#include "params.h"

// The following DBGU ASM handler is defined in asm_isr.s
//extern void AT91F_ASM_DBGU_Handler(void);

U32 downloadAddress, downloadFileSize;

//char hex_ch[16] = {'0','1','2','3','4','5','6','7',
//				   '8','9','a','b','c','d','e','f'};
static EnvParams Env;

static U8 OurEmacAddr[6] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};

volatile U32 StTick;
void (*StIrqHandler)(void);
void (*DbguIrqHandler)(void);

static void SysIrqHandler(void)
{
	/* ========== Systimer interrupt ============== */
	if(AT91F_ST_GetInterruptMaskStatus(AT91C_BASE_ST) & AT91C_ST_PITS) {//周期間隔(PITS)定時器中斷使能
		if (AT91C_BASE_ST->ST_SR & AT91C_ST_PITS) {//產生PITS中斷了
			StTick++;//時間片自增
			if(*StIrqHandler)
				(*StIrqHandler)();
			return;
		}
	}
	
	if(*DbguIrqHandler)
		(*DbguIrqHandler)();
}

//統一的中斷入口處理
void __irq irq_handler(void)
{	
	void (*svr)(void);
	AT91PS_AIC ptr = AT91C_BASE_AIC;
	U32 i;
//	U8 irq_idx;

//取得中斷入口地址可用AIC_IVR或用AIC_ISR作索引得到AIC_SVR數組中的地址
	i = ptr->AIC_IVR;		//read AIC_IVR
//	irq_idx = ptr->AIC_ISR&0x1f;
//邊沿觸發中斷必須以此清中斷
//	AT91F_AIC_ClearIt(AT91C_BASE_AIC, irq_idx);	

// Write in the IVR to support Protect Mode
// No effect in Normal Mode
// De-assert the NIRQ and clear the source in Protect Mode	
	ptr->AIC_IVR = (AT91_REG)ptr;
	
//	putch('I');
//	printf("%x,%x,%x\n", irq_idx, ptr->AIC_IPR, ptr->AIC_CISR);

	svr = (void (*)(void))i;//ptr->AIC_SVR[irq_idx];
	(*svr)();
	AT91F_AIC_AcknowledgeIt(ptr);	//退出中斷前必須應答
}

static void InitPio(void)
{
		
	//led
	AT91F_PIO_CfgOutput(AT91C_BASE_PIOC, AT91C_PIO_PC0|AT91C_PIO_PC2|AT91C_PIO_PC4|AT91C_PIO_PC5);
	AT91F_PIO_ClearOutput(AT91C_BASE_PIOC, AT91C_PIO_PC0|AT91C_PIO_PC2|AT91C_PIO_PC4|AT91C_PIO_PC5);
	//key
	//AT91F_PIO_CfgInput(AT91C_BASE_PIOB, AT91C_PIO_PB6|AT91C_PIO_PB7|AT91C_PIO_PB8|AT91C_PIO_PB9);
	AT91F_PIO_CfgInput(AT91C_BASE_PIOA, AT91C_PIO_PA24);
	AT91F_PIO_CfgInput(AT91C_BASE_PIOB, AT91C_PIO_PB1|AT91C_PIO_PB2|AT91C_PIO_PB6);
	//AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB1|AT91C_PIO_PB2|AT91C_PIO_PB6);
	///AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB1|AT91C_PIO_PB2|AT91C_PIO_PB6);
	AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB7);
	AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB7);
	
	AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, ((U32) 1 << AT91C_ID_PIOB));
	AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, ((U32) 1 <<AT91C_ID_PIOA ));
	//led
	/*AT91F_PIO_CfgOutput(AT91C_BASE_PIOC, AT91C_PIO_PC0|AT91C_PIO_PC2|AT91C_PIO_PC4|AT91C_PIO_PC5);
	AT91F_PIO_ClearOutput(AT91C_BASE_PIOC, AT91C_PIO_PC0|AT91C_PIO_PC2|AT91C_PIO_PC4|AT91C_PIO_PC5);
	//key
	AT91F_PIO_CfgInput(AT91C_BASE_PIOB, AT91C_PIO_PB6|AT91C_PIO_PB7|AT91C_PIO_PB8|AT91C_PIO_PB9);
	
	//buzzer
	AT91F_PIO_CfgPeriph(
		AT91C_BASE_PIOB, // PIO controller base address
		((unsigned int) AT91C_PB27_PCK0    ), // Peripheral A
		0); // Peripheral B
	AT91F_PMC_EnablePCK(AT91C_BASE_PMC,
		0, 	//PCK0
		AT91C_PMC_CSS_SLOW_CLK,	//32768
		AT91C_PMC_PRES_CLK_16);	//1/16
	delay(200);
	AT91F_PIO_CfgInput(AT91C_BASE_PIOB, AT91C_PIO_PB27);
	*/
	//delay(200);
}

U32 GetFlashID(void);
int SectorProg(U32 begin, U16 *data, U32 size);
int SectorRead(U32 begin, U16 *data, U32 size);

void start_kernel(U32, U32);

static void InitNorFlash(void)
{
#ifdef	INTEL_FLASH_SUPPORT
	// Setup MEMC to support CS0 = static memory
	AT91C_BASE_EBI->EBI_CSA &= ~1;
	// [D15:0] pull-up
	AT91C_BASE_EBI->EBI_CFGR = (AT91C_EBI_DBPUC & 0x00) | (AT91C_EBI_EBSEN & 0x00);

	// Setup Flash 存儲器參數設置CS0-CS7對應SMC2_CSR[0]-SMC2_CSR[7]
	AT91C_BASE_SMC2->SMC2_CSR[0] = (AT91C_SMC2_NWS & 0x7f)  | AT91C_SMC2_WSEN |
	                               (AT91C_SMC2_TDF & 0x200)| AT91C_SMC2_BAT  |
	                                AT91C_SMC2_DBW_16 | AT91C_SMC2_ACSS_STANDARD;/* |
	                                AT91C_SMC2_RWSETUP | AT91C_SMC2_RWHOLD; */
	printf("FLASH ID = %x\n", GetFlashID());
#endif
}

static void RunProgFrNor(U32 addr, U32 size)
{
#ifdef	INTEL_FLASH_SUPPORT	
	downloadAddress  = 0x20800000;
	downloadFileSize = 0x200000;
	printf("Read Program From Nor Flash to 0x%8x, Size 0x%x\n", 
			downloadAddress, downloadFileSize);
	SectorRead(0x100000, (U16 *)downloadAddress, downloadFileSize);
	start_kernel(downloadAddress, 0);
#endif
}

static void WrFileToNor(U32 addr, U32 size)
{
#ifdef	INTEL_FLASH_SUPPORT
	printf("Write Data From 0x%8x, Size 0x%x to Nor Flash\n", addr, size);
	ProgFlash();
	SectorProg(0x100000, (U16 *)addr, size);
#endif
}


void GetNandFlashChip(void);

static void InitNandFlash(void)
{
#ifdef	NAND_SUPPORT
	AT91F_PIO_CfgPeriph(
		AT91C_BASE_PIOC, // PIO controller base address
		(unsigned int) AT91C_PC1_BFRDY_SMOE | (unsigned int) AT91C_PC3_BFBAA_SMWE,	// Peripheral A
		0);	// Peripheral B
	
	// Setup MEMC to support CS3 = NAND Flash
	AT91C_BASE_EBI->EBI_CSA |= AT91C_EBI_CS3A_SMC_SmartMedia;
	// [D15:0] pull-up
	AT91C_BASE_EBI->EBI_CFGR = (AT91C_EBI_DBPUC & 0x00) | (AT91C_EBI_EBSEN & 0x00);

	// Setup Flash 存儲器參數設置CS0-CS7對應SMC2_CSR[0]-SMC2_CSR[7]
	AT91C_BASE_SMC2->SMC2_CSR[3] = (AT91C_SMC2_NWS & 0x4)  | AT91C_SMC2_WSEN |
	                               (AT91C_SMC2_TDF & 0x200)| AT91C_SMC2_BAT  |
	                                AT91C_SMC2_DBW_8;
	// Enable PIOC clock for input
	AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, ((unsigned int) 1 << AT91C_ID_PIOC));
	AT91F_PIO_CfgInput (AT91C_BASE_PIOC, AT91C_PIO_PC14);
	AT91F_PIO_CfgPullup(AT91C_BASE_PIOC, AT91C_PIO_PC14);
	AT91F_PIO_CfgOutput (AT91C_BASE_PIOC, AT91C_PIO_PC15);
//	AT91F_PIO_GetInput(AT91C_BASE_PIOC) & AT91C_PIO_PC14;

	GetNandFlashChip();
#endif
}


#ifdef	IIC_SUPPORT
#define	EEP_RW_CHK_CNT	32
#endif	/* IIC_SUPPORT */

static void InitTwi(void)
{
#ifdef	IIC_SUPPORT
	int loop;
	char data[EEP_RW_CHK_CNT];

	// Configure TWI PIOs
	AT91F_TWI_CfgPIO ();
	AT91F_PIO_CfgOpendrain(AT91C_BASE_PIOA, (unsigned int) AT91C_PA25_TWD);

	// Configure PMC by enabling TWI clock
	AT91F_TWI_CfgPMC ();
	
	// Configure TWI in master mode
	AT91F_TWI_Configure (AT91C_BASE_TWI);
		
	// Set TWI Clock Waveform Generator Register	
	AT91F_SetTwiClock(AT91C_BASE_TWI);

	// IIC啟動,先測試IIC讀
	printf("AT91RM9200 TWI EEPREOM Test, address is 0x%x\n", AT91C_EEPROM_I2C_ADDRESS);
	
//	for(loop=0; loop<EEP_RW_CHK_CNT; loop++)
//		data[loop] = loop;

	// Write and read iic
//	AT91F_TWI_Write(AT91C_BASE_TWI, 0x0, data, EEP_RW_CHK_CNT);
	
	// Wait 10 ms before data is written into EEPROM
//	puts("Wait at least 10 ms before value is written into EEPROM\n");
//	for (loop=0; loop<100000; loop++);
	
	for(loop=0; loop<EEP_RW_CHK_CNT; loop++)
		data[loop] = 0;	

	AT91F_TWI_Read(AT91C_BASE_TWI, 0x0, data, EEP_RW_CHK_CNT);
	
	for(loop=0; loop<EEP_RW_CHK_CNT; loop++)
		if(data[loop]!=loop)
			break;
	
	printf("Check data %s\n", (loop==EEP_RW_CHK_CNT)?"success":"fail");
	
#endif	/* IIC_SUPPORT */
}

static void ShowLed(U32 led)
{
	U8 set = 0, clr = 0;
	
	if(led&1)
		set |= 1;
	else
		clr |= 1;
		
	if(led&2)
		set |= 4;
	else
		clr |= 4;
		
	if(led&4)
		set |= 0x10;
	else
		clr |= 0x10;
		
	if(led&8)
		set |= 0x20;
	else
		clr |= 0x20;

	AT91F_PIO_SetOutput (AT91C_BASE_PIOC, set);
	AT91F_PIO_ClearOutput (AT91C_BASE_PIOC, clr);
}


U16 GetKeyStatus(void)
{
	U16 r=0;
	U32 k=0;
	k = AT91F_PIO_GetInput(AT91C_BASE_PIOB);
	//printf("PB = %d\n",k);
	if(!(k&(1<<1)))
	{
		r |= 2;
	//	printf("r1=%x\n",r);
	}
	if(!(k&(1<<2)))
	{
		r |= 3;
	//	printf("r2=%x\n",r);
	}
	if(!(k&(1<<6)))
	{
		r |= 4;
	//	printf("r3=%x\n",r);
	}
	if(!(AT91F_PIO_GetInput(AT91C_BASE_PIOA)&(1<<24)))
	{	
		r |= 1;
	//	printf("r3=%x\n",r);
	}
		
	//printf("r4=%d\n",r);
	return r;
	//return (AT91F_PIO_GetInput(AT91C_BASE_PIOB));
}

void ComDownload(U32 a1, U32 a2);
void Program_eep(U32 addr, U32 size);
//void WrFileToNF(U32 FileAddr, U32 FileSize);
//void RdFileFrNF(U32 FileAddr, U32 FileSize);
void XmodemDownload(U32 a1, U32 a2);
//void TestNandFlash(U32 a1, U32 a2);
//void EraseNandPart(U32 a1, U32 a2);
void RunProgFrNor(U32 addr, U32 size);
//void tftp_main(U32 addr, U32 dummy);

static struct {
	void (*FuncAddr)(U32, U32);
	char *str;
} Functions[] = {
		{ComDownload,    "Download and Run File By Uart55555(DNW)"},
//		{tftp_main, "Download File By Tftp"},
		{XmodemDownload, "Download and Run File By Xmodem888888"},
//		{Program_eep, "Write File To IIC Rom"},
//		{WrFileToNF, "Write File To Nand Flash"},
//		{RdFileFrNF, "Run Pragram From Nand Flash"},		
//		{ProgFlash, "ProgFlash"},
//		{WrFileToNor, "Write File To Nor Flash"},
//		{RunProgFrNor, "Run Program From Nor Flash"},
//		{TestNandFlash, "Test nand flash"},
		{0, 0}
	};

//*----------------------------------------------------------------------------
//* \fn    main
//* \brief 
//* 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美中文字幕亚洲一区二区va在线 | 国产精品系列在线播放| 国产超碰在线一区| 欧美精品久久天天躁| 国产精品欧美久久久久一区二区| 日日摸夜夜添夜夜添亚洲女人| 国产91精品精华液一区二区三区| 91精品国产综合久久婷婷香蕉| 国产精品伦一区| 久久99精品久久只有精品| 欧洲一区在线电影| 中文字幕制服丝袜一区二区三区| 免费观看91视频大全| 欧美日韩视频在线观看一区二区三区 | 日本欧美一区二区三区| 丁香五精品蜜臀久久久久99网站| 欧美一区二区三区系列电影| 亚洲精品视频自拍| 99精品视频在线免费观看| 精品成人一区二区三区| 日本在线播放一区二区三区| 欧美主播一区二区三区| 樱桃视频在线观看一区| 91麻豆swag| 亚洲精品免费在线| 色菇凉天天综合网| 亚洲美女屁股眼交3| 91在线视频免费91| 亚洲激情网站免费观看| 色婷婷国产精品综合在线观看| 国产精品不卡一区| 在线视频综合导航| 亚洲网友自拍偷拍| 欧美精品v日韩精品v韩国精品v| 一区二区国产视频| 亚洲精品中文在线影院| 色综合激情五月| 亚洲成a人v欧美综合天堂下载| 欧美在线一二三四区| 亚洲一二三四在线| 91精品久久久久久蜜臀| 精品一区二区三区日韩| 久久青草国产手机看片福利盒子| 国产精品1区二区.| 1000精品久久久久久久久| 一本到不卡免费一区二区| 亚洲国产精品久久久久秋霞影院| 欧美日韩国产首页| 极品美女销魂一区二区三区免费 | 色噜噜久久综合| 天堂影院一区二区| 久久婷婷久久一区二区三区| 成人性生交大片| 亚洲3atv精品一区二区三区| 亚洲国产一区二区三区| 欧美成人一区二区三区片免费| 国产一区 二区| 一区二区三区在线视频免费 | 国产成人小视频| 亚洲精选视频免费看| 欧美日韩电影一区| 国产精品 欧美精品| 亚洲欧美另类久久久精品| 欧美日韩国产美| 国产成人免费高清| 亚洲国产精品久久久久秋霞影院| 欧美tickling挠脚心丨vk| 成人国产精品免费网站| 视频一区中文字幕国产| 中文字幕乱码日本亚洲一区二区| 欧美色国产精品| 国产91在线观看丝袜| 亚洲一区二区三区四区五区黄 | 欧美精品少妇一区二区三区| 国产一区二区不卡| 亚洲香肠在线观看| 国产日韩亚洲欧美综合| 欧美精品高清视频| 99视频精品免费视频| 另类的小说在线视频另类成人小视频在线| 国产女主播视频一区二区| 制服丝袜成人动漫| av电影天堂一区二区在线 | 国产精品99久久久久| 午夜精品免费在线| 国产精品久久久久久亚洲毛片| 5月丁香婷婷综合| 91麻豆国产精品久久| 国产精品亚洲午夜一区二区三区| 午夜精品福利久久久| 亚洲柠檬福利资源导航| 久久精品一区四区| 精品欧美一区二区久久| 欧美日韩日日摸| 色狠狠一区二区| 波多野洁衣一区| 成人毛片视频在线观看| 久久狠狠亚洲综合| 三级成人在线视频| 亚洲不卡av一区二区三区| 一区二区三区四区乱视频| 中文字幕乱码一区二区免费| 国产亚洲一区字幕| 久久精品视频免费| 久久久综合精品| 国产午夜精品一区二区三区视频 | 丝袜美腿亚洲综合| 亚洲一区二区三区四区在线免费观看| 亚洲欧洲精品天堂一级| 国产精品美日韩| 国产精品久久久久影院色老大| 久久精品一区二区三区不卡| www国产精品av| 国产情人综合久久777777| 久久久久国产精品人| 久久久www免费人成精品| 久久综合狠狠综合| 国产亚洲1区2区3区| 国产欧美日韩久久| 亚洲国产精品成人综合色在线婷婷 | 免费的成人av| 久久99热狠狠色一区二区| 精品写真视频在线观看 | 午夜精品久久久久久久99樱桃| 亚洲女爱视频在线| 亚洲国产欧美另类丝袜| 丝袜亚洲另类丝袜在线| 久久精品国产亚洲高清剧情介绍| 蜜桃av一区二区三区电影| 久久精品国产在热久久| 国产精品亚洲一区二区三区妖精| 成人午夜精品一区二区三区| 91女厕偷拍女厕偷拍高清| 欧美网站大全在线观看| 日韩精品一区二区三区中文精品| 久久九九99视频| 亚洲精品日韩一| 亚洲123区在线观看| 久久er99热精品一区二区| 成人免费看黄yyy456| 欧美天堂一区二区三区| 亚洲精品一区二区精华| 亚洲欧美综合另类在线卡通| 亚洲www啪成人一区二区麻豆| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产乱一区二区| 91国在线观看| 精品久久一区二区| 亚洲你懂的在线视频| 美女免费视频一区二区| av中文字幕亚洲| 日韩免费高清av| 亚洲美女淫视频| 国内偷窥港台综合视频在线播放| 97精品电影院| 精品国产一二三区| 亚洲一区二区三区中文字幕在线| 韩国一区二区三区| 欧美日韩一卡二卡三卡| 国产情人综合久久777777| 午夜久久电影网| 99精品国产一区二区三区不卡| 欧美成人免费网站| 亚洲精品视频免费看| 国产精品123区| 91麻豆精品国产91久久久久久久久 | 日韩一区二区三区视频在线观看| 欧美激情一区不卡| 麻豆久久一区二区| 欧美三区在线视频| 成人欧美一区二区三区1314| 日韩亚洲国产中文字幕欧美| 国产精品久久久久久久蜜臀| 另类中文字幕网| 欧美日韩一二三区| 亚洲精品写真福利| 99久久伊人久久99| 国产亚洲女人久久久久毛片| 日韩一区欧美二区| 欧美在线观看你懂的| 国产精品国产a| 风间由美一区二区三区在线观看 | 午夜视频一区二区| 色欧美日韩亚洲| 亚洲天堂福利av| 国产91精品在线观看| 精品国产乱码久久久久久浪潮 | 亚洲黄色尤物视频| 99国产精品国产精品毛片| 久久久国产精品不卡| 久久精品国产在热久久| 欧美一区二区免费视频| 日韩精品色哟哟| 欧美精品久久久久久久多人混战| 亚洲精品中文字幕在线观看| 色哟哟精品一区| 一区二区三区在线播放| 色婷婷久久久综合中文字幕| 亚洲人成精品久久久久| 91福利在线观看|