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

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

?? fpgaload.c

?? 在davinci下的fpga下載程序
?? C
字號:
//#include <linux/config.h>
//#include <linux/version.h>
#include <linux/module.h>
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/proc_fs.h>
#include <linux/errno.h>
#include <asm/uaccess.h>
#include <linux/vmalloc.h>
#include <linux/sched.h>
#include <asm/io.h>
#include <linux/semaphore.h>
#include <asm/arch/edma.h>
#include <linux/interrupt.h>
#include <asm/hardware/clock.h>
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/syscalls.h>

#define strtoul 					simple_strtoul
#define dbgprint(szFmt,args...)		{if(dbg) printk(szFmt,##args);}

static int dbg;
MODULE_LICENSE("hikvision");   
module_param(dbg,int,00777);
MODULE_PARM_DESC(dbg, "FPGALOAD DRIVER DEBUG");

#define EMIF_A3CR		0x1e00018

#define MAX_FPGA_BIN	0x80000
#define DATA			(1<<0)
#define DCLK			(1<<1)
#define CONF_DONE		(1<<2)
#define nSTATUS			(1<<3)
#define nCONFIG			(1<<4)
#define CONF_CEn		(1<<5)

u_short *g_pctrlbase = NULL;
u_short *CPLD_FPGA_R = NULL;//(0x16/2)
u_short *CPLD_FPGA_W = NULL;//(0x18/2)

inline void set_pin(u_short pin)
{
	register u_short val;
	val = *(CPLD_FPGA_R);
	val |= pin;
	*(CPLD_FPGA_W) = val;
}

inline void clr_pin(u_short pin)
{		
	register u_short val;
	val = *(CPLD_FPGA_R);
	val &= ~pin;
	*(CPLD_FPGA_W) = val;
}
	
inline u_short get_pin(u_short pin)
{
	register u_short val;
	val = *(CPLD_FPGA_R);
	return (val&pin);
}
	
int load_fpga(u_char *pbuf)
{
	int fd;
	u_long usr_fs,size=0; 
	memset(pbuf,0,MAX_FPGA_BIN);
	usr_fs = get_fs();   
	set_fs(KERNEL_DS);
	fd = sys_open("./fpga.rbf",O_RDONLY,0);
	if(fd>0)
	{
		size = sys_lseek(fd,0,2);
		sys_lseek(fd,0,0);
		sys_read(fd,pbuf,size);
		sys_close(fd);
		printk("load fpga file[%ld]\n",size);
	}
	set_fs(usr_fs);
	return size;
}

void download_fpga(u_char *pbuf,int size)
{
	int retrycnt = 0;
	register int i,j;
	register u8 data;

	clr_pin(CONF_CEn);

restart:
	udelay(100);
	
	retrycnt++;
	if(retrycnt>0x5)
		goto exit;

	clr_pin(nCONFIG);
	clr_pin(DCLK);
	udelay(10);
	if(get_pin(nSTATUS)!=0)
	{
		printk("start config fpga error\n");
		goto exit;
	}
	set_pin(nCONFIG);
	//udelay(5);
	udelay(100);
	
#if 0
	for(i=0;i<20000;i++)
	{
		udelay(500);
		if((i%1000)==0)
			printk("cpld_val=0x%04x\n",get_pin(0xffff));
	}
#endif

#if 0
	for(i=0;i<size;i++)
	{
		data = pbuf[i];
		for(j=0;j<8;j++)
		{
			if((data>>j)&0x1)
				set_pin(DATA);
			else
				clr_pin(DATA);
			
			set_pin(DCLK);

			if(get_pin(nSTATUS)==0)
			{
				printk("send fpga data error,i=%d,j=%d\n",i,j);
				goto restart;
			}

			clr_pin(DCLK);
		}
	}
#else
{	
	u_short val,cpld = *(CPLD_FPGA_R);
	for(i=0;i<size;i++)
	{
		data = pbuf[i];
		for(j=0;j<8;j++)
		{
			val = cpld|0x2;
			
			if((data>>j)&0x1)
				val |= 0x0001;
			else
				val &= 0xfffe;

			*(CPLD_FPGA_W) = val;
			
			if( (*(CPLD_FPGA_R) & nSTATUS)==0 )
			{
				printk("send fpga data error,i=%d,j=%d\n",i,j);
				goto restart;
			}
			*(CPLD_FPGA_W) = val&0xfffd;
			//cpld = *(CPLD_FPGA_R);/* low delay */
		}
	}	
}
#endif


	for(i=0;i<1200;i++)
	{
		set_pin(DCLK);
		clr_pin(DCLK);
	}

	clr_pin(DATA);
	if(get_pin(CONF_DONE)==0)
	{
		printk("config fpga failed.\n");
		goto restart;
	}
	else
	{
		printk("config fpga done...OK\n");
	}
	//set_pin(DATA);

exit:
	//set_pin(CONF_CEn);
	return;
}

