Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Unable to set software breakpoint
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
el123
перешел на linux.
Теперь вместо iar для программирования мк at91sam7x использую gcc
Создал тулчейн. Установил эклипс. Установил embeddedCDT.
Все компилится, прошивкается, и даже ходил по строкам кода. Т.е. отладка есть. Видны регистры, видна память.
Но, не работают точки останова.

К примеру ставлю в эклипсе брек поинт, нажимаю F8. И отладчик туда не попадает, он её игнорирует, если нажать на паузу, отладка остановится, у меня к примеру на while(1).

В общем подскажите что за дела?

У меня at91sam7x. Отладчик segger j-link.
Конфиг для openocd:

Код
interface jlink
jtag_khz 32
set CHIPNAME at91sam7x256
source [find target/at91sam7sx.cfg]

#flash bank $_FLASHNAME at91sam7 0 0 0 0 $_TARGETNAME 0 0 0 0 0 0 0 4032

arm7_9 fast_memory_access enable
arm7_9 dcc_downloads enable

proc read_register {register} {
set result ""
ocd_mem2array result 32 $register 1
return $result(0)
}


# remap. 0 = flash, 1 = ram
proc remap { area } {
set ram_start 0x00200000
set tmp1 [read_register 0]
#alter ram[0] contents
mww $ram_start [ expr [read_register $ram_start] ^ 0xFFFFFFFF]
set tmp2 [read_register 0]
#restore ram[0]
mww $ram_start [ expr [read_register $ram_start] ^ 0xFFFFFFFF]

if [ expr $tmp1 == $tmp2 ] { # remaped contents not altered -> flash remaped
if [ expr $area == 1 ] { # remap required
mww 0xFFFFFF00 0x00000001
}
} else {
if [ expr $area == 0] { # remap required
mww 0xFFFFFF00 0x00000001
}
}
}


$_TARGETNAME configure -event reset-init {
soft_reset_halt
# RSTC_CR : Reset peripherals
jtag_khz 32
mww 0xfffffd00 0xa5000004
# wait until SRCMP set (reset in progress)
while { [expr [read_register 0xfffffd04] & 0x00020000] != 0 } { sleep 1 }

# OSC enable, no timeout
mww 0xFFFFFC20 0x00000001
# wait until MOSCS
while { [expr [read_register 0xfffffC68] & 0x00000001] == 0 } { sleep 1 }

# Assuming 4.032 MHz osc
# *36/3 set LOCK after 6 SCLK
mww 0xFFFFFC2C 0x00230602

# PRES = 2
mww 0xFFFFFC30 0x00000004
#wait untli MCKRDY
while { [expr [read_register 0xfffffC68] & 0x00000008] == 0 } { sleep 1 }

# MCK = PLLCK / 2
mww 0xFFFFFC30 0x00000007
#wait untli MCKRDY
while { [expr [read_register 0xfffffC68] & 0x00000008] == 0 } { sleep 1 }

jtag_khz 8000 #0

# MC_FMR: FWS=1
mww 0xffffff60 0x00000100

remap 0
echo "reset done"
}



Настройки для плагина embeddedCDT:

Код
symbol-file main.out
target remote localhost:3333
monitor reset
monitor sleep 500
monitor poll
monitor soft_reset_halt
monitor arm7_9 dcc_downloads enable
monitor flash probe 0
monitor flash erase_sector 0 0 15
monitor flash write_bank 0 main.bin 0
monitor reset run
monitor soft_reset_halt
monitor arm7_9 force_hw_bkpts enable
thbreak main
continue


Ход выполнения:
Цитата
source .gdbinit
symbol-file main.out
target remote localhost:3333

0x00000000 in _vec_reset ()
monitor reset
JTAG tap: at91sam7x256.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)
monitor sleep 500
monitor poll

background polling: on
TAP: at91sam7x256.cpu (enabled)
target state: running
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x000000d3 pc: 0x00000000
monitor arm7_9 dcc_downloads enable
dcc downloads are enabled
monitor flash probe 0
flash 'at91sam7' found at 0x00100000
monitor flash erase_sector 0 0 15
erased sectors 0 through 15 on flash bank 0 in 0.250853s
monitor flash write_bank 0 main.bin 0
wrote 3472 bytes from file main.bin to flash bank 0 at offset 0x00000000 in 4.099915s (0.827 kb/s)
monitor reset run
JTAG tap: at91sam7x256.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x200000d3 pc: 0x000020e0
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x200000d3 pc: 0x00000000
monitor arm7_9 force_hw_bkpts enable
arm7_9 force_hw_bkpts enable: command requires more arguments
in procedure 'arm7_9' called at file "command.c", line 650
called at file "command.c", line 361
thbreak main
Hardware assisted breakpoint 1 at 0x16c: file main.c, line 60.
continue

Temporary breakpoint 1, main () at main.c:60
60 int w = 1; // initialized variable
Unable to set 32 bit software breakpoint at address 00000270 - check that memory is read/writable



В общем что нужно сделать что бы можно было ставить точки?
Terminator
Надо добавить в конфиг openocd это:

arm7_9 dbgrq enable
gdb_breakpoint_override hard
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.