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

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

?? flash_16x4_ads.c

?? eb55板子例程for ads
?? C
?? 第 1 頁 / 共 2 頁
字號:
//* Input Parameters    : <base_addr> Flash base address
//*                       <sector_addr> base sector address
//*                       <size> sector size in byte
//*                       <sector_id> sector ID
//* Output Parameters   : if data sector erase TRUE or FALSE
//*--------------------------------------------------------------------------------------
int erase_sector ( flash_word *base_addr,
                   flash_word *sector_addr,
                   int size,
                   int sector_id )
//* Begin
{
    int     trial = 0 ;

    //* While flash is not erased or too much erasing performed
    while (( check_sector_erased ( sector_addr, size, sector_id ) == FALSE ) &&
           ( trial++ < NB_TRIAL_ERASE ))
    {
        //* Display Erasing Sector
        printf ( "Erasing Sector %d\n", sector_id ) ;

        //* Enter Sector Erase Sequence codes
        *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1;
        *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2;
        *(base_addr + FLASH_SEQ_ADD1) = ERASE_SECTOR_CODE1;
        *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1;
        *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2;
        *sector_addr = ERASE_SECTOR_CODE2 ;

        //* Wait for Flash Ready after Erase, if timeout
        if ( wait_flash_ready ( sector_addr, (flash_word)0xFFFF ) == FALSE )
        {
            //* Display Timeout and return False
            printf ( "Timeout while erasing\n" ) ;
        }
        //* Endif
    }
    //* EndWhile

    //* Return True
    return ( TRUE ) ;
}
//* End

//*--------------------------------------------------------------------------------------
//* Function Name       : write_flash
//* Object              : write a word in flash
//*
//* Input Parameters    : flash_word *base_addr : Flash base address
//*                       flash_word *load_addr : Flash data address
//*                       flash_word data       : Data value
//*
//* Output Parameters   : TRUE if data has been written correctly, else FALSE
//*
//* Functions called    : wait_flash_ready
//*--------------------------------------------------------------------------------------
int write_flash ( flash_word *base_addr,
                  flash_word *load_addr,
                  flash_word data )
{
    flash_word  read_data ;

    //* Enter Programming code sequence
    *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1 ;
    *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2 ;
    *(base_addr + FLASH_SEQ_ADD1) = WRITE_CODE ;
    *load_addr = data ;

    //* Wait for Flash ready after erasing, if timeout
    if ( wait_flash_ready ( load_addr, data ) != TRUE )
    {
        //* Display Error and Exit
        printf ( "Timeout while programming\n" ) ;
        return ( FALSE ) ;
    }
    //* Endif

    //* If Data written does not equal data
    if (( read_data = *load_addr ) != data )
    {
        //* Display Error and return False
        printf ( "Program Error\n" ) ;
        printf ( "Address 0x%08x / Data 0x%04x / 0x%04x \n",
                 (int)load_addr, data, read_data ) ;
        //* Return False
        return ( FALSE );
    }
    //* Endif

    //* Return False
    return ( TRUE ) ;
}
//* End

//*--------------------------------------------------------------------------------------
//* Function Name       : download_file_to_flash
//* Object              : Read data from file and write it into flash memory
//* Input Parameters    : <addr_base> base flash address
//*                       <addr_load> address to load
//*
//* Output Parameters   : TRUE or FALSE
//*--------------------------------------------------------------------------------------
int download_file_to_flash ( FILE *image,
                             const FlashDef *flash,
                             flash_word *addr_base,
                             flash_word *addr_load )
