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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fburncmd.c

?? ICETEK-DM642-EDUlabv1.3.rar
?? C
字號:
/*********************************************************************
 *          (C) COPYRIGHT TEXAS INSTRUMENTS, INC. 2000-2002
 * FlashBurn Programming Functions
 *     for DM642 EVM
 */

/*
 */

#include <stdio.h>
#include "type.h"
#include "c642evm.h"
#include "FBTC642.h"
#include "FBCmd.h"

	/* Local prototype
	 */
static GetFlashBuf(u8 *dest, u8 *flashsrc, u16 nBytes);

	/* Used by the checksum calc functions
	 */
static volatile unsigned long cksum = 0;

    /* flashstart/next are used to track
     * where we are in a "flat" Flash memory.
     * Paging, etc. are handled by helper
     * funcs.
     */  
static volatile u8 *flashstart = (volatile u8 *)FLASH_START;
static volatile u8 *flashnext  = (volatile u8 *)FLASH_START;

	/* These are "override" values, in case the
	 * Host has sent new flash base addr and size.
     * flashbaseov is 0xffffffff normally, but changes
     * if Host sends the Change FLASHSTART Address command.
     * Thus if it's not 0xffffffff, then it should be used
     * instead of the FLASH_START value. 
	 */
static volatile u8 *flashbaseov = (u8 *)0xffffffffUL;
static unsigned long flashsizeov =  0xffffffffUL;

/* Constant table containing end address of each sector */
unsigned long sector_end[FLASH_SECTORS] = {  /*change*/
    FLASH_START + 0x00ffff, /* Sector 0  */
    FLASH_START + 0x01ffff, /* Sector 1  */
    FLASH_START + 0x02ffff, /* Sector 2  */
    FLASH_START + 0x03ffff, /* Sector 3  */
    FLASH_START + 0x04ffff, /* Sector 4  */
    FLASH_START + 0x05ffff, /* Sector 5  */
    FLASH_START + 0x06ffff, /* Sector 6  */
    FLASH_START + 0x07ffff, /* Sector 7  */    
    FLASH_START + 0x08ffff, /* Sector 8  */
    FLASH_START + 0x09ffff, /* Sector 9  */
    FLASH_START + 0x0affff, /* Sector 10 */
    FLASH_START + 0x0bffff, /* Sector 11 */
    FLASH_START + 0x0cffff, /* Sector 12 */
    FLASH_START + 0x0dffff, /* Sector 13 */
    FLASH_START + 0x0effff, /* Sector 14 */
    FLASH_START + 0x0fffff, /* Sector 15 */
    FLASH_START + 0x10ffff, /* Sector 16 */
    FLASH_START + 0x11ffff, /* Sector 17 */
    FLASH_START + 0x12ffff, /* Sector 18 */
    FLASH_START + 0x13ffff, /* Sector 19 */
    FLASH_START + 0x14ffff, /* Sector 20 */
    FLASH_START + 0x15ffff, /* Sector 21 */
    FLASH_START + 0x16ffff, /* Sector 22 */
    FLASH_START + 0x17ffff, /* Sector 23 */
    FLASH_START + 0x18ffff, /* Sector 24 */
    FLASH_START + 0x19ffff, /* Sector 25 */
    FLASH_START + 0x1affff, /* Sector 26 */
    FLASH_START + 0x1bffff, /* Sector 27 */
    FLASH_START + 0x1cffff, /* Sector 28 */
    FLASH_START + 0x1dffff, /* Sector 29 */
    FLASH_START + 0x1effff, /* Sector 30 */
    FLASH_START + 0x1fffff, /* Sector 31 */
    FLASH_START + 0x20ffff, /* Sector 32 */
    FLASH_START + 0x21ffff, /* Sector 33 */
    FLASH_START + 0x22ffff, /* Sector 34 */
    FLASH_START + 0x23ffff, /* Sector 35 */
    FLASH_START + 0x24ffff, /* Sector 36 */
    FLASH_START + 0x25ffff, /* Sector 37 */
    FLASH_START + 0x26ffff, /* Sector 38 */
    FLASH_START + 0x27ffff, /* Sector 39 */    
    FLASH_START + 0x28ffff, /* Sector 40 */
    FLASH_START + 0x29ffff, /* Sector 41 */
    FLASH_START + 0x2affff, /* Sector 42 */
    FLASH_START + 0x2bffff, /* Sector 43 */
    FLASH_START + 0x2cffff, /* Sector 44 */
    FLASH_START + 0x2dffff, /* Sector 45 */
    FLASH_START + 0x2effff, /* Sector 46 */
    FLASH_START + 0x2fffff, /* Sector 47 */
    FLASH_START + 0x30ffff, /* Sector 48 */
    FLASH_START + 0x31ffff, /* Sector 49 */
    FLASH_START + 0x32ffff, /* Sector 50 */
    FLASH_START + 0x33ffff, /* Sector 51 */
    FLASH_START + 0x34ffff, /* Sector 52 */
    FLASH_START + 0x35ffff, /* Sector 53 */
    FLASH_START + 0x36ffff, /* Sector 54 */
    FLASH_START + 0x37ffff, /* Sector 55 */
    FLASH_START + 0x38ffff, /* Sector 56 */
    FLASH_START + 0x39ffff, /* Sector 57 */
    FLASH_START + 0x3affff, /* Sector 58 */
    FLASH_START + 0x3bffff, /* Sector 59 */
    FLASH_START + 0x3cffff, /* Sector 60 */
    FLASH_START + 0x3dffff, /* Sector 61 */
    FLASH_START + 0x3effff, /* Sector 62 */
    FLASH_START + 0x3fffff, /* Sector 63 */
   // FLASH_START + 0x39ffff, /* Sector 64 */
   // FLASH_START + 0x3affff, /* Sector 65 */
   // FLASH_START + 0x3bffff, /* Sector 66 */
   // FLASH_START + 0x3cffff, /* Sector 67 */
   // FLASH_START + 0x3dffff, /* Sector 68 */
   // FLASH_START + 0x3effff, /* Sector 69 */
   // FLASH_START + 0x3fffff, /* Sector 70 */
};
char erasetable[FLASH_SECTORS];

