niko 发表于 2015-7-27 18:53:08

OK210 uboot启动时bl2如何copy?

文档上说明,如下固件函数可将SD卡中内容copy到mem中。我怎么试,都不对,copy过来的内容不正确,请大侠们指导一下。
/**
* This Function copy MMC(MoviNAND/iNand) Card Data to memory.
* Always use EPLL source clock.
* This function works at 20Mhz.
* @param u32 StartBlkAddress : Source card(MoviNAND/iNand MMC)) Address.(It must block address.)
* @param u16 blockSize : Number of blocks to copy.
* @param u32* memoryPtr : Buffer to copy from.
* @param bool with_init : determined card initialization.
* @return bool(u8) - Success or failure.
*/
#define CopySDMMCtoMem(z,a,b,c,e)(((bool(*)(int, unsigned int, unsigned short, unsigned int*, bool))(*((unsigned
int *)0xD0037F98)))(z,a,b,c,e))

我是这样copy的。
copy_sd_mmc_to_mem( channel, block_start_to_copy, blocks_to_copy, mem_addr - 0x10, 0);
其中,channel根据0xD0037488寄存器的值分别设成0或2。
block_start_to_copy的值为1,即从第二个block开始copy。
block_to_copy为1024,即copy 512KB。
mem_addr 为 0x2C800000,这个是TEXT_BASE。减0x10是为了将16bytes的头部去掉,免得影响代码段的位置。
最后的参数为0。我看别人的代码,这个值始终为0。

现在copy到内存中,内容不正确。无法跳转到内存中执行~~~求指导~~~
页: [1]
查看完整版本: OK210 uboot启动时bl2如何copy?