如何把程序调到内存中执行?

Nisj 2003-08-20 06:17:49
我的程序是在Flash上直接运行的,flash只有一片,并且不能同时读写.也就是说不可能在程序跑起来以后再存储任何的数据到flash上了.但是项目要求能够存数据.所以就想能把写Flash的函数调到内存中去运行,运行完以后再回到原来的地方(!),但是现在这方面的知识差很多,希望大侠能指点一下.另外能否指点一些资料看?
...全文
66 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinabird 2003-09-01
  • 打赏
  • 举报
回复
很简单,在ram里面划出一个数据段,在这个数据段中定义诸如
flash_sector_erase label far
db 1024 dup(0)
的label。然后把你的flash操作程序从flash中拷过去,你的flash
操作程序不要写成子程序的模式,要写成Flash_Write_start:的样式,
最后以retf返回。

以上基于你的程序全用汇编的基础上。我用这样的方法写过sst的,没问题。
vinx 2003-08-23
  • 打赏
  • 举报
回复
你可以去看GNU的帮助文档,上面有详细的介绍,主要看ld部分的内容
itisajoke 2003-08-22
  • 打赏
  • 举报
回复
你知不知道BOOTLOADER这个东东啊,它就是先将自己拷贝到SDRAM中,在运行自己,从PC上下载系统数据在写到FLASH中的。
Nisj 2003-08-21
  • 打赏
  • 举报
回复
是啊,这方面懂得太少,真诚希望能够多知道一些.
hansin 2003-08-21
  • 打赏
  • 举报
回复
楼上能否详细点啊,lds脚本和启动程序应如何写?多谢先。
vinx 2003-08-20
  • 打赏
  • 举报
回复
呵呵,用gcc的ld工作进行连接,要自己写一个lds脚本,在脚本里把,data段的读取地址映射flash的地址中,实际地址映射ram中,然后写一个启动程序把data段copy到ram中就可以了,.bss段直接映射到ram就可以了

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