Миландр
http://forum.milandr.ru/

Пакет для GNU ARM Eclipse CMSIS Packs Manager
http://forum.milandr.ru/viewtopic.php?f=22&t=3365
Страница 2 из 3

Автор:  kravitz [ 2017-фев-20 11:39 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

juvf писал(а):
Спасибо за пример. Вы пишете, что ${cross_prefix}gdb${cross_suffix} нужно исправить на ${cross_prefix}gdb-py${cross_suffix}. В вашем примере тоже указано ${cross_prefix}gdb-py${cross_suffix}. При запуске отладки выскакивает сообщение
Цитата:
Could not determine GDB version after sending: arm-none-eabi-gdb-py --version, response:

И отладка не запускается. Почему? Почему нужно gdb менять на gdb-py? Почему эксипс не находит arm-none-eabi-gdb-py?

ps Убрал '-py" - отладка заработала.

arm-none-eabi-gdb-py потому что, скрипт загрузки программы в MCU через J-Link написан на Python. Как его настроить писал здесь. Есть другие способы загрузить программу, например OpenOCD.

Автор:  juvf [ 2017-фев-27 06:34 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

Не идет отладка.... миландр меня делает.... не могу ни как противостоять...

Помогите пожалуйста....

I. Запуск вашего примера
1) скачал ваш пример (git clone), импортировал в эклипс. собрал.
2) дебаг не заработал. у меня процессор 1986ВЕ93У. Изкоробки не должно работать. рихтую под свой процессор.
2.1) добавил в сборку CM3, убрал CM1
2.2) в свойствах проекта C/C++ build->Cross ARM C Compiler->Preprocessor меняю дефайн на USE_MDR1986VE9x
2.3) в свойствах проекта C/C++ build->Cross ARM C Compiler->Inclides меняю пути
Код:
"${workspace_loc:/${ProjName}/source/MDR32F9Qx_StdPeriph_Driver/inc}"
"${workspace_loc:/${ProjName}/source/CMSIS/CM3/CoreSupport}"
"${workspace_loc:/${ProjName}/source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/inc}"
"${workspace_loc:/${ProjName}/source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup}"

собрал проект
3)Дебуг. Открываю окно Debuger. Там появились две конфигурации: mdr1986x_RTT и mdr1986x_RTT BE3. Я так понял нужна конфигурация mdr1986x_RTT. подправил название под свои пути, получилось см скриншоты. На вкладке Startup отметил галки Set breakpoint at: main и Continue. Жму Debug. Побежал текст в кансоли.... и остановился на первой строчке в main(). Вроде счастье... но стал шагать по шагам и обнаружил, что шагаю по пустому... см скрин Снимок4: в окошке дизасемблера нет кода. Как будь-то код не залилися в процессор.
Что я делаю не так?

Вот лог из кансоли JLinkGDBServerCL.exe
Цитата:
SEGGER J-Link GDB Server V6.10d Command Line Version

JLinkARM.dll V6.10d (DLL compiled Oct 6 2016 22:10:47)

-----GDB Server start settings-----
GDBInit file: none
GDB Server Listening port: 2331
SWO raw output listening port: 2332
Terminal I/O port: 2333
Accept remote connection: localhost only
Generate logfile: off
Verify download: on
Init regs on start: on
Silent mode: off
Single run mode: on
Target connection timeout: 0 ms
------J-Link related settings------
J-Link Host interface: USB
J-Link script: none
J-Link settings file: none
------Target related settings------
Target device: Cortex-M3
Target interface: SWD
Target interface speed: 2000kHz
Target endian: little

