分类:
2008-05-07 15:12:28
看了bob2004的ppt,同时做了下试验,稍微能理解点了
http://blog.chinaunix.net/u/22617/showart_322222.html
switch (hdr->ih_comp) {
case IH_COMP_NONE: // -C none
if(ntohl(hdr->ih_load) == addr) { //不搬运
printf (“ XIP %s ... ”, name);//注意屏幕信息
} else {
memmove ((void *) ntohl(hdr->ih_load), (uchar *)data, len); //搬运:这里data指向实际的kernel ,把kernel搬运到hdr->ih_load处,这个值就是mkimage –d 0x30008000
}
1. mkimage -a 0x00008000 -e 0x00008000
ih_load地址为kernel启动地址,所以tftp必须下载到其他无关地址,bootm才会执行memmove程序搬运,将addr+40的数据搬运到ih_load处 即-e的指定入口
2.mkimage -a 0x00008000 -e 0x00008040
因为指定入口为当前镜像的0x40偏移处,则直接下载到-a地址即可,不需要搬移