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

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

?? btldr_pi.c

?? 針對德州儀器DM270開發板的bootloader,其實現了內核的下載以及文件系統的下載
?? C
?? 第 1 頁 / 共 4 頁
字號:
               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    }    // Next, Do we have a filesystem stored?    comp = 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) {      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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
毛片一区二区三区| www.视频一区| 亚洲成a人v欧美综合天堂下载| 国产精品无遮挡| 亚洲精品一区二区精华| 欧美一区二区三区免费视频| 色综合天天综合网天天看片| 福利视频网站一区二区三区| 国产一区二区三区综合| 免费观看成人av| 免费在线成人网| 首页综合国产亚洲丝袜| 亚洲va中文字幕| 亚洲图片欧美视频| 亚洲一区在线观看免费 | 日韩三级av在线播放| 欧美视频在线观看一区二区| 欧美日韩国产美| 日韩视频在线一区二区| 久久一夜天堂av一区二区三区| 国产日韩综合av| 综合电影一区二区三区| 亚洲一区二三区| 蜜桃视频第一区免费观看| 精品一区二区影视| 不卡的电影网站| 欧美日韩免费一区二区三区| 91精品欧美一区二区三区综合在| 欧美电影免费观看高清完整版在线观看| 欧美成人精品1314www| 欧美—级在线免费片| 亚洲美女精品一区| 免费成人在线影院| 成人午夜在线播放| 欧美午夜一区二区三区| 欧美一区二区三区免费大片| 国产亚洲成av人在线观看导航| 1024成人网色www| 日韩国产欧美在线视频| 国产剧情一区在线| 91国产免费观看| 精品久久久网站| 亚洲精品一卡二卡| 久久精品理论片| 色妹子一区二区| 精品奇米国产一区二区三区| 国产精品高潮呻吟| 日本成人中文字幕| 99re热这里只有精品视频| 欧美一区二区三区系列电影| 国产精品污污网站在线观看| 午夜av一区二区| 成人av综合一区| 日韩欧美国产系列| 亚洲欧美aⅴ...| 极品瑜伽女神91| 在线日韩av片| 久久精品日韩一区二区三区| 一区二区三区.www| 国产精品主播直播| 7777精品久久久大香线蕉 | 亚洲精品乱码久久久久| 久久福利资源站| 欧美午夜片在线观看| 国产日韩影视精品| 蜜臀国产一区二区三区在线播放| 91免费精品国自产拍在线不卡| 日韩精品专区在线影院观看| 亚洲一区二区三区美女| 成人av在线资源| 久久嫩草精品久久久久| 日本成人在线电影网| 91久久精品网| 国产精品福利一区二区三区| 精品一区二区久久久| 欧美人伦禁忌dvd放荡欲情| 亚洲视频精选在线| 国产精品一区2区| 日韩欧美国产一区二区三区| 婷婷中文字幕综合| 色网综合在线观看| 中文字幕一区二区三| 国产一区二区三区免费观看| 日韩欧美中文字幕制服| 首页欧美精品中文字幕| 欧美日韩国产在线播放网站| 樱花草国产18久久久久| 91在线视频播放| 国产精品午夜久久| 福利一区福利二区| 欧美激情一区三区| 成人一区二区视频| 欧美国产一区二区| 福利91精品一区二区三区| 2024国产精品| 激情亚洲综合在线| 欧美v日韩v国产v| 老司机精品视频导航| 欧美www视频| 激情综合色综合久久| 欧美电影免费观看高清完整版在线 | 91精品免费观看| 奇米精品一区二区三区在线观看| 欧美精品粉嫩高潮一区二区| 亚洲a一区二区| 777久久久精品| 日本亚洲欧美天堂免费| 日韩色在线观看| 精品亚洲成a人在线观看| 亚洲精品在线观看网站| 国产精品性做久久久久久| 中文字幕乱码久久午夜不卡 | 日韩一区二区在线观看| 日韩高清在线电影| 欧美一级高清大全免费观看| 久久国产精品99久久久久久老狼| 欧美精品一区在线观看| 国产91在线看| 亚洲欧洲中文日韩久久av乱码| 色激情天天射综合网| 五月天婷婷综合| 日韩免费一区二区| 成人一区二区在线观看| 亚洲男人的天堂一区二区| 欧美日韩黄色一区二区| 麻豆久久久久久久| 久久综合色综合88| 成人高清免费观看| 洋洋av久久久久久久一区| 在线播放亚洲一区| 狠狠狠色丁香婷婷综合激情| 日本一区二区三区在线观看| 91麻豆福利精品推荐| 亚洲成av人片在www色猫咪| 日韩一级二级三级| 国产成人在线电影| 亚洲乱码日产精品bd| 91精品国产综合久久婷婷香蕉 | 91在线视频18| 琪琪久久久久日韩精品| 国产日韩欧美麻豆| 欧美中文字幕亚洲一区二区va在线| 免费视频一区二区| 最新中文字幕一区二区三区| 欧美私模裸体表演在线观看| 国产一区二区三区电影在线观看 | 亚洲成人av一区二区| 精品国产一二三区| 97精品电影院| 卡一卡二国产精品| 一区二区三区在线播放| 欧美精品一区二| 日本道精品一区二区三区| 国产裸体歌舞团一区二区| 一区二区三区影院| 久久影院视频免费| 欧美私模裸体表演在线观看| 国产在线麻豆精品观看| 亚洲成人免费视| 国产女人水真多18毛片18精品视频| 欧美无砖砖区免费| 成人精品小蝌蚪| 麻豆国产精品官网| 亚洲最色的网站| 国产欧美1区2区3区| 日韩亚洲欧美成人一区| 在线日韩一区二区| 成人黄色在线网站| 韩国三级电影一区二区| 亚洲综合视频在线观看| 国产欧美日韩视频一区二区| 欧美一区二区三区婷婷月色| 色视频欧美一区二区三区| 国产99久久久久久免费看农村| 石原莉奈一区二区三区在线观看| 国产精品每日更新在线播放网址 | 亚洲视频资源在线| 26uuu色噜噜精品一区二区| 欧美日本不卡视频| 色激情天天射综合网| 成人国产在线观看| 精久久久久久久久久久| 日本视频一区二区| 亚洲一二三四在线| 亚洲色图一区二区三区| 国产欧美日韩卡一| 久久久精品一品道一区| 欧美videossexotv100| 欧美日韩国产不卡| 色先锋aa成人| 色94色欧美sute亚洲线路一久| www.激情成人| 成人午夜在线播放| 懂色av一区二区三区免费观看| 久久91精品国产91久久小草| 日产欧产美韩系列久久99| 午夜免费久久看| 午夜久久电影网| 亚洲国产视频网站| 亚洲成人在线免费|