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

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

?? sharp16.c

?? Sharp 1850 的驅動程序
?? C
字號:
/*************************************************************************/
/*                                                                       */
/* FILE NAME                                      VERSION                */
/*                                                                       */
/* Sharp16.c                                       1.0                   */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/* FUNCTIONS : Sharp Flash LRS1826 program code                          */
/*                                                                       */
/* DEPENDENCIES                                                          */
/*                                                                       */
/*                                                                       */
/* The last mofification date:  07-04-2002                               */
/* REMARKS:  Created initial version 1.0                                 */
/*                                                                       */
/*                                Copyrigth (C) 2001 AIJISYSTEM CO.,LTD  */
/*************************************************************************/

#include <stdio.h>
#include <string.h>
#include "common.h"

#define		AUTOKICK

#define TABLE_CNT 270+1 // Sector count 
ulong Sector_Table[TABLE_CNT] = { 
	BASE_ADDRESS+0x0,
	BASE_ADDRESS+0x00002000,
	BASE_ADDRESS+0x00004000,
	BASE_ADDRESS+0x00006000,
	BASE_ADDRESS+0x00008000,
	BASE_ADDRESS+0x0000a000,
	BASE_ADDRESS+0x0000c000,
	BASE_ADDRESS+0x0000e000,
	BASE_ADDRESS+0x00010000,
	BASE_ADDRESS+0x00020000,
	BASE_ADDRESS+0x00030000,
	
	BASE_ADDRESS+0x00040000,
	BASE_ADDRESS+0x00050000,
	BASE_ADDRESS+0x00060000,
	BASE_ADDRESS+0x00070000,
	BASE_ADDRESS+0x00080000,
	BASE_ADDRESS+0x00090000,
	BASE_ADDRESS+0x000a0000,
	BASE_ADDRESS+0x000b0000,
	BASE_ADDRESS+0x000c0000,
	BASE_ADDRESS+0x000d0000,
	
	BASE_ADDRESS+0x000e0000,
	BASE_ADDRESS+0x000f0000,
	BASE_ADDRESS+0x00100000,
	BASE_ADDRESS+0x00110000,
	BASE_ADDRESS+0x00120000,
	BASE_ADDRESS+0x00130000,
	BASE_ADDRESS+0x00140000,
	BASE_ADDRESS+0x00150000,
	BASE_ADDRESS+0x00160000,
	BASE_ADDRESS+0x00170000,
	
	BASE_ADDRESS+0x00180000,
	BASE_ADDRESS+0x00190000,
	BASE_ADDRESS+0x001a0000,
	BASE_ADDRESS+0x001b0000,
	BASE_ADDRESS+0x001c0000,
	BASE_ADDRESS+0x001d0000,
	BASE_ADDRESS+0x001e0000,
	BASE_ADDRESS+0x001f0000,
	BASE_ADDRESS+0x00200000,
	BASE_ADDRESS+0x00210000,
	
	BASE_ADDRESS+0x00220000,
	BASE_ADDRESS+0x00230000,
	BASE_ADDRESS+0x00240000,
	BASE_ADDRESS+0x00250000,
	BASE_ADDRESS+0x00260000,
	BASE_ADDRESS+0x00270000,
	BASE_ADDRESS+0x00280000,
	BASE_ADDRESS+0x00290000,
	BASE_ADDRESS+0x002a0000,
	BASE_ADDRESS+0x002b0000,
	BASE_ADDRESS+0x002c0000,
	
	BASE_ADDRESS+0x002d0000,
	BASE_ADDRESS+0x002e0000,
	BASE_ADDRESS+0x002f0000,
	BASE_ADDRESS+0x00300000,
	BASE_ADDRESS+0x00310000,
	BASE_ADDRESS+0x00320000,
	BASE_ADDRESS+0x00330000,
	BASE_ADDRESS+0x00340000,
	BASE_ADDRESS+0x00350000,
	BASE_ADDRESS+0x00360000,
	
	BASE_ADDRESS+0x00370000,
	BASE_ADDRESS+0x00380000,
	BASE_ADDRESS+0x00390000,
	BASE_ADDRESS+0x003a0000,
	BASE_ADDRESS+0x003b0000,
	BASE_ADDRESS+0x003c0000,
	BASE_ADDRESS+0x003d0000,
	BASE_ADDRESS+0x003e0000,
	BASE_ADDRESS+0x003f0000,
	BASE_ADDRESS+0x00400000,
	
	BASE_ADDRESS+0x00410000,
	BASE_ADDRESS+0x00420000,
	BASE_ADDRESS+0x00430000,
	BASE_ADDRESS+0x00440000,
	BASE_ADDRESS+0x00450000,
	BASE_ADDRESS+0x00460000,
	BASE_ADDRESS+0x00470000,
	BASE_ADDRESS+0x00480000,
	BASE_ADDRESS+0x00490000,
	BASE_ADDRESS+0x004a0000,
	
	BASE_ADDRESS+0x004b0000,
	BASE_ADDRESS+0x004c0000,
	BASE_ADDRESS+0x004d0000,
	BASE_ADDRESS+0x004e0000,
	BASE_ADDRESS+0x004f0000,
	BASE_ADDRESS+0x00500000,
	BASE_ADDRESS+0x00510000,
	BASE_ADDRESS+0x00520000,
	BASE_ADDRESS+0x00530000,
	BASE_ADDRESS+0x00540000,
	
	BASE_ADDRESS+0x00550000,
	BASE_ADDRESS+0x00560000,
	BASE_ADDRESS+0x00570000,
	BASE_ADDRESS+0x00580000,
	BASE_ADDRESS+0x00590000,
	BASE_ADDRESS+0x005a0000,
	BASE_ADDRESS+0x005b0000,
	BASE_ADDRESS+0x005c0000,
	BASE_ADDRESS+0x005d0000,
	BASE_ADDRESS+0x005e0000,
	
	BASE_ADDRESS+0x005f0000,
	BASE_ADDRESS+0x00600000,
	BASE_ADDRESS+0x00610000,
	BASE_ADDRESS+0x00620000,
	BASE_ADDRESS+0x00630000,
	BASE_ADDRESS+0x00640000,
	BASE_ADDRESS+0x00650000,
	BASE_ADDRESS+0x00660000,
	BASE_ADDRESS+0x00670000,
	BASE_ADDRESS+0x00680000,
	
	BASE_ADDRESS+0x00690000,
	BASE_ADDRESS+0x006a0000,
	BASE_ADDRESS+0x006b0000,
	BASE_ADDRESS+0x006c0000,
	BASE_ADDRESS+0x006d0000,
	BASE_ADDRESS+0x006e0000,
	BASE_ADDRESS+0x006f0000,
	BASE_ADDRESS+0x00700000,
	BASE_ADDRESS+0x00710000,
	BASE_ADDRESS+0x00720000,
	
	BASE_ADDRESS+0x00730000,
	BASE_ADDRESS+0x00740000,
	BASE_ADDRESS+0x00750000,
	BASE_ADDRESS+0x00760000,
	BASE_ADDRESS+0x00770000,
	BASE_ADDRESS+0x00780000,
	BASE_ADDRESS+0x00790000,
	BASE_ADDRESS+0x007a0000,
	BASE_ADDRESS+0x007b0000,
	BASE_ADDRESS+0x007c0000,
	
	BASE_ADDRESS+0x007d0000,
	BASE_ADDRESS+0x007e0000,
	BASE_ADDRESS+0x007f0000,
	BASE_ADDRESS+0x007f2000,
	BASE_ADDRESS+0x007f4000,
	BASE_ADDRESS+0x007f6000,
	BASE_ADDRESS+0x007f8000,
	BASE_ADDRESS+0x007fa000,
	BASE_ADDRESS+0x007fc000,
	BASE_ADDRESS+0x007fe000,
	BASE_ADDRESS+0x00800000
};
	
