• Keil ARM软件Debug温习


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

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

    /*** <<<  Use Configuration !disalbe! Wizard in Context Menu >>>  ***/ 
    /*
    Name: DebugINRam.ini*/ 
     
    FUNC void Setup (void) 

        // <o> 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(>﹏<)o

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

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

    好了,温习了一下keil的debug,上一次使用keil是2年前了。。。那时候做毕业设计。。。

    ——————
    无论在哪里做什么,只要坚持服务、创新、创造价值,其他的东西自然都会来的。
  • 相关阅读:
    矩阵乘法的应用
    Link-Cut-Tree
    花里胡哨的代用记号与三标符(转载)
    (扩展)中国剩余定理
    C++ 中的转义字符 “”
    Excel VBA to Interact with Other Applications
    hive表数据导出到csv乱码原因及解决方案
    一道简单的sql语句题,http://mp.weixin.qq.com/s/wqRPFtSUAy5OzLlP69QCSA
    Hive系列之HSQL转换成MapReduce过程 ,http://www.jianshu.com/p/660fd157c5eb
    Hive SQL的编译过程[转载自https://tech.meituan.com/hive-sql-to-mapreduce.html]
  • 原文地址:https://www.cnblogs.com/pied/p/2050615.html
Copyright © 2020-2023  润新知