搜索
bottom↓
回复: 8

RTT官方源码里的一个编译警告

[复制链接]

出0入0汤圆

发表于 2014-3-5 11:01:09 | 显示全部楼层 |阅读模式
1.2.0出来,想移植一下stm32f10x,直接用的是官方源码bsp下面的stm3210x
有3个警告,前两个都是声明,头文件之类的,很好解决
但最后一个警告是:

..\..\libcpu\arm\cortex-m3\context_rvds.S(206): warning: A1581W: Added 2 bytes of padding at address 0xd6





指向这206行。。。。汇编实在 是无能为力

想问一下这个怎么解决啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2014-3-5 11:41:16 | 显示全部楼层
写一行NOP即可解决。比如这段汇编最后编译出来是18或19字节,编译器会自动填充成20字节,并给个警告。手动添加一个NOP就20字节了。

出0入17汤圆

发表于 2014-3-5 11:42:34 | 显示全部楼层
GIYF
关键字padding

出0入0汤圆

发表于 2014-3-5 12:18:57 | 显示全部楼层
前几天升级FreeRTOS到V8.0.0的时候,其中的PendSV中断也是这样的,加个NOP指令。

出0入0汤圆

 楼主| 发表于 2014-3-5 15:43:35 | 显示全部楼层
本帖最后由 hunxiyi 于 2014-3-5 15:45 编辑

最下面是application.c里面的内容
我在移植f107的时候,用两个LED灯来交替闪烁
但是只有屏蔽掉int rt_application_init(void)函数中的
  1. init_thread = rt_thread_create("init",
  2.                                    rt_init_thread_entry, RT_NULL,
  3.                                  2048, 8, 20);
复制代码

语句【71行】时候,实验现象才正确,不屏蔽这句的时候,现象就不正确,只有一个LED常亮

我看论坛写那个RTT例程连载的 jiezhi320 的例程中,有的例子也是屏蔽这个线程初始化,有的又没有屏蔽
不知道这个线程初始化里面哪个东西是有冲突的吗

我的水平刚入门,希望大家不吝赐教,谢谢

  1. #include <board.h>
  2. #include <rtthread.h>

  3. #include "led.h"

  4. #ifdef RT_USING_DFS
  5. #include <dfs_fs.h>
  6. #endif

  7. #ifdef RT_USING_COMPONENTS_INIT
  8. #include <components.h>
  9. #endif /* RT_USING_COMPONENTS_INIT */

  10. ALIGN(RT_ALIGN_SIZE)
  11. static rt_uint8_t led_stack[ 512 ];
  12. static struct rt_thread led_thread;

  13. static void led_thread_entry(void* parameter)
  14. {
  15.     rt_hw_led_init();

  16.     while (1)
  17.     {
  18.         rt_hw_led_on(0);
  19.         rt_hw_led_off(1);
  20.         rt_thread_delay( RT_TICK_PER_SECOND/2 ); /* sleep 0.5 second and switch to other thread */

  21.         rt_hw_led_off(0);
  22.         rt_hw_led_on(1);
  23.         rt_thread_delay( RT_TICK_PER_SECOND/2 );
  24.     }
  25. }

  26. void rt_init_thread_entry(void* parameter)
  27. {
  28.     {
  29.         extern void rt_platform_init(void);
  30.         rt_platform_init();
  31.     }

  32. #ifdef RT_USING_COMPONENTS_INIT
  33.     /* initialization RT-Thread Components */
  34.     rt_components_init();
  35. #endif

  36.     /* Filesystem Initialization */
  37. #if defined(RT_USING_DFS) && defined(RT_USING_DFS_ELMFAT)
  38.     {
  39.         /* mount sd card fat partition 1 as root directory */
  40.         if (dfs_mount("sd0", "/", "elm", 0, 0) == 0)
  41.         {
  42.             rt_kprintf("File System initialized!\n");
  43.         }
  44.         else
  45.         {
  46.             rt_kprintf("File System initialzation failed!\n");
  47.         }
  48.     }
  49. #endif /* RT_USING_DFS && RT_USING_DFS_ELMFAT */
  50. }

  51. int rt_application_init(void)
  52. {
  53.     rt_thread_t init_thread;

  54.     rt_err_t result;


  55.    
  56. #if (RT_THREAD_PRIORITY_MAX == 32)
  57. //    init_thread = rt_thread_create("init",
  58. //                                   rt_init_thread_entry, RT_NULL,
  59. //                                   2048, 8, 20);
  60. #else
  61.     init_thread = rt_thread_create("init",
  62.                                    rt_init_thread_entry, RT_NULL,
  63.                                    2048, 80, 20);
  64. #endif

  65.     if (init_thread != RT_NULL)
  66.     {
  67.         rt_thread_startup(init_thread);
  68.     }
  69.    
  70.     /* init led thread */
  71.     result = rt_thread_init(&led_thread,
  72.                             "led",
  73.                             led_thread_entry,
  74.                             RT_NULL,
  75.                             (rt_uint8_t*)&led_stack[0],
  76.                             sizeof(led_stack),
  77.                             20,
  78.                             5);
  79.     if (result == RT_EOK)
  80.     {
  81.         rt_thread_startup(&led_thread);
  82.     }
  83.    
  84.     return 0;
  85. }
复制代码


出0入0汤圆

 楼主| 发表于 2014-3-5 15:46:14 | 显示全部楼层
aozima 发表于 2014-3-5 11:41
写一行NOP即可解决。比如这段汇编最后编译出来是18或19字节,编译器会自动填充成20字节,并给个警告。手动 ...

非常感谢,问题已经解决了
可现在一个新的问题,麻烦你看一下
在5楼,谢谢!

出0入0汤圆

 楼主| 发表于 2014-3-5 15:46:43 | 显示全部楼层
Eric2013 发表于 2014-3-5 12:18
前几天升级FreeRTOS到V8.0.0的时候,其中的PendSV中断也是这样的,加个NOP指令。 ...

非常感谢你,确实加个NOP就行了
现在有个新的问题麻烦你一下
在5楼,谢谢

出0入0汤圆

发表于 2014-3-5 17:34:07 | 显示全部楼层
hunxiyi 发表于 2014-3-5 15:46
非常感谢你,确实加个NOP就行了
现在有个新的问题麻烦你一下
在5楼,谢谢 ...

不好意思哈,我还没有学过RTT,只学过我签名中的几个

出0入0汤圆

 楼主| 发表于 2014-3-5 19:00:21 | 显示全部楼层
Eric2013 发表于 2014-3-5 17:34
不好意思哈,我还没有学过RTT,只学过我签名中的几个

同样谢谢!你啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 19:55

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表