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

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

?? flashsemihosting.c

?? at91 sam 系列arm7單片機程序下工具
?? C
字號:
//*--------------------------------------------------------------------------------------
//*      ATMEL Microcontroller Software Support  -  ROUSSET  -
//*--------------------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*--------------------------------------------------------------------------------------
//* File Name               : FlashSemiHosting.c
//* Object                  : FLASH programmer for SAM7 product
//*
//* 1.0 01/Jul/04 JPP       : Creation
//*--------------------------------------------------------------------------------------

/* Include Standard c Libraries to allow stand alone compiling and operation */
#include <stdio.h>
#include <stdlib.h>

#include "flash.h"
#include "Board.h"

/* Target Identification */
#define TARGET_ID           "SAM7 "
//#define DEBUG 1

unsigned int numWordsRead;
unsigned int RAMSectorData[FLASH_PAGE_SIZE_LONG];

//*----------------------------------------------------------------------------
//* \fn    AT91F_Flash_Init
//* \brief Flash init
//*----------------------------------------------------------------------------
void AT91F_Flash_Init (void)
{
    //* Set Flash Waite sate
    //  Single Cycle Access at Up to 30 MHz
    //  if MCK = 47923200 I have 50 Cycle for 1 useconde ( flied MC_FMR->FMCN)
    //  = A page erase is performed before programming.
        AT91C_BASE_MC->MC_FMR = ((AT91C_MC_FMCN)&(50 <<16)) | AT91C_MC_FWS_1FWS ;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_Flash_Ready
//* \brief Wait the flash ready
//*----------------------------------------------------------------------------
void AT91F_Flash_Ready (void)
{
    //* Wait the and of command
          while ((AT91C_BASE_MC->MC_FSR & AT91C_MC_FRDY) != AT91C_MC_FRDY ) {};
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_Flash_Lock_Status
//* \brief Get the MVM fild status
//*----------------------------------------------------------------------------
int AT91F_Flash_Lock_Status(void)
{
  return (AT91C_BASE_MC->MC_FSR & AT91C_MC_FSR_LOCK);
}
//*----------------------------------------------------------------------------
//* \fn    AT91F_Flash_Unlock
//* \brief Clear the Non Volatile Memory Bits and set at 1 FSR bit=0
//* \input page number (0-1023) a same region have some page (16)
//* \output Region
//*----------------------------------------------------------------------------
int AT91F_Flash_Unlock(unsigned int Flash_Lock_Page)
{
    //* Write the Errase All command
        AT91C_BASE_MC->MC_FCR = AT91C_MC_CORRECT_KEY | AT91C_MC_FCMD_UNLOCK | (AT91C_MC_PAGEN & (Flash_Lock_Page << 8) ) ;

    //* Wait the and of command
        AT91F_Flash_Ready();

  return (AT91F_Flash_Lock_Status());
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_Flash_Write
//* \brief Write in one Flash page located in AT91C_IFLASH,  size in 32 bits
//* \input Flash_Address: start at 0x0010 0000 size: in byte
//*----------------------------------------------------------------------------
int AT91F_Flash_Write( unsigned int Flash_Address ,int size ,unsigned int * buff)
{
    //* set the Flasc controler base address
    AT91PS_MC ptMC = AT91C_BASE_MC;
    unsigned int i, page;
    unsigned int * Flash;
    //* init flash pointer
        Flash = (unsigned int *) Flash_Address;
    //* Get the Flasg page number
        page = ((Flash_Address - (unsigned int)AT91C_IFLASH ) /FLASH_PAGE_SIZE_BYTE);
   //* copy the new value
	for (i=0; (i < FLASH_PAGE_SIZE_BYTE) & (size > 0) ;i++, Flash++,buff++,size-=4 ){
	//* copy the flash to the write buffer ensure that code generation
	    *Flash=*buff;
	}
    //* Write the Errase_All command
        ptMC->MC_FCR = AT91C_MC_CORRECT_KEY | AT91C_MC_FCMD_START_PROG | (AT91C_MC_PAGEN & (page <<8)) ;
    //* Wait the end of command
         AT91F_Flash_Ready();
    //* Check the result
        if ( (ptMC->MC_FSR & ( AT91C_MC_PROGE | AT91C_MC_LOCKE ))!=0) return false;
  return true;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_Flash_Write
//* \brief Write in one Flash page located in AT91C_IFLASH,  size in byte
//* \input Start address (base=AT91C_IFLASH) size (in byte ) and buff address
//*----------------------------------------------------------------------------
int AT91F_Flash_Write_all( unsigned int Flash_Address ,int size ,unsigned int * buff)
{

    int   next, status;
    unsigned int  dest;
    unsigned int * src;

    dest = Flash_Address;
    src = buff;
    status = true;

    while( (status == true) & (size > 0) )
	{
        //* Check the size
        if (size <= FLASH_PAGE_SIZE_BYTE) next = size;
        else next = FLASH_PAGE_SIZE_BYTE;

        //* Unlock current sector base address - curent address by sector size
        AT91F_Flash_Unlock((dest - (unsigned int)AT91C_IFLASH ) /FLASH_PAGE_SIZE_BYTE);

        //* Write page and get status
        status = AT91F_Flash_Write( dest ,next ,src);
        // * get next page param
        size -= next;
        src += FLASH_PAGE_SIZE_BYTE/4;
        dest +=  FLASH_PAGE_SIZE_BYTE;
	}
    return status;
}

//*--------------------------------------------------------------------------------------
//* Function Name       : flash_identify
//* Object              : Read the flash Version
//*--------------------------------------------------------------------------------------
int flash_identify ( void )
{
#ifndef DEBUG
    if (*AT91C_MC_FVR == AT91C_MC_FLASH_VERSION) return true;
    else return false ;

#else
return true;
#endif
}

//*--------------------------------------------------------------------------------------
//* 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, unsigned int Address )
{

    int         wordCount ;
    int         page;

    unsigned int *flashData ;

    numWordsRead = 1;

    while (numWordsRead !=0) {
        // Display  page to program
        //* Get the Flasg page number

        printf ("Read\n") ;
        page  =  (Address - (unsigned int)AT91C_IFLASH ) /FLASH_PAGE_SIZE_BYTE;
        // read a whole page from the file into RAM
        numWordsRead = fread ( RAMSectorData, 4, FLASH_PAGE_SIZE_LONG, image );

        if (numWordsRead != 0)
        {
            printf ( "Programming page %d\n", page) ;
            if ( ! AT91F_Flash_Write_all ( Address, numWordsRead*4, RAMSectorData ) ) {
                printf ( "Programming page %d Error\n", page ) ;
                return false ;
            }
            flashData =(unsigned int *)Address ;
            for (wordCount = 0; wordCount < numWordsRead; wordCount ++) {
                if ( RAMSectorData[wordCount] != flashData[wordCount] ) {
                  printf ( "Verify page %d Error\n", page ) ;
                  return false;
                }
            }// End for
	    } // End If
       Address+= numWordsRead*4 ;
    } // End while
    return (true ) ;
}

//*--------------------------------------------------------------------------------------
//* Function Name       : main
//* Object              : Get parameter
//* Input Parameters    : none
//* Output Parameters   : none
//*--------------------------------------------------------------------------------------
int main ( int argc, char *argv[] )
{
    unsigned int    load_addr ;
    FILE            *image ;

    char name[30];
        //* init flash memory
		AT91F_Flash_Init();
        printf ("\n**** %s Flash Programming Utility ****\n", TARGET_ID ) ;
        printf("\n**** This Utility work for external SAM7 board  !\n");
        /* Set load address */
#ifdef DEBUG
         load_addr = 0x00104000;
         sprintf(name,"c:/tmp/fill8.bin");
#else
        load_addr = 0x00100000;
        printf("\n**** Please Enter return for start !\n");
        gets(name);
        printf("\n**** File to download at %x**** \n",load_addr);
        /* Get File */
        gets(name);
#endif

        //* 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 ( true ) ;
        }
        //* Else
        else
        {   //* Display input file name
            printf ( "Input file is: %s\n", name ) ;
        }

        //* Display Load Address
        printf ( "Load address is: %x\n", (int)load_addr ) ;

        // If FLASH Device is not recognized
        if ( ! flash_identify( ) )
        {  // Display Error and exit
            printf ( "Error -  Flash device not recognized\n" ) ;
            return ( false ) ;
        }
        else
        {   // If File Download into flash is not OK
            if ( ! download_file_to_flash ( image, load_addr ) )
            {   // Display Error and exit
                printf ( "Error while programming Flash\n" ) ;
                return ( false ) ;
            }
        }

    /* Close the external file and exit the program */
    fclose ( image ) ;
    // Display Flash written and exit
    printf ( "Flash written and verified\n" ) ;
    return ( true ) ;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三级| 亚洲www啪成人一区二区麻豆| 午夜精品久久久久久不卡8050| 国产在线看一区| 日韩一区二区在线观看视频| 亚洲二区视频在线| 在线电影一区二区三区| 三级不卡在线观看| 亚洲精品一区二区三区99| 国产一区二区三区视频在线播放| 久久日韩粉嫩一区二区三区| 国产精品18久久久久久久网站| 国产午夜精品久久久久久久 | 6080午夜不卡| 日韩影视精彩在线| 久久精品人人做人人爽人人 | 欧美影院一区二区三区| 日日嗨av一区二区三区四区| 精品国产乱码久久久久久影片| 国产在线精品视频| 亚洲视频一区二区免费在线观看| 欧美日韩综合在线免费观看| 老司机一区二区| 中文字幕亚洲一区二区va在线| 在线视频国内一区二区| 美女久久久精品| 综合av第一页| 日韩欧美中文字幕精品| 成人av免费网站| 婷婷久久综合九色综合伊人色| 精品捆绑美女sm三区| 96av麻豆蜜桃一区二区| 日韩国产成人精品| 中文字幕在线不卡一区 | 日本乱码高清不卡字幕| 亚洲国产另类精品专区| 久久久午夜电影| 欧美日韩一级二级| 粉嫩一区二区三区性色av| 五月天一区二区| 亚洲同性gay激情无套| www国产成人| 制服丝袜av成人在线看| 91在线视频免费观看| 日韩av一区二区在线影视| 国产精品动漫网站| 精品福利一区二区三区免费视频| 91蜜桃在线观看| 国产在线视频一区二区| 日韩激情中文字幕| 亚洲综合在线五月| 国产精品私人自拍| 精品国产乱码久久| 欧美精品在线观看播放| 色噜噜狠狠色综合欧洲selulu| 国产黄色精品网站| 精品一区二区三区不卡| 亚洲不卡在线观看| 亚洲国产视频网站| 亚洲九九爱视频| 国产精品看片你懂得| 久久青草国产手机看片福利盒子 | 91在线看国产| 国产精品综合二区| 久久99国产精品免费网站| 婷婷国产在线综合| 一区二区三区不卡视频在线观看| 国产欧美一区二区三区在线老狼| 制服视频三区第一页精品| 欧美亚洲一区二区三区四区| 成人免费高清视频在线观看| 国产一区二区伦理片| 日韩激情在线观看| 日韩av一二三| 热久久久久久久| 日韩av中文字幕一区二区| 无码av免费一区二区三区试看| 亚洲三级理论片| 亚洲色图欧美在线| 亚洲精品日日夜夜| 一区二区三区四区在线免费观看| 国产精品嫩草久久久久| 中文字幕欧美三区| 中文字幕成人在线观看| 国产日韩精品一区二区浪潮av| 久久久久久综合| 亚洲国产电影在线观看| 国产精品护士白丝一区av| 中文字幕免费不卡在线| 国产精品福利电影一区二区三区四区| 国产精品婷婷午夜在线观看| 中文字幕一区二区三| 综合中文字幕亚洲| 一区二区三区四区不卡在线| 亚洲小少妇裸体bbw| 天堂精品中文字幕在线| 久久国产精品露脸对白| 国产精品一区二区三区乱码| 国产91高潮流白浆在线麻豆 | 成人av网址在线观看| av一本久道久久综合久久鬼色| 99久久国产综合色|国产精品| 色综合久久久网| 欧美日韩国产bt| 精品久久久久久综合日本欧美 | av电影在线观看一区| 色噜噜久久综合| 欧美一区二区在线视频| 精品国产髙清在线看国产毛片| 国产午夜精品福利| 亚洲尤物在线视频观看| 蜜臀av一区二区三区| 风间由美一区二区av101| 日本道在线观看一区二区| 制服丝袜av成人在线看| 国产日韩欧美一区二区三区乱码| 亚洲欧洲韩国日本视频| 婷婷久久综合九色综合绿巨人| 国产一区二区三区在线观看免费 | 激情六月婷婷久久| 99久久婷婷国产综合精品电影| 色噜噜久久综合| 欧美精品一区二区三| 亚洲视频图片小说| 久久av中文字幕片| 欧美性xxxxxxxx| 久久精品在线免费观看| 亚洲一区视频在线观看视频| 久久电影国产免费久久电影| 91免费版pro下载短视频| 精品欧美乱码久久久久久1区2区| 国产精品美女久久久久高潮 | 久久国产视频网| 在线亚洲欧美专区二区| 精品乱人伦小说| 一区二区三区四区精品在线视频| 久久99国产精品久久| 欧美怡红院视频| 中文在线资源观看网站视频免费不卡| 五月激情六月综合| 色婷婷精品大在线视频| 国产亚洲精品超碰| 麻豆精品在线视频| 欧美嫩在线观看| 中文字幕不卡在线观看| 热久久免费视频| 精品视频在线免费观看| 国产精品电影院| 国产精品一级片| 亚洲精品在线免费观看视频| 亚洲一区二区三区视频在线播放| 国产mv日韩mv欧美| 久久久久97国产精华液好用吗| 午夜av一区二区| 欧美三日本三级三级在线播放| 国产精品久线在线观看| 国产成人一级电影| 久久网站最新地址| 国产在线视视频有精品| 欧美一级在线免费| 日韩精品一二区| 欧美美女一区二区三区| 一区二区三区.www| 色综合久久综合网97色综合| 中文字幕一区二区三区在线播放| 国产曰批免费观看久久久| 日韩免费电影一区| 激情五月婷婷综合网| 日韩你懂的在线播放| 麻豆91小视频| 精品国产免费一区二区三区四区 | 成人美女视频在线看| 久久久精品免费免费| 国产一区二区三区四区五区入口| 日韩精品中午字幕| 国产呦萝稀缺另类资源| 精品久久久网站| 国产成人一区在线| 中文字幕一区二区三区在线不卡| 成人黄色小视频在线观看| 国产精品色哟哟网站| 成a人片亚洲日本久久| 亚洲精品水蜜桃| 欧美色爱综合网| 麻豆精品一区二区av白丝在线| 日韩欧美国产综合在线一区二区三区| 麻豆91精品91久久久的内涵| 欧美va亚洲va| 国产成人高清在线| 亚洲免费在线看| 91精品国产综合久久久久久久久久| 日韩黄色免费网站| 久久久国产精品麻豆| 成人av网站免费观看| 伊人色综合久久天天| 日韩一区二区免费高清| 国产成a人亚洲精品| 伊人一区二区三区| 欧美成人精品1314www| 国产suv精品一区二区883|