Connecting to J-Link...
J-Link is connected.
Firmware: J-Link ARM V8 compiled Nov 28 2014 13:44:46
Hardware: V8.00
S/N: 158000503
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull
Checking target voltage...
Target voltage: 3.24 V
Listening on TCP/IP port 2331
Connecting to target...Connected to target
Waiting for GDB connection...Connected to 127.0.0.1
Reading all registers
Read 4 bytes @ address 0x00000000 (Data = 0x20008000)
Read 2 bytes @ address 0x00000000 (Data = 0x8000)
Target interface speed set to 1000 kHz
Resetting target
Halting target CPU...
...Target halted (PC = 0x000000A6)
R0 = 00000000, R1 = 00000000, R2 = 00000000, R3 = 00000000
R4 = 00000000, R5 = 00000000, R6 = 00000000, R7 = 00000000
R8 = 00000000, R9 = 00000000, R10= 00000000, R11= 00000000
R12= 00000000, R13= 20008000, MSP= 20008000, PSP= 00000000
R14(LR) = FFFFFFFF, R15(PC) = 000000A6
XPSR 01000000, APSR 00000000, EPSR 01000000, IPSR 00000000
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00
Reading all registers
Read 4 bytes @ address 0x000000A6 (Data = 0x4D984898)
Read 2 bytes @ address 0x000000A6 (Data = 0x4898)
Select auto target interface speed (2000 kHz)
Flash breakpoints enabled
Semi-hosting enabled (Handle on BKPT)
Semihosting I/O set to TELNET Client
SWO disabled succesfully.
SWO enabled succesfully.
Read 4 bytes @ address 0x000000A6 (Data = 0x4D984898)
Read 2 bytes @ address 0x00000000 (Data = 0x8000)
Read 2 bytes @ address 0x00000002 (Data = 0x2000)
Read 2 bytes @ address 0x00000004 (Data = 0x00A7)
Read 2 bytes @ address 0x00000006 (Data = 0x0000)
Read 2 bytes @ address 0x00000008 (Data = 0x001D)
Read 2 bytes @ address 0x0000000A (Data = 0x0000)
Read 2 bytes @ address 0x0000000C (Data = 0x001D)
Read 2 bytes @ address 0x0000000E (Data = 0x0000)
Read 2 bytes @ address 0x00000010 (Data = 0x001D)
Read 2 bytes @ address 0x00000012 (Data = 0x0000)
Read 2 bytes @ address 0x00000014 (Data = 0x001D)
Read 2 bytes @ address 0x00000016 (Data = 0x0000)
Read 2 bytes @ address 0x00000018 (Data = 0x001D)
Read 2 bytes @ address 0x0000001A (Data = 0x0000)
Read 2 bytes @ address 0x0000001C (Data = 0xE7FE)
Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
Halting target CPU...
...Target halted (PC = 0x000000A6)
Read 4 bytes @ address 0xE000ED00 (Data = 0x412FC230)
Reading 8192 bytes @ address 0x08000000
Reading 2916 bytes @ address 0x08002000
Executed SetRTTAddr 0x20100000
Read 4 bytes @ address 0xFFFFFFFF (Data = 0x00800000)
Read 2 bytes @ address 0xFFFFFFFF (Data = 0x0000)
Read 4 bytes @ address 0xFFFFFFFF (Data = 0x00800000)
Read 2 bytes @ address 0xFFFFFFFF (Data = 0x0000)
Read 2 bytes @ address 0x000011B2 (Data = 0x0000)
Read 2 bytes @ address 0x000011B2 (Data = 0x0000)
Read 2 bytes @ address 0x000011B2 (Data = 0x0000)
Read 2 bytes @ address 0x000011B2 (Data = 0x0000)
Read 2 bytes @ address 0x000011B2 (Data = 0x0000)
Read 2 bytes @ address 0x000011B2 (Data = 0x0000)
R0 = 00000000, R1 = 00000000, R2 = 00000000, R3 = 00000000
R4 = 00000000, R5 = 00000000, R6 = 00000000, R7 = 00000000
R8 = 00000000, R9 = 00000000, R10= 00000000, R11= 00000000
R12= 00000000, R13= 20008000, MSP= 20008000, PSP= 00000000
R14(LR) = FFFFFFFF, R15(PC) = 000000A6
XPSR 01000000, APSR 00000000, EPSR 01000000, IPSR 00000000
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00
Reading all registers
Read 4 bytes @ address 0x000000A6 (Data = 0x4D984898)
Read 2 bytes @ address 0x00000000 (Data = 0x8000)
Read 2 bytes @ address 0x00000002 (Data = 0x2000)
Read 2 bytes @ address 0x00000004 (Data = 0x00A7)
Read 2 bytes @ address 0x00000006 (Data = 0x0000)
Read 2 bytes @ address 0x00000008 (Data = 0x001D)
Read 2 bytes @ address 0x0000000A (Data = 0x0000)
Read 2 bytes @ address 0x0000000C (Data = 0x001D)
Read 2 bytes @ address 0x0000000E (Data = 0x0000)
Read 2 bytes @ address 0x00000010 (Data = 0x001D)
Read 2 bytes @ address 0x00000012 (Data = 0x0000)
Read 2 bytes @ address 0x00000014 (Data = 0x001D)
Read 2 bytes @ address 0x00000016 (Data = 0x0000)
Read 2 bytes @ address 0x00000018 (Data = 0x001D)
Read 2 bytes @ address 0x0000001A (Data = 0x0000)
Read 2 bytes @ address 0x0000001C (Data = 0xE7FE)
Setting breakpoint @ address 0x000011B2, Size = 2, BPHandle = 0x0001
Starting target CPU...
...Breakpoint reached @ address 0x000011B2
Reading all registers
Read 4 bytes @ address 0x000011B2 (Data = 0x00000000)
Removing breakpoint @ address 0x000011B2, Size = 2
Read 4 bytes @ address 0x400D804C (Data = 0x00000000)
Read 4 bytes @ address 0x400D804C (Data = 0x00000000)
Read 4 bytes @ address 0x00000000 (Data = 0x20008000)
Read 4 bytes @ address 0x400D804C (Data = 0x00000000)
Read 4 bytes @ address 0x00000000 (Data = 0x20008000)
Reading 12 bytes @ address 0x400D803C
Performing single step...
...Breakpoint reached @ address 0x000011B4
Reading all registers
Read 4 bytes @ address 0x000011B4 (Data = 0x00000000)
Performing single step...
...Breakpoint reached @ address 0x000011B6
Reading all registers
Read 4 bytes @ address 0x000011B6 (Data = 0x00000000)
Performing single step...
...Breakpoint reached @ address 0x000011B8
Reading all registers
Read 4 bytes @ address 0x000011B8 (Data = 0x00000000)
Performing single step...
...Breakpoint reached @ address 0x000011BA
Reading all registers
Read 4 bytes @ address 0x000011BA (Data = 0x00000000)
Performing single step...
...Breakpoint reached @ address 0x000011BC
Reading all registers
Read 4 bytes @ address 0x000011BC (Data = 0x00000000)
Performing single step...
...Breakpoint reached @ address 0x000011BE
Reading all registers
Read 4 bytes @ address 0x000011BE (Data = 0x00000000)
Performing single step...
...Breakpoint reached @ address 0x000011C0
Reading all registers
Read 4 bytes @ address 0x000011C0 (Data = 0x00000000)
Reading 64 bytes @ address 0x000011C0
Reading 64 bytes @ address 0x00001200
Reading 64 bytes @ address 0x00001240
Reading 64 bytes @ address 0x00001180


