AnsweredAssumed Answered

RT1050 DTCM 配置问题

Question asked by haifeng jin on Oct 22, 2018
Latest reply on Nov 11, 2018 by haifeng jin

hi  我在使用过程中把DTCM配置成了448K,配置成了如下模式

但是我定义了一个程序如下:

unsigned char gtx[1024*128];

typedef struct _tagtest
{
unsigned short pk_head;
unsigned char testtr[10];

}test_typedef,*p_test_def;

test_typedef testdata;

 

memset(gtx,0x00,sizeof(gtx));

memcpy(testdata.testtr,"0123456789",strlen("0123456789"));

 

系统使用ram我用gtx这个数组控制,只要配置超出128K,在执行这个memcpy的时候,就会进入错误中断,如果把总的内存控制在128K以内,就没有问题,非常奇怪的问题。

 

也许你们会说是字节对齐问题,但是,你们可以看下你们lwip移植的,都是字节对齐,这样你们复杂点的历程都没法用,我们写程序都要控制,非常受限制,还请你们看下,希望以后出的历程能够完善,不会有这么多的问题。

 

当然你们还会问我的ram配置大小有没有问题,我的配置如下,是没有问题的

 


ldr r0, = REG_IOMUXC_GPR16;
ldr r1,[r0];
bic r1,#BIT_GPR16_ITCM_EN
bic r1,#BIT_GPR16_DTCM_EN;
str r1,[r0];
dsb
ldr r1, = 0xAAAAAAA5;0x5AAFFAA5;
ldr r0, = REG_IOMUXC_GPR17;
str r1,[r0];
dsb
isb
ldr r0, = REG_IOMUXC_GPR16;
ldr r1,[r0];
orr r1,#BIT_GPR16_FLEX_RAM_BANK_CFG_SEL
str r1,[r0];
dsb
isb

ldr r0, = REG_IOMUXC_GPR14;
ldr r1, [r0]
bic r1,#MASK_GPR14_ITCM_SZ

bic r1,#MASK_GPR14_DTCM_SZ
orr r1,#(0xa << 20);
orr r1,#(0x0 << 16);
str r1,[r0];
dsb
ldr r0, = REG_IOMUXC_GPR16;
ldr r1,[r0];
orr r1,#BIT_GPR16_DTCM_EN;
str r1,[r0];
dsb
isb
;ldr r0, = REG_IOMUXC_GPR16;
;ldr r1,[r0];
;orr r1,#BIT_GPR16_ITCM_EN;
;str r1,[r0];
;dsb
;isb

Outcomes