/* Set and get the flash base address
 */
void SetFlashBase(unsigned long val)
{
	flashbaseov = (volatile u8 *)val;
}

volatile u8 *GetFlashBase(void)
{
	return flashbaseov != (volatile u8 *)0xffffffffL ?
	                      flashbaseov :
	                      (volatile u8 *)FLASH_START;
}

/* Set and get the flash size
 */
void SetFlashSize(unsigned long val)
{
	flashsizeov = val;
}

unsigned long GetFlashSize(void)
{
	return flashsizeov != 0xffffffffL ? flashsizeov : FLASH_SIZE;
}

void InitFlash(void)
{
    int i;
	flashstart = GetFlashBase();
	flashnext = flashstart;
    
    /* Mark all sectors as unerased */
    for (i = 0; i < FLASH_SECTORS; i++)
        erasetable[i] = 0;
}

void SetFlashAddr(u8 *addr)
{
	flashstart = (volatile u8 *)addr;
	flashnext = flashstart;
}


volatile u8 *GetNextFlashAddr(void)
{
	return flashnext;
}

/* Erase a segment of Flash memory */
void flash_erase(u32 start, u32 length)
{
    int i;
    unsigned long sector_base, phys_base, end;
    
    /* Calculate extents of range to erase */
    end = start + length - 1;
    
    /* Walk through each sector, erase any sectors within range */
    sector_base = FLASH_START;
    for (i = 0; i < FLASH_SECTORS; i++)
    {
        if (!erasetable[i] && (start <= sector_end[i]) && (end >= sector_base))
        {
            /* Start sector erase sequence */
            phys_base = (sector_base & 0x00070000) + FLASH_START;
            *FLASH_PAGE = (sector_base & 0x380000) >> 19;
            *(volatile char *)(FLASH_START+0xaaa) = (char)FLASH_KEY1; /*change*/
            *(volatile char *)(FLASH_START+0x555) = (char)FLASH_KEY2;
            *(volatile char *)(FLASH_START+0xaaa) = (char)FLASH_KEY4;

            *(volatile char *)(FLASH_START+0xaaa) = (char)FLASH_KEY1;
            *(volatile char *)(FLASH_START+0x555) = (char)FLASH_KEY2;
            *(volatile char *)(phys_base)         = (char)FLASH_KEY6;
            
            /* Wait until erase is done */
	        while(GetFlashVal(sector_base) != 0xff);

            /* Put the Flash in normal mode */
            *(volatile char *)phys_base = (char)0xf0;
            
            /* Mark sector as erased */
            erasetable[i] = 1;               
        }
        
        /* Advance to next sector */
        sector_base = sector_end[i] + 1;
    }
}

