Ejemplo n.º 1
0
void movi_uboot_copy(void)
{
    int i;

#ifdef CONFIG_EVT1
#ifdef CONFIG_CORTEXA5_ENABLE
    SDMMC_ReadBlocks(MOVI_UBOOT_POS, MOVI_UBOOT_BLKCNT, 0x40000000);
#endif
    SDMMC_ReadBlocks(MOVI_UBOOT_POS, MOVI_UBOOT_BLKCNT, CONFIG_PHY_UBOOT_BASE);

#ifdef CONFIG_TRUSTZONE
    for(i = 0; i < 100; i++)
    {
        *((u32*)(0x2028000)+i) = 0xBAADD00D;
    }
    SDMMC_ReadBlocks(MOVI_TZSW_POS, MOVI_TZSW_BLKCNT, CFG_FASTBOOT_TRANSFER_BUFFER);
    uboot_memcpy(TZSW_MEM_ADDR, CFG_FASTBOOT_TRANSFER_BUFFER, PART_SIZE_TZSW);
#endif
#else
    copy_sd_mmc_to_mem copy_uboot = (copy_sd_mmc_to_mem)(0x00002488);

    copy_uboot(MOVI_UBOOT_POS, MOVI_UBOOT_BLKCNT, CONFIG_PHY_UBOOT_BASE);
#ifdef CONFIG_TRUSTZONE
    copy_uboot(MOVI_TZSW_POS, MOVI_TZSW_BLKCNT, TZSW_MEM_ADDR);
#endif
#endif

#ifdef CONFIG_SECURE_BOOT
    if(Check_Signature( (SB20_CONTEXT *)SECURE_CONTEXT_BASE, (unsigned char*)CONFIG_PHY_UBOOT_BASE,
                        PART_SIZE_UBOOT-256, (unsigned char*)(CONFIG_PHY_UBOOT_BASE+PART_SIZE_UBOOT-256), 256 ) != 0) {
        while(1);
    }
#endif
}
Ejemplo n.º 2
0
void movi_uboot_copy(void)
{
#if defined(CONFIG_S5P6460)
	SDMMC_ReadBlocks(MOVI_UBOOT_POS, MOVI_UBOOT_BLKCNT, CONFIG_PHY_UBOOT_BASE);
#else
	copy_sd_mmc_to_mem copy_uboot = (copy_sd_mmc_to_mem)(COPY_MOVI_TO_MEM_FUNC);

	copy_uboot(MOVI_UBOOT_POS, MOVI_UBOOT_BLKCNT, CONFIG_PHY_UBOOT_BASE);
#endif
}
Ejemplo n.º 3
0
void movi_uboot_copy(void)
{
#ifdef CONFIG_RAM_TEST
	uboot_mem_test();
#endif

#ifdef CONFIG_CORTEXA5_ENABLE
	SDMMC_ReadBlocks(MOVI_UBOOT_POS, MOVI_UBOOT_BLKCNT, 0x40000000);
#endif
	SDMMC_ReadBlocks(MOVI_UBOOT_POS, MOVI_UBOOT_BLKCNT, CONFIG_PHY_UBOOT_BASE);

#ifdef CONFIG_SECURE_BOOT
	if (Check_Signature((SB20_CONTEXT *)SECURE_CONTEXT_BASE,
				(unsigned char*)CONFIG_PHY_UBOOT_BASE, PART_SIZE_UBOOT-256,
				(unsigned char*)(CONFIG_PHY_UBOOT_BASE+PART_SIZE_UBOOT-256), 256) != 0)
	{
		while(1);
	}
#endif
}
Ejemplo n.º 4
0
void copy_code_to_dram(void)
{
	//unsigned long ch;
	void (*user_bin)(void);
	//ch = *(volatile unsigned int *)(0xD0037488);//need modify

	// 函数指针
	//copy_sd_mmc_to_mem copy_bl2 = (copy_sd_mmc_to_mem) (*(unsigned int *) (0xD0037F98));
	//copy_bl2(0, 49, 32,(unsigned int *)0x23E00000, 0);

		// 49:源,代码位于扇区49,1 sector = 512 bytes
		// 32:长度,拷贝32 sector,即16K
		// 0x23E00000:目的,链接地址0x23E00000
	
	volatile unsigned long  count=0x100000;
	while(count>0){
		count--;}

	uart_asm_putc('C');
	uart_asm_putc('O');
	uart_asm_putc('P');
	uart_asm_putc('Y');
	uart_asm_putc('\r');
	uart_asm_putc('\n');
	
	SDMMC_ReadBlocks(49,32,(unsigned int *)0x43e00000);
	//uart_asm_putx("now copy OVER!!!!/n");

	uart_asm_putc('O');
	uart_asm_putc('V');
	uart_asm_putc('E');
	uart_asm_putc('R');
	uart_asm_putc('\r');
	uart_asm_putc('\n');


	unsigned int *p;
	int i;
	

	p = (unsigned int *) 0x43e00000;
	for (i = 0; i < 100; i++) {
	uart_asm_putx(*(p+i));
	uart_asm_putc(' ');
	}
	
	
	// 跳转到DRAM
    user_bin = (void *)0x43e00000;
    (*user_bin)();
}