这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 如何将ARM内部Flash中的程序搬运到外部RAM运行?

共5条 1/1 1 跳转至

如何将ARM内部Flash中的程序搬运到外部RAM运行?

菜鸟
2005-11-29 01:11:57     打赏
小弟最近做一个项目,用的是Philips的LPC2292,由于代码比较庞大,ARM内的Flash资源有限,想考虑如何在上电的时候将程序从内部的Flash拷贝的外部的RAM,使它在外部RAM运行,这样子外部RAM配置大一点,就不会出什么问题。 由于对ARM启动方面的知识了解有限,想和各位大虾讨论一下怎么实现。不知道单在编译器ADS中将生成代码的地址修改一下是否就可以了?中断向量(或boot loader)需不需要重新映射到外部RAM。 谢谢!



关键词: 如何     内部     Flash     中的     程序     运到     外部         

菜鸟
2005-11-30 04:04:00     打赏
2楼
谢谢!我大概看了一下,感觉需要了解的内容很多,再慢慢琢磨琢磨。也看了您写的关于bootloader的文章,很精辟,以后不懂得地方还望不吝赐教!

菜鸟
2005-11-30 06:20:00     打赏
3楼
twentyone大侠,看了您写的bootloader的文章,有些疑惑,希望赐教。 我想问一下,为什么要把BootLoader也复制到SDRAM中,直接运行在Flash中,把内核搬到0x800000不可以吗?还有,您的内核是直接用ADS编译的吗?这样编译后代码中还包含有BootLoader的信息吗?这样跳到0x800000中执行是不是又会执行BootLoader,这样不就陷入一种循环了吗?这些问题可能比较傻,见笑:)

菜鸟
2005-11-30 19:53:00     打赏
4楼
谢谢twentyone大侠,明白您的意思了。 我现在考虑的比较简单,只是想做一个简单的搬运,可以不用操作系统,只是一些初始化程序和用户程序,用的是Windows下的ADS编译器,编译出来是一个整体,然后用JTAG下载到ARM内部的Flash当中,因为Flash的地址是从0x00000000开始的,所以上电后完成硬件时钟、中断等初始化程序后切换到main()就可以运行了。这样子在编译好的映像文件中好像区分不出来那些是初始化程序,那些是用户程序main()了,这样子的简单操作是不是不能实现搬运呀? 还有,您的Linux编译器编译后ARM可以执行吗?是不是只要编译成二进制文件,ARM就能执行,还是必需是针对特定ARM的编译器编译。 对您在百忙之中的回复深表感谢!!!

菜鸟
2005-12-02 04:01:00     打赏
5楼
万分感谢twentyone大侠的解答。 学到了许多东西!

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]