AnsweredAssumed Answered

rt1052 数据对齐和非对齐访问

Question asked by 彦成 曹 on Jan 3, 2020
Latest reply on Jan 3, 2020 by jeremyzhou

最近在调试rt1052,遇到最多的问题就是关于数据对齐访问的问题,下面来说一下实际中遇到的两个问题:

   问题1:M7系统控制块中的 Configuration and control register 的位UNALIGN_TRP设置与否都不能访问非对齐的数据,只要访问就出硬件故障,测试方式如下:定义了一个结构体如

struct test_s{

char a;

char b;

char c;

int d;

}test_t;

在mcu启动时我获取了Configuration and control register的值,为UNALIGN_TRP为0.按照M7手册的定义也就是说现在是支持非对齐访问的。但是我在给test.d赋值的时候就直接进入了硬件故障。UNALIGN_TRP设置为1时,情况也一样。求解释!

 

问题2:定义了一个结构体和字符串指针如下,

struct test_s{
   char a;
   char b;
   char c;
   char d[6];
}test_t;

char *e = "asdfgh";

我要将字符串使用memcpy拷贝到结构体的数组元素d中,结果是直接进入硬件中断,而如果我调整结构体如下:

struct test_s{
   char d[6];  

    char a;
   char b;
   char c;
}test_t;

memcpy是成功的,单对于memcpy来说它内部本就是将地址强转(char*)为对单字节的访问,再进行操作,按理不应该进入硬件故障,不知哪里有坑,请路过的大神赐教。谢谢

 

 



Outcomes