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

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

?? fpga.cpp

?? coldfire5206芯片的boot程序
?? CPP
字號:
/****************************************************************************************************
* 文 件 名:					fpga.cpp
* 說    明:	
*			(1) FPGA將被存放在FLASH,具體位置由FLASH_SYSTEM_FLAG決定,在Loader程序中被燒入,
*				同時可通過下載程序升級
*			(2) FPGA數據經過了壓縮,采用的是Huffman方法,注意初始化FPGA的過程中,FLASH操作可能有問題】
*				所以需要先從FLASH中讀入一個緩存,然后解壓縮,這里都是借用了升級時的文件緩存
*
* 作    者:	史梁材
* 創建時間:	2003.07.07          
* 歷史記錄:
*			(1) 2003.07.07		create this new fpga file
***************************************************************************************************/


#include "bastype.h"
#include "main.h"
#include "flash.h"
#include "fpga.h"

static unsigned char s_acFpgaFileBuffer[0x20000];
long HuffmanDecompress(unsigned char * pNewOutData, unsigned char *pInData, long InLen);

/*********************************************************************
* 函數名稱:		InitFpga
* 說	明:		提供兩種模式
*				一種是通過BDM燒入FPGA時,FPGA數據是放在數組中的,fpga_data_len是數組的大小
*				一種從FLASH中取FPGA數據,fpga_data_len為0,通過FPGA在FLASH的頭信息SOFTCOMINFO來確定
*				使用該函數初始化的FPGA數據都必須經過壓縮,而且如果從FLASH中取FPGA數據
*				該函數必須在CheckSystemValid后進行。
* 入口參數:		
*				fpga_data_addr  -- FPGA數據的存放的位置
*				fpga_data_len   -- FPGA數據的長度
* 返 回 值:
*				void
*********************************************************************/
void InitFpga(UINT32 fpga_data_addr, UINT32 fpga_data_len)
{
	UCHAR  *Vport,*Iop2;
	UINT32 blth;
	UINT32 len; 

	UCHAR* buf_after_decompress = s_acFpgaFileBuffer;
	UCHAR*	buf_before_decompress;
	SOFTCOMINFO sofComInfo;
	if (fpga_data_len == 0)
	{
		memcpy(&sofComInfo, (UINT8*)(fpga_data_addr), sizeof(SOFTCOMINFO));

		len = sofComInfo.lComLen;
		buf_before_decompress = (UCHAR*)(fpga_data_addr + sizeof(SOFTCOMINFO));
	}
	else
	{
		len = fpga_data_len;
		buf_before_decompress = (UCHAR*)fpga_data_addr;
	}

	len = HuffmanDecompress(buf_after_decompress, buf_before_decompress, len);
	// 去除開始的輔助信息字段,8000主控板和6000主控板的頭信息長度不一樣
	// 根據FLASH的走線類型g_nFlashCircuitType來判斷是8000主控板,還是6000
	if (g_nFlashCircuitType != FLASH_CIRCUIT_VER_6000)	//8000,9000
	{
		buf_after_decompress += 0x44;
		len -= 0x44;
	}
	else		//6000
	{
		buf_after_decompress += 0x46;
		len -= 0x46;
	}

	Iop2  = (UCHAR*)UOP1;
	*Iop2 = 0x1;   // send a low level to pin PROG


	// LLH.2002.7.18. widen PROG pulse, too narrow PROG pulse may fail
	for (blth=0xFF;blth;blth--);

	Iop2  = (UCHAR*)UOP0;
	*Iop2 = 0x1;   // send a high level to pin PROG

	Iop2  = (UCHAR*)UOP3;
	*Iop2 = 0x1;   // send a low level to pin /AC

	Vport = (UCHAR*)VPORT;
	for ( blth = 0xFFFF; blth; blth-- )
		;

	while (len --)
//	for( blth = len - 0x46; blth; blth-- )
	{
		*Vport	=	*buf_after_decompress++;
	}

	Iop2  = (UCHAR*)UOP2;
	*Iop2 = 0x1;   // send a high level to pin /AC

	for (blth = 0x100; blth; blth--)
		;
}

void ConverseInt(UINT32 *pSourceInt, UINT16 nByteCount)
{
	char acTempStr[4];
	char* pTempStr;

	pTempStr = (char*)pSourceInt;
	if (nByteCount == 2)
	{
		memcpy(acTempStr, pTempStr, 2);
		pTempStr[0] = acTempStr[1];
		pTempStr[1] = acTempStr[0];
	}
	else
	{
		memcpy(acTempStr, pTempStr, 4);
		pTempStr[0] = acTempStr[3];
		pTempStr[1] = acTempStr[2];
		pTempStr[2] = acTempStr[1];
		pTempStr[3] = acTempStr[0];
	}
	return;
}

