⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipl_startup2.c

📁 i.mx31 3DS平台Nandboot引导程序源码
💻 C
字号:
#include <string.h>void *memcpy(void *dest, const void *src, size_t n);typedef unsigned short u16;typedef unsigned int u32;typedef unsigned char u8;/* These variable come from linker */extern u32 __end_ipl_startup; extern u32 __start_ipl_main; extern u32 __end_ipl_main;extern u32 main(void);//#define IPL_DEBUG#ifdef IPL_DEBUG/* Debug before serial is available *//* Debug message buffer */u32     *dbg = (u32 *)0x80010000;       #define DBG(_msg, _param)       \        *dbg++ = (u32)_msg;    \        *dbg++ = (u32)_param;#else#define DBG(_msg, _param)  do {} while(0)#endifu32 copy_jump_main(){        volatile u16     *src;        volatile u16     *dst;        u32     len;        u32     (*fptr)(void);        u32     ret;        volatile int tmp;        src = (u16 *)&__end_ipl_startup;        dst = (u16 *)&__start_ipl_main;        len = (&__end_ipl_main - &__start_ipl_main) * 2;        DBG(1, src);        DBG(2, dst);        DBG(3, &__end_ipl_main);        DBG(4, len);       while (len-- > 0)        {                *dst++ = *src++;        }         asm("ldr r1, =main");        asm("blx r1");        /* Should never return here! */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -