首页 > 编程知识 正文

uboot查看分区信息(uboot源码分析)

时间:2023-05-05 07:33:22 阅读:74391 作者:2228

# include stdio.h # include unistd.h # includesys/types.h # include stat.h # include errno.h errno define ih _ magic0x 27051956/* image magic number */# define ih _ arch _ arm2define ih _ type _ kernel2# define ih _ comp 类型def unsigned short uint 16 _ t; 类型def unsigned int uint 32 _ t; 类型化无符号化char int8u; 类型def unsigned int int 32 u; typedef int INT32;/* * legacy格式图像头,* alldatainnetworkbyteorder (akanaturalakabigendian ).*/typedefstructimage_header ) uii/* imageheadercchecksum */uint 32 _ tih _ time;/* imagecreationtimestamp */uint 32 _ tih _ size;/* image datasize */uint 32 _ tih _ load;/* dataloadaddress */uint 32 _ tih _ EP;/*输入点地址*/uint 32 _ tih _ dcrc;/* imagedatacrcchecksum */uint8_ tih _ OS;/*操作系统*/uint8_ tih _ arch;/* CPU体系结构*/uint8_ tih _ type; /* Image Type*/uint8_tih_comp;/*压缩类型*/uint8_ tih _ name [ ih _ nm len ]; /* Image Name*/} image_header_t; staticconstunsignedintcrc _ table [ 256 ]={0x 000000 l,0x77073096L,0xee0e612cL,0x990951baL,0x076dc419L,0x 706 af 480x97d2d988L,0x09b64c2bL,0x7eb17cbdL,0xe7b82d07L,0x90bf1d91L,0x1db71064L,0xe7b82d07L,0x90bf1d91L,0x1db 71064 l0x 810xf4d4b551L,0x83d385c7L,0x136c9856L,0x646ba8c0L,0xfd62f97aL,0x8a65c9ecL,0x646ba8c0L,0xfd62F62F97L,0x8a65c9ecL0x4c69105eL,0xd56041e4L,0xa2677172L,0x3c03e4d1L,0x4b04d447L,0xd20d85fdL,0xd20d85fdL0x42b2986cL,0xdbbbc9d6L,0 xabc0xdcd60dcfL,0xabd13d59L,0x26d930acL,0x51de003aL0x21b4f4b5L,0x56b3c423L,0xcfba9599L,0xb8bda50fL,0x 220 x0xb10be924L,0x2f6f7c87L,0xc60cd9b2L,0xb10be924L,0x2f6f7c87L,00xb6662d3dL,0x76dc4190L,0x01db7106L,0x98d220bcL,0x98d0x9fbfe4a5L,0xe808b88d433L,0x06b6b51fL,0x9fbfe4a5L,0xe8b8d433L0x9609a88eL,0xe10e9818L,0x7f6a0dbbL,0x086d3d2dL,0x e, 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, 0x2d02ef8dL};/* ========================================================================= */#define DO1(buf) crc = crc_table[((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8);#define DO2(buf) DO1(buf); DO1(buf);#define DO4(buf) DO2(buf); DO2(buf);#define DO8(buf) DO4(buf); DO4(buf);/* ========================================================================= */unsigned int crc32 (unsigned int crc, const unsigned char *buf, int len){ crc = crc ^ 0xffffffffL; while (len >= 8) { DO8(buf); len -= 8; } if (len) do { DO1(buf); } while (--len); return crc ^ 0xffffffffL;}INT8U CheckSum(const INT8U *pbuf, INT32 len){INT8U sum;INT32 i;sum = 0;for(i=0; i<len; i++){sum += pbuf[i];}return sum;}static int calc_img_crc(const char *in_file, unsigned int *img_crc){int fd;int nread;int ret;unsigned char buf[BUFSIZE];unsigned char crc = 0; fd = open(in_file, O_RDONLY);if (fd < 0) {*img_crc = 0xffffffff;printf("%d:open %s.n", __LINE__, strerror(errno));return -1;}while ((nread = read(fd, buf, BUFSIZE)) > 0) {//crc = crc32(crc, buf, nread);crc += CheckSum(buf, nread);}printf("crc =========111========= 0x%x rn",crc);*img_crc = crc;close(fd);if (nread < 0) {*img_crc = 0xffffffff;printf("%d:read %s.n", __LINE__, strerror(errno));return -1;}return 0;}#define SRC_UBOOT_NAME "u-boot.bin"int main(int argc, char *argv简单的长颈鹿){int fd;int sum;unsigned char buf[100];fd = open(SRC_UBOOT_NAME, O_RDONLY);if (fd < 0) {printf(":open fail.n");return -1;}read(fd, buf, 100);close(fd);printf("buf[74]==0x%x,buf[73]==0x%x,buf[72]==0x%xrn",buf[74]&0x0f,buf[73],buf[72]);sum = (buf[74]&0x0f)*256*256+buf[73]*256+buf[72];printf("sum ============= %drn",sum);calc_img_crc(SRC_UBOOT_NAME, &sum);return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。