查看: 1250|回复: 3

[已解决] LPC1768 UCOSII 移植到IAR8.3环境下,编译没有问题,运行卡死...

[复制链接]
  • TA的每日心情
    开心
    2018-12-29 14:26
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    17
    最后登录
    2019-2-14
    发表于 2018-12-29 14:24:46 | 显示全部楼层 |阅读模式
    之前程序是在KEIL5环境下的,运行没有问题;
    现在改到IAR8.30环境,配置后编译,有3个告警,如下标黑;
    Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement

    因为这个是变量相关的,没有处理


    //system_LPC17xx.c文件

    void SystemCoreClockUpdate (void)            /* Get Core Clock Frequency      */
    {
      /* Determine clock frequency according to clock register values             */
      if (((LPC_SC->PLL0STAT >> 24) & 3) == 3) { /* If PLL0 enabled and connected */
        switch (LPC_SC->CLKSRCSEL & 0x03) {
          case 0:                                /* Int. RC oscillator => PLL0    */
          case 3:                                /* Reserved, default to Int. RC  */
            SystemCoreClock = (IRC_OSC *
                              ((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                              (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)    /
                              ((LPC_SC->CCLKCFG & 0xFF)+ 1));
            break;
          case 1:                                /* Main oscillator => PLL0       */
            SystemCoreClock = (OSC_CLK *
                              ((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                              (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)    /
                              ((LPC_SC->CCLKCFG & 0xFF)+ 1));
            break;
          case 2:                                /* RTC oscillator => PLL0        */
           SystemCoreClock = (RTC_CLK *
                              ((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                              (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)    /
                              ((LPC_SC->CCLKCFG & 0xFF)+ 1));
            break;
        }
      } else {
        switch (LPC_SC->CLKSRCSEL & 0x03) {
          case 0:                                /* Int. RC oscillator => PLL0    */
          case 3:                                /* Reserved, default to Int. RC  */
            SystemCoreClock = IRC_OSC / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
            break;
          case 1:                                /* Main oscillator => PLL0       */
            SystemCoreClock = OSC_CLK / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
            break;
          case 2:                                /* RTC oscillator => PLL0        */
            SystemCoreClock = RTC_CLK / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
            break;
        }
      }


    //----------------------------------------------------------------------------------
    下载运行后,前边初始化时没有问题的,每次运行到下边标黑处就卡死了
    int main(void)
    {
             BSP_Init ();
             BSP_Start ();
             OSInit();
            
             Timer0_Init();

            
             OSTaskCreate(LEDON, (void *)0, &stkLEDON[sizeof(stkLEDON)/4-1], 5);
             OSTaskCreate(LEDOFF, (void *)0, &stkLEDOFF[sizeof(stkLEDOFF)/4-1], 4);

             OSStart();

    }


    卡死到下边标黑处
    //startup_LPC177x_8x.s文件
            PUBWEAK HardFault_Handler
            SECTION .text:CODE:NOROOT:REORDER(1)
    HardFault_Handler
            B HardFault_Handle

    有如下提示:
    Fri Dec 28, 2018 17:15:45:    A precise data access error has occurred (CFSR.PRECISERR, BFAR) at data address 0x40034000.

    最佳答案

    楼主你好,看你这个情况,应该还是和ucos的移植有关。 你能单步看看到哪里就会死吗?进入 OSTaskCreate函数单步试试。
    不想说话
    回复

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20001
    最后登录
    2024-4-24
    发表于 2018-12-29 15:31:00 | 显示全部楼层
    楼主你好,看你这个情况,应该还是和ucos的移植有关。
    你能单步看看到哪里就会死吗?进入 OSTaskCreate函数单步试试。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-12-29 14:26
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    17
    最后登录
    2019-2-14
     楼主| 发表于 2018-12-29 17:39:09 | 显示全部楼层
    小恩GG 发表于 2018-12-29 15:31
    楼主你好,看你这个情况,应该还是和ucos的移植有关。
    你能单步看看到哪里就会死吗?进入 OSTaskCreate函数 ...

    就是这个函数,单步都进不去,然后就卡死了
    不想说话
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20001
    最后登录
    2024-4-24
    发表于 2019-1-2 15:11:09 | 显示全部楼层
    放开那个鸡腿 发表于 2018-12-29 17:39
    就是这个函数,单步都进不去,然后就卡死了

    在keil下是能单步进去的吧?
    看看是不是还是移植哪里差了文件呢?
    你这边遇到的问题,主要还是ucos系统方面的。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-24 11:46 , Processed in 0.134780 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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