#ifdef AUTOKICK
//volatile ushort *AutoKick_reg = (ushort *)0x3000600;  //MSM3000, 3100, 5000, 5105
//volatile ushort *AutoKick_reg = (ushort *)0x3000700;  //MSM5100 watch dog address
volatile ushort *AutoKick_reg = (ushort *)0x30006d0;  //MSM6050
//volatile ushort *AutoKick_reg = (ushort *)0x3001080;  //MSM5500
//volatile ushort *AutoKick_reg = (ushort *)0x80000700;  //MSM6100
#endif

extern FLASH_INFO Flash_Info;

void Main(void)
{
	switch(Flash_Info.Command)
	{
		case FPROGRAM: Program();
				break;
		case FERASEALL: EraseAll();
				break;
		case FERASESEC: EraseSector();
				break;
		case FREADID: ReadChipID();
				break;
		default :
			Flash_Info.Result = 0;
	}
}
		

void  Program(void)
{
	ulong i;
	
	ushort status, data;
	volatile ushort * targetP;
	ushort * srcP;

	targetP = (ushort *)Flash_Info.TargetAddr;
	srcP = (ushort *)Flash_Info.Buf;

    for(i=0; i<Flash_Info.Length; i+=2, targetP++, srcP++)
    {
		*targetP = PROGRAM_CMD;
		*targetP = *srcP;
	
	    while(1)
    	{
    		*targetP = READ_STATUS;
			status=*targetP & STATUS_WSMS;
			
			if(status)
				break;
			
#ifdef AUTOKICK
			// AutoKick for Qualcomm MSM
			*AutoKick_reg = 1;
			*AutoKick_reg = 0;
#endif
		}		

 		*targetP = READ_STATUS;
		status=*targetP & STATUS_PROG;
			
		if(status)
			Flash_Info.Result = 0;	// error
		else
			Flash_Info.Result = 1; // Success
			
    }
    
	targetP = (ushort *)Flash_Info.TargetAddr;
    *targetP = STATUS_CLEAR;
	
	*targetP = RESET_CMD;

 //   Flash_Info.Result = Verification(Flash_Info.TargetAddr, Flash_Info.Length, (ulong)Flash_Info.Buf);
    Flash_Info.Result = 1;
}


