vxworks 压缩型BOOT的romStart分析:
binArrayStart:压缩的二进制image的起始地址
binArrayEnd:压缩的二进制image的结束地址
压缩的二进制image中没有romInit.o和bootInit.o
将ROM_OFFSET(binArrayStart)开始解压RAM_DST_ADRS地址,即RAM_HIGH_ADRS地址,
然后直接跳转到usrInit().
下面这段拷贝,具体含义是:
/*
* copy text to uncached locations to avoid problems with
* copy back caches
* copy the entire data segment because there is no way to ensure that
* binArray is the last thing in the data segment because of GP relative
* addressing
*/
知道可以说一下!呵呵
((FUNCPTR)ROM_OFFSET(copyLongs)) (ROM_TEXT_ADRS, (UINT)romInit,
((UINT)binArrayStart - (UINT)romInit)/ sizeof (long));
((FUNCPTR)ROM_OFFSET(copyLongs))
((UINT *)((UINT)ROM_TEXT_ADRS + ((UINT)BINARRAYEND_ROUNDOFF -
(UINT)romInit)), (UINT *)BINARRAYEND_ROUNDOFF,
((UINT)wrs_kernel_data_end - (UINT)binArrayEnd) / sizeof (long));