历史上的今天
返回首页

历史上的今天

今天是:2024年12月25日(星期三)

正在发生

2019年12月25日 | stm32 cortext-M3 类型对齐问题【worldsing笔记】

2019-12-25 来源:eefocus

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


   1: /* 测试Cortex-M3类型对齐访问

   2:  * i,j,k,l控制对齐长度,对齐

   3:  * 长度不符合是将产生HardFault

   4:  * 异常

   5:  */

   6: double *p;

   7: float  *q;

   8: int    *t;

   9: short  *r;

  10: char buf[32] __attribute__((at(0X20002000)));

  11:  

  12: int main(void)

  13: {

  14:     int i, j, k, l;

  15:     i = 0;

  16:     j = 0;

  17:     k = 0;

  18:     l = 0;

  19:     while(1)

  20:      {

  21:         p =  (double *)(0x20000000 + i);

  22:         *p = 890.0;

  23:         i += 4;                         //double 地址增量,只能是4的整数倍

  24:         

  25:         q =  (float *)(0x20001000 + j); 

  26:         *q = 890.0; 

  27:         j += 1;                         //float 地址增量

  28:         

  29:         t =  (int   *)(0x20002000 + k);

  30:         *t = 890;

  31:         k += 1;                         //int 地址增量 

  32:         

  33:         r =  (short *)(0x20003000 + l);

  34:         *r = 890; 

  35:         l += 1;                         //short 地址增量 

  36:     

  37:   }

  38:     return 0;

  39:     

  40: }

  41:  

  42:  

  43:  

  44:  

 


测试环境:


软件:windows xp + Keil Mdk4.7


硬件:stm32f103vb



在程序中使用double类型指针时,容易产生硬件异常,所以,double指针指向的地址最好是被4整除,但的多文件的代码中ROM分配是编译器会做优化,造成double指针指向的地址非4字节对齐。


如:


   1: char tem[33];

   2:  

   3: char buf[65];

   4:  

   5: char ch;

   6:  

   7: double p;

   8:  

   9: p = (double *)buf;

  10:  

p = 0x20000000 + 33; 非4字节对齐,所以*p = 56.78;时会产生HardFault_Handler;



处理办法是:


1、用在Keil Mdk 中用,__attribute__((at(address))) 指定stm32 变量地址, 如char buf[56] __attribute__((at(0X20002000))) ; 指定buf在内存的地址为0X20002000;且是以4字节对齐;


2、在应用*p时对buf地址判断做偏移; 对多浪费3字节;


3、对链接脚本文件定位buf位置;

推荐阅读

史海拾趣

對餘科技(DIOFIT)公司的发展小趣事

DIOFIT公司一直秉持着品质至上的生产理念,注重产品质量和用户体验。他们严格控制原材料采购和生产流程,确保每一款产品都符合高标准的质量要求。同时,DIOFIT公司还建立了完善的售后服务体系,及时解决用户在使用过程中遇到的问题,赢得了用户的信赖和好评。

Clulite公司的发展小趣事
  1. 创业初期
    • 描述Clulite公司的创始人或核心团队如何识别电子行业中的某个市场机遇。
    • 讲述他们是如何筹集初始资金,设立公司,并开发出第一款产品或解决方案的。
    • 可以提及公司在初创阶段面临的挑战,如技术难题、市场竞争等。
  2. 技术创新
    • 讲述Clulite如何通过研发创新,推出了一款颠覆性的产品或技术,从而获得了市场认可。
    • 详细描述这一创新过程,包括研发团队的努力、关键技术的突破等。
    • 提及这一创新如何帮助公司在市场上取得了竞争优势。
  3. 市场拓展
    • 描述Clulite如何逐步扩大市场份额,从地区市场走向全国乃至国际市场。
    • 可以讲述公司如何建立销售网络、与合作伙伴建立合作关系,以及参与行业展会等活动来推广品牌和产品。
    • 提及公司在市场拓展过程中遇到的挑战和应对策略。
  4. 品质管理
    • 讲述Clulite如何注重产品质量和客户体验,通过严格的质量控制流程来提升产品可靠性。
    • 描述公司如何建立完善的售后服务体系,为客户提供及时、专业的支持。
    • 提及这些举措如何帮助公司赢得了客户的信任和口碑。
  5. 可持续发展
    • 讲述Clulite如何关注环境保护和社会责任,推动公司的可持续发展。
    • 描述公司如何采取环保措施,减少生产过程中的污染排放。
    • 提及公司如何参与社会公益事业,回馈社会。

请注意,这些故事需要根据Clulite公司的实际情况进行调整和补充。如果你需要更具体的内容,建议查阅Clulite公司的官方网站、新闻报道或行业分析报告,以获取更详细的信息和数据。

Acopian Power Supplies公司的发展小趣事

