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

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

?? btldr_pi ().c~

?? 針對德州儀器DM270開發板的bootloader,其實現了內核的下載以及文件系統的下載
?? C~
?? 第 1 頁 / 共 4 頁
字號:
#if defined(DSC24_OSD)        ret |= flash_write(comp_flash_info[comp].START_OFFSET + sizeof(MAGIC_t) + sizeof(current_params),                    (unsigned short *) &(comp_info[comp].fheader),                    sizeof(FHEADER_t),                    NULL);        ret |= flash_write(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,                    get_val_from_addr);#endif        if (ret == 0) {                comp_info[comp].is_FLASH_resident = TRUE;        }      }      break;    case c_KERNEL:       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 *) &(comp_info[comp].fheader),                    sizeof(FHEADER_t),                    NULL);        ret |= flash_write(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,                    get_val_from_addr);        if (ret == 0) {                comp_info[comp].is_FLASH_resident = TRUE;        }	/* If the kernel is compressed, then "remove" the 	   compressed kernel from RAM, so rrload boot	   logic will store the decompressed image there */#if ( BSPCONF_KERNEL_COMPRESSED == 1 ) ||  ( BSPCONF_FS_COMPRESSED == 1 )	if (image_is_compressed((char *)comp_info[comp].fheader.load_addr)) {	  comp_info[comp].is_SDRAM_resident = FALSE;	}#endif      }      break;    case c_FILESYS:      // util_printf("flashing -- load_addr 0x%X, entry_addr 0x%X, num_bytes 0x%X, offset 0x%X\n",      //              comp_info[comp].fheader.load_addr,      //              comp_info[comp].fheader.entry_addr,      //              comp_info[comp].fheader.num_bytes,      //              comp_flash_info[comp].START_OFFSET); // *debug* temp.      if (TRUE == comp_info[comp].is_SDRAM_resident) {#if !defined(OMAP1510)        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 *) &(comp_info[comp].fheader),                    sizeof(FHEADER_t),                    NULL);        ret |= flash_write(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,                    get_val_from_addr);#else        // JFFS2 cannot handle the header info.         // REVISIT - DG: Now that we are leaving out the header, what bad things happen?        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);#endif        if (ret == 0) {                comp_info[comp].is_FLASH_resident = TRUE;        }	/* If the file system is compressed, then "remove" the 	   compressed file system from RAM, so rrload boot	   logic will store the decompressed image there */#if ( BSPCONF_KERNEL_COMPRESSED == 1 ) ||  ( BSPCONF_FS_COMPRESSED == 1 )	if (image_is_compressed((char *)comp_info[comp].fheader.load_addr)) {	  comp_info[comp].is_SDRAM_resident = FALSE;	}#endif      }      break;    default:      SYSTEM_FATAL("Logic Error");      break;  }  status = flash_flush();  if (status >= 0) {    util_printf("Flash Write error at offset %d\n",status);    return -1;  }  return ret;}/****************************** Routine: Description:   Note: See btldr_pi.h for description. ******************************/int cmd_copy_comp(comp_t c,        //component                   src_dest_t s,    //src                   src_dest_t d,    //dest                   port_format_t f, //format                   progress_meter_CBack_t CBack,                   int strobe_interval){  int ret = 0;   // !!!!!!!!!!!  // Note:  // Of all the possible combinations of s and d parameters  // only the following are currently supported by this particular  // bootloader. Other bootloaders implementing the btldr_pi.h  // interface may chose to support more combinations.  //   //   1. copy from port to sdram  //   2. copy from flash to sdram  //   3. copy from sdram to flash  //   4. copy from sram to flash  // !!!!!!!!!!!      prog_strobe = CBack;  strobe_delta = strobe_interval;  strobe_cnt = 0;  switch (d) {    default:      // The d parameter is totally ignored since all      // the currently supported modes can be deduced by      // testing the s param only.      break;  }  switch (s) {    // Note: | Again, with the specified source (s) we'll assume the    //       | destination -- independent of the dest (d) parameter.    case sd_SDRAM:      ret |= push_to_flash(c);      break;    case sd_SRAM:      ret |= push_to_flash(c);      break;    case sd_FLASH:      pull_from_flash(c);      break;    case sd_TFTP:      if (c_KERNEL == c) {        connect_tftp(current_params.device_IP,                     current_params.server_IP,                     current_params.device_MAC,                     current_params.server_MAC,                     current_params.kernel_path);      }      else if (c_FILESYS == c) {        connect_tftp(current_params.device_IP,                     current_params.server_IP,                     current_params.device_MAC,                     current_params.server_MAC,                     current_params.filesys_path);              } #if defined(DSC24_OSD)      else if (c_PARAMS == c) {        connect_tftp(current_params.device_IP,                     current_params.server_IP,                     current_params.device_MAC,                     current_params.server_MAC,                     current_params.OSD_path);              } #endif      ret |= load(c,s,f);      disconnect_tftp();      break;    case sd_PARPORT:    case sd_SERPORT:      ret |= load(c,s,f);      break;    default:      SYSTEM_FATAL("Logic Error");      break;  }  return ret;}/****************************** Routine: Description:   Note: See btldr_pi.h for description. ******************************/params_t *cmd_get_params(void){  return &current_params;}/****************************** Routine: Description:   Note: See btldr_pi.h for description. ******************************/void cmd_boot_kernel(int auto_xfer, // TRUE or FALSE,                     progress_meter_CBack_t CBack,                     int strobe_interval){  struct tag *params = (struct tag *)0x052400FC;/*  if (auto_xfer) {    // If the kernel and/or file system is in RAM,     // check to see if it is compressed#if ( BSPCONF_KERNEL_COMPRESSED == 1 ) ||  ( BSPCONF_FS_COMPRESSED == 1 )      if (comp_info[c_KERNEL].is_SDRAM_resident &&          image_is_compressed((char *)comp_info[c_KERNEL].fheader.load_addr)) {	  util_printf("\nRAM kernel image is compressed.\n");	  util_printf("You must first save the kernel to flash.\n\n");	  util_printf("Press enter to return to main menu. ");	  util_gets(cmd,CMDMAX);	  return;      }      if (comp_info[c_FILESYS].is_SDRAM_resident &&           image_is_compressed((char *)comp_info[c_FILESYS].fheader.load_addr)) {	  util_printf("\nRAM file system image is compressed.\n");	  util_printf("You must first save the file system to flash.\n\n");	  util_printf("Press enter to return to main menu. ");	  util_gets(cmd,CMDMAX);	  return;      }#endif    if (!comp_info[c_KERNEL].is_SDRAM_resident) {    // If the kernel or file system is not in RAM and needs to be there,    // copy them to RAM.  Data recorded with the    // image indicates our course of action. If the    // image is intended to be used *directly* from flash    // then the following calls have no effect.  Ignore errors      cmd_copy_comp(c_KERNEL,sd_FLASH,sd_SDRAM,f_NA,CBack,strobe_interval);    }#if ( BSPCONF_KERNEL_COMPRESSED == 1 ) ||  ( BSPCONF_FS_COMPRESSED == 1 )    if (comp_info[c_FILESYS].is_SDRAM_resident) {      if (image_is_compressed((char *)comp_info[c_FILESYS].fheader.load_addr)) {	  util_printf("\nRAM file system image is compressed.\n");	  util_printf("You must first save the file system to flash.\n\n");	  util_printf("Press enter to return to main menu. ");	  util_gets(cmd,CMDMAX);	  return;      }    }#endif    if (!comp_info[c_FILESYS].is_SDRAM_resident) {      cmd_copy_comp(c_FILESYS,sd_FLASH,sd_SDRAM,f_NA,CBack,strobe_interval);    }  }*/ if (auto_xfer) {    // Next, Check to see if the components needed for a    // kernel boot are already in RAM. If not there    // already then move the image to RAM *if* it needs    // to go there before use. Data recorded with the    // image indicates our course of action. If the    // image is intended to be used *directly* from flash    // then the following calls have no effect.    if ((comp_info[c_KERNEL].is_FLASH_resident)&(!comp_info[c_KERNEL].is_SDRAM_resident)) {      cmd_copy_comp(c_KERNEL,sd_FLASH,sd_SDRAM,f_NA,CBack,strobe_interval);    }    if ((comp_info[c_FILESYS].is_FLASH_resident)&(!comp_info[c_FILESYS].is_SDRAM_resident)) {      cmd_copy_comp(c_FILESYS,sd_FLASH,sd_SDRAM,f_NA,CBack,strobe_interval);    }  }    if (comp_info[c_KERNEL].is_SDRAM_resident ) {//  if (comp_info[c_KERNEL].is_SDRAM_resident) {//      comp_info[c_KERNEL].is_FLASH_resident) {    // Next, Put our device ethernet MAC in the special memory location    //       which the kernel will reference when initializing its    //       ethernet driver.    // First write a magic string that gives validity to this area of SDRAM.    // The kernel will test validity prior to using the command line we are    // going to deposit.//    util_strcpy((unsigned char *)&__EtherMACMagicStr,"etherMAC-->");//    *((unsigned char *)&__EtherMAC) = (unsigned char) 0;//    util_strcpy((unsigned char *)&__EtherMAC,current_params.device_MAC);     // Next, Put our kernel command line overrides in the special    //       memory location which the kernel will reference on boot.    // First write a magic string that gives validity to this area of SDRAM.    // The kernel will test validity prior to using the command line we are    // going to deposit.//    util_strcpy((unsigned char *)&__KernCommandLineMagicStr,"kcmdline-->");//    *((unsigned char *)&__KernCommandLineOverride) = (unsigned char) 0;//    util_strcpy((unsigned char *)&__KernCommandLineOverride,current_params.kernel_cmdline);//    util_printf("\nCommand line overrides = %s\n",(unsigned char *)&__KernCommandLineOverride);    util_printf("Jumping to 0x%X\n",comp_info[c_KERNEL].fheader.entry_addr);    io_delay(100); // kill some time to allow printf chars to get out                   // the i/o port before we jump to the kernel.#if 0    *((unsigned int*)0xffff2800) = 0;	// turn off power/status LED#endif    lock_flash(); // We'll keep flash unlocked the whole                  // time the bootloader is running until                  // it is time to transfer control to the                   // kernel at which time we first lock                  // flash. Hopefully this will prevent                  // corrupted flash that might otherwise                  // result in a run-away program randomly                  // jumping into the flash logic of the                  // bootloader image still laying around                  // in ram from a prior run.    // Make sure the cache doesn't have any bad data    icache_disable();    icache_clear();    params->hdr.tag = ATAG_CORE;    params->hdr.size = tag_size(tag_core);    params->u.core.flags = 0;    params->u.core.pagesize = PAGE_SIZE;    params->u.core.rootdev = RAMDISK_MAJOR << 8 | 0;    params = tag_next(params);    params->hdr.tag = ATAG_MEM;    params->hdr.size = tag_size(tag_mem32);    params->u.mem.start = 0x05148000;    params->u.mem.size  = 2 * 1024 * 1024;    params = tag_next(params);    if (util_strlen(current_params.kernel_cmdline)) {        params->hdr.tag = ATAG_CMDLINE;        params->hdr.size = (sizeof(struct tag_header) +                           util_strlen(current_params.kernel_cmdline) +                           3) >> 2;        util_strcpy(params->u.cmdline.cmdline, current_params.kernel_cmdline);        util_printf("\nCommand line overrides = %s\n",                    params->u.cmdline.cmdline);        params = tag_next(params);    }    params->hdr.tag = ATAG_NONE;    params->hdr.size = 0;    // Next, jump to it...#if defined(OMAP1510)    // Note we set r0=0 and r1=171 on entry to kernel.     (*((KERN_SIG)(comp_info[c_KERNEL].fheader.entry_addr)))(0,171);#elif defined(DM310)    // Invalidate the DM310 instruction cache    invalidate_cache();    // Note we set r0=0 and r1=172 on entry to kernel.     (*((KERN_SIG)(comp_info[c_KERNEL].fheader.entry_addr)))(0,172);/*#elif defined(DM270)     // Note r0 and r1 values don't matter on entry.    (*((KERN_SIG)(comp_info[c_KERNEL].fheader.entry_addr)))(0,621);*/#else     (*((KERN_SIG)(comp_info[c_KERNEL].fheader.entry_addr)))(0,0);#endif    }}/****************************** Routine: Description:   Note: See btldr_pi.h for description. ******************************/void erase_comp(comp_t c){  flash_erase_range((comp_flash_info[c].START_OFFSET)+BSPCONF_FLASH_BASE,                    (comp_flash_info[c].END_OFFSET)+BSPCONF_FLASH_BASE);  comp_info[c].is_FLASH_resident = FALSE;}/****************************** Routine: Description:   Note: See btldr_pi.h for description. ******************************/void lock_flash(void){  FlashLockMode = 0x00000000;}/****************************** Routine: Description:   Note: See btldr_pi.h for description. ******************************/void unlock_flash(void){  // Place a special pattern in a special  // memory location. The idea here is that  // stray program code running amock from  // the kernel or a kernel driver that happens  // to run itself into the flash logic of  // bootloader (still left over in memory)  // will not succeed in corrupting flash  // since the low level routines will test  // for this special pattern before modifying  // any flash contents. In normal bootloader  // operation the flash will remain unlocked  // and then locked whenever it transfers  // control to another program (e.g. the kernel)  FlashLockMode = 0xBEEFFEED;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区三区高清| 1000部国产精品成人观看| 蜜臀av一区二区在线观看| 91超碰这里只有精品国产| 亚洲欧美激情视频在线观看一区二区三区| 国产精品18久久久久久久久 | 成人精品视频一区二区三区| 国产欧美一区二区精品忘忧草| 东方aⅴ免费观看久久av| 亚洲少妇最新在线视频| 欧美一级高清大全免费观看| 国产91精品露脸国语对白| 午夜欧美视频在线观看 | 欧美精品一区二区三区很污很色的| 开心九九激情九九欧美日韩精美视频电影 | 欧美一区二区三区精品| 国产99久久久精品| 免费日本视频一区| 亚洲va中文字幕| 中文字幕一区二区三区精华液| 91精品国产高清一区二区三区蜜臀| 福利91精品一区二区三区| 美脚の诱脚舐め脚责91| 亚洲黄色av一区| 国产精品久久久久9999吃药| 日韩精品资源二区在线| 在线不卡中文字幕| 欧美伊人久久久久久午夜久久久久| 国产成人夜色高潮福利影视| 蜜乳av一区二区三区| 日韩成人一区二区三区在线观看| 尤物av一区二区| 亚洲嫩草精品久久| 亚洲一区二区三区影院| 亚洲综合视频网| 亚洲福利视频一区二区| 亚洲成人一区二区在线观看| 亚洲成人福利片| 毛片av一区二区| 国产美女精品在线| www.爱久久.com| 一本色道久久综合亚洲aⅴ蜜桃| 色综合天天综合网国产成人综合天 | 亚洲综合在线免费观看| 亚洲成人免费av| 另类小说综合欧美亚洲| 国产91精品一区二区麻豆亚洲| 高清免费成人av| 欧美午夜电影在线播放| 这里只有精品99re| 国产精品久久久久久久久久免费看 | 亚洲一区在线视频| 青草国产精品久久久久久| 国产一区日韩二区欧美三区| 99在线精品免费| 欧美三级欧美一级| 亚洲国产精品传媒在线观看| 亚洲一级不卡视频| 国产91综合网| 日韩女优电影在线观看| 亚洲激情六月丁香| 成人免费视频播放| 日韩色在线观看| 亚洲风情在线资源站| 99re这里都是精品| 久久久91精品国产一区二区精品| 亚洲成在人线在线播放| 91丨九色porny丨蝌蚪| 精品国产一区二区三区久久久蜜月 | 欧美日韩免费在线视频| 中文字幕佐山爱一区二区免费| 狠狠色伊人亚洲综合成人| 欧美日韩第一区日日骚| 亚洲一本大道在线| 91在线精品秘密一区二区| 国产精品第一页第二页第三页| 国产盗摄精品一区二区三区在线| 91精品久久久久久久久99蜜臂| 国产精品黄色在线观看| 不卡在线观看av| 亚洲自拍另类综合| 欧美中文字幕一二三区视频| 亚洲国产va精品久久久不卡综合| 色天使色偷偷av一区二区| 亚洲国产色一区| 日韩精品一区二区在线| 国产一区二区三区在线观看精品 | 欧美性猛片aaaaaaa做受| 午夜久久久影院| 日韩一区二区不卡| 国产精品1区2区3区在线观看| 国产三级精品三级| 91高清视频在线| 久久国产精品色婷婷| 成人免费在线播放视频| 欧美高清视频一二三区| 高清成人在线观看| 亚洲一区影音先锋| 久久精品欧美一区二区三区不卡| 波多野结衣精品在线| 免费在线观看视频一区| 国产精品污网站| 精品国产乱码久久久久久影片| 99re热这里只有精品视频| 日本不卡免费在线视频| 亚洲第一福利一区| 国产精品欧美一级免费| 精品日本一线二线三线不卡| 欧美性videosxxxxx| 成人91在线观看| 国产在线精品一区二区夜色| 香蕉av福利精品导航| 午夜私人影院久久久久| 亚洲情趣在线观看| 国产精品五月天| 国产欧美日韩一区二区三区在线观看| 这里只有精品99re| 日韩欧美国产1| 欧美成人女星排名| 日韩精品在线一区二区| 日韩一二三区不卡| 欧美一区二区三区人| 精品99999| 欧美精品一区二区精品网| 欧美变态tickling挠脚心| 精品国产乱码久久久久久久| 日韩女优av电影| 日本一区二区综合亚洲| 亚洲区小说区图片区qvod| 婷婷国产在线综合| 国产91对白在线观看九色| 成人视屏免费看| 欧美日韩国产综合视频在线观看| 欧美高清精品3d| 国产精品无人区| 日本不卡一二三区黄网| av电影在线观看一区| 欧美精品丝袜久久久中文字幕| 久久一日本道色综合| 亚洲三级电影全部在线观看高清| 亚洲丝袜制服诱惑| 精品一区二区三区久久| 色视频成人在线观看免| 欧美一区二区三区四区视频| 亚洲另类在线制服丝袜| 激情五月播播久久久精品| 色哟哟精品一区| 国产日韩影视精品| 久久成人麻豆午夜电影| 不卡在线视频中文字幕| 国产日韩欧美精品在线| 精品在线观看免费| 欧美不卡在线视频| 美女精品自拍一二三四| 欧美日韩国产一级片| 亚洲一区影音先锋| 欧美亚州韩日在线看免费版国语版| 久久久久88色偷偷免费| 国产传媒一区在线| 国产精品免费视频网站| k8久久久一区二区三区| 国产精品护士白丝一区av| 91麻豆swag| 尤物av一区二区| 日韩一卡二卡三卡| 国产精品白丝jk白祙喷水网站| 久久亚洲综合av| a亚洲天堂av| 亚洲不卡av一区二区三区| 欧美一区二区人人喊爽| 国产精品中文字幕日韩精品 | 美女网站在线免费欧美精品| 精品裸体舞一区二区三区| 成人免费看黄yyy456| 亚洲精品视频在线看| 日韩一卡二卡三卡| 东方aⅴ免费观看久久av| 午夜影院在线观看欧美| 日韩精品一区二区三区swag| 成人一区二区三区在线观看| 亚洲精品乱码久久久久久日本蜜臀| 欧美精品久久99| 国产成人免费在线| 日韩精品1区2区3区| 国产精品你懂的在线欣赏| 欧美精品粉嫩高潮一区二区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产精品伦理一区二区| 欧美大片顶级少妇| 在线亚洲人成电影网站色www| 国产一区二区h| 美女网站色91| 奇米色一区二区| 亚洲高清免费视频| 一区二区三区在线影院| 亚洲精品国久久99热| 亚洲欧美另类久久久精品2019| 欧美国产日本韩| 国产喷白浆一区二区三区| 久久久www成人免费无遮挡大片|