Eclipse + GCC + OpenOCD: готовая сборка среды

32-разрядные микроконтроллеры разработки ОАО "НИИЭТ"

Модераторы: pip, _sva_

Аватара пользователя
Лашкевич
Сообщения: 96
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: Eclipse + GCC + OpenOCD: готовая сборка среды

Сообщение Лашкевич » 29 июн 2017, 19:57

Обратитесь в тему viewtopic.php?f=37&t=487 (Драйвер для OpenOCD). Думаю, проблема в том, про прошивальщику как-то надо сообщить о другой частоте кварца, наверное, он пробует шить, но флеш не успевает на такой частоте обработать команды.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

Аватара пользователя
Лашкевич
Сообщения: 96
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: Eclipse + GCC + OpenOCD: готовая сборка среды

Сообщение Лашкевич » 30 июн 2017, 11:18

Также еще обратите внимание на ножку микроконтроллера H2, которая предназначена для аварийного стирания флеш (смотрите ТО - Алгоритм стирания всей флеш-памяти). Может быть на вашей плате она подвязана к верху?
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

qqq123
Сообщения: 14
Зарегистрирован: 17 окт 2016, 23:43

Re: Eclipse + GCC + OpenOCD: готовая сборка среды

Сообщение qqq123 » 30 июн 2017, 21:45

Действительно, проблема заключалась в том, что нога H2 висела в воздухе. Если подтянуть ее к земле, то всё успешно прошивается.

Аватара пользователя
MR.Smith
Сообщения: 76
Зарегистрирован: 25 апр 2016, 10:56

Re: Eclipse + GCC + OpenOCD: готовая сборка среды

Сообщение MR.Smith » 24 июл 2017, 10:26

Мне удалось прошить микроконтроллер с помощью оригинального J-Link. Без изменения настроек он, в отличии от клона, успешно прошил камень. Однако программа в микроконтроллере после прошивки не стартует.
Я тренировался на примере Example_LED_blinking. Из ОЗУ все отлично выполняется, светодиоды светятся. Программа во Flash пишется без ошибок, но не выполняется. Если отладчиком походить, то видно, что при исполнении из Flash программа падает в бесконечный цикл:

startup_MCP_gcc.S

Код: Выделить всё

/**
 * @brief  This is the code that gets called when the processor receives an 
 *         unexpected interrupt.  This simply enters an infinite loop, preserving
 *         the system state for examination by a debugger.
 * @param  None     
 * @retval None       
*/
    .section  .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
  b  Infinite_Loop
  .size  Default_Handler, .-Default_Handler
Отладочная плата LDM-SYSTEMS
Лог загрузки программы | Показать
Open On-Chip Debugger 0.10.0-dev-00189-g554313b-dirty (2016-01-12-08:19)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
adapter speed: 2000 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
none separate
cortex_m reset_config sysresetreq
trst_only separate trst_push_pull
adapter speed: 400 kHz
Info : No device selected, using first device.
Info : J-Link V9 compiled Jun 16 2017 16:15:10
Info : Hardware version: 9.30
Info : VTarget = 3.358 V
Info : clock speed 400 kHz
Info : JTAG tap: k1921vk01t.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
Info : k1921vk01t.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : JTAG tap: k1921vk01t.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
k1921vk01t.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
Error: JTAG-DP STICKY ERROR
Error: Failed to read memory at 0xf0000004
Info : unknown chipid, assuming K1921VK01T
flash 'niietcm4' found at 0x00000000
Started by GNU ARM Eclipse
Info : accepting 'gdb' connection on tcp/3333
Error: address + size wrapped(0xfffffffe, 0x00000004)
Info : JTAG tap: k1921vk01t.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
k1921vk01t.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000dd4 msp: 0x2002fffc
semihosting is enabled
Error: address + size wrapped(0xfffffffe, 0x00000004)
Info : JTAG tap: k1921vk01t.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
k1921vk01t.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000dd4 msp: 0x2002fffc, semihosting
Info : JTAG tap: k1921vk01t.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
k1921vk01t.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000dd4 msp: 0x2002fffc, semihosting
Info : JTAG tap: k1921vk01t.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
k1921vk01t.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x00000dd4 msp: 0x2002fffc, semihosting
===== arm v7m registers
(0) r0 (/32): 0x00000000
(1) r1 (/32): 0x00000000
(2) r2 (/32): 0x00000000
(3) r3 (/32): 0x00000000
(4) r4 (/32): 0x00000000
(5) r5 (/32): 0x00000000
(6) r6 (/32): 0x00000000
(7) r7 (/32): 0x00000000
(8) r8 (/32): 0x00000000
(9) r9 (/32): 0x00000000
(10) r10 (/32): 0x00000000
(11) r11 (/32): 0x00000000
(12) r12 (/32): 0x00000000
(13) sp (/32): 0x2002FFFC
(14) lr (/32): 0xFFFFFFFF
(15) pc (/32): 0x00000DD4
(16) xPSR (/32): 0x01000000
(17) msp (/32): 0x2002FFFC
(18) psp (/32): 0x00000000
(19) primask (/1): 0x00
(20) basepri (/8): 0x00
(21) faultmask (/1): 0x00
(22) control (/2): 0x00
(23) d0 (/64): 0x0000000000000000
(24) d1 (/64): 0x0000000000000000
(25) d2 (/64): 0x0000000000000000
(26) d3 (/64): 0x0000000000000000
(27) d4 (/64): 0x0000000000000000
(28) d5 (/64): 0x0000000000000000
(29) d6 (/64): 0x0000000000000000
(30) d7 (/64): 0x0000000000000000
(31) d8 (/64): 0x0000000000000000
(32) d9 (/64): 0x0000000000000000
(33) d10 (/64): 0x0000000000000000
(34) d11 (/64): 0x0000000000000000
(35) d12 (/64): 0x0000000000000000
(36) d13 (/64): 0x0000000000000000
(37) d14 (/64): 0x0000000000000000
(38) d15 (/64): 0x0000000000000000
(39) fpscr (/32): 0x00000000
===== Cortex-M DWT registers
(40) dwt_ctrl (/32)
(41) dwt_cyccnt (/32)
(42) dwt_0_comp (/32)
(43) dwt_0_mask (/4)
(44) dwt_0_function (/32)
(45) dwt_1_comp (/32)
(46) dwt_1_mask (/4)
(47) dwt_1_function (/32)
(48) dwt_2_comp (/32)
(49) dwt_2_mask (/4)
(50) dwt_2_function (/32)
(51) dwt_3_comp (/32)
(52) dwt_3_mask (/4)
(53) dwt_3_function (/32)