//* Begin
{
    unsigned short  data ;
    flash_word  *addr_prg_sector = addr_base ;
    int         block = 0 ;
    int         nb_sector = 0 ;
    int         sector_id = 0 ;
    int         first = TRUE ;
    int         sector_found = FALSE ;
    int         change_sector = FALSE ;
    int         erase = FALSE ;

    //* For each word read from the file
    while ( fread ( &data, 1, 2, image ) == 2 )
    {
        //* Clear sector found flag
        sector_found = FALSE ;
        //* Clear Sector change flag
        change_sector = FALSE ;
        //* While sector not found
        while ( sector_found == FALSE )
        {
            //* If program address lower than current sector address + its size
            if (( addr_prg_sector + (flash->flash_org[block].sector_size/2) )
                > addr_load )
            {
                //* Flag sector found
                sector_found = TRUE ;
            }
            //* Else
            else
            {
                //* Flag sector change
                change_sector = TRUE ;
                //* Add current sector size to program address
                addr_prg_sector += (flash->flash_org[block].sector_size/2) ;

                //* Increment the Sector Identifier
                sector_id ++ ;
                //* Increment the sector number
                nb_sector++ ;
                //* If last sector in block tested
                if ( nb_sector >= flash->flash_org[block].sector_number )
                {
                    //* Re-initialize sector number in block
                    nb_sector = 0 ;
                    //* Increment block number
                    block ++ ;
                    //* If last block tested
                    if ( block >= flash->flash_block_nb )
                    {
                        //* Display Error and Return False
                        printf ( "Error : Address not found in the Flash Address Field\n" ) ;
                        return ( FALSE ) ;
                    }
                    //* Endif
                }
                //* Endif
            }
            //* EndIf
        }
        //* EndWhile

        //* Unflag Erasing
        erase = FALSE ;
        //* If new sector or first sector
        if (( change_sector == TRUE ) || ( first == TRUE ))
        {
            //* If not first sector
            if ( first == FALSE )
            {
                //* Flag Erasing
                erase = TRUE ;
            }
            //* Else, if first sector
            else
            {
                //* Dispaly First sector to program
                printf ( "First Sector to program:\t\t%d \n", sector_id ) ;

                //* If the first address to program is within a sector
                if ( addr_load > addr_prg_sector )
                {
                    //* Display Warning : first address within a sector
                    printf ( "The first address to program is within a sector!!\n" ) ;
                    printf ( "First Data of the sector will be lost !!!\n" ) ;
                    //* Flag to erase the sector
                    erase = TRUE ;
                }
                //* Else, if first address equals sector address
                else
                {
                    //* Force erasing
                    erase = TRUE ;
                }
                //* Endif
            }
            //* Endif
        }
        //* Endif

        //* If Erasing flagged
        if ( erase == TRUE )
        {
            //* Erase, if Timeout
            if ( erase_sector ( addr_base,
                                addr_prg_sector,
                                flash->flash_org[block].sector_size,
                                sector_id ) != TRUE )
            {
                //* Return False
                return ( FALSE ) ;
            }
            //* Endif
        }
        //* Endif

        //* If new sector or first sector
        if (( change_sector == TRUE ) || ( first == TRUE ))
        {
            //* Display Programmaing sector
            printf ( "Programming Sector %d\n", sector_id ) ;
        }
        //* Endif

        //* Write the value read in Flash, if error
        if ( write_flash ( addr_base, addr_load, data ) != TRUE )
        {
            //* Return False
            return ( FALSE ) ;
        }
        //* Endif

        //* Increment load address
        addr_load ++ ;

        //* Remove first address to program flag
        first = FALSE ;
    }
    //* EndWhile

    //* Return True
    return ( TRUE ) ;
}
//* End

//*--------------------------------------------------------------------------------------
//* Function Name       : check_flash_from_file
//* Object              : Check the file downloaded in flash
//* Input Parameters    : <image> File
//*                       <flash> Flash descriptor
//*                       <addr_base> base flash address
//*                       <addr_load> address to load
//*
//* Output Parameters   : if data sector erase TRUE or FALSE
//*--------------------------------------------------------------------------------------
int check_flash_from_file ( FILE *image,
                            const FlashDef *flash,
                            flash_word *addr_base,
                            flash_word *addr_load )
//* Begin
{
    flash_word      *pt = addr_load ;
    unsigned short  data ;

    //* Display check in progress
    printf ( "Checking Flash...\n" ) ;

    //* Restart the input file
    fseek ( image, 0, SEEK_SET ) ;

    //* For each word read from the file
    while ( fread ( &data, 1, 2, image ) == 2 )
    {
        //* If data from file is different from data in flash
        if ( *pt++ != data )
        {
            //* Return False
            return ( FALSE ) ;
        }
        //* Endif
    }
    //* EndWhile

    //* Return True
    return ( TRUE ) ;
}
//* End


