• 新版数采仪开发问题全记录


    *************************************************************
    2008-01-16

    * 下载后,第一次运行(在线跑),马上出现停机现象。
       最后修改了demo.lnk中的内存分配,调整以下两个:
       __HEAP_END    = __SP_INIT-0x8000;
       STKTOP = ADDR(.bss)+SIZEOF(.bss)+0x8000;
       就再不出现停机现象了

    * 在线跑时没有任何问题,但是烧写后跑,则处于停止状态。
       因为程序中使用了文件系统,把文件系统注掉后问题解决。
       调试后发现,由于文件系统使用了动态内存分配(malloc()函数),导致了该问题。
       把内存分配函数修改为nucleus自己的函数后(NU_Allocate_Memory()),问题彻底解决。

    2008-01-26
    * 程序最近一直出现这样的问题:
      在线跑时一切正常,但是烧写后跑,不能boot。
      最后找的的解决办法很奇怪,我现在也不明白其中的道理。
      原先的链接语句为:
      dld -m6 -lc -o main.elf -tMCF52*FS  ..\obj\int_5271.o ..\obj\crt0.o ..\obj\cache.o ..\obj\init.o
      现在的链接语句为:
      dld -m6 -lc -o main.elf -tMCF52*FS  ..\obj\crt0.o ..\obj\cache.o ..\obj\init.o ..\obj\int_5271.o

    2008-02-02
    这两天又遇到了一个死机的问题,搞得我非常郁闷。
    几经周折终于找到了问题所在:

    原先的代码是这样的:

    NU_HISR HISR_Control_Key;
    #define HISR_Key_Stack_Size  10*1024
    char HISR_Key_Stack[HISR_Key_Stack_Size];

    NU_HISR HISR_Control_SerialPort;
    #define HISR_SerialPort_Stack_Size  10*1024
    char HISR_SerialPort_Stack[HISR_SerialPort_Stack_Size];

    也就是说给两个高级中断分配了比较大的栈空间;一切运行正常。

    但是,感觉到栈空间太大了,于是调整为这样

    NU_HISR HISR_Control_Key;
    #define HISR_Key_Stack_Size  1024
    char HISR_Key_Stack[HISR_Key_Stack_Size];

    NU_HISR HISR_Control_SerialPort;
    #define HISR_SerialPort_Stack_Size  1024
    char HISR_SerialPort_Stack[HISR_SerialPort_Stack_Size];

    结果崩溃。

    原因是在高级中断处理函数中确实用到了超过1024的变量。

    经验教训:

    在牵扯到内存空间分配的地方一定要慎重。

    2008-08-05

    程序在启动时,就会死机。而导致死机的原因居然是我在一个很安全的地方增加了一行代码。

    看起来,似乎是代码段因为增加了这一行而变大,因此和某些段(例如堆栈段)产生了冲突 。

    但是,继续增加了一些代码,该死机又不发生了。 很蹊跷。

    仔细检查,还是找到一些问题。死机的地方在这里

        。。。

        enable_I2C_interrupt();       

        InitializeI2CBUS();

        。。。

    上述代码中初始化IIC模块在中断使能之后,因此在这之间的一段时间IIC模块的状态就很不确定,是不是这个原因导致的死机?

     于是把代码改为下图,然后问题解决。

        。。。

        InitializeI2CBUS();
        enable_I2C_interrupt();       

        。。。

    结论:关于硬件驱动的时序至关重要;而且这次出错还有个提示,是说发生了伪中断,当时没有多加注意,后来看确实是发生了伪中断。



  • 相关阅读:
    项目数据分析师CPDA印章
    一点想法
    该减肥啦
    PMP证书到手
    Google App Engine之初体验
    转K线理论初级三
    黄小琥没那么简单
    使用webapp框架再现Hello World
    Google App Engine之介绍篇
    转股票中KDJ线的详细分析
  • 原文地址:https://www.cnblogs.com/gaotaozhaolei/p/1043036.html
Copyright © 2020-2023  润新知