void EraseAll(void)
{
	ushort status;
	volatile ushort * targetP;

	Flash_Info.Result = 0;	// error

	// first flash
	targetP = (volatile ushort *)BASE_ADDRESS;

	*targetP = RESET_CMD;

	ClearAllBlockLock();
	
	// to one Bank
	*targetP = UNLOCK_SETUP; 
	*targetP = PCRC_CMD; 
	*(targetP+3) = 0x0; 

	*targetP = ERASE_ALL_CMD;
	*targetP = ERASE_CONFIRM;
	
	// second flash
//	targetP = (volatile ushort *)BASE_ADDRESS2;

//	*targetP = RESET_CMD;

	ClearAllBlockLock();
	
	// to one Bank
	*targetP = UNLOCK_SETUP; 
	*targetP = PCRC_CMD; 
	*(targetP+3) = 0x0; 

	*targetP = ERASE_ALL_CMD;
	*targetP = ERASE_CONFIRM;
	

	// first flash
	targetP = (volatile ushort *)BASE_ADDRESS;

	status = 0;
    while(!status)
	{
		*targetP = READ_STATUS;
		status=*targetP & STATUS_WSMS;
		
#ifdef AUTOKICK
		// AutoKick for Qualcomm MSM
		*AutoKick_reg = 1;
		*AutoKick_reg = 0;
#endif
	}		

	*targetP = READ_STATUS;
	status=*targetP & STATUS_ERASE;
		
	if(status) {
		*targetP = RESET_CMD;
		return;
	}

    *targetP = STATUS_CLEAR;

	*targetP = RESET_CMD;
	
	// second flash
/*	targetP = (volatile ushort *)BASE_ADDRESS2;

	status = 0;
    while(!status)
	{
		*targetP = READ_STATUS;
		status=*targetP & STATUS_WSMS;
		
#ifdef AUTOKICK
		// AutoKick for Qualcomm MSM
		*AutoKick_reg = 1;
		*AutoKick_reg = 0;
#endif
	}		

	*targetP = READ_STATUS;
	status=*targetP & STATUS_ERASE;
		
	if(status) {
		*targetP = RESET_CMD;
		return;
	}

    *targetP = STATUS_CLEAR;

	*targetP = RESET_CMD;
*/	
	
//	Flash_Info.Result = BlankCheck(BASE_ADDRESS, 0x800000);
    Flash_Info.Result = 1;
}

