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

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

?? romdrv_old_back.c

?? 最近在國外網站抓到的作業系統 以Arm為基礎去開發的
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************************\
 *
 * Copyright (c) 2001 National ASIC Center, All Rights Reserved
 *
 * File Name	:	romdrv.c
 * Version		:	1.0
 * Programmer	:	longn_qi
 * 
 * Date of Creation:	2001/11/26
 * Date of Last Modify:	2001/11/27
 *
 * Description:	This is an application file for simulating ROM.
 *
 * Local Function List:
 * void InitROM( )
 * void FlashUnlockBlock( U32 Address )			(empty)
 * void FlashLockBlock( U32 Address )			(empty)
 * void FlashEraseBlock( U32 Address )
 * unsigned char FlashWriteByte( U32 Address, unsigned char Data )
 * U32 FlashWriteBlock( U32 Address, U32 Data, unsigned long len )
 * void CopyFlashProgram( )									(empty)
 * void WriteFlashProgram( U32 address, U32 data, unsigned long len )		(empty)
 * unsigned long FlashReadByte( U32 Address, unsigned char buffer )
 * unsigned long FlashReadBlock( U32 Address, U32 buffer, unsigned long len )
 *
 * Global Variable List:
 * None
 *
 * Note:		Further file description refers to simdrv.txt
 *
 ***************************************************************************************
 *
 * Modification History
 *
 * 2001/11/27		by longn_qi		add functions "FlashReadByte" and "FlashReadBlock".
 * 2001/11/26		by longn_qi		create file
 *
\***************************************************************************************/

/* System or Standard Header */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>//2002

#include "cdevice.h"
//#include <hardware\drball\reg.h>
//#include <hardware\drball\m68328.h>
#include "ppsmtype.h"
#include "ppsmmsg.h"
//#include <ppsm\ppsm.h>
////#include <hardware\drball\reg.h>
#include "m68328.h"
#include "asixsys.h"
#include "flash.h"
#include "lmalloc.h"
#include "Nucleus.h"
#include "pcdisk.h"
#include "fs.h"


#define	FLASH_WRITE_ENABLE	// *(P_U16)CSA0 &=0x7fff;

#define	FLASH_WRITE_DISABLE	// *(P_U16)CSA0 |=0x8000;

U32 		g_nor_blknum;	//gfd Nor flash buffer blk num;
UINT8	g_nor_buf[256*1024];	


UINT8       *nor_rd_pages[NUM_RAMDISK_PAGES];
UINT16          nor_rd_opencount = 0;

typedef void (*	FBP)(U32 Address);    
typedef unsigned char (* FWP)(U32  Address,unsigned char Data);  
typedef U32 (* FWBP)(U32  Address,U32 Data,unsigned long len);
typedef unsigned long (* FRP)(unsigned char buffer, U32  Address);  
typedef unsigned long (* FRBP)(U32 buffer,U32 Address,unsigned long len);

FBP FlashUnlockBlockP = (FBP)FlashUnlockBlock;
FBP FlashLockBlockP = (FBP)FlashLockBlock;
FBP FlashEraseBlockP = (FBP)FlashEraseBlock;
FWP FlashWriteByteP = (FWP)FlashWriteByte;
FWBP FlashWriteBlockWordP = (FWBP)FlashWriteBlockWord;
////FWBP FlashWriteBlockP = (FWBP)FlashWriteBlock;
FWBP FlashWriteBlockP = (FWBP)FlashWriteBlockWord;

void InitROM(void )
{	
	g_nor_blknum = 0;
	drv_flash_read(( unsigned char *)g_nor_buf, (unsigned int *)(g_nor_blknum*512*512 + FAT_FLASH_STARTADD), FLASH_AREA_SIZE);   
}


void FlashUnlockBlock(U32 Address)
{
	U32	Sr,i;
	R_U32 tempAddr;
	U32	mid;
	U32	IMRTemp;
	U32	counter;
	U32 temp = 0;
/*
	mid = Address;
	mid = mid-(mid& 0x00000003);	
	tempAddr = (R_U32)mid;

	*tempAddr = 0x600060;
	*tempAddr = 0xd000d0;		//Write the control word in

	for(i=0; i<1000; i++);
	
	counter = 0;
	
	*tempAddr = 0x700070;
	mid  = *tempAddr;
	while( mid != 0x800080)
	{	
		*tempAddr = 0x700070;
		mid  = *tempAddr;
		
		counter++;
		if(counter > 10000)
			break;
	}			//Wait for the status register
	
	*tempAddr = 0xff00ff;
*/

	*(R_U32)Address = 0x600060;
	*(R_U32)Address = 0xd000d0;
	
	*(R_U32)Address = 0x700070;
	temp = *(R_U32)Address;
////	while( temp != 0x800080 )
	while( (*(R_U32)Address) != 0x800080 )
	{
		temp = *(R_U32)Address ;
	}	

}

