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

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

?? mkevimg

?? ARM 嵌入式 系統(tǒng) 設(shè)計(jì)與實(shí)例開發(fā) 實(shí)驗(yàn)教材 二源碼
??
字號(hào):
#!/usr/bin/perl##    Copyright (c) 1998-1999 TiVo, Inc.#    All rights reserved.##    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>#      Major syntactic and usability rework.##    Module name: mkevimg##    Description:#      Converts an ELF output file from the linker into the format used by#      the IBM evaluation board ROM Monitor to load programs from a host#      onto the evaluation board. The ELF file must be an otherwise execut-#      able file (with the text and data addresses bound at link time) and#      have space reserved after the entry point for the load information#      block:##      typedef struct boot_block {#        unsigned long magic;	        0x0052504F#	 unsigned long dest;	        Target address of the image#	 unsigned long num_512blocks;   Size, rounded-up, in 512 byte blocks#	 unsigned long debug_flag;      Run the debugger or image after load#        unsigned long entry_point;	The image address to jump to after load#	 unsigned long checksum; 	32 bit checksum including header#	 unsigned long reserved[2];#      } boot_block_t;##   use File::Basename;use Getopt::Std;## usage()## Description:#   This routine prints out the proper command line usage for this program## Input(s):#   status - Flag determining what usage information will be printed and what#            the exit status of the program will be after the information is#            printed.## Output(s):#   N/A## Returns:#   This subroutine does not return.#sub usage {  my($status);  $status = $_[0];  printf("Usage: %s [-hlvV] <ELF input file> <Evaluation board output file>\n",	$program);  if ($status != 0) {    printf("Try `%s -h' for more information.\n", $program);  }  if ($status != 1) {    print("  -c         Put checksum in load information block.\n");    print("  -h         Print out this message and exit.\n");    print("  -l         Linux mode; if present, copy 'image' and 'initrd' sections.\n");    print("  -v         Verbose. Print out lots of ELF information.\n");    print("  -V         Print out version information and exit.\n");  }  exit($status);}## version()## Description:#   This routine prints out program version information## Input(s):#   N/A## Output(s):#   N/A## Returns:#   This subroutine does not return.#sub version {  print("mkevimg Version 1.1.0\n");  print("Copyright (c) 1998-1999 TiVo, Inc.\n");  print("Copyright (c) 1999 Grant Erickson <grant\@lcse.umn.edu>\n");  exit (0);}## file_check()## Description:#   This routine checks an input file to ensure that it exists, is a#   regular file, and is readable.## Input(s):#   file - Input file to be checked.## Output(s):#   N/A## Returns:#   0 if the file exists, is a regular file, and is readable, otherwise -1.#sub file_check {  my($file);  $file = $_[0];  if (!(-e $file)) {    printf("The file \"%s\" does not exist.\n", $file);    return (-1);  } elsif (!(-f $file)) {    printf("The file \"%s\" is not a regular file.\n", $file);    return (-1);  } elsif (!(-r $file)) {    printf("The file \"%s\" is not readable.\n", $file);    return (-1);  }  return (0);}## decode_options()## Description:#   This routine steps through the command-line arguments, parsing out#   recognzied options.## Input(s):#   N/A## Output(s):#   N/A## Returns:#   N/A#sub decode_options {  if (!getopts("chlvV")) {    usage(1);  }  if ($opt_c) {    $do_checksum = 1;  }  if ($opt_h) {    usage(0);  }  if ($opt_l) {    $linux = 1;  }  if ($opt_V) {    version();    exit (0);  }  if ($opt_v) {    $verbose = 1;  }  if (!($ifile = shift(@ARGV))) {    usage(1);  }  if (!($ofile = shift(@ARGV))) {    usage (1);  }  if (file_check($ifile)) {    exit(1);  }}## ELF file and section header field numbers#require '../utils/elf.pl';## Main program body#{  $program = basename($0);  decode_options();  open(ELF, "<$ifile") || die "Cannot open input file";  $ifilesize = (-s $ifile);  if ($verbose) {    print("Output file: $ofile\n");    print("Input file: $ifile, $ifilesize bytes.\n");  }  if (read(ELF, $ibuf, $ifilesize) != $ifilesize) {    print("Failed to read input file!\n");    exit(1);  }  #   # Parse ELF header  #  @eh = unpack("a16n2N5n6", $ibuf);  #  # Make sure this is actually a PowerPC ELF file.  #  if (substr($eh[$e_ident], 0, 4) ne "\177ELF") {    printf("The file \"%s\" is not an ELF file.\n", $ifile);    exit (1);  } elsif ($eh[$e_machine] != 20) {    printf("The file \"%s\" is not a PowerPC ELF file.\n", $ifile);    exit (1);  }  if ($verbose) {    print("File header:\n");    printf("  Identifier:            %s\n",	$eh[$e_ident]);    printf("  Type:                  %d\n",	$eh[$e_type]);    printf("  Machine:               %d\n",	$eh[$e_machine]);    printf("  Version:               %d\n",	$eh[$e_version]);    printf("  Entry point:           0x%08x\n", $eh[$e_entry]);    printf("  Program header offset: 0x%x\n",	$eh[$e_phoff]);    printf("  Section header offset: 0x%x\n",	$eh[$e_shoff]);    printf("  Flags:                 0x%08x\n", $eh[$e_flags]);    printf("  Header size:           %d\n", $eh[$e_ehsize]);    printf("  Program entry size:    %d\n", $eh[$e_phentsize]);    printf("  Program table entries: %d\n", $eh[$e_phnum]);    printf("  Section header size:   %d\n", $eh[$e_shentsize]);    printf("  Section table entries: %d\n", $eh[$e_shnum]);    printf("  String table section:  %d\n", $eh[$e_shstrndx]);  }  #  # Find the section header for the string table.  #  $strtable_section_offset =  $eh[$e_shoff] +    $eh[$e_shstrndx] * $eh[$e_shentsize];  if ($verbose) {    printf("String table section header offset: 0x%x\n",	   $strtable_section_offset);  }    #  # Find the start of the string table.  #  @strh = unpack("N10", substr($ibuf, $strtable_section_offset, 			       $eh[$e_shentsize]));  if ($verbose) {    printf("Section name strings start at: 0x%x, %d bytes.\n",	   $strh[$sh_offset], $strh[$sh_size]);  }  $names = substr($ibuf, $strh[$sh_offset], $strh[$sh_size]);  # Grab each section header and find '.text' and '.bss' sections in  # particular.  if ($verbose) {  print("Section headers:\n");  print("Idx  Name                      Size      Address   File off  Algn\n");  print("---  ------------------------  --------  --------  --------  ----\n");  }  $off = $eh[$e_shoff];  for($i = 0; $i < $eh[$e_shnum]; $i++, $off += $eh[$e_shentsize]) {    @sh = unpack("N10", substr($ibuf, $off, $eh[$e_shentsize]));    # Take the first section name from the array returned by split.    ($name) = split(/\000/, substr($names, $sh[$sh_name]));        if ($verbose) {      printf("%3d  %-24s  %8x  %08x  %08x  %4d\n", 	     $i, $name, $sh[$sh_size], $sh[$sh_addr], 	     $sh[$sh_offset], $sh[$sh_addralign]);    }    # Attempt to find the .text and .bss sections    if ($name =~ /^\.bss$/) {      ($bss_addr, $bss_offset, $bss_size) =	($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);    } elsif ($name =~ /^\.text$/) {      ($text_addr, $text_offset, $text_size) = 	($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);    } elsif ($linux && ($name =~ /^\image$/)) {      $image_found = 1;      ($image_addr, $image_offset, $image_size) = 	($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);    } elsif ($linux && ($name =~ /^\initrd$/)) {      $initrd_found = 1;      ($initrd_addr, $initrd_offset, $initrd_size) = 	($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);    }  }  printf("Text section   - Address: 0x%08x, Size: 0x%08x\n",	 $text_addr, $text_size);  printf("Bss  section   - Address: 0x%08x, Size: 0x%08x\n",	 $bss_addr, $bss_size);  if ($linux) {    if ($image_found) {      printf("Image section  - Address: 0x%08x, Size: 0x%08x\n",	     $image_addr, $image_size);    }    if ($initrd_found) {      printf("Initrd section - Address: 0x%08x, Size: 0x%08x\n",	     $initrd_addr, $initrd_size);    }  }  #  # Open output file  #  open(BOOT, ">$ofile") || die "Cannot open output file";  #  # Compute image size  #  $output_size = $bss_offset - $text_offset + $bss_size;  if ($linux && $image_found) {    $output_size += $image_size;  }  if ($linux && $initrd_found) {    $output_size += $initrd_size;  }  #   # Compute size with header   #  $header = pack("H8N7", "0052504f", 0, 0, 0, 0, 0, 0, 0);  $num_blocks = ($output_size + length($header) + 511) / 512;  #  # Write IBM PowerPC evaluation board boot_block_t header  #  $header = pack("H8N7", "0052504f", $text_addr, $num_blocks, 0,                 $text_addr, 0, 0, 0);  $bytes = length($header);    if (($resid = syswrite(BOOT, $header, $bytes)) != $bytes) {    die("Could not write boot image header to output file.");  }  printf("Entry point = 0x%08x\n", $text_addr);  printf("Image size  = 0x%08x (%d bytes) (%d blocks).\n", 	 $output_size, $output_size, $num_blocks);  #  # Write image starting after ELF and program headers and   # continuing to beginning of bss  #  $bytes = $bss_offset - $text_offset + $bss_size;  if (($resid = syswrite(BOOT, $ibuf, $bytes, $text_offset)) != $bytes) {    die("Could not write boot image to output file.\n");  }  #  # If configured, write out the image and initrd sections as well  #  if ($linux) {    if ($image_found) {      $bytes = $image_size;      if (($resid = syswrite(BOOT, $ibuf, $bytes, $image_offset)) != $bytes) {	die("Could not write boot image to output file.\n");      }    }    if ($initrd_found) {      $bytes = $initrd_size;      if (($resid = syswrite(BOOT, $ibuf, $bytes, $initrd_offset)) != $bytes) {	die("Could not write boot image to output file.\n");      }    }  }  #  # Pad to a multiple of 512 bytes  #  If the (size of the boot image mod 512) is between 509 and 511 bytes  #  then the tftp to the Walnut fails.  This may be fixed in more recent  #  Walnut bootrom.  #  $pad_size = 512 - ((length($header) + $output_size) % 512);  if ($pad_size == 512) {    $pad_size = 0;  }  if ($pad_size != 0) {      if ($verbose) {      print("Padding boot image by an additional $pad_size bytes.\n");    }    $pad_string = pack("H8","deadbeef") x 128;    syswrite(BOOT, $pad_string, $pad_size) or      die "Could not pad boot image in output file.\n";  }  #   # Compute 32 bit checksum over entire file.  #  if ($do_checksum) {    close(BOOT);    open(BOOT, "+<$ofile") || die "Cannot open output file";    undef $/;    $temp = unpack("%32N*", <BOOT>);    # Solaris and PPC Linux return 0x80000000 for "-$temp" when $temp    # is negative.  "~($temp - 1)" negates $temp properly.    $csum = ~($temp - 1);    printf("Checksum    = 0x%08x\r\n", $csum);    #    # Rewrite IBM PowerPC evaluation board boot_block_t header,    # this time with the checksum included    #    $header = pack("H8N7", "0052504f", $text_addr, $num_blocks, 0,                    $text_addr, $csum, 0, 0);    seek(BOOT, 0, 0);    syswrite(BOOT, $header, length($header)) or         die("Could not write boot image header to output file.");  }  #  # Clean-up and leave  #  close(BOOT);  print("\nBoot image file \"$ofile\" built successfully.\n\n");  exit(0);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品成人一区二区三区四区| 极品少妇xxxx偷拍精品少妇| 日韩精品资源二区在线| 国产精品午夜电影| 国产亚洲精品精华液| 国产精品系列在线| 亚洲免费观看高清完整| 亚洲欧美日韩小说| 日韩电影网1区2区| 国产一区二区精品久久99| 国产精品77777| 国产精品视频一区二区三区不卡| 国产91对白在线观看九色| 久久综合久久综合久久综合| 激情五月激情综合网| 99精品欧美一区二区三区小说| 亚洲日本护士毛茸茸| 午夜欧美电影在线观看| 国产精品综合二区| 欧美午夜一区二区| 精品国产乱码久久久久久1区2区 | 制服丝袜亚洲网站| 精品国产青草久久久久福利| 中文在线一区二区| 日本不卡一区二区三区高清视频| 久久久www成人免费无遮挡大片| 成a人片国产精品| 久久久亚洲午夜电影| 欧美aaaaa成人免费观看视频| 午夜精品久久久久久不卡8050| 黄网站免费久久| 丝瓜av网站精品一区二区 | 精品国产一区二区三区不卡| 亚洲欧美日韩在线不卡| 国产高清精品久久久久| 精品视频1区2区3区| 亚洲人成亚洲人成在线观看图片 | 欧美性猛交xxxx乱大交退制版 | 另类欧美日韩国产在线| 欧美视频一区二区三区在线观看| 国产精品一级黄| 久久蜜桃av一区精品变态类天堂| 91精品国产黑色紧身裤美女| 欧美日韩二区三区| 久久国产尿小便嘘嘘尿| 精品乱码亚洲一区二区不卡| 韩国v欧美v日本v亚洲v| 91视频免费播放| 亚洲 欧美综合在线网络| 欧美在线一二三| 六月婷婷色综合| 尤物在线观看一区| 日韩一区二区三区电影在线观看| 久久麻豆一区二区| 一区二区三区四区亚洲| 欧美mv和日韩mv的网站| 99在线精品视频| 麻豆精品视频在线| 一区二区三区四区精品在线视频| 视频一区二区欧美| 国产精品久久久久影院老司| 欧美顶级少妇做爰| 色呦呦网站一区| 北岛玲一区二区三区四区| 日韩国产精品大片| 亚洲黄色av一区| 亚洲国产高清在线观看视频| 日韩欧美的一区二区| 欧美三级乱人伦电影| 色综合中文字幕国产| 成人综合婷婷国产精品久久免费| 欧美一区二区三区视频在线| av综合在线播放| 91国产精品成人| 91国偷自产一区二区三区成为亚洲经典| 国产三级久久久| 国产欧美精品一区aⅴ影院| 91麻豆精品国产自产在线 | 色综合久久88色综合天天| 国产精品1区二区.| 成人综合在线观看| 成人国产一区二区三区精品| 国产99久久久久久免费看农村| 久久亚洲综合色| 国产精品国模大尺度视频| 亚洲人成亚洲人成在线观看图片| 欧洲精品一区二区| 欧美一区二区国产| 国产欧美日韩精品a在线观看| 精品国产乱码久久久久久久久| 日本一区二区三级电影在线观看 | 美国一区二区三区在线播放| 久久91精品久久久久久秒播| 国产亚洲欧美中文| 亚洲激情成人在线| 国内外精品视频| 欧美日韩色一区| 成人免费一区二区三区视频 | 国产精一区二区三区| 精品视频一区二区三区免费| 欧美激情一区二区三区蜜桃视频| 欧美三级一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 91成人免费在线视频| 国产午夜精品一区二区| 日韩一区二区免费在线电影| 在线观看亚洲a| 亚洲欧洲av一区二区三区久久| 精品乱人伦小说| 亚洲h动漫在线| 欧美精品1区2区3区| 亚洲一区二三区| 欧美男男青年gay1069videost| 色哟哟日韩精品| 一区二区欧美在线观看| 色综合网色综合| 性感美女久久精品| 欧美肥妇free| 成人开心网精品视频| 91视视频在线直接观看在线看网页在线看| 久久91精品国产91久久小草| 精品国内片67194| 成人高清伦理免费影院在线观看| 成人污视频在线观看| 成人av资源站| 精品视频在线免费观看| 国产综合色精品一区二区三区| 国产91精品露脸国语对白| 99精品国产视频| 日本伊人精品一区二区三区观看方式| 日本亚洲欧美天堂免费| 国产精品蜜臀av| 日韩欧美久久一区| 97精品久久久久中文字幕| 蜜桃视频在线观看一区| 中文字幕在线不卡一区二区三区| 一区二区三区蜜桃网| 精品福利av导航| 欧美老肥妇做.爰bbww视频| 国产精品系列在线| 国产美女久久久久| 日韩精品专区在线影院观看| 成人av免费观看| 国产精品一区二区男女羞羞无遮挡 | 成人视屏免费看| 婷婷久久综合九色国产成人| 综合网在线视频| 最近中文字幕一区二区三区| 久久久久国产精品厨房| 精品99一区二区三区| 亚洲精品一区二区三区99| 日韩视频国产视频| 久久久久久**毛片大全| 精品国产一区久久| 精品一区二区三区av| 蜜臂av日日欢夜夜爽一区| 久久国产综合精品| caoporm超碰国产精品| 国产精品热久久久久夜色精品三区| 欧美丝袜丝交足nylons| 色综合天天综合网国产成人综合天 | av在线播放成人| 91欧美激情一区二区三区成人| 亚洲女厕所小便bbb| 一区二区三区四区视频精品免费| 欧美色手机在线观看| 91精品国产91久久久久久一区二区| 日本vs亚洲vs韩国一区三区二区 | 国产拍揄自揄精品视频麻豆| 国产高清无密码一区二区三区| 国产精品水嫩水嫩| 毛片av一区二区| 亚洲国产aⅴ成人精品无吗| 日本免费在线视频不卡一不卡二| 久久久91精品国产一区二区精品| 成人av在线播放网址| 精品视频1区2区| 久久久久久99久久久精品网站| 在线一区二区视频| 中文字幕免费不卡在线| 青青草原综合久久大伊人精品| 亚洲日本电影在线| 国产视频一区二区三区在线观看| 欧美老人xxxx18| 亚洲福利视频一区二区| 99热在这里有精品免费| 欧美国产一区二区在线观看| 麻豆精品新av中文字幕| 91精品国产乱| 欧美一级夜夜爽| 蜜桃av一区二区| 欧美成人伊人久久综合网| 日韩中文字幕亚洲一区二区va在线| 亚洲精品免费在线观看| 92国产精品观看| 一区二区高清在线| 亚洲资源中文字幕| 色一区在线观看| 日韩二区三区四区| 欧美极品美女视频|