long HuffmanDecompress(unsigned char * pOutData, unsigned char *pInData, long InLen)
{	
	short           decomp_tree[512];
	unsigned short  code[256];
	unsigned long   file_size;
	unsigned char   code_length[256];

	unsigned long		ulOutLen = 0;

	memcpy( &ulOutLen, pInData, sizeof(long) );
	ConverseInt(&ulOutLen, 4);
	memcpy(code, (pInData + 4), 512 );
	for (int i = 0; i < 256; i ++)
	{
		ConverseInt((unsigned long*)(&(code[i])), 2);
	}
	memcpy( code_length, (pInData + 516), 256 );

	memset( pOutData, 0, ulOutLen );
	unsigned char * pNewOutData = pOutData;

	register unsigned short  loop1;
	register unsigned short  current_index;

	unsigned short  loop;
	unsigned short  current_node = 1;


	//
	memset( decomp_tree, 0 ,1024);
	decomp_tree[1] = 1;

	for (loop = 0; loop < 256; loop++)
	{
		if (code_length[loop])
		{
			current_index = 1;
			for (loop1 = code_length[loop] - 1; loop1 > 0; loop1--)
			{
				current_index = (decomp_tree[current_index] << 1) +
					((code[loop] >> loop1) & 1);
				if (!(decomp_tree[current_index]))
					decomp_tree[current_index] = ++current_node;
			}
			decomp_tree[(decomp_tree[current_index] << 1) +
				(code[loop] & 1)] = -loop;
		}
	}

	//
	register unsigned short  cindex = 1;

	register short           bitshift;

	unsigned long  charcount = 0L;

	unsigned char curchar;
	file_size = ulOutLen;
	unsigned char * ucTemp = (unsigned char * )(pInData + 772);
	while (charcount < file_size)
	{
		//curchar = (char) getc (ifile);
		curchar = *(ucTemp++);

		for (bitshift = 7; bitshift >= 0; --bitshift)
		{
			cindex = (cindex << 1) + ((curchar >> bitshift) & 1);

			if (decomp_tree[cindex] <= 0)
			{
				//putc ((int) (-decomp_tree[cindex]), ofile);
				*(pNewOutData++) = (int) (-decomp_tree[cindex]);

				if ((++charcount) == file_size)
					bitshift = 0;
				else
					cindex = 1;
			}
			else
				cindex = decomp_tree[cindex];
		}
	}

	return file_size;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕精品一区二区三区精品| 精品国产一区二区三区不卡| 99在线精品视频| 成人免费精品视频| 丁香另类激情小说| 欧美性视频一区二区三区| 欧美日韩国产高清一区二区三区| 666欧美在线视频| 久久色视频免费观看| 亚洲人成精品久久久久久| 婷婷夜色潮精品综合在线| 久久精品国产亚洲aⅴ| 成人一区二区视频| 3d动漫精品啪啪| 国产精品国产三级国产aⅴ原创 | 激情综合网天天干| 不卡高清视频专区| 91麻豆精品国产91久久久资源速度| 久久久久久久精| 亚洲精品v日韩精品| 国产乱人伦精品一区二区在线观看| av中文字幕不卡| 国产日本欧美一区二区| 五月天视频一区| 色综合欧美在线| 久久精品一区二区| 麻豆精品国产传媒mv男同| 91麻豆精品在线观看| 国产精品美日韩| 国产成人精品综合在线观看| 精品精品欲导航| 日韩成人午夜精品| 7777女厕盗摄久久久| 一区二区高清视频在线观看| 成人一区二区三区视频在线观看| 精品剧情v国产在线观看在线| 午夜精品久久久久久久 | 天天综合网天天综合色| 欧美影院精品一区| 日韩av成人高清| 日韩欧美一区中文| 韩国v欧美v亚洲v日本v| 久久久高清一区二区三区| 国产精品18久久久久久久网站| 精品久久99ma| 色婷婷综合久久久中文字幕| 一区二区三区在线播放| 欧美理论电影在线| 久久成人av少妇免费| 国产亚洲综合在线| 色婷婷综合五月| 精品一区免费av| 亚洲女人小视频在线观看| 91.成人天堂一区| 国产成人啪午夜精品网站男同| 亚洲图片你懂的| 91精品国产免费| 91视频com| 国产一区二区免费在线| 亚洲男人的天堂一区二区| 日韩欧美一级二级| 91丨porny丨国产| 亚洲精品福利视频网站| 精品国产一区二区三区四区四| 91捆绑美女网站| 国产裸体歌舞团一区二区| 亚洲一区中文在线| 国产精品大尺度| 久久久亚洲综合| 国产精品久久毛片a| 91精品国产综合久久香蕉麻豆| 国产成都精品91一区二区三| 日韩影院免费视频| 亚洲一线二线三线视频| 最新高清无码专区| 中文一区在线播放| 久久精品欧美一区二区三区麻豆| 91精品婷婷国产综合久久性色 | 26uuu成人网一区二区三区| 亚洲精选视频免费看| 国产一区在线观看麻豆| 国产91精品入口| 国产精品中文字幕一区二区三区| 亚洲成人777| 天天色综合成人网| 日本免费新一区视频| 一个色在线综合| 伊人夜夜躁av伊人久久| 亚洲第一电影网| 奇米色777欧美一区二区| 免费人成网站在线观看欧美高清| 美腿丝袜亚洲一区| 国产乱码字幕精品高清av| 国产白丝网站精品污在线入口| 日本一区二区三区四区在线视频| 精品国产一区二区三区忘忧草| 久久久亚洲精品石原莉奈| 国产欧美一区二区在线| 樱花影视一区二区| 亚洲电影视频在线| 久久9热精品视频| 色婷婷综合久久| 精品国产网站在线观看| 亚洲天堂免费看| 免费在线观看一区二区三区| 成人激情综合网站| 4438x亚洲最大成人网| 国产精品久久久久永久免费观看| 亚洲一区二区三区四区不卡| 国产精品一区二区三区乱码| 91麻豆国产香蕉久久精品| 久久久久久久精| 九九精品视频在线看| 欧美性猛交xxxxxx富婆| 国产精品乱码一区二区三区软件 | 国产精品888| 精品乱码亚洲一区二区不卡| 一区二区三区中文在线观看| 国产91丝袜在线观看| 久久日韩粉嫩一区二区三区| 日韩精品一二三区| 欧美少妇一区二区| 亚洲精品亚洲人成人网 | 国产精品国产精品国产专区不蜜| 麻豆91精品91久久久的内涵| 欧美福利视频导航| 日韩一区精品视频| 7777精品久久久大香线蕉| 亚洲h在线观看| 欧美日韩午夜在线| 亚洲1区2区3区4区| 欧美一区二区三区视频免费播放| 亚洲不卡在线观看| 欧美成人官网二区| 国产在线精品一区在线观看麻豆| 精品国产91洋老外米糕| 激情小说欧美图片| 自拍偷拍亚洲欧美日韩| 色综合久久综合| 奇米精品一区二区三区四区| 日韩精品中午字幕| 成人av影院在线| 亚洲精品视频一区二区| 欧美日韩精品一二三区| 久久精品国产99国产精品| 国产精品家庭影院| 欧美日韩在线三级| 国产福利一区二区三区| 一区二区三区欧美久久| 日韩欧美成人一区| 99r精品视频| 日韩av高清在线观看| 亚洲欧洲成人av每日更新| 91精品欧美一区二区三区综合在| 国产成人免费网站| 蜜桃精品视频在线| 亚洲影院久久精品| 亚洲视频在线一区| 久久夜色精品国产欧美乱极品| 色综合色综合色综合| 成人福利在线看| 国产在线精品不卡| 国产一区二区三区四| 五月激情综合色| 一区二区三区精品在线观看| 中文字幕av一区 二区| 日韩视频免费观看高清完整版在线观看 | 中文字幕一区二区不卡 | 国产福利一区在线观看| 亚洲电影欧美电影有声小说| 一区二区三区电影在线播| 国产精品人成在线观看免费| 精品不卡在线视频| 久久综合av免费| 精品999久久久| 国产人伦精品一区二区| 日韩欧美中文一区| 美女精品一区二区| 日韩国产精品久久久久久亚洲| 五月天网站亚洲| 老司机一区二区| 国产成人免费网站| 99热精品一区二区| 91福利精品视频| 91精品国产综合久久久久久漫画 | 一本一道久久a久久精品| 色综合天天视频在线观看 | 日韩高清在线观看| 欧美三级蜜桃2在线观看| 91在线观看成人| 欧美日韩高清一区二区| 91精品婷婷国产综合久久竹菊| 精品国产乱码久久| 亚洲精品老司机| 国模一区二区三区白浆| 91丨九色丨尤物| 欧美岛国在线观看| 亚洲国产日韩综合久久精品| 极品美女销魂一区二区三区免费| 色综合久久综合网欧美综合网|