请教reinlee大侠,关于LPC2138+UCOS+GUI仿真的问题,有附件


我将大侠写的LPC2124芯片改为LPC2138后,只更改OS-CPU-C。C中的SPSR为CPSR,仿真后显示根本不正常,请问是什么问题?
原程序及仿真文件在附件中,请高手解答

RENG.rar
(2008-10-06 09:43:09, Size: 1.58 MB, Downloads: 13)


我也来说两句 查看全部回复

最新回复

  • reinlee (2008-10-09 22:41:40)

    不好意思,没有及时看见你的提问帖。
    今天晚上帮你看看。我的邮箱是rein.lee@gmail.com
    有什么问题互相一起讨论下,祝你学习顺利!
  • reinlee (2008-10-10 01:00:29)

    你的程序有如下几点需要修改:
    1.工程设置中,没有定义映像的入口,在image entry point中修改。我的工程设置了分散加载,也做得比较简单。如果你用simple模式的话,需要修改下stackusr等。我试了试,没有成功。我从开始学ARM,就一直用SCF加载,反倒不清楚simple下的startup该如何改。
    2.你在OS_CPU.C把spsr修改成cpsr是不对的。因为发生异常后,处理器会把CPSR复制到SPSR中,待从异常返回后,需要恢复CPSR。
    3.至于_c域的原因,在于异常发生时,只会改变这些控制域的位,即CPU设置模式和map寄存器的过程。而任务的返回,则需要恢复所有域。所以你在OSIntCtxSw_1中会看到,任务返回需要MSR     SPSR_cxsf, R5。

    在OS_ENTER_CRITICAL中,你把CPSR取出,然后又复制给CPSR_C,实际上模式没有恢复,且你还关闭了中断,而在这之后,你执行OS_EXIT_CRITICAL,本意是开中断,但是实际上中断并没有打开,OS永远不再运行TIMER中断,你又如何能切换任务?