//*--------------------------------------------------------------------------------------
//* Function Name       : main
//* Object              : Get parameter
//* Input Parameters    : none
//* Output Parameters   : none
//*--------------------------------------------------------------------------------------
int main (  void  )
//* Begin
{
    flash_word      *base_addr ;
    flash_word      *load_addr ;
    FILE            *image ;
    const FlashDef  *flash ;
    char str[30];
    char name[256];

    char *name1  ;
	
	unsigned int       *load,i ;
	load =(unsigned int*) *((unsigned int*)0x40);
	name1=(char *) 0x44 ; 
	
    //* Display Flash Downloader Header
    printf ( "\n**** %s Flash Programming Utility ****\n", TARGET_ID ) ;
    printf ( "\n* JP1 must be in STD position\n");
	printf("\n**** Load at address: 0x%08X ****\n",(int) load );
	/* Get load address */
	gets(str); 
	sscanf(str,"0x%x",&load);
	/* Affect Load Address */
	if ( load == 0) load =(unsigned int*) *((unsigned int*)0x40);
	load_addr = (flash_word*) load;

	printf("\n**** File to download: %s\n",name1);
	/* Get File */
    gets(name);
	if (name[0]==0){
		for ( i=0; i < sizeof(name);i++)	
		{ 
	    	if( (name1[i]==0x20) | (name1[i]==0x0a) | (name1[i]==0x0d)) 
			name[i]=0;
	    	else
			name[i]=name1[i];
		};
    }
    else
    //* Display Flash Downloader Header
    printf ( "\n**** Flash Programming file %s at 0x%08X \n", name,(int) load_addr) ;

   
    //* If Error while opening the external Flash Image file
    if (( image = fopen ( name, "rb" )) == NULL )
    {
        //* Display Error then exit
        printf ( "Error - Cannot open file image \"%s\"\n", name ) ;
        return ( FALSE ) ;
    }
    //* Else
    else
    {
        //* Display input file name
        printf ( "Input file is  :   %s \n", name ) ;
    }

    /* Get load address */
    sscanf ( str, "0x%x", &load_addr) ;
    //* Display Load Address
    printf ( "Load address is:   %x \n", (int)load_addr ) ;

    //* If FLASH Device is not recognised
    if (( flash = flash_identify ( load_addr )) == (const FlashDef *)0 )
    {
        //* Display Error and exit
        printf ( "Error - The Flash device is not recognised\n" ) ;
        return ( FALSE );
    }

    //* Initialize Flash Base Address
    base_addr = (flash_word *) ((int)load_addr & ~(flash->flash_mask)) ;
    //* Display Flash Base Address
    printf ( "Base address is:   %x \n", (int)base_addr ) ;

    //* Init PIO MCKO/P25 as busy ready input signal
    init_flash_ready () ;

    //* If File Download into flash is not OK
    if ( download_file_to_flash ( image, flash, base_addr, load_addr ) != TRUE )
    {
        //* Display Error and exit
        printf ( "Error while programming Flash\n" ) ;
        return ( FALSE ) ;
    }

    //* If programmed flash is not checked
    if ( check_flash_from_file ( image, flash, base_addr, load_addr ) != TRUE )
    {
        //* Display Error and exit
        printf ( "Flash not checked after programming\n" ) ;
        return ( FALSE ) ;
    }

    /* Close the external file and exit the program */
    fclose ( image ) ;

    //* Display Flash written and exit
    printf ( "Flash written and checked\n" ) ;
    return ( TRUE ) ;
}
//* End

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线一区二区三区| 国产欧美日韩不卡| 久久九九99视频| 亚洲日穴在线视频| 激情六月婷婷久久| 欧美日韩欧美一区二区| 国产精品久久久久毛片软件| 奇米精品一区二区三区在线观看一 | 毛片不卡一区二区| 日本大香伊一区二区三区| 国产欧美精品区一区二区三区| 亚洲亚洲精品在线观看| 国产成人精品一区二区三区网站观看| 欧美人动与zoxxxx乱| 亚洲天堂福利av| 成人午夜精品一区二区三区| 精品久久一区二区| 日韩国产高清影视| 在线免费观看日韩欧美| 亚洲欧洲av色图| 成人综合在线网站| 久久久国产一区二区三区四区小说| 爽好多水快深点欧美视频| 91精品办公室少妇高潮对白| 国产精品久久久久久久久图文区| 国产精品资源在线看| 日韩欧美中文字幕制服| 一级女性全黄久久生活片免费| 成人久久18免费网站麻豆| 久久免费美女视频| 国产在线播放一区二区三区| 欧美成人艳星乳罩| 久久国产精品区| 精品国产1区二区| 激情五月激情综合网| 日韩三级视频在线看| 免费成人在线网站| 日韩久久久久久| 激情都市一区二区| 日韩精品中文字幕一区二区三区| 美女看a上一区| 久久综合国产精品| 高清不卡一二三区| 一区精品在线播放| 欧美中文字幕亚洲一区二区va在线 | 午夜私人影院久久久久| 欧美性受极品xxxx喷水| 亚洲成人动漫一区| 制服丝袜国产精品| 国产一区二区精品久久| 国产精品女上位| 91成人免费在线| 日韩国产在线一| 久久这里只有精品首页| 成人激情开心网| 一级日本不卡的影视| 91精品国产欧美日韩| 国产老妇另类xxxxx| 亚洲欧洲日韩在线| 制服丝袜中文字幕亚洲| 国产乱码精品一区二区三| 亚洲图片欧美激情| 91精品蜜臀在线一区尤物| 国内一区二区视频| 亚洲另类在线一区| 日韩视频中午一区| 99riav一区二区三区| 日韩不卡一区二区三区| 欧美激情中文字幕| 在线播放中文字幕一区| 成人黄页毛片网站| 日本成人在线视频网站| 国产精品国产自产拍高清av王其| 欧美日韩中文字幕一区二区| 国产一区二区中文字幕| 亚洲国产视频直播| 国产三级欧美三级日产三级99| 欧亚洲嫩模精品一区三区| 精品一区二区三区日韩| 亚洲欧美日韩国产手机在线| 日韩欧美国产综合一区| 91丨porny丨中文| 激情综合五月天| 亚洲.国产.中文慕字在线| 国产精品免费免费| 2021国产精品久久精品| 欧美三级蜜桃2在线观看| 成人av在线资源| 国产一区中文字幕| 日韩av一区二区在线影视| 亚洲欧洲精品一区二区三区 | 麻豆成人免费电影| 亚洲男人的天堂av| 久久久久久**毛片大全| 欧美一级一级性生活免费录像| 色综合天天视频在线观看| 国产成人在线免费| 男女性色大片免费观看一区二区| 亚洲精品视频观看| 国产精品国产三级国产aⅴ无密码| 日韩精品在线网站| 在线观看91av| 精品视频全国免费看| 91网上在线视频| 99re这里只有精品首页| 国产成人aaa| 国产一区二区伦理片| 蓝色福利精品导航| 六月婷婷色综合| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲午夜久久久久| 亚洲一区二区五区| 精品无码三级在线观看视频| 日韩成人dvd| 久久超级碰视频| 国产资源精品在线观看| 国产综合色产在线精品| 狠狠色狠狠色综合日日91app| 麻豆一区二区在线| 国产乱码一区二区三区| 成人午夜免费av| 99精品1区2区| 在线日韩av片| 欧美乱妇23p| 欧美成人乱码一区二区三区| 精品剧情在线观看| 国产色婷婷亚洲99精品小说| 中文字幕av不卡| 一区二区不卡在线播放 | 激情六月婷婷久久| 国产suv精品一区二区6| 99综合影院在线| 欧美三级电影网| 欧美电影免费观看高清完整版在线 | 亚洲私人影院在线观看| 亚洲欧美偷拍三级| 一区二区三区四区高清精品免费观看| 亚洲激情图片qvod| 免费欧美在线视频| 高清不卡一区二区在线| 色婷婷精品久久二区二区蜜臂av | www.欧美日韩| 日本精品一区二区三区高清 | 欧美国产一区视频在线观看| 综合久久一区二区三区| 婷婷开心激情综合| 国产美女在线精品| 一本大道久久a久久综合| 欧美区一区二区三区| 久久欧美中文字幕| 亚洲最色的网站| 精品亚洲国内自在自线福利| 成人国产精品免费网站| 91搞黄在线观看| 久久综合成人精品亚洲另类欧美 | 免费在线看成人av| www.欧美.com| 欧美xxxx老人做受| 亚洲日本在线视频观看| 狠狠久久亚洲欧美| 欧美亚州韩日在线看免费版国语版| 日韩一区二区电影在线| 国产精品久久久久久妇女6080 | 国产老肥熟一区二区三区| 色伊人久久综合中文字幕| 精品日产卡一卡二卡麻豆| 亚洲丝袜制服诱惑| 国产一区二区三区| av中文字幕在线不卡| 欧美精品久久天天躁| ...xxx性欧美| 国产一区二区精品久久91| 欧美日韩国产一级二级| 自拍偷拍国产精品| 国产成人在线网站| 精品国产伦理网| 日产欧产美韩系列久久99| 在线视频中文字幕一区二区| 久久精品欧美一区二区三区不卡 | 亚洲综合色丁香婷婷六月图片| 国产一区二区在线电影| 欧美日韩aaa| 亚洲一二三区在线观看| 成人在线视频一区| 久久人人爽人人爽| 麻豆久久久久久久| 欧美一区二区日韩| 日产国产欧美视频一区精品| 欧美三级三级三级爽爽爽| 伊人一区二区三区| 99久久精品国产观看| 国产精品高清亚洲| 丁香五精品蜜臀久久久久99网站| 精品日韩一区二区| 久久成人久久爱| 精品国产污网站| 狠狠色丁香婷综合久久| 亚洲精品在线免费观看视频| 蜜桃精品视频在线观看| 欧美一二三区精品|