// Sector erase function
void EraseSector(void)
{
	int i;
	
	Flash_Info.Result = 0;
	
	for(i=0; i<TABLE_CNT-1; i++) // Start sector 茫扁
		if(Sector_Table[i+1]>Flash_Info.TargetAddr)
			break;
	
	for(;i<TABLE_CNT-1; i++) {
		if(Sector_Table[i] >= (Flash_Info.TargetAddr+Flash_Info.Length))
			break;
			
		if(!OneSectorErase(Sector_Table[i]))
			return;
	}
//	Flash_Info.Result = BlankCheck(Flash_Info.TargetAddr, Flash_Info.Length);
    Flash_Info.Result = 1;
}


void ReadChipID(void)
{
    ushort manId,devId;
    volatile ushort *targetP = (ushort *)BASE_ADDRESS;

	*targetP = RESET_CMD;

	*targetP = ID_CMD;
    manId=*((volatile uchar *)targetP);
	manId &= 0xff;

	*targetP = ID_CMD;
    devId=*((volatile uchar *)(targetP+1));
	devId &= 0xff;
	
	devId &= 0xff;
	Flash_Info.Result = (devId << 8) + manId;
	
	*targetP = RESET_CMD;
}



void ClearBlockLock(ulong targetAddr) 
{
	unsigned long Status, time_out;

	volatile ushort *targetP = (ushort *)targetAddr;

	*targetP = UNLOCK_SETUP;
	*targetP = UNLOCK_CONFIRM;

	Status = 0;
	time_out = 100000;
	while(!Status && time_out) {
		*targetP = READ_STATUS;
		Status = *targetP & STATUS_WSMS;
#ifdef AUTOKICK
		// AutoKick for Qualcomm MSM
		*AutoKick_reg = 1;
		*AutoKick_reg = 0;
#endif
		time_out--;
	}
	
	*targetP = STATUS_CLEAR;
	*targetP = RESET_CMD;
}

// Erase one Sector
int OneSectorErase(ulong targetAddr)
{
	volatile ulong status;
	volatile ushort *targetP;
	
	targetP = (ushort *)targetAddr;

	*targetP = RESET_CMD;

	ClearBlockLock(targetAddr);
		
	*targetP = ERASE_SEC_CMD;
	*targetP = ERASE_CONFIRM;

    while(1)
	{
#ifdef AUTOKICK
		// AutoKick for Qualcomm MSM
		*AutoKick_reg = 1;
		*AutoKick_reg = 0;
#endif
		*targetP = READ_STATUS;
		status=(*targetP & STATUS_WSMS);
		
		if(status)
			break;
	}		

	*targetP = READ_STATUS;
	status=(*targetP & STATUS_ERASE);
		
    *targetP = STATUS_CLEAR;

	*targetP = RESET_CMD;

	if(status) 
		return 0;
	else
		return 1; // Success
}

void ClearAllBlockLock(void)
{
	ulong i;
	
	for(i = 0; i < TABLE_CNT-1; i++)
		ClearBlockLock(Sector_Table[i]);
}

