linux下如何指定函数从DDR跳转到指定内存(SRAM)中运行?

linux下如何指定函数从DDR跳转到指定内存(SRAM)中运行?,第1张

说下我的理解,仅供参考。SRAM和SDRAM应该是统一编址的,地址范围不一样,对应好运行地址应该就行。两种方式都需要指定code运行空间。1.函数指针实现的话,定义一个函数指针,将运行地址赋值给它,再执行就行了。2.指定运行地址要看具体使用的链接器,gcc的话应该就是.lds,执行前需要先搬运,搬运方式就是memcpy。

一种是NAND FLASH,在FLASH的最开始的4K是引导区的程序,单片机把它读出来,放在SRAM中运行,其作用是把后面FLASH中真正的应用程序复制到SRAM中,复制完后,将程序指针改到SRAM中应用程序头上去,这样就从你的应用程序开始运行了。就是一般的FLASH接口读写。

还有一种NOR FLASH,上电后就直接在FLASH中运行了。

按照ARM启动流程 *** 作 。

编写代码

一、2440:一上电,就从Nand中取出4KB的代码到SRAM中stepping stone运行,并对内存进行初始化。而后将Nand中代码全部复制到内存中。

6410:一上电,SROM中的BL0会将Nand中8KB的代码搬移到SRAM中stepping stone运行,并对内存进行初始化。而后将Nand中代码全部复制到内存中,剩余代码会在内存中运行。

210:一上电,SROM中的BL0会将Nand中代码复制到IRAM中运行,初始化内存。而后将Nand中全部代码搬移到内存中。

如果后面也指定了地址,那么将链接脚本中的地址和后面指定的地址加起来作为地址,所以一般链接脚本里的地址都指定0。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8119804.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存