8100|9

15

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

LPC1788应用程序想在SDRAM中运行,中断向量表该如何处理。 [复制链接]

开发一个使用LPC1788的项目,自己弄一个简单的Bootloader通过串口下载程序在外部flash芯片存储,运行时想拷贝到SDRAM中执行,但是1788有一个寄存器VTOR只指定中断向量表的位置的,只能指定在FLASH或是内部RAM,现在是程序是拷贝在内部RAM或是内部FLASH,通过Bootloader跳转都可以执行,但是拷贝到SDRAM中不能运行,想请教如何才能把整个应用程序拷贝到SDRAM中运行,应用程序的中断向量表该如何处理呢。
此帖出自NXP MCU论坛

最新回复

为什么看不到楼主的信息  详情 回复 发表于 2015-11-26 13:29
点赞 关注(1)
 

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
顶下,我也想知道,哥们 能把你的Bootloader分享下么
此帖出自NXP MCU论坛
 
 
 

回复

15

帖子

2

TA的资源

一粒金砂(中级)

板凳
 
已经解决了。
(1)、LPC1788支持中断向量在SRAM和FLASH中,想要在SDRAM运行时可以将中断向量放在SRAM中,例如0X10008000位置,将VTOR寄存器指向0X10008000,在BootLoader中复制APP程序的64*4个中断向量表到0X10008000中,具体函数可以参考LPC1788参考文档AN11333(InterruptDuringIAP_LPC177x_8x_407x_8x)。
(2)、设置MPU,具体参考LPC1788 用户手册第39章。
(3)、使用跳转到VTOR处即可。
此帖出自NXP MCU论坛
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

4
 
在sdram中跑你完全可以不用整个应用都跑到sdram下的,可以部分在sram或在flash上,分散加载,因为sdram的效率不高,在1788这种没有cache的mcu上面,整个在sdram跑效果并不好。而且默认sdram是没有执行程序的权限的,你需要配置mpu才行。
此帖出自NXP MCU论坛

点评

嗯嗯,现在已经完全明白了,你说的很对!  详情 回复 发表于 2015-1-12 21:11
 
 
 

回复

15

帖子

2

TA的资源

一粒金砂(中级)

5
 
nongxiaoming 发表于 2014-10-18 14:25
在sdram中跑你完全可以不用整个应用都跑到sdram下的,可以部分在sram或在flash上,分散加载,因为sdram的效率不高,在1788这种没有cache的mcu上面,整个在sdram跑效果并不好。而且默认sdram是没有执行程序的权限的,你需要配置mpu才行。


嗯嗯,现在已经完全明白了,你说的很对!
此帖出自NXP MCU论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(初级)

6
 
此帖出自NXP MCU论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

7
 
LZ,我目前也在做,跳转到SDRAM运行的,芯片是LPC1788,程序可以运行,但是一加入中断的话,无法进入中断,您遇到这种情况了吗?为什么中断无法进入啊?
中断向量表我是这样写的:(中断向量表想映射到SRAM里,原因是由于只支持1G空间的映射)
volatile u8 int_vector_table[64] __attribute__((at(0x10000000)));
void init_interrupt_controller(void)
{
volatile const u8 *org_table = (u8*)0xA0000000;
int i;

for(i=0;i<1024;i++)
{
int_vector_table[i]=org_table[i];
}
}
init_interrupt_controller();
SCB->VTOR = 0x10000000;
此帖出自NXP MCU论坛

点评

你可以把中断向量表放在内部RAM后面的位置试试看。可能前面部分被占用了。具体不太记得了。 #define APPADR 0xA0000000 // SDRAM volatile uint32_t int_vector_table[64] __attribute__( ( at( 0x1000FE00  详情 回复 发表于 2015-12-3 17:19
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

8
 
为什么看不到楼主的信息
此帖出自NXP MCU论坛

点评

有什么问题吗?  详情 回复 发表于 2015-12-3 17:08
 
 
 

回复

15

帖子

2

TA的资源

一粒金砂(中级)

9
 
zsz2008610 发表于 2015-11-26 13:29
为什么看不到楼主的信息

有什么问题吗?
此帖出自NXP MCU论坛
 
 
 

回复

15

帖子

2

TA的资源

一粒金砂(中级)

10
 
yy5223536 发表于 2015-11-9 13:52
LZ,我目前也在做,跳转到SDRAM运行的,芯片是LPC1788,程序可以运行,但是一加入中断的话,无法进入中断, ...

你可以把中断向量表放在内部RAM后面的位置试试看。可能前面部分被占用了。具体不太记得了。
#define         APPADR                                        0xA0000000                // SDRAM
volatile uint32_t int_vector_table[64] __attribute__( ( at( 0x1000FE00 ) ) );
void JumpToSDRAM( void )
{
        uint32_t i;
  volatile uint32_t *org_table;
  org_table = ( uint32_t* )APPADR;
        for( i = 0;i < 64;i++ )
        {
                int_vector_table = org_table;
        }
        SCB->VTOR = 0x1000FE00 & 0x1FFFFF80;
        __DMB();                // 确保跳转之后使用新的中断向量表
        BootJump( 0x1000FE00 );
}       
此帖出自NXP MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表