u-boot命令内核浅析.doc

u-boot命令内核浅析.doc

ID:52724080

大小:84.00 KB

页数:10页

时间:2020-03-30

u-boot命令内核浅析.doc_第1页
u-boot命令内核浅析.doc_第2页
u-boot命令内核浅析.doc_第3页
u-boot命令内核浅析.doc_第4页
u-boot命令内核浅析.doc_第5页
资源描述:

《u-boot命令内核浅析.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、u-bootbootm命令浅析bootm命令浅析与boom命令实现有关的源文件主要为common/cmdbootm.c和libarm/armlinux.co卜而就这两个文件屮的关键代码段进行分析。common/cmdbootm.c(前面数字为SourceInsight中显示的行号):168if(argc<2){addr=loadaddr;}else{addr=simplestrtoul(argv[l],NULL,16);}判断运行hstni时是否指定了程序加载地址,若没有则使用默认的加载地址,loadaddr在cmdbootm.c

2、中是这样定义的:ulongloadaddr=CFGLOADADDR;183memmove(&header,(char*)addr,sizeof(imageheadert));将使用uboot.工具mkimage添加到映彖文件头部的64字节提取到image_headert结构变量header中。185if(ntohl(hclr->ihmagic)!=THMAGIC){#ifdef1386if(fakeheader(hdr,(void*)addr,-1)!=NULL){addr一二sizeof(imageheadert);verify

3、二0;}else#endif{puts("BadMagicNumberrT);SHOWBOOTPROGRESS(-1);return1;}}判断文件头屮的幻数是否为THMAGIC,所以如果不是u-boot镜像格式,会输岀提示信息”BadMagicNumber”204data二(ulong)&header;len二sizeof(imageheadert);checksum二ntohl(hdr->ihhere);hdr->ihhere=0;if(crc32(0,(uchar*)data,len)!=checksum){puts("B

4、adHeaderChecksum'rT);SHOWBOOTPROGRESS(-2);rcturn1;比对u-bootimage文件头的CRC32校验和。229data=addr+sizeof(imageheadert);len=ntohl(hdr->ihsize);if(verify){puts(”VerifyingChecksum...”);if(crc32(0,(uchar*)data,len)!=ntohl(hdr->ihdcrc))printf("BadDataCRC");SHOWBOOTPROGRESS(-3);re

5、turn1;}puts("0K");}比对u-bootimage数据部分的校验和。245#ifdefined(PPC)if(hdr->iharch!=IHCPUPPC)#elifdefined(ARM)if(hdr->iharch!=IHCPUARM)#else#errorUnknownCPUtype#endif这部条件编译指令检验检验imageheader屮的atch类型是否是否正确。275switch(hdr->ihtype){•••caseTHTYPEKERNEL:name="KernelImage";break;•••

6、default:printfC'WrongImageTypefor%sconunand'f:emdtp->name);SHOWBOOTPROGRESS(-5);return1;}判断image的类型,这里只列出TKernelImage类型的代码,直接break,switch(hdr-〉ihcomp){caseTHCOMPGZTP:if(gunzip((void*)ntohl(hdr->ihload),unclen,(uchar*)data,&len)!=0){puts("GUNZIPERROR-mustRESETboardtore

7、cover,3;SHOWBOOTPROGRESS(-6);doreset(cmdtp,flag,argc,argv);}break;default:if(iflag)enableinterruptsO;ptintf("Unimplementedcompressiontypehdr->ihcomp);SHOWBOOTPROGRESS(-7);return1;}puts("0K");这段代码比较重要,它根据image所采用的压缩类型,将image解压到hdr->ih_load指向的地址,这个ihload就是在mkimage屮的

8、-8选项指定的地址,这I、明白了,选项指定的是内核解压后的地址。412switch(hdr->ihos){default:caseIHOSLINUX:ttifdcfCONFIGSILENTCONSOLEfixupsilentIinux();#end

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。