/* Burns flash data, starting at flashnext.
 * This embodies the burning algorithm for the
 * AMD29LV033C flash memory used on DM642 EVM
 */
void BurnFlash(u8 *data, u16 nBytes)
{
	u16 timeout;
	u8 c;
	volatile u8 *pdata;

    /* Put the Flash in normal mode */    
    *(volatile char *)FLASH_START = (char)0xf0;

    flash_erase((u32)flashnext, (u32)nBytes);
	while(nBytes--)		
	{
		/* Prep AMD
		 * 32MBit (4M x 8) Flash Memory
		 * for writing a byte.
		 */
		*FLASH_PAGE = (u8)(((u32)flashnext & 0x380000) >> 19);
		*(volatile char *)(FLASH_START+0xaaa) = (char)FLASH_KEY1;/*change*/
		*(volatile char *)(FLASH_START+0x555) = (char)FLASH_KEY2;
		*(volatile char *)(FLASH_START+0xaaa) = (char)FLASH_KEY3;

        pdata = (volatile u8 *)((u32)flashnext & 0xffc7ffff);
		*pdata = *data;
		
		/* Spin here 'til programming completes
		 */
		c = *data++;
		timeout = 0;
		do timeout += 1;
		while(*pdata != c && timeout < (u16)0xffff);		
		flashnext++;
	}
	
    /* Put the Flash in normal mode */    
    *(volatile char *)FLASH_START = (char)0xf0;
}


/* The Flash Erase function uses
 * the AMD algorithm to erase the
 * entire chip.
 */

void EraseFlash(void)
{
    int i;
			
	/* Code to erase AMD29LV033C
	 * 32MBit (4MK X 8) Flash Memory
	 */
	*FLASH_PAGE = 0;
	*(volatile char *)(FLASH_START+0xaaa) = (char)FLASH_KEY1;/*change*/
	*(volatile char *)(FLASH_START+0x555) = (char)FLASH_KEY2;
	*(volatile char *)(FLASH_START+0xaaa) = (char)FLASH_KEY4;

	*(volatile char *)(FLASH_START+0xaaa) = (char)FLASH_KEY1;
	*(volatile char *)(FLASH_START+0x555) = (char)FLASH_KEY2;
	*(volatile char *)(FLASH_START+0xaaa) = (char)FLASH_KEY5;

    /* Wait until erase is done */
	while(GetFlashVal(FLASH_START) != 0xff);

    /* Put the Flash in normal mode */    
    *(volatile char *)FLASH_START = (char)0xf0;

    /* Mark all sectors as erased */
    for (i = 0; i < FLASH_SECTORS; i++)
        erasetable[i] = 1;
    
	return;
}

void CKSSet(u16 val)
{
	cksum = val;
}
	
u16 CKSGet(void)
{
	return (u16)cksum;
}
		