static volatile int g_stop = 0;

void test_cpld(void)
{
#if 0
	register int i,j;
	register int time = 120*1000;/* 30s */
	
	printk("cpld_val=0x%04x\n",get_pin(0xffff));

	set_pin(CONF_CEn);
	
	for(i=0;i<time;i++)
	{
		for(j=0;j<500;j++)
		{
			set_pin(DCLK);
			//udelay(1);
			clr_pin(DCLK);
			//udelay(1);			
		}
	}
	clr_pin(CONF_CEn);
#else
	while(1)
	{
		*(CPLD_FPGA_W) = DCLK;
		*(CPLD_FPGA_W) = 0x0;
	}
#endif
	
}


int __init fpgaload_init(void)/* must switch to flash */
{
	printk("fpgaload driver init\n");
#if 0
	while(1)
	{
		printk("abcdefghijkmlnopqrstuvwxyz\n");
	}
#endif
	/*-------reset fpga-----------*/
	g_pctrlbase = (u_short *)ioremap(0x6000000,0x8000);

#if 0
	*g_pctrlbase = 0xfffd;
	mdelay(400);
	*g_pctrlbase = 0xffff;
	mdelay(100);
#endif
	
	CPLD_FPGA_R = g_pctrlbase+(0x16/2);
	CPLD_FPGA_W = g_pctrlbase+(0x18/2);
	
#if 0
	test_cpld();
#else
{
	int size = 0;
	u_char *pdatabuf = (char *)ioremap(0x82000000,MAX_FPGA_BIN);
	size = load_fpga(pdatabuf);
	if(size)
	{
		u_int oldval;
		//printk("cpld_val=0x%04x\n",get_pin(0xffff));
		oldval = *(u32 *)(IO_ADDRESS(EMIF_A3CR));
		*(u32 *)(IO_ADDRESS(EMIF_A3CR)) = 0x408605;

		download_fpga(pdatabuf,size);

		*(u32 *)(IO_ADDRESS(EMIF_A3CR)) = oldval;
	}
	else
		printk("load fpga file failed.\n");
	iounmap((void *)pdatabuf);
}
#endif

	iounmap((void *)g_pctrlbase);
	
	return 0;
}


void __exit fpgaload_exit(void)
{
	g_stop = 1;
	printk("fpgaload driver exit\n");
}

