×
单片机 > 单片机程序设计 > 详情

Keil ARM软件Debug温习

发布时间:2020-09-03 发布时间:
|

程序用的就是前面编译成功的汇编代码。


然后debug脚本的话用的下面的脚本


/*** <<>>  ***/ 

/*Name: DebugINRam.ini*/ 
 
FUNC void Setup (void) 

    //  Program Entry Point, .AXF File download Address 
    PC = 0x030000000; 
}     
map 0x00000000,0x00200000 read write exec //Map this memory to be read、write and exec 
map 0x30000000,0x34000000 read write exec //Map this memeory to be read,write and exec 
Setup();                                       // Setup for Running 
//g, main 

调试脚本的编写可以搜到有文档介绍,而且uVersion help里面有很详细的使用介绍。所以,弄一两个脚本,对照着uVersion help改一两个出来,应该写调试脚本没什么问题了就。


编译成功后直接进debug。。。让人很崩溃的现实啊,设置断点,然后点击run。。。直接跳出error

 

*** error 65: access violation at 0x34000004 : no 'execute/read' permission

 

额。。。这个真是没法讲,因为很多程序编译都会出现这样的错误。。。所以,这样的错误也被埋在茫茫error中。。。所以,搜索无果。遂想自己解决。。。


第一个想到的其实是代码的问题,因为对arm汇编不熟,难道是程序调用了不该用的地址?一句句找下来。。。额,没发现啊。


然后,又开始单步调试。。。reset。。。单步调试。。。额,好像错误没了。。。怎么回事?


然后,看那个黄色的小箭头跑来跑去。。。终于发现。。。进入debug的时候,寄存器PC是直接指向0x300000的!!!o(>﹏


也就是,刚进入debug模式的话,当前语句是指向0x300000的,MGD,那里是啥都没有的。。。我用“map 0x30000000,0x34000000 read write exec ”给这段地址给了读写权限,尽管什么也没有,但是傻瓜机纸还是一直会往下运行。。。然后。。。一直到没有read,write权限为止。。。

 

额。。。这时候才看出来,我的initial文件里不是有写PC=0x300000。。。凌乱啊。。。不过,靠自己找到了这个问题,还是比较开心哈!

关键字:Keil  ARM软件  Debug

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项