引导程序或uboot如何加载应用程序以运行

时间:2018-11-15 01:13:49

标签: linux assembly ram bootloader

Mini2440或S3C2440 ARM9板具有ARM处理器,当从NOR闪存启动时,它可以直接从NOR闪存运行,这会加载一个名为“ super vivi”的小型启动加载程序,并提供“下载并运行”选项。 / p>

我试图编译一个Flash LED C程序和相关的汇编代码以加载C main函数。

编译后,我创建了一个bin文件,并将其加载到supervivi。

链接脚本为:

ENTRY(_start)
SECTIONS
{
   . = 0x30000000;
   /* code and constants */
   .text :{
      *(.text)
   }  
   . = ALIGN(32);
   .data :{
      *(.data)
   }
   . = ALIGN(32);
   .bss :{
      *(.bss)
   }
}

我的问题是如何分配内存,supervivi(bootloader)从0x0000000开始,我的LED闪存程序从0x30000000开始,这是正确的吗?

supervivi将具有一些数据或堆栈,它们位于何处?

如果我的链接脚本从“。= 0x30000000;”更改为到“。= 0x0;”,会发生什么?

我的应用程序能否读取NAND闪存并将其复制到RAM,例如从内核存储位置0x60000读取,并从RAM运行内核?如果可以,应该在哪里使用RAM位置?

抱歉,有太多问题,我想它们是相关的。

0 个答案:

没有答案