加载中…
个人资料
jepsen1
jepsen1
  • 博客等级:
  • 博客积分:0
  • 博客访问:146,507
  • 关注人气:42
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

MDK,渐亮渐熄程序调试(转MDK后的首个程序)

(2011-01-08 11:02:35)
标签:

杂谈

分类: MDK(ARM7/CortexM3)

刚转到MDK环境,很多东西不熟悉,跑最简单的单个渐亮LED,渐熄LED的程序,配置上费了不少的脑细胞,MDK的配置设置感觉有点不大好用,本本份份地挨个检查,堆栈,系统配置,时钟,存储器(调时序花了不少时间),看门狗。。。说到看门狗这也有个小问题,就是在MDK自带的configure里面禁止看门狗定时器的配置后,程序一直复位。只能选择这个配置然后禁止看门狗。IO配置没选,因为程序中专门有配置IO的函数。OK,配置完后下程序到板子里面(一般习惯直接烧flash的,一天烧几十次是有的。。。MDK,渐亮渐熄程序调试(转MDK后的首个程序),不知道板子撑不撑得过今年),运行。。。跑飞了(后来调试发现的),在调用系统服务函数__main后在__user_initial_stackheap调用前后出问题,在调用__user_initial_stackheap前压栈R5和LR,调用完成后出栈R5和LR,按说这段代码没问题,但是偏偏在出栈后R5和LR的值不是之前压栈的了,而SP在这段代码的执行过程中也很正常,地址也对,就是出栈后错误。这个问题没解决,在前面的调用__main那里改成调用Main(之前IMPORT是必须的),把自己的主函数改为Main,这样就OK了。跑程序运行无误,LED挨个渐亮,渐熄都没问题。

这中间出现的问题有:

1,堆栈配置__user_initial_stackheap前后有问题,没解决;

2,看门狗,这个默认上电时看门狗是开启的,粗心了。怪不得老是复位。。。

3,存储器,时序配置了一会,还参考以前的ADS下的44binit.s配置的,这个配置出错那后果。。。还有SDRAM也是。

4,最后一个是Main函数那里。。。改的时候把LDR r0,=__main改成了LDR r0,Main。。。。我说怎么老进不去main呢。。。这个汗一个。。。伪操作变成了指令。。。传给r0的不是Main的地址了。。。这个。。。熬到凌晨4点多。。。最后发现原因是一个=,眼泪哗哗的。。。MDK,渐亮渐熄程序调试(转MDK后的首个程序)

 

得了,就这些。刚接触MDK,不太熟悉,老出错,还好耐心还是有的。

0

阅读 收藏 禁止转载 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有