問題:
現(xiàn)在用的VisualDSP++ 5.0 的8.0.6.41版本,ADZS-HPUSB-ICE仿真器,21262的板子,成功連接IDE后,編譯工程,出現(xiàn)如下錯(cuò)誤:
failed to set aumatic breakpoint at "main"
PS:我的VisualDSP++只能自動(dòng)生成blackfin的LDF文件,不能自動(dòng)生成其他系列DSP的LDF文件。
請(qǐng)問這個(gè)錯(cuò)誤如何解決呢?
謝謝!
根據(jù)安裝自帶的ADSP-21262_ASM.LDF修改的ldf文件如下:
ARCHITECTURE(ADSP-21262)
#ifndef __NO_STD_LIB
SEARCH_DIR( $ADI_DSP/212xx/lib )
#endif
#ifdef __LIBIO_LITE
# define LIBIO libio_lite.dlb
# define LIBIOMT libio_litemt.dlb
#else
# define LIBIO libio.dlb
# define LIBIOMT libiomt.dlb
#endif
#ifdef _ADI_THREADS
#ifdef __ADI_LIBEH__
$LIBRARIES = libehmt.dlb, libc26xmt.dlb, LIBIOMT, libdsp26x.dlb;
#else
$LIBRARIES = libc26xmt.dlb, LIBIOMT, libdsp26x.dlb;
#endif
#else
#ifdef __ADI_LIBEH__
$LIBRARIES = libeh.dlb, libc26x.dlb, LIBIO, libdsp26x.dlb;
#else
$LIBRARIES = libc26x.dlb, LIBIO, libdsp26x.dlb;
#endif
#endif
$OBJECTS = $COMMAND_LINE_OBJECTS;
MEMORY
{
seg_rth { TYPE(PM RAM) START(0x00080000) END(0x000800ff) WIDTH(48) }
seg_init { TYPE(PM RAM) START(0x00080100) END(0x000801ff) WIDTH(48) }
seg_int_code { TYPE(PM RAM) START(0x00080200) END(0x000802cf) WIDTH(48) }
seg_pmco { TYPE(PM RAM) START(0x000802d0) END(0x000841ff) WIDTH(48) }
seg_pmda { TYPE(PM RAM) START(0x00086300) END(0x00087fff) WIDTH(32) }
seg_dmda { TYPE(DM RAM) START(0x000c0000) END(0x000c6dff) WIDTH(32) }
seg_heap { TYPE(DM RAM) START(0x000c6e00) END(0x000c6eff) WIDTH(32) }
seg_stak { TYPE(DM RAM) START(0x000c6f00) END(0x000c6fff) WIDTH(32) }
seg_dm64 { TYPE(DM RAM) START(0x00063800) END(0x00063fff) WIDTH(64) }
}
PROCESSOR P0
{
OUTPUT( $COMMAND_LINE_OUTPUT_FILE )
SECTIONS
{
// .text output section
seg_rth
{
INPUT_SECTIONS( $OBJECTS(seg_rth) $LIBRARIES(seg_rth))
} > seg_rth
seg_init
{
ldf_seginit_space = . ;
INPUT_SECTIONS( $OBJECTS(seg_init) $LIBRARIES(seg_init))
} > seg_init
seg_int_code
{
INPUT_SECTIONS( $OBJECTS(seg_int_code) $LIBRARIES(seg_int_code))
} > seg_int_code
seg_pmco
{
INPUT_SECTIONS( $OBJECTS(seg_pmco) $LIBRARIES(seg_pmco))
} > seg_pmco
seg_pmda
{
INPUT_SECTIONS( $OBJECTS(seg_pmda) $LIBRARIES(seg_pmda))
} > seg_pmda
.bss ZERO_INIT
{
INPUT_SECTIONS( $OBJECTS(.bss) $LIBRARIES(.bss))
} > seg_dmda
seg_dmda
{
INPUT_SECTIONS( $OBJECTS(seg_dmda) $LIBRARIES(seg_dmda))
} > seg_dmda
seg_dm64
{
INPUT_SECTIONS( $OBJECTS(seg_dm64) $LIBRARIES(seg_dm64))
} > seg_dm64
stackseg
{
// allocate a stack for the application
ldf_stack_space = .;
ldf_stack_length = MEMORY_SIZEOF(seg_stak);
} > seg_stak
heap
{
// allocate a heap for the application
ldf_heap_space = .;
ldf_heap_length = MEMORY_SIZEOF(seg_heap);
ldf_heap_end = ldf_heap_space + ldf_heap_length - 1;
} > seg_heap
}
}
請(qǐng)問存在什么問題呢?
答:
你找一個(gè)VDSP下的例子,編譯看是否能到Main,通常硬件內(nèi)存出錯(cuò),或者flash內(nèi)部的代碼將處理器運(yùn)行到異常狀態(tài)時(shí),編譯代碼會(huì)出現(xiàn)這個(gè)現(xiàn)象。
sharc的LDF文件不是通過工程選項(xiàng)生成的,在VDSP下 tools 菜單Expert Linker -> Create LDF
問:
萬分感謝您的回復(fù)!
我找了ADSP下的21262的不同工程,編譯以后還是相同錯(cuò)誤。
板子是新的,所有芯片都是全新的,21262用了SPI Slave Boot(00) 模式,flash還沒有燒寫過,現(xiàn)在只是利用仿真器編譯工程階段。
愁死啦!
答:
如果VDSP自帶的例子代碼都跑不過,多半和你的板卡有關(guān),還有就是你注意看一下,你板卡的內(nèi)存芯片和官方EZKIT上的容量和型號(hào)是否一致或兼容,如果代碼中使用到內(nèi)存,如果代碼的內(nèi)存初始化和硬件實(shí)際內(nèi)存不匹配,也可能會(huì)造成編譯后代碼不能運(yùn)行到main。
你再檢查一下硬件上一些關(guān)鍵引腳上下拉電阻是否正確,和EZKIT的圖對(duì)比一下。
問:
您好!
我的問題依舊,真是愁死了!
中間間隙做了TI的項(xiàng)目工作,回頭重理思路,還是沒有解決。
板卡的內(nèi)存芯片是 ADSP-21262SBBC-150,官方EZKIT上是ADSP-21262SKBC-200,根據(jù)DATASHEET,他們之間除了溫度和速率,其他方面都是一致的;
和EZKIT的圖后,硬件上一些關(guān)鍵引腳上下拉電阻也是正確的。
目前設(shè)置CLKIN =ADSP_CLKIN=20MHz , CLK_CFG1:0 = 10 (8:1),連接成功,編譯工程依然是
failed to set aumatic breakpoint at "main"!
請(qǐng)問還會(huì)存在什么問題呢?萬分感謝啦
答:
接口沒畫錯(cuò),
通常不能到main,大多和SDRAM出錯(cuò)有關(guān)。你再檢查一下SDRAM焊接上有沒有虛焊或者短路。
你把內(nèi)核和系統(tǒng)時(shí)鐘降低點(diǎn)看看,你的處理器是150M的,原廠是200M,不要超頻。有時(shí)SDRAM的走線也會(huì)影響SDRAM速度,速度太快會(huì)造成內(nèi)存數(shù)據(jù)錯(cuò)誤,導(dǎo)致編譯代碼不能到main。
boot和時(shí)鐘的4種模式你都通過跳線電阻跳跳試試。
問:
不知這個(gè)“failed to set aumatic breakpoint at "main"”最后是怎么解決的呢?
最近也碰到這樣的問題。
編寫簡(jiǎn)單的類似開發(fā)板的example操作外設(shè)的Project,不會(huì)有這個(gè)問題,
當(dāng)編寫產(chǎn)品的代碼量較大時(shí)的Project,就出現(xiàn)了這樣的問題,
實(shí)在找不到原因,難道要一個(gè)函數(shù)一個(gè)函數(shù)逐漸去解決嗎?