int BlankCheck(ulong targetAddr,ulong targetSize) 
{
	ulong i;
	volatile ulong *targetP = (volatile ulong *)targetAddr;
	
	for (i=0; i<targetSize; i+=4) {
		if (*targetP++ != 0xffffffff) 
			return 0;
#ifdef AUTOKICK
		// AutoKick for Qualcomm MSM
		*AutoKick_reg = 1;
		*AutoKick_reg = 0;
#endif
	}
	return 1;
}


int Verification(ulong targetAddr, ulong limit, ulong srcAddr)
{
    int i=0;
    volatile ulong * targetP;
    volatile ulong * sourceP;

	targetP = (volatile ulong *)targetAddr;
	sourceP = (volatile ulong *)srcAddr;

    for(i=0; i<limit; i+=4)
    {
		if(*targetP++ != *sourceP++)
		{
	    	return 0;
		}
#ifdef AUTOKICK
		if (((ulong)targetP & 0x1fff) == 0) {
			*AutoKick_reg = 1;
			*AutoKick_reg = 0;
		}
#endif
    }
    return 1;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国偷自产一区二区三区成为亚洲经典| 久久人人爽人人爽| 欧美精品一区二区蜜臀亚洲| 中文字幕精品—区二区四季| 亚洲成人精品在线观看| 成人在线视频首页| 欧美va亚洲va| 亚洲一区在线观看网站| 99精品国产99久久久久久白柏| 日韩欧美综合一区| 亚洲r级在线视频| 91福利社在线观看| 亚洲免费三区一区二区| 国产91露脸合集magnet| 久久久噜噜噜久噜久久综合| 日本亚洲视频在线| 欧美性做爰猛烈叫床潮| 国产精品美女久久久久久久久| 国产伦精品一区二区三区免费| 欧美视频一区二区在线观看| 中文字幕在线观看不卡视频| 国产91对白在线观看九色| 日韩欧美精品在线| 日本视频一区二区三区| 欧美美女bb生活片| 午夜久久久久久电影| 欧美性生活影院| 亚洲午夜在线观看视频在线| 欧美亚洲国产一区在线观看网站| 亚洲欧美日韩人成在线播放| 色中色一区二区| 综合av第一页| 在线精品亚洲一区二区不卡| 一区二区三区四区蜜桃| 欧美在线视频你懂得| 亚洲精选视频免费看| 色一情一伦一子一伦一区| 亚洲激情图片小说视频| 欧美亚洲尤物久久| 亚欧色一区w666天堂| 在线播放国产精品二区一二区四区| 亚洲成人中文在线| 91精品国产一区二区三区蜜臀 | 欧美色综合影院| 亚洲永久免费av| 91精品国产欧美一区二区18 | 亚洲第一av色| 制服丝袜亚洲色图| 国产在线日韩欧美| 中文字幕二三区不卡| 欧美亚洲综合色| 视频一区二区三区在线| 亚洲精品一区二区三区福利 | 精品综合久久久久久8888| www国产精品av| 成人深夜视频在线观看| 最新欧美精品一区二区三区| 欧美日韩一区中文字幕| 精品在线免费观看| 中文字幕亚洲一区二区av在线| 欧美日韩国产美女| 国产一区二区在线观看免费| 国产精品乱人伦中文| 91精品免费在线| 成人一区在线观看| 亚洲国产一区视频| 国产精品国产三级国产普通话三级| 一本色道综合亚洲| 精品一区精品二区高清| 亚洲美女视频在线观看| 精品国产三级电影在线观看| 91麻豆免费视频| 久99久精品视频免费观看| 一个色妞综合视频在线观看| 欧美成人精品高清在线播放| 91老司机福利 在线| 国产曰批免费观看久久久| 亚洲精品伦理在线| 国产亚洲欧洲997久久综合 | 欧美成人r级一区二区三区| 99久久久免费精品国产一区二区| 奇米777欧美一区二区| 亚洲欧洲日产国码二区| 久久综合国产精品| 欧美色图免费看| 99久久免费精品| 国产成人鲁色资源国产91色综| 亚洲成人黄色小说| 亚洲日本va在线观看| 国产欧美一区二区三区网站| 欧美一区二区福利在线| 91黄色激情网站| 91在线免费视频观看| 风间由美一区二区三区在线观看| 日本欧美一区二区| 亚洲国产人成综合网站| 国产精品高潮呻吟| 日本一区二区三区电影| 精品对白一区国产伦| 欧美一级片在线| 欧美久久婷婷综合色| 在线视频你懂得一区| caoporm超碰国产精品| 国产一区二区三区久久久| 久久99日本精品| 日韩精品成人一区二区三区| 亚洲成av人片在www色猫咪| 一区二区三区在线观看欧美| 一区二区三区丝袜| 亚洲精品视频免费看| 亚洲品质自拍视频| 亚洲精品国产a久久久久久| 亚洲欧洲无码一区二区三区| 国产精品卡一卡二卡三| 亚洲视频中文字幕| 亚洲精品久久久蜜桃| 亚洲一区二区五区| 亚洲va韩国va欧美va精品| 丝袜亚洲另类欧美| 麻豆一区二区在线| 久久精品国产澳门| 激情六月婷婷久久| 国产东北露脸精品视频| 99精品在线免费| 欧美日韩成人在线| 日韩女优av电影在线观看| 精品国产免费视频| 国产精品白丝在线| 婷婷中文字幕综合| 精品午夜久久福利影院 | 欧美国产禁国产网站cc| 中文字幕在线观看不卡| 亚洲午夜精品网| 久久99国产精品久久99| 国内成+人亚洲+欧美+综合在线 | 久草精品在线观看| 99亚偷拍自图区亚洲| 欧美色视频在线| 精品成人佐山爱一区二区| 国产精品久线观看视频| 亚洲国产日韩在线一区模特 | 大尺度一区二区| 欧美午夜一区二区三区| 日韩女优毛片在线| 亚洲丝袜另类动漫二区| 视频在线观看一区| 国产成人自拍网| 在线观看91视频| 久久久欧美精品sm网站| 亚洲黄色av一区| 韩国av一区二区三区四区| 99综合影院在线| 日韩亚洲欧美综合| 亚洲日本在线a| 另类小说色综合网站| 91首页免费视频| 亚洲精品一区二区三区影院 | 欧美精品高清视频| 欧美激情在线观看视频免费| 日韩精品亚洲一区| 色综合久久久久综合99| 久久午夜国产精品| 亚洲成人激情社区| 91偷拍与自偷拍精品| 久久综合久久综合亚洲| 亚洲一区二区精品久久av| 福利视频网站一区二区三区| 91精品国产福利| 亚洲欧美日韩在线| 国产成人精品亚洲午夜麻豆| 5月丁香婷婷综合| 一区二区三区四区五区视频在线观看 | 亚洲女人****多毛耸耸8| 国产麻豆欧美日韩一区| 日韩一区二区在线观看视频| 亚洲伦在线观看| 成人蜜臀av电影| 国产天堂亚洲国产碰碰| 伦理电影国产精品| 91精品国产综合久久精品图片| 国产精品大尺度| 成人夜色视频网站在线观看| 日韩欧美在线综合网| 日韩精彩视频在线观看| 欧美午夜精品久久久久久超碰 | 久久久久国产精品厨房| 久久91精品国产91久久小草| 欧美巨大另类极品videosbest | 国产成人av电影在线| 精品少妇一区二区三区在线播放 | 中文字幕高清一区| 国产成人夜色高潮福利影视| 亚洲精品在线免费观看视频| 国内偷窥港台综合视频在线播放| 在线不卡a资源高清| 日韩av电影天堂| 日韩午夜精品视频| 久久激五月天综合精品| 欧美成人激情免费网| 国产一区二区视频在线|