void FlashLockBlock(U32 Address)
{
	U32	Sr,i;
	R_U32	tempAddr;
	U32	mid;
	U32	IMRTemp;
	U32	counter;
	
	mid = Address;
	mid = mid-(mid&0x00000003);	
	tempAddr = (R_U32)mid;
	
	*tempAddr = 0x600060;
	*tempAddr = 0x010001;

	for(i=0; i<100000; i++);
	
	counter = 0;
	
	*tempAddr = 0x700070;
	mid  = *tempAddr;
	while( mid != 0x800080)
	{	
		*tempAddr = 0x700070;
		mid  = *tempAddr;
		
		counter++;
		if(counter > 100000)
			break;
	}

	*tempAddr = 0xff00ff;
}

void FlashEraseBlock(U32 Address)
{
	U32	Sr;
	R_U32	tempAddr;
	U32	mid;
	U32	IMRTemp;
	U32	counter;
	
	mid = Address;
	mid = mid-(mid& 0x00000003) ;
	tempAddr = (R_U32)mid;	
	
	
	*tempAddr = 0x200020;
	*tempAddr = 0xd000d0;
	
	for(Sr=0; Sr<80000; Sr++);
	
	counter = 0;	
	*tempAddr = 0x700070;
	mid  = *tempAddr;
	while( mid != 0x800080)
	{	
		*tempAddr = 0x700070;
		for(Sr=0; Sr<20000; Sr++);
		mid  = *tempAddr;
		counter++;
		if(counter > 10000)
			break;
	}
	
	*tempAddr = 0xff00ff;
}

U8 FlashWriteByte(U32 Address, U8 Data)
{
	U32	IMRTemp,datatemp,k;
	U32	temp,mid;
	R_U32	tempAddr;
	U32	counter;
	U32 tempdata = Data;
	U32 retrytimes = 0;

RETRY_WRITE_BYTE:
	datatemp = *(R_U32)(Address - (Address&0x00000003));
	if( (Address&0x00000003 ) == 0)
	{
		temp = tempdata | (datatemp & 0xffffff00);
	}
	else if( (Address&0x00000003 ) == 0x1)
	{
		temp = (tempdata << 8) | (datatemp & 0xffff00ff);
	}
	else if( (Address &0x00000003 ) == 0x2)
	{
		temp = (tempdata << 16) | (datatemp & 0xff00ffff);
	}
	else if( (Address&0x00000003) == 0x3)
	{
		temp = (tempdata << 24) | (datatemp & 0x00ffffff);
	}
	tempAddr = (R_U32)( Address - (Address&0x00000003));

	counter = 0;
	
	*tempAddr = 0x400040;
	*tempAddr = temp;
	
	for(k=0; k<600; k++);

	
	*tempAddr = 0x700070;
	mid  = *tempAddr;
	while( mid != 0x800080)
	{	
		*tempAddr = 0x700070;
		mid  = *tempAddr;
		
		counter++;
		if(counter > 100000)
		 	break;
	}
		
	*tempAddr = 0x500050;
	*tempAddr = 0xff00ff;

	if(*tempAddr != temp)					//judge
	{
		if(retrytimes++ <5)
		goto	RETRY_WRITE_BYTE;				////gfd
		return(Address);
	}
}

