微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 软件Overlay:程序编写与调试

软件Overlay:程序编写与调试

时间:01-20 来源:互联网 点击:

的函数OverlayLoad。图表8列出Overlay manager代码段,主要做了两件事。一,修改mapped table _ovly_table,标示overlay section是mapped或是unmapped。_ovly_table的用途是让gdb知道目前加载的是哪一个section,使得gdb在debug时,能自动切换为正确的调试信息。

二,在程序执行时期将函数加载,函数ovly_copy是一个memcpy函数,将函数从LMA复制到VMA上。当OverlayLoad(0)执行完后,overlay0函数主体便存在于VMA上,可正确的执行。

图表9为_ovly_table的内容,要标示每一个overlay section的vma, size, lma,和是否mapped。必须要注意的一点,_ovly_table要位在一个lma等于vma的区域里。

2. 调试Overlay的程序

开启自动overlay调试功能的gdb命令是overlay auto。当overlay auto开启后,对于使用者来说,与一般程序的调试方法相同。

图表8的最后一行_ovly_debug_event()的用途是让gdb能把断点加在正确的地址上,这一行要写在OverlayLoad的后面。必须要有这一行,gdb的自动overlay调试才能正常。

当用户加一个断点在被overlay的区域,gdb会在函数被加载之后(即为执行完OverlayLoad),遇到_ovly_debug_event时,自动的把断点加到overlay的地址上。

3. 参考数据

Overlay Commands https://sourceware.org/gdb/onlinedocs/gdb/Overlay-Commands.html

Automatic Overlay Debugging https://sourceware.org/gdb/onlinedocs/gdb/Automatic-Overlay-Debugging.html#Automatic-Overlay-Debugging

Debugging Programs That Use Overlays

http://davis.lbl.gov/Manuals/GDB/gdb_11.html

Andes BSP v3.2.0 User Manual

Chapter 12 “Linker Script Generation”

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top