II Второй путь, собственно к которому я иду - это создание проекта для миландровского процессора для работы в эклипсе. Как это сделать? Как это делаете вы?
Например:
1)В Eclipse открываем File->New->C++ Project
2)Выбираем Project Type->Empty Project, Toolchains Cross ARM GCC
3)....
4)...
5)Добавляем в проект .../CM3/...
6)Указываем пути ....
7) указываем define USE_MDR1986VE9x
и т.д.

Я могу сам написать (даже хочу) пошаговую инструкцию. Но пока ни чего не получается. Не могу ни ваш проект запустить в отладчике, ни свой с нуля создать.

Вложения:
Снимок4.PNG
Снимок4.PNG [ 136.44 КБ | Просмотров: 4778 ]
Снимок3.PNG
Снимок3.PNG [ 101.57 КБ | Просмотров: 4778 ]
Снимок2.PNG
Снимок2.PNG [ 103.76 КБ | Просмотров: 4778 ]
Снимок1.PNG
Снимок1.PNG [ 74.37 КБ | Просмотров: 4778 ]

Автор:  kravitz [ 2017-фев-27 14:24 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

juvf писал(а):
Не идет отладка.... миландр меня делает.... не могу ни как противостоять...
дебаг не заработал. у меня процессор 1986ВЕ93У. Из коробки не должно работать. рихтую под свой процессор.

Должно работать из коробки, я же писал выше: в проекте 3 конфигурации BE1 для 1986BE1, BE3 для 1986BE3, BE9x для 1986BE9x.
Переключитесь на BE9x, после этого проверьте, что папка CM3 включена в сборку, тестировал на 1986BE92.

UPDATE
Скачал проект с github, импортировал, проверил - отладка работает, вам нужно убедиться, что программа записывается в EEPROM.

Автор:  kravitz [ 2017-фев-27 14:39 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

Загрузка программы из консоли работает?
Код:
JFlash.bat myprog.bin

Что в логе "JFlash.log"?

Автор:  juvf [ 2017-фев-28 11:42 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

kravitz писал(а):
Загрузка программы из консоли работает?
Код:
JFlash.bat myprog.bin

Что в логе "JFlash.log"?

нет файла JFlash.log, есть вывод в кансоль. Вроде загрузка из кансоли работает

Вложения:
Снимок.PNG
Снимок.PNG [ 35.84 КБ | Просмотров: 4740 ]

Автор:  juvf [ 2017-фев-28 12:08 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

kravitz писал(а):
Должно работать из коробки, я же писал выше: в проекте 3 конфигурации BE1 для 1986BE1, BE3 для 1986BE3, BE9x для 1986BE9x.
Переключитесь на BE9x, после этого проверьте, что папка CM3 включена в сборку, тестировал на 1986BE92.

заного импортировал проект. переключился на BE9x. Странная структура каталого.... есть mdr1986x_RTT/source/CMSIS/CM1 - включена в компиляцию, mdr1986x_RTT/source/CMSIS/CM3 - исключена из компиляции.... mdr1986x_RTT/BE9xsource/CMSIS/CM3 - включена. Зачем нужна СМ1? Два раза включена папка MDR32F9Qx_StdPeriph_Driver.... почему? Две папки source, RTT....
Открыл main.c.... эклипс показывает что определён дефайн USE_MDR1986VE3.... открываю свойства проекта.... смотрю что там C/C++ build->Cross ARM C Compiler->Preprocessor->Define symbols, а там USE_MDR32F9Q2_Rev1 - что это за дефайн? Где USE_MDR1986VE9x?

инклуде на СМ3, и вроде нужные файлы при сборке цепляются
Код:
Building file: ../source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/gcc/startup_MDR32F9Qx.S
Invoking: Cross ARM GNU Assembler
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -Wall -Wextra -Wshadow -Wredundant-decls  -g3 -x assembler-with-cpp -D__STARTUP_CLEAR_BSS -D__START=main -D__STACK_SIZE=0x1000 -D__HEAP_SIZE=0x0100 -MMD -MP -MF"source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/gcc/startup_MDR32F9Qx.d" -MT"source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/gcc/startup_MDR32F9Qx.o" -c -o "source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/gcc/startup_MDR32F9Qx.o" "../source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/gcc/startup_MDR32F9Qx.S"
Finished building: ../source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/gcc/startup_MDR32F9Qx.S

Building file: ../source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/system_MDR32F9Qx.c
Invoking: Cross ARM C Compiler
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -Wall -Wextra -Wshadow -Wredundant-decls  -g3 -DUSE_MDR32F9Q2_Rev1 -DUSE_RTT -I"D:\Work\transformEnergy\workspase\mdr1986x-pack-repo-master\source\Example_Projects_Eclipse\mdr1986x_RTT\source\CMSIS\CM3\CoreSupport" -I"D:\Work\transformEnergy\workspase\mdr1986x-pack-repo-master\source\Example_Projects_Eclipse\mdr1986x_RTT\source\CMSIS\CM3\DeviceSupport\MDR32F9Qx\inc" -I"D:\Work\transformEnergy\workspase\mdr1986x-pack-repo-master\source\Example_Projects_Eclipse\mdr1986x_RTT\source\CMSIS\CM3\DeviceSupport\MDR32F9Qx\startup" -I"D:\Work\transformEnergy\workspase\mdr1986x-pack-repo-master\source\Example_Projects_Eclipse\mdr1986x_RTT\source\MDR32F9Qx_StdPeriph_Driver\inc" -I"D:\Work\transformEnergy\workspase\mdr1986x-pack-repo-master\source\Example_Projects_Eclipse\mdr1986x_RTT\source\RTT" -I"D:\Work\transformEnergy\workspase\mdr1986x-pack-repo-master\source\Example_Projects_Eclipse\mdr1986x_RTT\source" -std=gnu11 -Wno-comment -MMD -MP -MF"source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/system_MDR32F9Qx.d" -MT"source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/system_MDR32F9Qx.o" -c -o "source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/system_MDR32F9Qx.o" "../source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/system_MDR32F9Qx.c"
Finished building: ../source/CMSIS/CM3/DeviceSupport/MDR32F9Qx/startup/system_MDR32F9Qx.c


Вложения:
Снимок3.PNG
Снимок3.PNG [ 68.03 КБ | Просмотров: 4739 ]
Снимок2.PNG
Снимок2.PNG [ 56.04 КБ | Просмотров: 4739 ]
Снимок1.PNG
Снимок1.PNG [ 28.62 КБ | Просмотров: 4739 ]
Снимок.PNG
Снимок.PNG [ 20.31 КБ | Просмотров: 4739 ]

Автор:  juvf [ 2017-фев-28 12:45 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

дебаг заработал, заливка тоже заработала.

теперь как сделать проект с чистого листа?

Автор:  kravitz [ 2017-фев-28 13:04 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

juvf писал(а):
нет файла JFlash.log, есть вывод в кансоль. Вроде загрузка из кансоли работает


JFlash.log должен появиться при загрузке/отладке из Eclipse.

Автор:  kravitz [ 2017-фев-28 13:16 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

Папка BE9x создается Eclipse'ом перед сборкой соответствующей конфигурации, в нее содержатся генерируемые файлы.
После импорта и компиляции проект должен выглядеть так:

Вложения:
RTT_1.jpg
RTT_1.jpg [ 380.85 КБ | Просмотров: 4734 ]

Автор:  kravitz [ 2017-фев-28 13:45 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

juvf писал(а):
теперь как сделать проект с чистого листа?

Как мне кажется, самый простой вариант использовать готовый пример:
переименовать, ненужное удалить и т.д.

Для первого проекта я использовал New Project | C++ Project | STM32F10x,
затем перевел его на MDR32F9x. Теперь начинаю новый проект с этой заготовки,
примерно с того, что выложил. Используя Project wizard вы получите почти
тоже самое, только для STM32))

Автор:  prostoRoman [ 2017-мар-01 08:44 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

juvf писал(а):
заного импортировал проект. переключился на BE9x. Странная структура каталого.... есть mdr1986x_RTT/source/CMSIS/CM1 - включена в компиляцию, mdr1986x_RTT/source/CMSIS/CM3 - исключена из компиляции.... mdr1986x_RTT/BE9xsource/CMSIS/CM3 - включена. Зачем нужна СМ1? Два раза включена папка MDR32F9Qx_StdPeriph_Driver.... почему? Две папки source, RTT....
Открыл main.c.... эклипс показывает что определён дефайн USE_MDR1986VE3.... открываю свойства проекта.... смотрю что там C/C++ build->Cross ARM C Compiler->Preprocessor->Define symbols, а там USE_MDR32F9Q2_Rev1 - что это за дефайн? Где USE_MDR1986VE9x?

инклуде на СМ3, и вроде нужные файлы при сборке цепляются

USE_MDR32F9Q2_Rev1 нормальный дефайн. Вам больше подойдёт USE_MDR32F9Q3_Rev1, но не принципиально. Сделайте выложите скрин файла MDR32F9Qx_cohfig.h.
Скорее всего тупит сам эклипс, т.к. USE_MDR1986VE9x определено в MDR32F9Qx_cohfig.h в строке ~54.

ЗЫ. кОнсоль.
ЗЗЫ. сам иногда делаю так: в условный project_config.h включаю содержимое MDR32F9Qx_lib.h, MDR32F9Qx_board.h и MDR32F9Qx_config.h, редактируя под себя. В сборке, разумеется, этих файлов нет. Для реальных проектов правильнее так, а не как миландровцы для своих примеров сделали.

Автор:  kravitz [ 2017-мар-01 12:19 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

prostoRoman писал(а):
USE_MDR32F9Q2_Rev1 нормальный дефайн. Вам больше подойдёт USE_MDR32F9Q3_Rev1, но не принципиально. Сделайте выложите скрин файла MDR32F9Qx_cohfig.h.
Скорее всего тупит сам эклипс, т.к. USE_MDR1986VE9x определено в MDR32F9Qx_cohfig.h в строке ~54.

В примере (проекте) о котором идет речь, определения USE_MDR32F9XX вынесены в настройки, так как проект содержит несколько конфигураций под разные процессоры.

Автор:  Immortal_Buka [ 2017-май-15 16:39 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

реп не работает =(

Автор:  kravitz [ 2017-май-15 20:02 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

После обновления Eclipse/Plugins и у меня не работает... Завтра буду разбираться. Спасибо!

Автор:  Immortal_Buka [ 2017-май-16 09:29 ]
Заголовок сообщения:  Re: Пакет для GNU ARM Eclipse CMSIS Packs Manager

как мне кажется, дело в гитхабе

Страница 2 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/