module_init(fpgaload_init);
module_exit(fpgaload_exit);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲夂夂婷婷色拍ww47| 久久久精品中文字幕麻豆发布| 狠狠色丁香久久婷婷综合丁香| 亚洲一区二区三区小说| 一区二区理论电影在线观看| 日韩毛片在线免费观看| 亚洲欧美成人一区二区三区| 中文字幕在线不卡视频| 亚洲欧美怡红院| 亚洲码国产岛国毛片在线| 亚洲色图视频网| 亚洲最新视频在线观看| 亚洲成人免费av| 日本va欧美va欧美va精品| 美日韩黄色大片| 国产一区福利在线| 成人激情午夜影院| 99久久精品国产一区| 91国偷自产一区二区开放时间 | 高清国产午夜精品久久久久久| 久久99精品久久久久久| 国产高清久久久久| jizz一区二区| 欧美老女人第四色| 久久综合久色欧美综合狠狠| 国产精品天天摸av网| 日韩码欧中文字| 青青草成人在线观看| 国产盗摄视频一区二区三区| 91亚洲永久精品| 91精品免费在线| 中日韩av电影| 亚洲 欧美综合在线网络| 久久不见久久见免费视频7| 成人午夜电影网站| 欧美日韩亚洲综合一区| 久久久www免费人成精品| 亚洲人成人一区二区在线观看 | 91精品国产综合久久婷婷香蕉 | 亚洲男人的天堂在线观看| 首页欧美精品中文字幕| 国产精品伊人色| 欧美日韩一区二区三区视频| 欧美精品一区二区三区蜜桃视频| 亚洲人成在线观看一区二区| 精品一区二区三区在线观看 | 亚洲电影在线播放| 国产成人在线免费观看| 欧美老女人在线| 中文字幕在线视频一区| 久久精品99国产精品| 色系网站成人免费| 国产校园另类小说区| 丝袜美腿亚洲色图| thepron国产精品| 久久综合色鬼综合色| 五月开心婷婷久久| 色婷婷一区二区三区四区| 久久久综合九色合综国产精品| 亚洲成人一二三| 9人人澡人人爽人人精品| 久久综合成人精品亚洲另类欧美| 亚洲福利电影网| 欧美丰满美乳xxx高潮www| 亚洲视频一区在线| 成人美女在线视频| 久久综合一区二区| 久久精品99国产精品| 91.com在线观看| 亚洲高清免费观看高清完整版在线观看| 国产精品一区二区三区四区 | 久久精品在线观看| 国产尤物一区二区| 日韩精品一区二区在线观看| 天堂蜜桃91精品| 欧美福利视频导航| 亚洲18女电影在线观看| 欧美日本一区二区在线观看| 亚洲精选免费视频| 91行情网站电视在线观看高清版| 亚洲人成小说网站色在线| 99国产精品久久久久久久久久| 国产精品素人视频| 91在线免费视频观看| 国产精品国产三级国产| 99riav一区二区三区| 亚洲视频综合在线| 在线观看日韩一区| 日本一不卡视频| 日韩免费一区二区三区在线播放| 蜜臀av一区二区在线观看| xfplay精品久久| 国产91精品精华液一区二区三区| 国产精品天美传媒沈樵| 色婷婷综合五月| 日韩激情中文字幕| 欧美mv日韩mv国产网站app| 久久99精品久久久久久国产越南 | 久久久午夜精品理论片中文字幕| 久久国产生活片100| 国产亚洲精品中文字幕| 99国产精品国产精品毛片| 亚洲成人免费在线观看| 日韩欧美一二区| 成人av免费观看| 亚洲18影院在线观看| 精品国产一区二区在线观看| 国产成人精品一区二区三区网站观看| 中文字幕一区二区三区视频| 欧美三区在线观看| 久久精工是国产品牌吗| 亚洲欧美日韩国产中文在线| 色婷婷久久综合| 国产最新精品免费| 亚洲激情网站免费观看| 精品成人一区二区| 色婷婷精品大在线视频| 狠狠狠色丁香婷婷综合激情 | 欧美成人精品3d动漫h| av一区二区三区| 免费观看在线综合色| 亚洲免费看黄网站| 国产亚洲欧美色| 在线综合视频播放| 97久久人人超碰| 极品少妇xxxx精品少妇| 一区二区三区不卡在线观看| 久久精品视频一区二区| 制服丝袜亚洲播放| 色国产综合视频| 成人精品高清在线| 国产一区二区视频在线播放| 亚洲电影在线播放| 亚洲欧美日韩国产综合在线 | 99国产精品国产精品毛片| 精品一区二区三区免费毛片爱| 亚洲国产va精品久久久不卡综合| 国产精品无遮挡| 精品福利在线导航| 欧美一区二区高清| 欧美日韩国产高清一区二区| 99国产精品久久| www.欧美日韩国产在线| 国产999精品久久久久久| 久久精品国内一区二区三区| 日韩综合一区二区| 午夜精品在线视频一区| 亚洲美女少妇撒尿| 日韩码欧中文字| 亚洲手机成人高清视频| 国产精品嫩草影院av蜜臀| 美女视频一区在线观看| 亚洲一区二区视频在线观看| 最新成人av在线| 自拍偷拍亚洲综合| 中文字幕日韩欧美一区二区三区| 欧美激情综合网| 国产精品久久久久四虎| 亚洲欧洲成人自拍| 1024国产精品| 亚洲美女免费在线| 亚洲电影一区二区| 婷婷久久综合九色国产成人| 日本不卡一二三| 国内精品免费**视频| 国产激情一区二区三区四区| 成人丝袜18视频在线观看| bt7086福利一区国产| 在线视频国内一区二区| 欧美日韩一区二区欧美激情| 欧美一区二区视频观看视频| 欧美一级在线视频| 久久久久一区二区三区四区| 国产午夜亚洲精品羞羞网站| 中文久久乱码一区二区| 亚洲免费成人av| 丝袜亚洲另类欧美| 国产精品影视天天线| 色婷婷av一区二区三区之一色屋| 欧美日韩久久久一区| 精品国产一区二区三区av性色| 国产精品无码永久免费888| 亚洲精品va在线观看| 日韩成人午夜精品| 欧美一区二区视频在线观看| 日韩三级视频在线看| 中文字幕不卡在线观看| 亚洲午夜在线电影| 国产另类ts人妖一区二区| 91在线国产观看| 欧美大片一区二区| 亚洲丝袜制服诱惑| 精品综合免费视频观看| jiyouzz国产精品久久| 日韩一级二级三级| 国产精品二三区| 精品亚洲成a人| 在线观看亚洲一区| 久久综合久久综合九色| 亚洲午夜影视影院在线观看|