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

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

?? library.c

?? 三星 s3c6400測試代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/**************************************************************************************
* 
*	Project Name : S3C6400 Validation
*
*	Copyright 2006 by Samsung Electronics, Inc.
*	All rights reserved.
*
*	Project Description :
*		This software is only for validating functions of the S3C6400.
*		Anybody can use this software without our permission.
*  
*--------------------------------------------------------------------------------------
* 
*	File Name : library.c
*  
*	File Description : This file implements library functions.
*
*	Author : Haksoo,Kim
*	Dept. : AP Development Team
*	Created Date : 2006/11/08
*	Version : 0.1 
* 
*	History
*	- Created(Haksoo,Kim 2006/11/08)
*	- Added DownloadImageThruUsbOtg function (Haksoo,Kim 2007/01/24)
*  
**************************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <ctype.h>

#include "option.h"
#include "library.h"
#include "sfr6400.h"
#include "system.h"
#include "uart.h"
#include "gpio.h"
#include "otg_dev.h"
#include "intc.h"
#include "register_addr.h"

#define IMAGE_MAXSIZE 1600

//////////
// Function Name : InitUartPort
// Function Description : This function initializes gpio for debugging uart ch.
// Input :  ch, uart ch number
//			flowControl, whether flow control or not
// Output : NONE
// Version :
void InitUartPort(u8 ch, bool flowControl)
{
	switch (ch)
	{
		default:
		case 0:
			if(flowControl == TRUE)
			{
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_0, 2);
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_1, 2);
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_2, 2);
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_3, 2);
			}
			else
			{
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_0, 2);
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_1, 2);
			}
			break;
			
		case 1:
			if(flowControl == TRUE)
			{
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_4, 2);
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_5, 2);
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_6, 2);
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_7, 2);
			}
			else
			{
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_4, 2);
				GPIO_SetFunctionEach(eGPIO_A, eGPIO_5, 2);
			}
			break;
			
		case 2:
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_0, 2);
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_1, 2);
			break;
			
		case 3:
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_2, 2);
			GPIO_SetFunctionEach(eGPIO_B, eGPIO_3, 2);
			break;		
	}
	
	return;	
}

//////////
// Function Name : InitLED
// Function Desctiption : This function initializes gpio for debugging LED
// Input : NONE
// Output : NONE
// Version :
void InitLED(void)
{
	GPIO_SetFunctionEach(eGPIO_N, eGPIO_12, 1);
	GPIO_SetFunctionEach(eGPIO_N, eGPIO_13, 1);
	GPIO_SetFunctionEach(eGPIO_N, eGPIO_14, 1);
	GPIO_SetFunctionEach(eGPIO_N, eGPIO_15, 1);	
	return;
}

//////////
// Function Name : DisplayLED
// Function Desctiption : This function controls debugging LED
// Input : data, LED value 
// Output : NONE
// Version :
void DisplayLED(u8 data)
{
	u32 temp;

	temp = GPIO_GetDataAll(eGPIO_N);
	temp = (temp & ~(0xf000))|((data&0xf)<<12);
	GPIO_SetDataAll(eGPIO_N, temp);

	return;
}


//////////
// Function Name : OpenConsole
// Function Description : This function opens uart and LED for debugging
// Input : NONE
// Output : NONE
// Version : 
void OpenConsole( void)
{	
	u8 ch=0;	//uart channel for debugging
	
	InitUartPort(ch, FALSE);
	UART_InitDebugCh(ch, 115200);
	InitLED();

	return;
}

//////////
// Function Name : GetIntNum
// Function Description : This function gets the number which a user enters
// Input : NONE
// Output : number, number which a user enters
// Version : 
s32 GetIntNum( void)
{
    char str[30];
    char *string = str;
    int base     = 10;
    int minus    = 0;
    int result   = 0;
    int lastIndex;    
    int i,j;
    
    gets(string);


	i=0; j=0;
	do {
		if (string[j]==0x8) {
			if (i>0)	i--; 
		} else 
			string[i++]=string[j];
	} while(string[j++]!=0);


    if(string[0]=='-') {
        minus = 1;
        string++;
    }
    
    if(string[0]=='0' && (string[1]=='x' || string[1]=='X')) {
        base    = 16;
        string += 2;
    }
    
    lastIndex = strlen(string) - 1;
    
    if(lastIndex<0)
        return -1;
    
    if(string[lastIndex]=='h' || string[lastIndex]=='H' ) {
        base = 16;
        string[lastIndex] = 0;
        lastIndex--;
    }

    if(base==10) {
        result = atoi(string);
        result = minus ? (-1*result):result;
    }
    else {
        for(i=0;i<=lastIndex;i++) {
            if(isalpha(string[i])) {
                if(isupper(string[i]))
                    result = (result<<4) + string[i] - 'A' + 10;
                else
                    result = (result<<4) + string[i] - 'a' + 10;
            }
            else
                result = (result<<4) + string[i] - '0';
        }
        result = minus ? (-1*result):result;
    }
    return result;
}

//////////
// Function Name : DownloadImageThruUart
// Function Description : This function downloads a certain image through uart
// Input : DownloadAddress, address to download the image 
// Output : FileSize, size of downloaded image
// Version : 
u32 DownloadImageThruUart(u8 *DownloadAddress)
{
	char buf[4];
	int i;
	u32	FileSize;
	u16	CheckSum=0,dnCS;

	printf("\nDownloadAddress : 0x%08x\n",DownloadAddress);
	printf("STATUS : ");

	//	To get the file size.
	for(i=0;i<4;i++)
		buf[i]=UART_Getc();

	FileSize=(buf[0])+(buf[1]<<8)+(buf[2]<<16)+(buf[3]<<24);
	FileSize-=4;
	
	for(i=0;i<FileSize;i++) {
		*(DownloadAddress+i)=UART_Getc();
		if((i&0x3ff)==0)
			putchar('#');
	}

	for(i=0;i<(FileSize-2);i++)
		CheckSum+=*((u8 *)(DownloadAddress+i));

	dnCS=*((u8 *)(DownloadAddress+FileSize-2))+
		(*( (u8 *)(DownloadAddress+FileSize-1) )<<8);

	if(CheckSum!=dnCS) {
		printf("\nChecksum Error!!! MEM : %x  DN : %x\n",CheckSum,dnCS);
		FileSize=0;
	} else {
		FileSize-=2;
		printf("\n%d bytes downloaded OK.\n",FileSize);
	}
    	
	return FileSize;
}

//////////
// Function Name : DownloadImageThruUsbOtg
// Function Description : This function downloads a certain image through usb otg
// Input : DownloadAddress, address to download the image
// Output : FileSize, size of downloaded image
// Version : 
extern USB_OPMODE eOpMode;
extern USB_SPEED eSpeed;
extern bool download_run;
extern u32 tempDownloadAddress;
extern void __irq Isr_UsbOtg(void);
u32 DownloadImageThruUsbOtg(u8 *DownloadAddress)
{
	bool first = true;
	u32 uDownAddr, uDownFileSize, pDownPt, i;
	USB_SPEED eUsbSpeed;

	INTC_SetVectAddr(NUM_OTG, Isr_UsbOtg);
	INTC_Enable(NUM_OTG);
		
	while(1)
	{
		if(OTGDEV_IsUsbOtgSetConfiguration()==true)
		{		
			OTGDEV_CheckEnumeratedSpeed(&eUsbSpeed);
			if(eUsbSpeed == USB_HIGH)
			{
				Disp("\n!!! USB host is connected (Speed : High) !!!\n\n");
				DisplayLED(0xf);
			}
			else if(eUsbSpeed == USB_FULL)
			{
				Disp("\n!!! USB host is connected (Speed : Full) !!!\n\n");
				DisplayLED(0x6);
			}
		
			break;
		}
		else if(first == true)
		{
			OTGDEV_InitOtg(eSpeed);
			first = false;
		}
	}

	OTGDEV_ClearDownFileInfo();

	OTGDEV_SetOpMode(eOpMode);
	
	if(DownloadAddress!=0)
	{
		tempDownloadAddress = (u32)DownloadAddress;
	}
	else
	{	
	    Disp("Enter a new temporary download address(0x...):");
	    tempDownloadAddress=(u32)GetIntNum();
	    if(tempDownloadAddress==0xffffffff)
	    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线不卡| 不卡的电视剧免费网站有什么| 国产一区二区导航在线播放| 91精品国产一区二区三区| 亚洲国产视频网站| 国产日韩欧美在线一区| 欧洲精品在线观看| 欧美va亚洲va在线观看蝴蝶网| 国产精品乱码久久久久久| 午夜精品在线看| 成人激情开心网| 日韩欧美国产一二三区| 亚洲成av人片在www色猫咪| 国产精品一区二区黑丝| 91精品在线观看入口| 国产女人18水真多18精品一级做| 热久久国产精品| 精品污污网站免费看| 一区精品在线播放| 成人激情免费视频| 国产精品久久久久久亚洲伦| 国产一区欧美一区| 精品欧美乱码久久久久久| 奇米四色…亚洲| 3d动漫精品啪啪1区2区免费 | 久久久午夜电影| 日韩av在线播放中文字幕| 在线视频国内自拍亚洲视频| 亚洲欧美色综合| 色综合一区二区| 国产精品久久久爽爽爽麻豆色哟哟 | 日韩欧美一级特黄在线播放| 婷婷六月综合亚洲| 欧美美女bb生活片| 亚洲va天堂va国产va久| 欧美日韩电影在线| 日本网站在线观看一区二区三区| 欧美视频在线不卡| 日韩国产在线一| 欧美电影一区二区| 精品一区二区三区影院在线午夜| 欧美成人三级在线| 国产精品 日产精品 欧美精品| 久久久99精品久久| 99精品在线免费| 亚洲一区二区三区自拍| 69av一区二区三区| 国产一区二区三区最好精华液| 久久网站最新地址| a级高清视频欧美日韩| 亚洲欧美另类图片小说| 欧美日韩午夜在线视频| 久久不见久久见中文字幕免费| 久久综合中文字幕| 舔着乳尖日韩一区| 国产激情一区二区三区| 精品国产乱码久久久久久影片| 欧美一区三区二区| 久久久精品国产免费观看同学| 日韩一区二区三区在线观看| 91成人免费网站| 欧美高清激情brazzers| 亚洲精品在线电影| 一区二区三区免费| 国产一区二区三区久久久| 一区二区三区久久| 欧美一区二区视频在线观看2020| 国产伦精品一区二区三区免费迷 | 91精品国产综合久久精品图片 | 国产福利一区在线| 一二三区精品视频| 欧美大白屁股肥臀xxxxxx| 韩国在线一区二区| 亚洲欧美一区二区三区极速播放| 6080yy午夜一二三区久久| 国产美女精品人人做人人爽| 亚洲一区在线免费观看| 久久先锋资源网| 欧美日韩另类国产亚洲欧美一级| 国产精品1区二区.| 香蕉成人啪国产精品视频综合网| 国产欧美一区二区精品仙草咪| 在线观看免费成人| 国产精品1024| 麻豆国产精品官网| 亚洲一区二区成人在线观看| 精品国产污网站| 欧美日产在线观看| 色婷婷av一区二区三区软件| 久久精品国产99国产| 一区二区视频在线| 中文在线一区二区| 亚洲精品一线二线三线| 91精品国产欧美一区二区18| 94-欧美-setu| 成人午夜av电影| 国产经典欧美精品| 国产激情一区二区三区四区| 日本一不卡视频| 午夜视频一区二区| 亚洲bdsm女犯bdsm网站| 亚洲三级电影网站| 日韩一区欧美小说| 18欧美乱大交hd1984| 国产拍揄自揄精品视频麻豆| 日韩欧美中文字幕公布| 欧美日韩日日骚| 91免费观看国产| 97se亚洲国产综合自在线不卡 | 久久av资源网| 舔着乳尖日韩一区| 丝袜a∨在线一区二区三区不卡 | www.在线成人| 丁香婷婷深情五月亚洲| 国产一区999| 国产成人精品亚洲午夜麻豆| 国产福利一区在线观看| 国产成人啪免费观看软件| 激情综合网激情| 国产在线视频精品一区| 在线免费观看一区| 久久97超碰国产精品超碰| 久久99精品国产麻豆不卡| 久久99久久99| 国产激情视频一区二区三区欧美 | 久久av老司机精品网站导航| 久久精品免费看| 激情综合色丁香一区二区| 国产美女视频91| gogo大胆日本视频一区| 91小视频在线观看| 91福利在线观看| 欧美精品一二三| 精品成a人在线观看| 国产精品进线69影院| 亚洲精品欧美专区| 麻豆久久久久久| 国产成人精品一区二| 色呦呦一区二区三区| 欧美日韩国产天堂| 国产午夜亚洲精品午夜鲁丝片| 国产精品久久久久久久久免费丝袜| 国产精品乱码一区二区三区软件 | 国产精品毛片无遮挡高清| 亚洲天堂中文字幕| 男女男精品网站| 成人激情免费视频| 在线播放/欧美激情| 国产精品素人视频| 日本在线不卡视频| 成人av一区二区三区| 欧美视频在线一区二区三区| 精品国产免费视频| 亚洲一区二区av电影| 久久99国产精品免费网站| 97se亚洲国产综合在线| 欧美xingq一区二区| 一区二区三区四区乱视频| 久99久精品视频免费观看| 色婷婷综合久色| 国产亚洲欧美一级| 亚洲国产日韩a在线播放性色| 国产成人精品一区二| 91精品久久久久久久91蜜桃| 中文字幕一区二区三区蜜月| 青青青爽久久午夜综合久久午夜| 99热这里都是精品| 精品国产露脸精彩对白| 亚洲国产精品一区二区尤物区| 国产麻豆精品95视频| 91精品国产色综合久久| 一区二区三区四区精品在线视频| 国产91清纯白嫩初高中在线观看| 欧美精品色综合| 亚洲已满18点击进入久久| 成人黄色电影在线 | 国产精品18久久久久久久久 | 亚洲精品在线观| 午夜欧美在线一二页| 欧美日韩亚洲不卡| 日本一区二区三区国色天香| 日韩国产成人精品| 欧美一级午夜免费电影| 久久狠狠亚洲综合| 久久精品视频网| 国产尤物一区二区在线| 一区二区中文视频| 久久久另类综合| 捆绑变态av一区二区三区| 欧美猛男男办公室激情| 亚洲品质自拍视频网站| 高清在线不卡av| 欧美国产激情二区三区| 丁香五精品蜜臀久久久久99网站| 久久噜噜亚洲综合| 国产在线精品一区在线观看麻豆| 欧美一区午夜精品| 久久精品国产99国产精品| 精品第一国产综合精品aⅴ| 麻豆高清免费国产一区|