[ZLG-ARM] 关于使用LPC2468从boot跳版本时出现的一个问题

[复制链接]
2940|4
 楼主| denniswuu 发表于 2009-9-27 14:51 | 显示全部楼层 |阅读模式
boot是单线程,是自己实现的一个引导程序,起始地址为0x0
版本里面跑了个freertos,该版本放在0x10000的地址。
boot跑完之后会强制跳到版本的地址(0x10000),会重新设置各个模式的堆栈空间以及ram空间初始化,拷贝中断向量和remap。
进入版本的main之后,需要进行任务切换,比如通过软中断来实现taskswitch,但是之后问题就很奇怪,整个cpu进入了一种“假死”状态,不知道在干吗,但是经过1分舵钟后,又全部恢复正常,很不明白
而且同样的版本代码,如果直接放到0地址的话,一切正常

被这个问题折磨的有段时间了,不知道大家能不能给一些建议,谢谢了
mohanwei 发表于 2009-9-27 16:03 | 显示全部楼层
让程序在你的头脑里跑一遍,看看那些地址转换是否都没问题了
 楼主| denniswuu 发表于 2009-9-27 18:23 | 显示全部楼层
呵呵,如果可能,我还真想把文件下到自己头脑里去跑一遍
地址映射应该是没问题,swi和irq中断都能正确寻址,毕竟经过“假死”时间,程序又能正常跑起来,各个任务调度都正常
只是想问问大家有没有遇到过这种情况,或者帮忙分析下可能是什么原因
 楼主| denniswuu 发表于 2009-9-29 12:12 | 显示全部楼层
问题已解决,boot和版本会对timer0做两次设置,其中matchvalue不一致,导致跳入版本时timer0在一段时间内无法工作,进而操作系统也无法调度
busyboy 发表于 2009-11-6 15:24 | 显示全部楼层
顶起来收藏。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部