|
发表于 2014-11-9 11:45:43
|
显示全部楼层
本帖最后由 caoyannay 于 2014-11-9 11:53 编辑
补充一下另一种定位解决的方法:
Option for Target '' -> Debug -> Use Simulator,当使用软件仿真时,有两个DLL及其参数需要填写
正确,否则仿真时会出现error 65: accessviolation。
如果你的工程不是新创建的,则可能DLL的参数设置与你当前Keil的版本并不匹配。
正确的DLL参数应当根据你选择的Option for Target '' -> Device来设置,假如你选择了STM32F103C8,
通过查看Device DataBase, File -> Device DataBase -> STM32F103C8,这里列出一个例子:
- BOOK0=DATASHTS\ST\STM32F10xxx.PDF("Reference Manual")
- BOOK1=datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF("Technical Reference Manual")
- BOOK2=datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF("Generic User Guide")
- CPU=IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x800FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")
- FLDLL=UL2CM3(-O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL010000)
- MON=SARMCM3.DLL TARMSTM.DLL("-pSTM32F103C8")
- REGFILE=stm32f10x.h("ST\STM32F10x")
- SFILE="STARTUP\ST\STM32F10x\startup_stm32f10x_md.s" ("STM32 Medium Density Line Startup Code")
- SIM=SARMCM3.DLL DARMSTM.DLL("-pSTM32F103C8")
- SVD=SFD\ST\STM32F1xx\STM32F103xx.sfrSVD=SFD\ST\STM32F1xx\STM32F103xx.sfr
复制代码
可以看到,DLL的参数需要按照SIM=所指定的参数来填写:
CPU.DLL: SARMCM3.DLL
Parameter:
Dialog DLL: DARMSTM.DLL
Parameter: -pSTM32F103C8
其中 CPU.DLL Parameter这个没有填写,有些解决方案里写上了-REMAP,根据Help->uVision Help->uVision User Guide->Dialogs » Project » Options » Debug里看到:
CPU/Driver DLL - Parameter
Preferably, do not modify these settings. Device Database Parameters describe the parameters.
Dialog DLL - Parameter
Preferably, do not modify these settings. Device Database Parameters describe the parameters.
所以这里我们并不需要填写这个参数。
- -REMAP,这个选项是为了将0x0800_0000的Flash映射到0x0000_0000的地址上。
复制代码
当然,上面的Device Database里的参数是我当前Keil版本里的,不同的Keil版本设置会有所需别,有的就必须要加-REMAP,所以只要根据Device Database里所指定的参数
设置好,一般软件仿真就可以正常跑起来了。
|
|