U32 FlashWriteBlockWord(U32  Address, U32 DataPoint, U32 len)               //len--byte numbers;   need modify deeplier
{
	U32	i,mid,rawAddress,k;
	S32	lenX;
	U32	num, r;
	R_U32	tempAddr;
	U32	temp, temp32;
	U32	counter;
	U32 retrytimes=0;
	
	rawAddress = Address;
	if( len==0 )
		return(0);

	if(len < 4)
	{
		for(i = 0; i < len; i++)
		{
			FlashWriteByte(Address,*(P_U8)DataPoint);
			DataPoint += 1;
			Address += 1;
		}
		return( 0);
	}	
		
	if( (Address & 0x00000003) != 0x0)					//judge adress end 
	{
		if(len > 0)
		{
			if( (Address & 0x00000003) == 0x1)
			{
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint += 1;
				Address += 1;
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint+= 1;
				Address += 1;
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint += 1;
				Address += 1;
				
			}
			else if( (Address & 0x00000003) == 0x2)
			{
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint += 1;
				Address  += 1;
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint += 1;
				Address += 1;
			}
			else if( (Address & 0x00000003 ) == 0x3)
			{
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint += 1;
				Address += 1;
			}
			
			len = len -(rawAddress & 0x00000003);			
		}
		}			
	
	lenX = len;
	num = lenX>>2;
	r = lenX & 0x00000003;
	
	for(i = 0; i < num; i++)
	{	
		
RETRY_WRITE:
		tempAddr = (R_U32)(Address);

		if(DataPoint & 0x3)
		{
			temp = *(P_U8)DataPoint;
			DataPoint +=1;
			temp32= *(P_U8)DataPoint;
			temp |= (temp32 <<8);
			DataPoint +=1;
			temp32= *(P_U8)DataPoint;
			temp |= (temp32 <<16);
			DataPoint +=1;
			temp32= *(P_U8)DataPoint;
			temp |= (temp32 <<24);
			DataPoint +=1;
		}
		else temp = *(R_U32)DataPoint;
		
		
		*tempAddr = 0x400040;
		*tempAddr = temp;
		
		for(k=0; k<600; k++);
		
		counter = 0;
		*tempAddr = 0x700070;
		mid  = *tempAddr;
		while( mid != 0x800080)
		{	
			*tempAddr = 0x700070;
			mid  = *tempAddr;
		
			counter++;
			if(counter > 10000000)
			break;
		}
		
		*tempAddr = 0xff00ff;
	
		if(*tempAddr != temp)					//judge
		{
			if(retrytimes++ <5)
			goto	RETRY_WRITE;				////gfd
			return(Address);
		}
		Address += 4 ;
		DataPoint += 4;
	}

	for(i = 0; i < r; i++)					//fill left butes of lenX			
	{
		FlashWriteByte(Address,*(P_U8)DataPoint);
		DataPoint += 1;
		Address += 1;
	}
	
	*tempAddr = 0xff00ff;
	return(0);
	
}



