Could not clean D-Cache - memory(Multi-ICE仿真器调试问题)
来源:互联网 发布:数据库审计部署 编辑:程序博客网 时间:2024/05/01 07:23
在用“Multi-ICE仿真器”调试三星S3C2440开发板时,
可能会遇到如下问题,这里将这个问题发生的原因与解决方法做个记录。
—————————————————————————————
Could not clean D-Cache - memory may appear incoherent
in writeback regions.
—————————————————————————————
问题简述:目标设备有独立的数据缓存和指令缓存,(比如ARM920T
体系结构的芯片),在“Multi-ICE”的配置对话框中,有一个叫做
“Cache clean code address”的设置,
(看Processor Settings Tab选项卡),在这里需要指定一块存储区域
用来存储和执行“cache cleaning code” 。“Multi-ICE”需要下载
并执行这段“relocatable”代码。假如这段代码不能够正确下载,
就会出现如上警告信息。
英文原文:
——————————————————————————————————
For targets that have separate data and instruction caches
(such as the ARM920T), Multi-ICE uses the Cache clean code
address setting in the Multi-ICE configuration dialog
(see Processor Settings Tab) to specify memory it can use to store
and execute the cache cleaning code. Multi-ICE downloads and
runs relocatable code into this memory the first time it is required.
If it cannot download the code correctly, it displays this warning
message.
——————————————————————————————————
产生原因: Multi-ICE can fail to download the code to the target
for one or more of the following reasons:
• There is no memory at the Cache clean code address
• The memory at Cache clean code address is in read only memory
(either true ROM or memory that requires a special write procedure,
such as EEPROM) • There is an active Memory Management Unit (MMU)
and the page containing Cache clean code address is marked read-only.
解决方法:
You can take one or more of the following steps to correct this:
• You can change Cache clean code address to an address in RAM
that Multi-ICE can access and that is not used by the application
• You can ensure that the MMU page descriptor for the memory
you specified enables data reads, data writes and instruction reads.
You can force Multi-ICE to download the cache clean code again
by changing the Cache clean code address setting in the Multi-ICE
configuration dialog. If you ignore the error, you must be aware of
the following:
• The Data Cache (DCache) uncachable bit is not set, and the
DCache is not cleaned while in debug state. This means that memory
is still read precisely as the processor sees it, so there is no
inconsistency even when the DCache has dirty data in it. However,
any data read in cachable regions causes DCache linefills to occur,
so new addresses are written into the DCache and old data is evicted.
• Any data that is written to memory is written as normal. This means
that any writes that hit addresses in the DCache do not get into
memory, but only into the cache. This matters if the data is actually
code. A side-effect of this is that software breakpoints set on
addresses that have been cached in the DCache are not read correctly
on processor instruction fetches and so are not taken. Note If the
Fault Address Register (FAR) and Fault Status Register (FSR) are
implemented by the system coprocessor, they are read on debug state
entry. The values are available in the system coprocessor (number 15)
register display and get restored before leaving debug state, unless
you write new values. If you perform a debug action that causes a
memory abort, then an error is returned that includes the FSR and FAR
values just after the abort. 4.3.2. Processor Settings Tab The Processor
Settings tab enables you to change processor specific settings before
you connect to the target. The settings you can define depend on the
processor you are connecting to, and so you must select a processor
(using the Connect tab) before this tab can be used. You can change
the following settings: Cache clean code address This setting, shown
in Figure 4.11, is the base address of an area of 128 bytes of memory
that is used to store a code sequence that ensures that all of the dirty
data in the Data Cache (DCache) is written into main memory. Cleaning
the DCache is important because when the processor caches are enabled,
program instructions that are written to target memory are written
through the DCache but read through the instruction cache. If the
DCache is not cleaned, some or all of the instructions are not written
to main memory before the processor executes them, and so the
previous contents of memory at that address is executed instead.
Multi-ICE loads the cache clean code as required. The area must be
program memory, readable and writable, and must not be used for
any other purpose. If Multi-ICE cannot load code to this memory
you see the error Could not clean D-Cache - memory may appear
incoherent in writeback regions. Refer to Multi-ICE server messages
for more information about this message. For some processor types,
restart code must also be downloaded that enables Multi-ICE to
restart the processor when a breakpoint or exception is handled.
For these processors, the restart code is written to the cache clean
code address. Figure 4.11. Multi-ICE Processor Settings tab showing
cache setting Cache clean data address This setting for XScale
microarchitecture processors, shown in Figure 4.12, is the base
address of a 32KB region of memory that Multi-ICE uses when
cleaning the processor cache.
This memory region:
• must be cachable
• must be aligned to a 32KB address (that is, the least significant
15 bits of the address must be zero)
• must be 32KB in size. Note Physical memory does not have to
exist at this location. Figure 4.12. Multi-ICE Processor Settings tab
showing XScale settings XScale debug handler options These settings,
shown in Figure 4.12, configure the behavior of the debug handler
that is used with an XScale microarchitecture processor. The following
settings are available: Debug handler address The base address of
a region of memory that can be used by the debug handler code.
This memory:
• must be aligned to a 2KB address (that is, the least significant
11 bits of the address must be zero)
• must be 2KB in size
• must be in the range of an ARM branch instruction
(approximately ±32MB) from address 0
• must not be used for any other purpose. Note Physical memory
does not have to exist at this location. If you enter an invalid address
a message box reports that The address you have entered is invalid.
Hot-debug enabled A toggle that enables or prevents Multi-ICE from
connecting to an already running XScale microarchitecture processor
by using a debug handler:
• If you enable hot-debug, ARM Limited recommends that the target
provides firmware support for this feature: o For details of the code
that is required, see Debug handler firmware support. o If you do
add this firmware support, you must check the Flush debug handler
cache if running on exit box, and select the Leave processor i
n Monitor mode on exit button.
• If you disable hot-debug, Multi-ICE always resets the processor
when connecting. Flush debug handler cache if running on exit A
toggle that controls whether or not the debug handler is flushed
from the cache on exit from the debugger:
• If this box is checked, and the processor is running, the debug
handler is flushed from the cache. The debugger cannot later
reconnect to the handler.
• If this box is not checked, the debug handler is not flushed from the
cache. The debugger can later reconnect to the handler. Note Any
code that subsequently alters the exception vectors does not function
correctly (see Intel XScale microarchitecture processors). Leave
processor in Halt mode on exit, Leave processor in Monitor mode
on exit Buttons that set whether to leave the processor in Halt or
Monitor mode on exit from the debugger:
• If you leave the processor in Halt mode, and a reset subsequently
occurs, the debug handler is not flushed from the cache. The processor
halts, waiting for the debugger to connect to the handler.
• If you leave the processor in Monitor mode, and a reset subsequently
occurs, the debug handler is flushed from the cache, and the processor resets.
- Could not clean D-Cache - memory(Multi-ICE仿真器调试问题)
- Could not find method com.umeng.analytics.d.a问题
- windows ICE 调试问题总结
- The memory could not be "written"
- Could not clean server of obsolete files: null
- Could not flush the DNS Resolver Cache: 执行期间,函数出了问题
- 解决Android Studio Gradle 'app'project refresh failed 报错 Could not read cache value问题
- 关于android studio Error:Could not read cache value from '/Users......问题
- Memory cache
- Cache Memory
- Memory Cache
- Deployment failure on Tomcat 6.x. Could not copy all resources to D问题
- 出错提示:“Could not flush the DNS Resolver Cache: 执行期间,函数出了问题”的解决方法
- 在AXD下用MULTI-ICE调试,出现cause:Undefined instruction
- STM32仿真器安装ARM Jtag ICE-U
- iphone真机调试时出现 could not find developer disk image问题
- 真机调试解决could not find developer disk image的问题
- ipad系统升级后的真机调试Could not find Developer Disk Image问题(一)
- CSS控制文本垂直居中的技巧
- Java5 并发学习
- 查看死锁的SQL语句
- 基于角色的权限管理系统数据库设计
- 虚拟主机之基本概念[转]
- Could not clean D-Cache - memory(Multi-ICE仿真器调试问题)
- Hibernate与Spring的整合
- Use adb to connect PC with Android Device
- Linux下路由器的配置
- ZThread在VC6下的构建
- 在 Windows 上安装 Oracle 数据库 11g
- 架构师分为4种
- Ubuntu 9.10禁用触摸板的办法
- Windows mobile 6捕获键盘操作