u16 CKSAccumBuf(unsigned char *buf, unsigned int len)
{
    unsigned long src;
   
    src = (unsigned long)buf;
	while(len-- > 0)
	{
		cksum += GetFlashVal(src++);
		if(cksum > (unsigned long)0x0000ffff)
		{
			cksum += 1;
			cksum &= (unsigned long)0x0000ffff;
		} 
	}
	
	return (u16)cksum;
}

u8 GetFlashVal(unsigned long addr)
{
	*FLASH_PAGE = (u8)(((u32)addr & 0x380000) >> 19);
	return *(volatile u8 *)(addr & 0xffc7ffff);
}

void SendFlashBufToHost(u16 cmd, unsigned long addr, u16 bytecount)
{
    u8 *pflash = (u8 *)addr;
    u16 n = bytecount > 256 ? 256 : bytecount;

	StoreCmd(cmd);     
	StoreArg(0, bytecount);	
    
	GetFlashBuf(GetData(), pflash, n);
}

static GetFlashBuf(u8 *dest, u8 *flashsrc, u16 nBytes)
{
    unsigned long src, dst, i;

    src = (unsigned long)flashsrc;
    dst = (unsigned long)dest;
    
    for (i = 0; i < nBytes; i++)
    {
        *((u8 *)dst++) = GetFlashVal(src++);
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线成人精品| 日韩亚洲欧美综合| 日本系列欧美系列| 国产精品乱码人人做人人爱| 色天天综合久久久久综合片| 日本不卡免费在线视频| 国产精品久久一卡二卡| 日韩欧美国产一区在线观看| 成人免费三级在线| 日韩不卡一区二区三区 | 高清久久久久久| 亚洲成人动漫一区| 中文字幕综合网| 日韩欧美亚洲国产精品字幕久久久| 成人午夜激情视频| 日韩和的一区二区| 一区二区激情小说| 国产欧美日韩综合| 91精品国产免费| 成人黄色一级视频| 国产精品一区二区不卡| 日韩成人一区二区三区在线观看| 中文字幕第一区第二区| 欧美精品一级二级| 日本丰满少妇一区二区三区| 国内久久婷婷综合| 亚洲高清中文字幕| 国产精品成人免费精品自在线观看| 精品国产免费一区二区三区香蕉| 色偷偷88欧美精品久久久| 国产一区视频在线看| 亚洲一级二级三级在线免费观看| 国产精品美女久久久久久久久 | 欧美日韩久久不卡| 国产福利91精品| 国产成人精品亚洲777人妖 | 韩国精品主播一区二区在线观看| 亚洲人精品午夜| 国产欧美日韩综合| 久久精品一区八戒影视| 欧美一区二区三区在线看| 欧美亚洲综合一区| 色综合天天综合色综合av| 成人理论电影网| 国产精品99久久久久久似苏梦涵| 韩国女主播一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲v中文字幕| 五月激情六月综合| 午夜视频久久久久久| 亚洲精品老司机| 亚洲素人一区二区| 国产精品久久久久久亚洲毛片| 久久女同精品一区二区| 精品99久久久久久| 26uuu久久天堂性欧美| 久久久精品国产免费观看同学| 精品电影一区二区| 26uuu国产电影一区二区| 日韩免费观看高清完整版在线观看 | ...xxx性欧美| 亚洲综合精品久久| 亚洲一区二区在线视频| 亚洲图片欧美色图| 亚洲成人在线观看视频| 奇米影视一区二区三区| 欧美aaaaaa午夜精品| 麻豆国产欧美日韩综合精品二区| 五月婷婷综合在线| 国产乱子伦视频一区二区三区| 精彩视频一区二区| 国产99久久久久久免费看农村| 成人精品视频一区| 欧美日韩国产首页在线观看| 欧美精品v日韩精品v韩国精品v| 欧美日本视频在线| 精品精品欲导航| 亚洲欧美成aⅴ人在线观看| 夜夜爽夜夜爽精品视频| 丝袜美腿一区二区三区| 青娱乐精品视频| av在线综合网| 欧美三级欧美一级| 日韩精品一区二区三区在线| 国产亚洲精品久| 中文字幕精品三区| 午夜精品爽啪视频| 韩国精品久久久| 97久久精品人人爽人人爽蜜臀| 91看片淫黄大片一级在线观看| 欧美日韩久久一区二区| 久久综合色婷婷| 亚洲色图清纯唯美| 免费欧美日韩国产三级电影| 国产高清不卡二三区| 91天堂素人约啪| 欧美一二三区在线| 国产精品女人毛片| 五月天网站亚洲| 成人免费高清在线| 日韩精品一区国产麻豆| 国产精品乱码一区二区三区软件| 亚洲激情第一区| 成人在线一区二区三区| 欧美日韩一卡二卡三卡 | 国产一区二区不卡| 欧美日韩成人一区二区| 久久这里只有精品6| 亚洲国产另类精品专区| 免费的国产精品| 一本色道久久综合亚洲91| 日韩精品影音先锋| 国产精品成人一区二区艾草 | 亚洲日穴在线视频| 久久精品国产99国产| 91麻豆高清视频| 国产精品对白交换视频| 看电视剧不卡顿的网站| 色综合色狠狠天天综合色| 久久久.com| 国产v综合v亚洲欧| 欧美精品一区二区久久婷婷| 首页国产欧美日韩丝袜| 欧美色网一区二区| 一区二区三区四区av| 91免费在线播放| 亚洲天堂免费在线观看视频| av中文一区二区三区| 国产精品家庭影院| 97se亚洲国产综合自在线不卡| 亚洲国产精品激情在线观看 | 日韩一区二区精品在线观看| 午夜国产精品一区| 欧美高清www午色夜在线视频| 亚洲午夜在线观看视频在线| 欧美性猛片aaaaaaa做受| 亚洲一区在线播放| 在线电影欧美成精品| 日韩精品一级二级| 欧美一区二区网站| 久久电影网电视剧免费观看| 久久综合资源网| av一区二区三区黑人| 亚洲日本中文字幕区| 欧美亚洲丝袜传媒另类| 亚洲v中文字幕| 欧美大片日本大片免费观看| 国内精品国产成人国产三级粉色| 久久亚洲精品国产精品紫薇| 国产999精品久久久久久绿帽| 亚洲欧洲日本在线| 91国产丝袜在线播放| 日本免费新一区视频| 久久综合久久久久88| jizzjizzjizz欧美| 亚洲综合免费观看高清在线观看| 欧美日韩国产片| 久草中文综合在线| 中文字幕制服丝袜一区二区三区| 91精品福利视频| 麻豆精品新av中文字幕| 久久综合色播五月| 色悠悠久久综合| 日韩和欧美一区二区| 欧美国产精品中文字幕| 91国在线观看| 激情五月激情综合网| 亚洲天堂福利av| 91精品国产入口| 高清av一区二区| 亚洲成人免费在线| 久久精品欧美一区二区三区麻豆| 91片黄在线观看| 狠狠狠色丁香婷婷综合激情| 中文字幕五月欧美| 欧美一区二区在线视频| 成人av免费观看| 日本不卡一区二区三区高清视频| 久久精品日韩一区二区三区| 精品视频一区 二区 三区| 国产一区不卡视频| 亚洲国产精品久久一线不卡| 久久久亚洲精品石原莉奈| 欧美中文字幕一二三区视频| 国产综合色产在线精品| 一级做a爱片久久| 国产婷婷色一区二区三区四区| 欧美亚洲国产一区在线观看网站 | 日韩精品1区2区3区| 国产女主播一区| 在线成人免费视频| 97久久超碰国产精品| 国产尤物一区二区| 日韩综合一区二区| 中文字幕一区二区三区av| 久久综合色之久久综合| 精品视频资源站| 色婷婷激情综合| 成人aa视频在线观看| 久久不见久久见免费视频7 |