经过细测,Cortex-M3的double类型必须4字节对齐访问,其他诸如float,int,short 可以非对齐访问。否则将会产生硬件异常!即访问double类型地址必须能被4整除,测试代码如下:

/* 测试Cortex-M3类型对齐访问
 * i,j,k,l控制对齐长度,对齐
 * 长度不符合是将产生HardFault
 * 异常
 */
double *p;
float  *q;
int    *t;
short  *r;
char buf[32] __attribute__((at(0X20002000)));
  11:  
void)
  13: {
int i, j, k, l;
  15:     i = 0;
  16:     j = 0;
  17:     k = 0;
  18:     l = 0;
while(1)
  20:      {
double *)(0x20000000 + i);
  22:         *p = 890.0;
//double 地址增量,只能是4的整数倍
  24:         
float *)(0x20001000 + j); 
  26:         *q = 890.0; 
//float 地址增量
  28:         
int   *)(0x20002000 + k);
  30:         *t = 890;
//int 地址增量 
  32:         
short *)(0x20003000 + l);
  34:         *r = 890; 
//short 地址增量 
  36:     
  37:   }
return 0;
  39:     
  40: }
  41:  
  42:  
  43:  
  44:  

相关文章:

  • 2022-12-23
  • 2021-11-16
  • 2022-12-23
  • 2021-08-26
  • 2021-07-28
  • 2022-12-23
  • 2022-12-23
  • 2021-08-06
猜你喜欢
  • 2022-12-23
  • 2021-09-30
  • 2021-12-28
  • 2021-07-29
  • 2021-09-22
  • 2022-12-23
相关资源
相似解决方案