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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? btldr_pi ().c~

?? 針對德州儀器DM270開發(fā)板的bootloader,其實現(xiàn)了內(nèi)核的下載以及文件系統(tǒng)的下載
?? C~
?? 第 1 頁 / 共 4 頁
字號:
                     (1 << 10) |                     (1 << 6));        regs->csdp = ((3 << 14) |       // source EMIFS, destn EMIFF, burst 8 if possible, s32 bit transfers                      (3 << 7) |                      (1 << 2) |                      2);        regs->cfn = 1;        regs->cfi = 0;        regs->cei = 0;                        // Per-transfer setup:        while (remaining) {                int num_transferred;                int status;                // Arbitrary transfer size of 4000 elements (= 16K bytes)                if (error_count == 0) {                        if (remaining > 0x4000) {                                remaining -= 0x4000;                                num_transferred = 0x1000;                        }                        else {                                num_transferred = remaining;                                remaining = 0;                                regs->csdp &= ~0x3;    // switch to byte transfers for last packet                        }                }                               // Setup transfer                regs->cssa_l = offset;                regs->cssa_u = offset >> 16;                regs->cdsa_l = dest;                regs->cdsa_u = dest >> 16;                regs->cen = num_transferred;                // Clear status                status = regs->csr;                // Start transfer                regs->ccr |= DCCR_EN;                        // Check transfer status                status = regs->csr;                while ((regs->ccr & DCCR_EN) &&                       ((status & 0xb) == 0)) {                        status = regs->csr;                }#if 0                          if (regs->ccr & DCCR_EN) {                        util_printf("ccr is %X\n", regs->ccr);                        util_printf("status is %X\n", status);                }#endif                if (status & DCSR_ERROR) {                        util_printf("DMA error, status is %X\n", status);                        error_count++;                        util_printf("Retrying DMA count : %d\n", error_count);                }                else {                        error_count = 0;                }                                // Too many errors, go to normal copy.                if (error_count == 10) break;                // Go to next buffer                if (error_count == 0) {                        offset += num_transferred * 4;                        dest += num_transferred * 4;                }        }#if 0        // Data check.  Very slow.        {                unsigned char *source = offset_orig;                unsigned char *destn = dest_orig;                unsigned int count = 0;                for (remaining = 0; remaining < num_bytes; remaining++) {                        if (*source != *destn) {                                util_printf("source : 0x%x, source value : 0x%x\n", source, *source);                                util_printf("destn : 0x%x, destn value : 0x%x\n", destn, *destn);                                count++;                        }                        source++;                        destn++;                        while (count == 10);                }        }#endif        // DMA didn't work, try slow copy        if (error_count) {                util_printf("DMA copy had errors, trying slow copy\n");                flash_read(offset_orig,                           (unsigned short *)dest_orig,                           num_bytes,                           put_val_at_addr_2);                        }}// endif   OMAP1510// Any other platforms can use this Psuedo dma (it's faster than a byte copy).#elsestatic void dma_flash_read(unsigned int offset, // Of flash.                           unsigned int dest,   // Destination buffer                           unsigned int num_bytes){    //util_printf("\nin psuedo dma copy\n");    //util_printf("%X %X %X\n", offset, dest, num_bytes);    offset += BSPCONF_FLASH_BASE;    if ((offset & 3) || (dest & 3))    {        flash_read(offset, (unsigned short *)dest, num_bytes, NULL);                        return;    }    if (num_bytes >= 24)    {        // Note:        // Our objective below is to copy a chunk of bytes from a source        // memory address to a new destination location. We'll be moving        // 24 bytes at at time.        // first set reg r1 == destination memory address,        // next  set reg r2 == source memory address,        // then  set reg r12 == num bytes to move,        // lastly drop into a loop which copies 24 bytes at a time until        // all bytes are copied. This will take advantage of the        // "ldmia r2!,{r3-r8)" style assembly instruction which loads        // in one fell swoop the six registers (r3-r8) with a total of        // 24 continguous bytes read from the memory address reflected        // by register r2 (and r2 is then automatically incremented by 24).        // Now that the data registers are loaded, we can perform a        // "stmia r1!,{r3-r8}" style instruction to move all 24        // continuous bytes to the destination memory location reflected        // by register r1 (and r1 is then automatically incremented by 24).        // Finally, subtract our byte count by 24 and see if another pass        // through the loop is needed. (I stepped through the code with        // a debugger and that is how I know *all* the participating        // registers used by the compiler for the algorithm below).        num_bytes -= 24;        asm volatile ("loop: \                    \n ldmia   %0!,{r3 - r8} \                    \n stmia   %1!,{r3 - r8} \                    \n subs    %2, %2, #24 \                    \n bge     loop"                     : "+r" (offset), "+r" (dest), "+r" (num_bytes)                     : "r" (offset), "r" (dest), "r" (num_bytes)                     : "cc","r3","r4","r5","r6","r7","r8");    }    num_bytes +=24;    if (num_bytes)    {        unsigned char *p1,*p2;        p1 = (unsigned char *) offset;        p2 = (unsigned char *) dest;        while (num_bytes)        {            *p2++ = *p1++;            num_bytes--;        }    }}#endif/****************************** Routine: Description: ******************************/static void pull_from_flash(comp_t comp){  MAGIC_t magicn;  char *image_start_in_flash;  switch (comp) {    case c_PARAMS:      flash_read(comp_flash_info[comp].START_OFFSET,                 (unsigned short *) &magicn,                 sizeof(MAGIC_t),                 NULL);      if (comp_flash_info[comp].MAGIC_NUM == magicn) {        flash_read(comp_flash_info[comp].START_OFFSET + sizeof(MAGIC_t),                   (unsigned short *) &current_params,                   sizeof(current_params),                   NULL);#if defined(DSC24_OSD)        if (0 == util_strncmp("yes",current_params.OSD_enable,util_strlen("yes")))        {            unsigned char *optr;            flash_read(comp_flash_info[comp].START_OFFSET + sizeof(MAGIC_t) + sizeof(current_params),                       (unsigned short *) &(comp_info[comp].fheader),                       sizeof(FHEADER_t),                       NULL);            if (io_AddressIsInFlashSpace(comp_info[comp].fheader.load_addr)) {              // This component is intended to be used in-place. It              // has a load_addr that is in flash space which means              // that when the user originally "loaded" this component              // the srec or rrbin or ?? image indicated that it was to              // load into flash space. In this case there is no need              // to move it to SDRAM before using it.               return;            }            optr = (unsigned char *) comp_info[comp].fheader.load_addr;            osd_init();#if 1 //defined(DSC21) || defined(DSC24) || defined(DSC25) || defined(DM270) || defined(DM310) || defined(OMAP1510)            dma_flash_read(comp_flash_info[comp].START_OFFSET +			     sizeof(MAGIC_t) + sizeof(current_params) +			     sizeof(FHEADER_t),			   comp_info[comp].fheader.load_addr,			   comp_info[comp].fheader.num_bytes);        #else            flash_read(comp_flash_info[comp].START_OFFSET +		         sizeof(MAGIC_t) + sizeof(current_params) +		         sizeof(FHEADER_t),		       (unsigned short *) (comp_info[comp].fheader.load_addr),		       comp_info[comp].fheader.num_bytes,		       put_val_at_addr_2);#endif            osd_init_mem(*(optr + 8));            osd_load_logo((unsigned char *)(optr + 8),  // Start of data                           *((int *)(optr + 4)),        // Vertical size of logo                           *((int *) optr));            // Horizontal size            osd_display();        }#endif        comp_info[comp].is_SDRAM_resident = TRUE;      }      break;    case c_KERNEL:    case c_FILESYS:      flash_read(comp_flash_info[comp].START_OFFSET,                 (unsigned short *) &magicn,                 sizeof(MAGIC_t),                 NULL);      if (comp_flash_info[comp].MAGIC_NUM == magicn) {        flash_read(comp_flash_info[comp].START_OFFSET + sizeof(MAGIC_t),                   (unsigned short *) &(comp_info[comp].fheader),                   sizeof(FHEADER_t),                   NULL);        if (io_AddressIsInFlashSpace(comp_info[comp].fheader.load_addr)) {          // This component is intended to be used in-place. It          // has a load_addr that is in flash space which means          // that when the user originally "loaded" this component          // the srec or rrbin or ?? image indicated that it was to          // load into flash space. In this case there is no need          // to move it to SDRAM before using it.           return;        }	// Either a straight copy of a decompress and copy is required.	image_start_in_flash = (char *)comp_flash_info[comp].START_OFFSET +	                       BSPCONF_FLASH_BASE +	                       sizeof(MAGIC_t) + sizeof(FHEADER_t);#if ( BSPCONF_KERNEL_COMPRESSED == 1 ) ||  ( BSPCONF_FS_COMPRESSED == 1 )	if (image_is_compressed(image_start_in_flash)) {	  (void)decompress_comp((char *)comp_info[comp].fheader.load_addr,				free_memory_start,				free_memory_size,				image_start_in_flash,				comp_info[comp].fheader.num_bytes);	}	else#endif	  {        // Next, move the image to SDRAM as per the        // value of load_addr recorded with the image.#if 1 //defined(DSC21) || defined(DSC24) || defined(DSC25) || defined(DM270) || defined(DM310) || defined(OMAP1510)	  dma_flash_read(comp_flash_info[comp].START_OFFSET + 			 sizeof(MAGIC_t) + sizeof(FHEADER_t),			 comp_info[comp].fheader.load_addr,			 comp_info[comp].fheader.num_bytes);        #else	  flash_read(comp_flash_info[comp].START_OFFSET + 		     sizeof(MAGIC_t) + sizeof(FHEADER_t),		     (unsigned short *) (comp_info[comp].fheader.load_addr),		     comp_info[comp].fheader.num_bytes,		     put_val_at_addr_2);#endif	  comp_info[comp].is_SDRAM_resident = TRUE;        // util_printf("retrieved -- load_addr 0x%X, entry_addr 0x%X, num_bytes 0x%X\n",        //             comp_info[comp].fheader.load_addr,        //             comp_info[comp].fheader.entry_addr,        //             comp_info[comp].fheader.num_bytes); // *debug* temp.	}      }      break;    case c_BOOTLDR:      // Pull this to SDRAM, why? Ignore this request since      // for the bootldr the very act of doing so would pull      // bytes down on top of the very program running now,      // presumably at that same SDRAM location. So, for this      // particular implementation of the btldr_pi.h      // programmer's interface, we will not support this type      // of flash -> SDRAM copy request.#ifdef REPLACE_VECTOR_TABLE    case c_VECTORS:#endif      break;    default:      SYSTEM_FATAL("Logic Error");      break;  }}/****************************** Routine: Description: ******************************/static int flash_area_has_content(comp_t comp){  unsigned short test_word;    return FALSE; // *debug* temp  // A Quick-and-Dirty test to see if the area of flash  // that normally holds component "comp" is already occupied  // with content.  switch (comp) {    case c_BOOTLDR:    case c_PARAMS:    case c_KERNEL:    case c_FILESYS:#ifdef REPLACE_VECTOR_TABLE    case c_VECTORS:#endif      // good it's one we recognize.      break;    default:      // what?, just return.     return TRUE;     break;  }  flash_read(comp_flash_info[comp].START_OFFSET,             (unsigned short *)&test_word,             sizeof(unsigned short),             NULL);  if (0xFFFF == test_word) {    // no content, this area of flash appears to be empty (erased).    return FALSE;  }  else {    // content found.     return TRUE;  }}/****************************** Routine: Description: returns non-zero if flash write error occurred ******************************/static int push_to_flash(comp_t comp){  int status;  int ret = 0;    if (TRUE == flash_area_has_content(comp)) {    util_printf("Warning: Can't overwrite existing one; Aborting\n");    util_printf("Press <Enter>....\n");    util_gets(cmd,CMDMAX);    return 0;  }    switch (comp) {#ifdef REPLACE_VECTOR_TABLE  case c_VECTORS:      if (TRUE == comp_info[comp].is_SDRAM_resident) {        ret |= flash_write(comp_flash_info[comp].START_OFFSET,                    (unsigned short *) (comp_info[comp].fheader.load_addr),                    comp_info[comp].fheader.num_bytes, NULL);        if (ret == 0) {                comp_info[comp].is_FLASH_resident = TRUE;        }      }      break;#endif    case c_BOOTLDR:       if (TRUE == comp_info[comp].is_SRAM_resident) {//      if (TRUE == comp_info[comp].is_SDRAM_resident) {        ret |= flash_write(comp_flash_info[comp].START_OFFSET,                    (unsigned short *) (comp_info[comp].fheader.load_addr),                    comp_info[comp].fheader.num_bytes,                    get_val_from_addr);        if (ret == 0) {                comp_info[comp].is_FLASH_resident = TRUE;        }      }      break;    case c_PARAMS:        if (TRUE == comp_info[comp].is_SRAM_resident) {//      if (TRUE == comp_info[comp].is_SDRAM_resident) {        ret |= flash_write(comp_flash_info[comp].START_OFFSET,                    (unsigned short *) &(comp_flash_info[comp].MAGIC_NUM),                    sizeof(MAGIC_t),NULL);        ret |= flash_write(comp_flash_info[comp].START_OFFSET + sizeof(MAGIC_t),                    (unsigned short *) &current_params,                    sizeof(current_params),NULL);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲v精品v日韩v欧美v专区| 亚洲在线中文字幕| 欧美一区二区三区在线视频| 一本久道久久综合中文字幕| 国产精品羞羞答答xxdd| 欧美激情一区二区三区四区| 久久久久综合网| 日韩精品一区二区三区四区 | 欧美日韩一区成人| 99精品久久久久久| 成熟亚洲日本毛茸茸凸凹| 五月婷婷综合激情| 亚洲精品中文字幕乱码三区| 国产精品乱码妇女bbbb| 欧美极品aⅴ影院| 久久精品一二三| 久久综合狠狠综合久久激情| 欧美丰满少妇xxxbbb| 久久久久久久综合日本| 色94色欧美sute亚洲13| 欧美精品丝袜久久久中文字幕| 欧美日韩综合在线| 91麻豆精品国产自产在线观看一区 | 色视频成人在线观看免| 欧美亚洲高清一区二区三区不卡| 欧美久久一区二区| 精品日韩欧美在线| 国产精品久久久久久久久晋中| 亚洲日本丝袜连裤袜办公室| 一区二区三区丝袜| 日一区二区三区| 韩国av一区二区三区| 不卡视频在线看| 欧美亚洲综合色| 欧美电影免费观看高清完整版| 久久久夜色精品亚洲| 1000部国产精品成人观看| 亚洲18女电影在线观看| 久久不见久久见中文字幕免费| 国产成人免费网站| 色狠狠av一区二区三区| 欧美一二三四区在线| 久久看人人爽人人| 樱花草国产18久久久久| 蜜桃久久久久久久| av高清不卡在线| 欧美喷潮久久久xxxxx| 久久精品一级爱片| 香蕉久久夜色精品国产使用方法| 韩国视频一区二区| 色婷婷综合久久久久中文| 日韩欧美一卡二卡| 国产精品乱码一区二三区小蝌蚪| 亚洲123区在线观看| 高清av一区二区| 欧美日本国产视频| 国产日韩v精品一区二区| 亚洲国产日韩a在线播放| 国内偷窥港台综合视频在线播放| 日本久久一区二区| 亚洲精品一区二区三区影院| 一区二区三区在线观看网站| 国产在线不卡一区| 欧美日韩另类一区| 中文字幕一区二区三区av| 轻轻草成人在线| 色婷婷综合激情| 国产精品素人视频| 麻豆久久久久久久| 在线观看日韩一区| 国产精品美女久久久久久久久久久 | 亚洲少妇最新在线视频| 黑人精品欧美一区二区蜜桃| 欧美日韩精品一区二区| 国产精品国产三级国产aⅴ中文| 免费在线欧美视频| 欧美综合色免费| 国产精品美日韩| 国产盗摄视频一区二区三区| 欧美一区二区日韩一区二区| 亚洲激情成人在线| 成人高清免费观看| 久久久美女毛片| 日韩av高清在线观看| 在线精品视频免费观看| 最好看的中文字幕久久| 国产精品一色哟哟哟| 日韩免费看的电影| 午夜精品成人在线| 欧美丝袜丝交足nylons图片| 亚洲三级在线观看| 大尺度一区二区| 久久久久久久久久久久电影| 裸体健美xxxx欧美裸体表演| 欧美丰满一区二区免费视频| 亚洲自拍另类综合| 91毛片在线观看| 中文字幕一区视频| 北岛玲一区二区三区四区| 久久久国产精品不卡| 国产一区二区精品久久| 亚洲精品一区二区三区香蕉| 激情图区综合网| 精品久久久久久久久久久久包黑料| 日精品一区二区三区| 欧美日韩国产不卡| 亚洲午夜日本在线观看| 日本二三区不卡| 一区二区三区日韩欧美| 色噜噜狠狠成人网p站| 亚洲激情第一区| 91福利国产成人精品照片| 亚洲欧美aⅴ...| 91福利小视频| 午夜av电影一区| 制服丝袜在线91| 麻豆精品一二三| 久久久国产一区二区三区四区小说 | 无码av中文一区二区三区桃花岛| 555www色欧美视频| 视频一区中文字幕国产| 日韩午夜在线观看| 国产在线视频一区二区三区| 久久九九99视频| av不卡免费电影| 亚洲精品国产成人久久av盗摄 | av男人天堂一区| 一二三区精品视频| 欧美日本在线一区| 蓝色福利精品导航| 国产嫩草影院久久久久| 成人av资源网站| 亚洲成av人综合在线观看| 欧美综合久久久| 香蕉久久夜色精品国产使用方法 | 日本美女视频一区二区| 精品成人a区在线观看| 成人爱爱电影网址| 亚洲五月六月丁香激情| 欧美成人欧美edvon| 国产91精品一区二区麻豆亚洲| 中文字幕日韩av资源站| 欧美精品一卡二卡| 国产麻豆欧美日韩一区| 亚洲欧美一区二区三区久本道91| 在线欧美日韩精品| 五月天亚洲婷婷| 久久久久99精品一区| 在线免费观看一区| 美腿丝袜亚洲一区| 日韩毛片高清在线播放| 欧美丰满高潮xxxx喷水动漫| 国产电影精品久久禁18| 亚洲国产精品久久久久秋霞影院| 337p日本欧洲亚洲大胆精品| av在线综合网| 日韩国产高清影视| 中文字幕一区二区三区色视频 | 亚洲超丰满肉感bbw| 久久久久久亚洲综合| 色哟哟一区二区在线观看| 黄页视频在线91| 一区二区免费看| 久久久久久久久久看片| 欧美精品视频www在线观看| 成人黄色a**站在线观看| 视频一区在线视频| 中文字幕制服丝袜成人av| 日韩三级视频中文字幕| 色网综合在线观看| 国产成人精品一区二区三区网站观看| 亚洲第一福利视频在线| 国产精品欧美综合在线| 91精品国产综合久久久久久漫画 | 麻豆国产精品一区二区三区 | 午夜精品福利一区二区三区蜜桃| 国产拍揄自揄精品视频麻豆| 欧美久久一区二区| 一本一道久久a久久精品 | 99国产精品久久久久久久久久久| 蜜桃久久av一区| 亚洲成av人影院| 亚洲卡通欧美制服中文| 国产三级三级三级精品8ⅰ区| 欧美精品电影在线播放| 在线视频国产一区| 91丨九色porny丨蝌蚪| 国产精品亚洲综合一区在线观看| 日韩成人午夜精品| 亚洲无人区一区| 亚洲一区自拍偷拍| 亚洲精品国产精华液| 中文字幕综合网| 亚洲视频一区二区在线观看| 国产日产亚洲精品系列| 国产日韩欧美不卡在线| 久久久久久一级片| 久久久久久97三级| 26uuu亚洲综合色欧美| 2021中文字幕一区亚洲|