Acopian Power Supplies是一家专业生产电源供应器件的公司,以下是该公司发展的五个相关故事:

  1. 公司创立与起步阶段: Acopian Power Supplies成立于1956年,总部位于美国宾夕法尼亚州。公司创始人Sarkis Acopian先生将其家庭小作坊扩展为一家专业的电源供应器件制造商。创立之初,公司专注于生产高品质、高可靠性的直流电源,并提供定制化的解决方案。

  2. 技术创新和产品拓展: 随着市场需求的增长和技术进步,Acopian Power Supplies不断进行技术创新,并扩展了产品线。公司逐步推出了各种规格和型号的直流电源、交流电源、开关电源等产品,满足不同行业的需求,如工业、通信、医疗等领域。

  3. 市场拓展和国际化发展: Acopian Power Supplies积极开拓国内外市场,并与全球各地的客户建立了长期合作关系。公司的产品远销至美国以外的多个国家和地区,赢得了广泛的市场认可。通过与国际渠道商合作,公司逐步实现了国际化发展战略。

  4. 质量控制和技术支持: Acopian Power Supplies注重产品质量和技术支持,建立了完善的质量控制体系和售后服务体系。公司引进先进的生产设备和检测设备,严格控制产品质量,并提供专业的技术支持和解决方案,确保客户获得最佳的用户体验。

  5. 未来发展展望: Acopian Power Supplies将继续致力于电源供应器件领域的研发和生产,不断推出更先进、更可靠的产品和解决方案,以满足客户在不断变化的市场需求。公司将进一步加强研发投入,不断提升产品性能和质量水平,努力成为行业内的领先企业。

Alpha Industries公司的发展小趣事

为了提高生产效率和产品质量,Alpha Industries决定引入数字化生产线。通过与电子设备制造商合作,公司成功建立起一条自动化生产线,实现了从设计到生产的无缝对接。数字化生产线的建立不仅提高了生产效率,还降低了生产成本,使得Alpha Industries的产品更具市场竞争力。

CANOPUS公司的发展小趣事

随着业务的不断拓展,CANOPUS开始专注于鼓的制造研究。在1984年,公司推出了其标志性产品——整木掏空榉木军鼓。这款鼓的独特之处在于其鼓腔是由整个树干挖空处理而成,导角也做了特有的设计。这一创新使得CANOPUS的鼓在音质和外观上都与众不同,迅速在市场上获得了认可。

Diplohmatic A/S公司的发展小趣事

在追求经济效益的同时,Diplohmatic A/S公司也积极践行环保理念。公司投入资金研发环保型电子产品,采用可再生材料和节能技术,减少生产过程中的废弃物排放。此外,公司还积极参与环保公益活动,倡导绿色消费和低碳生活。这些举措不仅提升了公司的社会形象,也为推动电子行业的可持续发展做出了贡献。

问答坊 | AI 解惑

无线系统不安全(7)——我们担心什么?

谬误之六:无线系统不可用于控制 有些控制应用要求以每数毫秒一次的频率更新信号。对于第一代无线技术方案而言这是不现实的,因为要进行频率如此之高的信号更新会降低电池寿命,除非您愿意每几个月即更换电池或者干脆通过硬线连接至电源――这样成 ...…

查看全部问答>

请问,这个要怎样才能看得见结果啊?

来自:EEWORLD合作群:49900581 群主:wangkjPC_DispStr(1, 1, s, DISP_FGND_YELLOW + DISP_BGND_BLUE);…

查看全部问答>

请问用带有BSP的基于wince的手机能代替开发板的功能吗?

手机原有wince6的系统,我不需要对手机的硬件扩展什么功能,并且有这个手机的BSP程序,只是想替换成自己重新定制的wince6操作系统。 不知道这样会有什么风险不? 比如烧录rom时会不会比较麻烦,烧录失败该如何处理等等。谢谢各位…

查看全部问答>

多功能应急灯设计方案

 初次参加论坛活动,O(∩_∩)O哈哈~…

查看全部问答>

移动电话安全问题

移动电话已成为我们在生活中的一种主要通讯工具,但它们非常普遍地存在一个安全问题。现在电话偷窃行为成为常见并不断蔓延。厂家通过制造带服务收费的手机来降低电话价格。然而,电于偷窃行为,很多这种手机从未用在运营商的网络中。  同时,音 ...…

查看全部问答>

优势公司推荐

请同志们推荐一下质量和价格好的渠道,资源共享STM32 样片我一般去力源拿  多了的时候也会跟万利订STM32:力源、万利LPC21XX我一般去胜创特,周立功那里从来不去,听买芯片的说北天星的最便宜 哈哈不了解LPC2132胜创特25 ...…

查看全部问答>

BeagleBone扩展板元件焊接心得

    整个扳子最难焊的就是没有引脚的MEMS芯片,个人觉得MEMES芯片做成这种封装纯粹是为了提高使用的成本门槛,防止一些水平低级的工厂使用这个芯片,和可靠性、方便性、散热性能都无关。     不多说了,我们是个人 ...…

查看全部问答>

谁有 索思达SSD-DM642 视频开发板例程资源????

现在正在索思达SSD-DM642 视频开发板上进行开发,但是开发板的资料没有。 请问大家谁有这个开发板的资料,就是板子上几个简单的视频例程就可以了。 能不能发给我一份,谢谢大家了 我的邮箱:383487353@qq.com 再次感谢。…

查看全部问答>

麻烦各位帮看看,软件触发AD,配置好之后,SOC置1,但没有进入ADC中断

部分程序贴出来了,ADC中断程序里面我点亮了LED灯的,但程序跑起来之后LED灯没点亮。也就是没有进入中断。我用的是ADC INT1.6,不过那个SEQ中断InitSysCtrl();DINT;IER=0x0000;IFR=0x0000;InitPieCtrl();InitPieVectTable();EnableInterrupts(); IE ...…

查看全部问答>

stm32F7discover 上手使用

本帖最后由 weizhongc 于 2016-1-29 16:55 编辑 最近eeworld的团购活动确实不错啊,有入手stm32F7discover的朋友可能会遇到通过keil下载回原来的demo时发现图片都出错了。 其实导致这个原因是因为keil只能通过stlink下载到mcu,而对于QSPI上挂 ...…

查看全部问答>