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

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

?? btldr_pi ().c~

?? 針對德州儀器DM270開發板的bootloader,其實現了內核的下載以及文件系統的下載
?? C~
?? 第 1 頁 / 共 4 頁
字號:
    flash_read(comp_flash_info[comp].START_OFFSET,               (unsigned short *) &magicn,               sizeof(MAGIC_t),               NULL);    if (comp_flash_info[comp].MAGIC_NUM == magicn) {      comp_info[comp].is_FLASH_resident = TRUE;#if BSPCONF_BTLDR_MEMMAP_DEBUG      flash_read(comp_flash_info[comp].START_OFFSET + sizeof(MAGIC_t),		 (unsigned short *) &(comp_info[comp].fheader),		 sizeof(FHEADER_t),		 NULL);#endif    }  }  free_memory_start = (char *) GUNZIP_MALLOC_START;  free_memory_size = GUNZIP_MALLOC_SIZE; // 1 Mbyte}/****************************** Routine: Description: Returns true if addr is in flash memory address space ******************************/int btldr_AddressIsInFlashSpace(unsigned int addr){  return( (addr >= BSPCONF_FLASH_BASE + comp_flash_info[c_BOOTLDR].START_OFFSET) &&          (addr <= BSPCONF_FLASH_BASE + comp_flash_info[c_FILESYS].END_OFFSET) );}/****************************** Routine: Description:   Returns true if size is known, false otherwise           Returns location in flash were component is stored ******************************/int  get_flash_comp_addresses(comp_t c,			      unsigned int *start_addr,			      unsigned int *size,			      unsigned int *max_addr){  *start_addr=(unsigned int)(comp_flash_info[c].START_OFFSET) +               (unsigned int)(BSPCONF_FLASH_BASE);  *max_addr=  (unsigned int)(comp_flash_info[c].END_OFFSET)   +              (unsigned int)(BSPCONF_FLASH_BASE);  if (comp_info[c].is_FLASH_resident) {    *size=comp_info[c].fheader.num_bytes;    return(true);  } else {    return(false);  }}/****************************** Routine: Description:   Returns true if component resides in sdram, false otherwise           Returns location in sdram were component is stored ******************************/int  get_sdram_comp_addresses(comp_t c,			      unsigned int *start_addr,			      unsigned int *size,			      unsigned int *entry_addr){  if (comp_info[c].is_FLASH_resident) {    *start_addr=comp_info[c].fheader.load_addr;    *size      =comp_info[c].fheader.num_bytes;    *entry_addr=comp_info[c].fheader.entry_addr;    return(true);  }  return(false);}/****************************** Routine: Description:   Call Back routine used when doing I/O port component loads ******************************/static void put_val_at_addr(unsigned short *vaddr, unsigned short val){  // Since this callback is used during I/O port loads  // which might be processing an incoming XIP compontent  // we'll have to check the address as appropriate.  if (io_AddressIsInFlashSpace((unsigned int)vaddr)) {    // The load is going directly to flash. XIP components.    flash_write(((unsigned int)(vaddr)-BSPCONF_FLASH_BASE),&val,2,NULL);  }  else {    *vaddr = val;  }  if (prog_strobe) {    // Let client update whatever UI progress    // meter they might be displaying.    if (strobe_cnt++ == strobe_delta) {      strobe_cnt = 0;      (*prog_strobe)();    }      }}#if !(defined(DSC21) || defined(DSC24) || defined(DSC25) || \      defined(DM270) || defined(DM310) || defined(C5471))/****************************** Routine: Description:   Call Back routine used when moving data from flash to ram. ******************************/static void put_val_at_addr_2(unsigned short *vaddr, unsigned short val){  // Since this callback is only used for moving data from  // flash to ram there is no need to make the XIP check  // that the put_val_at_addr() callback routine needs.  *vaddr = val;  if (prog_strobe) {    // Let client update whatever UI progress    // meter they might be displaying.    if (strobe_cnt++ == strobe_delta) {      strobe_cnt = 0;      (*prog_strobe)();    }      }}#endif/****************************** Routine: Description: ******************************/static void get_val_from_addr(unsigned short *vaddr, unsigned short *val){  *val = *vaddr;  // printf("0x%x: 0x%x\n",vaddr,*val); // *debug* temp.  if (prog_strobe) {    // Let client update whatever UI progress    // meter they might be displaying.    if (strobe_cnt++ == strobe_delta) {      strobe_cnt = 0;      (*prog_strobe)();    }      }}/****************************** Routine: Description: returns non-zero if flash write failure occurred ******************************/static int load(comp_t c,                 src_dest_t s, port_format_t f){  int ret = 0;  int status = LOAD_OK;  int use_header = TRUE;  GetByteCallBack_t GetByteFunc;  switch(s) {    case sd_PARPORT:      GetByteFunc = io_getchar_par;      break;    case sd_SERPORT:      GetByteFunc = io_getchar_ser;      break;    case sd_TFTP:      GetByteFunc = getchar_tftp;      break;    case sd_FLASH:    case sd_SDRAM:    case sd_SRAM:    default:      SYSTEM_FATAL("Logic Error");      break;  }  switch(f) {    case f_SREC:      {        srec_RegisterGetByte(GetByteFunc);        srec_RegisterPut(&put_val_at_addr);        status = srec_parse(&(comp_info[c].fheader.load_addr),                            &(comp_info[c].fheader.entry_addr),                            &(comp_info[c].fheader.num_bytes));      }      break;    case f_RR_BINARY:      {        rawbin_RegisterGetByte(GetByteFunc);        rawbin_RegisterPut(&put_val_at_addr);        status = rawbin_parse(&(comp_info[c].fheader.load_addr),                              &(comp_info[c].fheader.entry_addr),                              &(comp_info[c].fheader.num_bytes),			      &use_header);      }      break;    case f_NA:    default:      SYSTEM_FATAL("Logic Error");      break;  }    if (LOAD_OK != status) {    util_printf("ERROR: parse status = %d: Aborting.\n",status);  }  else {    // Check to see if the component will fit into the     // reserved flash space    if (comp_info[c].fheader.num_bytes >         (comp_flash_info[c].END_OFFSET - comp_flash_info[c].START_OFFSET)) {	  util_printf("\nWARNING: downloaded component is larger\n");	  util_printf("than the reserved flash space.\n\n");    }    // Next,    // Where did that load just go? ram or flash? Remember that    // components intended to run in-place in flash will be loaded    // directly into the flash memory map space (XIP). If so, we assume the    // loaded image was constructed to load to the very specific flash    // locations we've documented for kernel and filesystem XIP component    // images. Also, we assume that prior to the load the user had    // first erased that area of flash. For more information look at    // XIP discussions in project doc.    if (io_AddressIsInFlashSpace(comp_info[c].fheader.load_addr) &&	use_header) {      // XIP component image just loaded to flash. Now need to add       // the magic num and info header that goes with it.      flash_flush();      ret |= flash_write(comp_flash_info[c].START_OFFSET,                  (unsigned short *) &(comp_flash_info[c].MAGIC_NUM),                  sizeof(MAGIC_t),                  NULL);      ret |= flash_write(comp_flash_info[c].START_OFFSET + sizeof(MAGIC_t),                  (unsigned short *) &(comp_info[c].fheader),                  sizeof(FHEADER_t),                  NULL);      flash_flush();    }    if (io_AddressIsInFlashSpace(comp_info[c].fheader.load_addr)) {      comp_info[c].is_FLASH_resident = TRUE;    }    else {      comp_info[c].is_SDRAM_resident = TRUE;     }  }    return ret;}#if defined(DSC21)static void dma_flash_read(unsigned int offset,  // Of flash.                           unsigned int dest, // Destination buffer                           unsigned int num_bytes){        u32 frm_addr,to_addr,count;                    volatile dma_reg_t *dma_regs;         //util_printf("\nin dma copy\n");        //util_printf("%X %X %X\n", offset, dest, num_bytes);        dma_regs = (dma_reg_t *) 0x30B80;        frm_addr = offset;        to_addr = dest;        to_addr -= 0x8000000;  // Pull offset from SDRAM base.        count = num_bytes;        dma_regs->mode = 2; // Set mode for SDRAM to FLASH.        while (count > 0)        {                //util_printf("From is %X\n",frm_addr);                dma_regs->src_hi = (frm_addr>>16)&0x7F;                dma_regs->src_lo = (frm_addr & 0xFFFF);                //util_printf("To is %X\n",to_addr);                dma_regs->dest_hi = (to_addr>>16)&0x7FF;                dma_regs->dest_lo = (to_addr & 0xFFFF);                //util_printf("Count is %X\n", count);                if (count < MAX_DMA_SIZE)                {                        dma_regs->count = count;                        dma_regs->control = 1;  //Trigger DMA.                        count = 0;                } else                {                        dma_regs->count = MAX_DMA_SIZE;                        dma_regs->control = 1;  //Trigger DMA.                        count -= MAX_DMA_SIZE;                        frm_addr += MAX_DMA_SIZE;                        to_addr += MAX_DMA_SIZE;                }                while(dma_regs->status & 0x8000); //delay till dma done.        }}// endif // DSC21#elif defined(DSC24)static void dma_flash_read(unsigned int offset,  // Of flash.                           unsigned int dest, // Destination buffer                           unsigned int num_bytes){        u32 frm_addr,to_addr,count;        volatile dma_reg_t *dma_regs = (dma_reg_t *) 0x30a18;        //util_printf("\nin dma copy\n");        dma_regs = (dma_reg_t *) 0x30a18;        frm_addr = offset;        to_addr = dest;        to_addr -= 0x900000;  // Pull offset from SDRAM base.        count = num_bytes;        dma_regs->mode = 5; // Set mode for SDRAM and FLASH.        while (count > 0)        {                //util_printf("From is %X\n",frm_addr);                dma_regs->src_hi = (frm_addr>>16)&0x3ff;                dma_regs->src_lo = (frm_addr & 0xffff);                //util_printf("To is %X\n",to_addr);                dma_regs->dest_hi = (to_addr>>16)&0x3ff;                dma_regs->dest_lo = (to_addr & 0xffff);                //util_printf("Count is %X\n", count);                if (count < MAX_DMA_SIZE)                {                        dma_regs->count = count;                        dma_regs->control = 1;  //Trigger DMA.                        count = 0;                } else                {                        dma_regs->count = MAX_DMA_SIZE;                        dma_regs->control = 1;  //Trigger DMA.                        count -= MAX_DMA_SIZE;                        frm_addr += MAX_DMA_SIZE;                        to_addr += MAX_DMA_SIZE;                }                while(dma_regs->control); //delay till dma done.        }}// endif // DSC24#elif OMAP1510typedef struct {        u16 csdp;      // channel s/d parameters -- working set (current transfer)        u16 ccr;       // channel control -- working set        u16 cicr;      // channel interrupt control -- working set        u16 csr;       // channel status -- working set        u16 cssa_l;    // source lower bits -- programming set (next transfer)        u16 cssa_u;    // source upper bits -- programming set        u16 cdsa_l;    // destn lower bits -- programming set        u16 cdsa_u;    // destn upper bits -- programming set        u16 cen;       // channel element number -- programming set        u16 cfn;       // channel frame number -- programming set        u16 cfi;       // channel frame index -- programming set        u16 cei;       // channel element index -- programming set        u16 cpc;       // channel progress counter        u16 null[19];  // for alignment} dma_regs_t;#define DCSR_ERROR  0x3#define DCCR_EN     (1 << 7)#define DFIFO_FLUSH (1 << 10)#define DEND_PROG   (1 << 11)#define DSYNC_SET   (1 << 6)#define DREPEAT     (1 << 9)#define DFRAME      (1 << 3)static void dma_flash_read(unsigned int offset_orig,  // Of flash.                           unsigned int dest_orig, // Destination buffer                           unsigned int num_bytes){        volatile dma_regs_t *regs = (dma_regs_t *)0xfffed800;    // channel 0        unsigned int remaining = num_bytes;        unsigned int offset = offset_orig;        unsigned int dest = dest_orig;        int error_count = 0;        // one-time setup:        regs->cicr = 0x2b;              // Show status on Block or Frame done, or on errors (timeout, drop)        regs->ccr = ((1 << 14) |        // source,destn auto increment, high priority, flush                     (1 << 12) |

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美脚の诱脚舐め脚责91| 在线欧美日韩精品| 91精品免费在线观看| 久久久夜色精品亚洲| 亚洲美女偷拍久久| 国产精品一区二区三区乱码| 99久久er热在这里只有精品66| 欧美性极品少妇| 欧美国产成人在线| 六月丁香婷婷久久| 色伊人久久综合中文字幕| 日韩亚洲欧美在线观看| 亚洲欧美综合在线精品| 国产精品一级在线| 日韩一二在线观看| 亚洲大片在线观看| 色婷婷综合久色| 国产精品国产自产拍在线| 精品一区二区三区欧美| 欧美日韩一级视频| 亚洲最快最全在线视频| 成人小视频在线观看| 亚洲精品一区二区三区蜜桃下载| 爽好久久久欧美精品| 欧美艳星brazzers| 亚洲成人动漫精品| 99久久99久久精品免费看蜜桃| 久久久99精品免费观看不卡| 精品一区二区三区欧美| 精品电影一区二区| 国产一区二区三区在线观看免费| 日韩一级欧美一级| 久久99精品国产91久久来源| 日本道精品一区二区三区| 一区二区三区日韩欧美精品| 日本久久一区二区三区| 亚洲成人一二三| 欧美一区二区人人喊爽| 蜜臀av性久久久久蜜臀av麻豆 | 亚洲精品在线电影| 国产一区二区调教| 国产精品九色蝌蚪自拍| 欧洲av在线精品| 精品一区二区三区不卡| 亚洲综合男人的天堂| 欧美日韩免费观看一区二区三区| 日韩一区中文字幕| 欧美日韩精品欧美日韩精品| 免费在线观看成人| 国产精品久线观看视频| 欧美日韩国产成人在线免费| 国产另类ts人妖一区二区| 日韩毛片精品高清免费| 欧美日本一区二区三区四区| 国产精品亚洲人在线观看| 自拍视频在线观看一区二区| 欧美丰满嫩嫩电影| 国产成+人+日韩+欧美+亚洲| 视频在线观看国产精品| 亚洲人成伊人成综合网小说| 精品国产百合女同互慰| 91精品国产综合久久久蜜臀图片 | 欧美伊人精品成人久久综合97 | 国产一区二区三区在线观看精品| 一区二区三区精品视频| 亚洲视频一二三区| 国产精品第13页| 国产精品久久久久久久久搜平片 | 欧美三级一区二区| 日本高清不卡在线观看| 成人动漫中文字幕| 成人手机在线视频| 国产精品夜夜爽| 成人黄页毛片网站| 99re8在线精品视频免费播放| 国产成人激情av| caoporm超碰国产精品| 国产精品99久久久久久久女警 | 日韩精品欧美精品| 人人爽香蕉精品| 久久99精品久久久久久 | 精品久久久久久无| 精品精品欲导航| 久久免费国产精品| 亚洲国产精品成人综合| 国产精品久久久久久亚洲伦| 亚洲柠檬福利资源导航| 亚洲自拍偷拍麻豆| 卡一卡二国产精品 | 亚洲九九爱视频| 一级中文字幕一区二区| 亚洲一区二区三区四区的| 亚洲一卡二卡三卡四卡无卡久久| 亚洲高清不卡在线观看| 麻豆成人91精品二区三区| 国产精品亚洲一区二区三区在线 | 国产视频一区二区在线| 中文字幕中文字幕在线一区 | 国产精品网站在线观看| 亚洲综合在线视频| 精品一区中文字幕| 色综合天天综合狠狠| 91精品国产色综合久久不卡蜜臀| 亚洲精品视频自拍| 91精品免费观看| 972aa.com艺术欧美| 国产精品毛片久久久久久| 日韩欧美区一区二| 欧美一区二区三区思思人| 国产精品高清亚洲| 免费看日韩精品| 色婷婷亚洲精品| 国产欧美日韩不卡| 日一区二区三区| 欧美艳星brazzers| 国产精品不卡在线| 国产91丝袜在线播放0| 5858s免费视频成人| 樱桃视频在线观看一区| 成人动漫在线一区| 中文字幕免费观看一区| 精品一区二区在线视频| 欧美人狂配大交3d怪物一区| 亚洲女与黑人做爰| 91在线高清观看| 亚洲免费观看高清在线观看| 成人免费毛片片v| 国产精品久久久久久一区二区三区| 看电影不卡的网站| 精品国产不卡一区二区三区| 蜜臀av一级做a爰片久久| 日韩欧美一卡二卡| 狠狠色狠狠色综合日日91app| 日韩一区二区三区av| 老司机一区二区| 久久婷婷综合激情| 国产乱码一区二区三区| 国产天堂亚洲国产碰碰| 成人免费黄色大片| 亚洲日本va午夜在线影院| 日本乱人伦一区| 亚洲一二三级电影| 欧美日韩大陆在线| 狠狠色丁香婷综合久久| 国产性色一区二区| 成人一区二区三区| 亚洲国产欧美日韩另类综合| 欧美精品成人一区二区三区四区| 天堂影院一区二区| 国产欧美一区二区三区在线看蜜臀 | 欧美影院精品一区| 免费成人美女在线观看.| 欧美激情中文字幕| 欧美日韩日日夜夜| 福利一区二区在线| 青青草97国产精品免费观看| 久久综合色综合88| 在线国产电影不卡| 国产成人a级片| 日本亚洲天堂网| 亚洲精品免费电影| 精品国产免费一区二区三区四区| 91香蕉视频污在线| 国产一区二区精品久久91| 亚洲午夜精品一区二区三区他趣| 欧美v日韩v国产v| 日本精品一级二级| 午夜精品久久久久久久久久| 国产亚洲精品7777| 欧美一区二区黄色| 国产成人精品免费网站| 午夜精品久久久久影视| 国产精品私房写真福利视频| 欧美一区三区四区| 91一区二区三区在线播放| 久久国产精品99久久人人澡| 国产欧美日韩视频在线观看| 欧美一级二级三级蜜桃| 色哟哟国产精品免费观看| 国产91丝袜在线播放九色| 国产综合久久久久久鬼色| 亚洲bdsm女犯bdsm网站| 18涩涩午夜精品.www| 中文字幕一区二区三中文字幕| 91精品国产综合久久小美女| 91国偷自产一区二区三区成为亚洲经典 | 美国毛片一区二区三区| 亚洲愉拍自拍另类高清精品| 久久精品人人做人人爽97| 亚洲精品一区二区三区精华液 | 国产91富婆露脸刺激对白| 久久 天天综合| 日本免费新一区视频| 日韩精品乱码免费| 全国精品久久少妇| 免费成人性网站| 国产精品88av| 成人中文字幕电影| www..com久久爱| 欧美在线一二三|