C AT91引导程序+;裸金属应用
我目前正试图了解AT91和裸机应用程序如何协同工作。我将试着描述我所拥有的:C AT91引导程序+;裸金属应用,c,bare-metal,C,Bare Metal,我目前正试图了解AT91和裸机应用程序如何协同工作。我将试着描述我所拥有的: IAR作为开发环境 一个简单的应用程序,我可以通过调试器下载到SRAM,并切换一些LED(工作!) 使用SAM-BA,我可以将此应用程序写入SRAM,它将正确启动(LED正在切换) 我的硬件平台是ATSAMA5D3x EK 现在,我希望这个应用程序首先运行AT91引导程序来初始化所有底层硬件(如DDR-RAM),然后跳转到我的应用程序并运行它。我还没能成功地做到这一点。虽然我能够启动预构建的uboot二进制文件,但
- IAR作为开发环境
- 一个简单的应用程序,我可以通过调试器下载到SRAM,并切换一些LED(工作!)
- 使用SAM-BA,我可以将此应用程序写入SRAM,它将正确启动(LED正在切换)
- 我的硬件平台是ATSAMA5D3x EK
- AT91初始化硬件并跳转到我的应用程序后会发生什么
- 我是否需要以某种特定的方式设置我的应用程序?我是否需要告诉链接器或任何其他组件它将被重新定位到其他内存位置(at91引导将其复制到0x26000000,而0x2000 0000是DDR的起始地址)
- 有谁知道一个很好的教程能准确地解释这一步(从at91引导到我的应用程序的跳转)
- 可以安全地假设,我不需要在应用程序开始时执行board_startup.s中的指令,这些指令启用浮点单元、设置sys堆栈指针等等。我想说的是,硬件本身已经由AT91引导设置,因此不需要这样的设置
- 告诉链接器它应该将main链接到地址0x0(因为这是引导程序将跳转到的地方)有意义吗?我该怎么做