U32 FlashWriteBlock(U32  Address, U32 DataPoint, U32 len)
{
	U32	i;
	S32	lenX;
	U32	IMRTemp, rawAddress;
	R_U32	tempAddr;
	U16	x,y,temp;
	U32	mid;
	P_U8	addr8;
	U8	temp8;
	U32	counter, BufferCount,counter1;	
	
		
	rawAddress = Address;
	lenX = len;
	if( lenX==0 )
		return(0);
		
	if( (Address % 4) != 0x0)					//judge adress end, and fill fore superabundance  bytes. 
	{
		if(lenX > 0)
		{
			if( (Address % 4 ) == 0x1)
			{
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint++;
				Address++;
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint++;
				Address++;
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint++;
				Address++;
			
			}
			else if( (Address % 4 ) == 0x2)
			{
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint++;
				Address++;
				FlashWriteByte(Address,*(P_U8)DataPoint);
				DataPoint++;
				Address++;
			}
			else if( (Address % 4 ) == 0x3)
			{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品久久久久久| 99re成人精品视频| 成人一区二区视频| 欧美午夜片在线看| 久久噜噜亚洲综合| 五月天激情综合网| 成人黄色电影在线| 91精品久久久久久蜜臀| 成人免费一区二区三区在线观看 | 青娱乐精品视频| 成人99免费视频| 精品日韩欧美一区二区| 亚洲国产一区视频| 成人av在线电影| 日韩精品自拍偷拍| 日日夜夜精品视频天天综合网| 99久久精品国产导航| 久久婷婷一区二区三区| 欧美aⅴ一区二区三区视频| 欧美亚洲自拍偷拍| 亚洲人成小说网站色在线| 国产成人av一区| 久久综合久久综合久久| 蜜桃精品视频在线| 91精品免费观看| 日韩国产一二三区| 5858s免费视频成人| 亚洲aⅴ怡春院| 在线视频国内自拍亚洲视频| 国产精品女主播在线观看| 激情成人综合网| 久久综合色综合88| 国内成+人亚洲+欧美+综合在线| 91精品国产高清一区二区三区蜜臀| 一个色综合av| 欧洲国内综合视频| 午夜电影一区二区三区| 欧美午夜精品理论片a级按摩| 国产日韩欧美精品在线| 国产成人av电影| 国产精品毛片a∨一区二区三区| 国产很黄免费观看久久| 欧美国产一区二区在线观看| 成人午夜在线视频| **性色生活片久久毛片| 一本到一区二区三区| 亚洲综合偷拍欧美一区色| 在线观看精品一区| 亚洲高清免费一级二级三级| 7777精品伊人久久久大香线蕉| 天堂久久一区二区三区| 欧美一区二区黄| 国产一区二区三区免费看| 欧美激情中文字幕一区二区| 99久久99久久免费精品蜜臀| 亚洲综合激情另类小说区| 欧美精品777| 国产乱人伦偷精品视频免下载| 日本一区二区三区免费乱视频| av电影在线观看一区| 亚洲在线一区二区三区| 日韩欧美国产wwwww| 国产**成人网毛片九色 | 欧美另类高清zo欧美| 奇米影视一区二区三区| 精品动漫一区二区三区在线观看 | 午夜视频在线观看一区二区三区 | 午夜天堂影视香蕉久久| 欧美v亚洲v综合ⅴ国产v| 成人免费视频caoporn| 亚洲最新在线观看| 久久久一区二区三区| 91啪九色porn原创视频在线观看| 性做久久久久久免费观看欧美| 2欧美一区二区三区在线观看视频| 99久久精品国产一区二区三区| 亚洲午夜电影在线| 久久精品亚洲精品国产欧美| 在线观看日韩电影| 国产美女精品一区二区三区| 亚洲一区二区三区三| 2014亚洲片线观看视频免费| 在线免费观看一区| 国产福利不卡视频| 视频一区中文字幕国产| 国产精品女人毛片| 精品美女被调教视频大全网站| 99精品欧美一区二区三区综合在线| 日本欧美肥老太交大片| 亚洲三级在线看| 久久精品夜色噜噜亚洲a∨| 欧美午夜寂寞影院| 99久久国产综合精品女不卡| 狠狠狠色丁香婷婷综合久久五月| 亚洲色图一区二区三区| www国产精品av| 91精品国产高清一区二区三区 | 美女看a上一区| 亚洲一区二区三区视频在线播放| 国产亚洲一二三区| 日韩三级中文字幕| 欧美福利电影网| 欧洲一区二区三区免费视频| bt7086福利一区国产| 国产精品一区二区在线观看不卡| 日本vs亚洲vs韩国一区三区二区 | 精品国产凹凸成av人网站| 欧美日韩高清影院| 欧美在线观看视频一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产美女av一区二区三区| 免费不卡在线观看| 日韩精品午夜视频| 日韩中文字幕麻豆| 日本中文字幕一区二区视频| 亚洲成a人片在线观看中文| 亚洲免费色视频| 亚洲精选视频在线| 亚洲欧美日韩在线不卡| 国产精品久久久久久一区二区三区| 国产夜色精品一区二区av| 国产欧美1区2区3区| 中文字幕免费在线观看视频一区| 国产偷国产偷精品高清尤物| 中文av字幕一区| 18欧美亚洲精品| 亚洲久草在线视频| 亚洲午夜视频在线| 亚洲成人免费影院| 欧美aaaaa成人免费观看视频| 蜜臀精品一区二区三区在线观看| 老司机精品视频在线| 国产一区二区在线看| 国产精品18久久久久久久久 | 日韩和欧美的一区| 裸体健美xxxx欧美裸体表演| 国内精品国产三级国产a久久| 国产专区综合网| 波多野结衣精品在线| 日本丰满少妇一区二区三区| 在线精品国精品国产尤物884a | 95精品视频在线| 欧美性猛交xxxxxxxx| 日韩一区二区在线播放| 国产日韩av一区| 一区二区三区在线播| 蜜乳av一区二区| 风间由美一区二区三区在线观看| 91在线观看地址| 在线播放91灌醉迷j高跟美女| 精品成人佐山爱一区二区| 国产精品嫩草影院av蜜臀| 一区二区三区91| 麻豆91免费看| 97精品国产97久久久久久久久久久久| 欧美性生活大片视频| 精品久久久久久亚洲综合网| 亚洲欧洲www| 日本欧美一区二区| 9色porny自拍视频一区二区| 欧美日本在线一区| 国产精品亲子乱子伦xxxx裸| 午夜精品爽啪视频| 不卡在线观看av| 日韩免费一区二区| 亚洲精品日日夜夜| 国产麻豆成人精品| 欧美日韩第一区日日骚| 中文字幕欧美区| 免费黄网站欧美| 91蜜桃传媒精品久久久一区二区| 欧美成人乱码一区二区三区| 亚洲自拍偷拍九九九| 国产成人在线网站| 日韩视频国产视频| 亚洲一区二区在线观看视频| 成人午夜视频在线| 精品少妇一区二区三区免费观看 | 91女神在线视频| 国产网站一区二区| 奇米精品一区二区三区在线观看| 色哟哟国产精品| 国产精品进线69影院| 精品一区二区三区av| 欧美日本乱大交xxxxx| 亚洲人一二三区| 成人午夜av电影| 久久精品人人做人人综合| 美女在线视频一区| 7777精品久久久大香线蕉| 亚洲精品日日夜夜| 91麻豆国产精品久久| 国产精品女上位| 成人午夜短视频| 欧美激情一区不卡| 国产成人在线看| 国产亚洲一区二区三区| 国产一二精品视频| 久久久天堂av| 国产精品亚洲第一|