mars4zhu 发表于 2022-11-30 17:39

【中科亿海微EQ6HL45开发平台测评体验】+ ARM Cortex-M0软核处理器(三)

<h1>5.&nbsp;利用Keil编译并调试程序<a href="http://www.summerdawn.top:7080/ARM-CM0DS_Example-Design-Kit_EQ6HL45/ARM-CM0DS-EDK_Keil-build-debug.html#keil" title="Permalink to this heading"></a></h1>

<p>打开Keil MDK,并打开自带的uvproj工程文件,该工程文件使用旧版本Keil MDK开发,对于新版本MDK5,可能会提示&ldquo;不支持的器件&rdquo;,&ldquo;需要安装旧版本支持文件&rdquo;等信息。</p>

<p>然后直接点击构建,即完成编译-链接-文件格式转换,最后得到我们需要的code.hex。注意:该hex文件为verilog-hex格式,而不是我们在MCU开发中常用的intel-hex格式。</p>

<section id="id1">
<h2>5.1.&nbsp;Keil项目设置<a href="http://www.summerdawn.top:7080/ARM-CM0DS_Example-Design-Kit_EQ6HL45/ARM-CM0DS-EDK_Keil-build-debug.html#id1" title="Permalink to this heading"></a></h2>

<p>注意该工程的设置选项,对于ROM、RAM的区域定位设置、文件输出、调试设置等,如图:</p>
</section>

<section id="id2">
<h2>5.2.&nbsp;Keil仿真调试软件代码<a href="http://www.summerdawn.top:7080/ARM-CM0DS_Example-Design-Kit_EQ6HL45/ARM-CM0DS-EDK_Keil-build-debug.html#id2" title="Permalink to this heading"></a></h2>

<ol>
        <li>
        <p>解决Keil仿真过程中的&ldquo;<a href="http://www.summerdawn.top:7080/ARM-CM0DS_Example-Design-Kit_EQ6HL45/ARM-CM0DS-EDK_Keil-build-debug.html#id3">**</a>* error 65: access violation at 0x0000000C : no &lsquo;read&rsquo; permission&rdquo;错误</p>
        </li>
</ol>

<dl>
        <dt>解决步骤:</dt>
        <dd>
        <ol>
                <li>
                <p>Option-&gt;Debug-&gt;Use_Simulator-&gt;CPU.DLL的Parameter,改为-REMAP。现象:依然错误,当时内存地址已经改变:<a href="http://www.summerdawn.top:7080/ARM-CM0DS_Example-Design-Kit_EQ6HL45/ARM-CM0DS-EDK_Keil-build-debug.html#id5">**</a>* error 65: access violation at 0x40023800 : no &lsquo;read&rsquo; permission</p>
                </li>
                <li>
                <p>Option-&gt;Debug-&gt;Use_Simulator-&gt;Initialization_File,打开并新建一个.ini文件,里面写上map 0x40000000,0x400FFFFF read write保存即可(MAP不区分大小写,注意read和write中间是空格不是逗号)</p>
                </li>
                <li>
                <p>再进入Debugger就可以了</p>
                </li>
                <li>
                <p>或者,可以省略第二步,进入Debugger之后再设置map:Debug-&gt;Memory_map,手动输入0x40000000,0x400FFFFF(输入框上面有个示例是0x4000FFFF,但是这个地址值不够大,我们要大一点的0x400FFFFF)。步骤2和4的区别在于:每次退出Debugger后,步骤4的设置都会丢失,会比较麻烦,所以一般只用步骤2的方法</p>
                </li>
                <li>
                <p>貌似不能通过更改设置中的DLL和它的参数来修正STM32F4的这个错误。因为在keil的安装目录下的ARMBIN里面没有相应的DLL文件(通过&ldquo;文件说明&rdquo;项来查看文件的使用说明~)</p>
                </li>
        </ol>
        </dd>
</dl>

<p>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash; 版权声明:本文为CSDN博主「Maple_Leaf_15」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:<a href="https://blog.csdn.net/Maple_Leaf_15/article/details/51057991">https://blog.csdn.net/Maple_Leaf_15/article/details/51057991</a></p>

<p>按照以上步骤,步骤2操作截图如下:</p>

<p>步骤4操作截图如下:</p>
</section>

<section id="id7">
<h2>5.3.&nbsp;调试过程与结果<a href="http://www.summerdawn.top:7080/ARM-CM0DS_Example-Design-Kit_EQ6HL45/ARM-CM0DS-EDK_Keil-build-debug.html#id7" title="Permalink to this heading"></a></h2>

<p>调试过程中,可以在Keil的Debug界面,在Memory窗口上输入AHB2LED地址0x50000000,查看该处的值,可以看到在执行完汇编代码:</p>

<pre style="background:#555; padding:10px; color:#ddd !important;">
STR R0,
</pre>

<p>后,该处值按照预期,在0x55和0xAA之间变化:</p>
</section>

lugl4313820 发表于 2022-12-1 17:47

感谢分享,帖子有图文,非常好!
页: [1]
查看完整版本: 【中科亿海微EQ6HL45开发平台测评体验】+ ARM Cortex-M0软核处理器(三)