Аватара пользователя
Лашкевич
Сообщения: 96
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: Eclipse + GCC + OpenOCD: готовая сборка среды

Сообщение Лашкевич » 24 июл 2017, 11:17

Проверьте ревизию камня, может быть это какой-то из старой серии? На нем написано К1921... или NT32... ?
В какой момент идет попадание в бесконечный цикл? Попробуйте в настройках Debug Configurations на вкладке Startup снять галочку на установке брейкпоинта на main и снять continue, запустить программу из флеша. Процессор должен попасть на начало флеша и выполняться по ассемблерным командам файла startup_MCP_gcc.S. Откройте окно дизассемблера. Совпадают ли команды в окне дизассемблера с теми, что находятся в startup_MCP_gcc.S? Это косвенно показвает, что флеш прошилась как таковая и там правильный код. И на выполнении какой команды какой функции программа уходит в беспонечный цикл? Включите Instruction Stepping Mode и прошагайте до места креша.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

Аватара пользователя
MR.Smith
Сообщения: 76
Зарегистрирован: 25 апр 2016, 10:56

Re: Eclipse + GCC + OpenOCD: готовая сборка среды

Сообщение MR.Smith » 25 июл 2017, 12:15

Лашкевич писал(а):
24 июл 2017, 11:17
Проверьте ревизию камня, может быть это какой-то из старой серии? На нем написано К1921... или NT32... ?
K1921BK01 ARM 1551
Лашкевич писал(а):
24 июл 2017, 11:17
Откройте окно дизассемблера. Совпадают ли команды в окне дизассемблера с теми, что находятся в startup_MCP_gcc.S? Это косвенно показвает, что флеш прошилась как таковая и там правильный код.
Код сходится.
Лашкевич писал(а):
24 июл 2017, 11:17
В какой момент идет попадание в бесконечный цикл?
В бесконечный цикл падает здесь (на предпоследней команде dsb):

Код: Выделить всё

/* Включение плавоточки*/

  ldr.w R0, =0xE000ED88
  ldr R1, [R0]
  orr R1, R1, #(0xF << 20)
  str R1, [R0]
  dsb
  isb /*reset pipeline now the FPU is enabled*/

Аватара пользователя
Лашкевич
Сообщения: 96
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: Eclipse + GCC + OpenOCD: готовая сборка среды

Сообщение Лашкевич » 25 июл 2017, 12:53

Очень странная проблема. Ну а попробуйте закомментировать весь этот кусок кода, который включает плавающую точку. Будет запускаться программа?
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

Аватара пользователя
Лашкевич
Сообщения: 96
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: Eclipse + GCC + OpenOCD: готовая сборка среды

Сообщение Лашкевич » 25 июл 2017, 13:20

Попробуйте переопределить обработчики для всех типов исключений и определить, какое же именно исключение возникает. Ну, например, по аналогии с Default_Handler сделать такой же для MemManage_Handler и всех остальных исключений, перечисленных в g_pfnVectors. И потом узнать, в какое же именно исключение падает программа. Возможно, есть какой-то способ узнать, какое исключение сработало прямо из Default_Handler (может быть, в каком-то регистре есть эта информация), но я сходу не придумал.

Код включения плавающей точки взят из официальнго мануала http://infocenter.arm.com/help/index.js ... BJHIG.html
непонятно, как он может сбоить, тем более на инструкции DSB
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

prostoRoman
Сообщения: 29
Зарегистрирован: 11 июл 2014, 15:06

Re: Eclipse + GCC + OpenOCD: готовая сборка среды

Сообщение prostoRoman » 25 июл 2017, 13:29

2017-07-25_12-27-43.png
Программный регистр состояния прерываний IPSR
2017-07-25_12-27-43.png (79.36 КБ) 629 просмотров

Аватара пользователя
Лашкевич
Сообщения: 96
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: Eclipse + GCC + OpenOCD: готовая сборка среды

Сообщение Лашкевич » 25 июл 2017, 13:42

Спасибо! Значит, согласно http://infocenter.arm.com/help/index.js ... BIBGJ.html, смотрим нижнюю часть регистра xPSR на вкладке регистров.
Например, при попытке я получил 3 в нижней части xPSR, что обозначает Hard Fault, и вроде как это и должно быть согласно http://www.keil.com/appnotes/files/apnt209.pdf
интересно, что покажет код MR.Smith
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

Ответить

Вернуться в «32-разрядные микроконтроллеры на ядре ARM Cortex»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей