Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32-H103 + IAR + MT-Link , помогите оживить
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
pan_oleg
Имею отладчик STM32-H103 Olimex.
А также JTAG отладчик MT-Link.
Викачал иар5.11.
Я так пологаю что через MT-Link мне нужно залить в STM32-H103 код и дальше работать с ним,
на пока все безуспешно.
Кто имел дело с всем этим добром, помогите розобратся.
Заранее благодарен.
KAlex
А разве MT-Link поддерживает STM32?
pan_oleg
А что не поддерживает?
cebotor
Цитата(pan_oleg @ Mar 11 2008, 13:13) *
А что не поддерживает?

все поддерживает и замечательно работает .
1 Ставите на MT-link полагающиеся ему драйвера от j-linka, клоном которого он является.
2 В IAR-е в опция проэкта - Debugger выбираете j- link и работаете . (кнопка дебаг)
KAlex
Ядро Cortex-M3.
Различия здесь: http://www.arm.com/products/CPUs/ARM_Cortex-M3.html
cebotor
Цитата(KAlex @ Mar 11 2008, 13:32) *
Ядро Cortex-M3.
Различия здесь: http://www.arm.com/products/CPUs/ARM_Cortex-M3.html

простите, это вы по поводу поддерживает или нет ?

говорю же поддерживает , ибо именно им (j-linkom ) IAR предполагает работать с этими процессорами.
Кортекс ядро Арм семейства, IAR под него EWARM, и его основной адаптер - j-link (то бишь MT-link)

на всякий случай, из практики - вот счас только что жал кнопку дебаг на указанном процессоре ;-)
pan_oleg
ок.
по очереди.
Драйувер для MT-Link я поставил, Он помтавился вместе с IAR5.11
потом после подключения MT-Link я установил дрова для J-Link
они поставелись о светодиодики на нем начали себя вести по другому

Подключаю MT-Link через JTAG к STM32-H103 Olimex и подаю на STM32-H103 Olimex питание (подключаю его к USB), и нечего не происходит
наверно я чтото не то делаю
кинте какойто рабочий екземпл проекта, пожалуйста
cebotor
абсолютно по очереди :
Цитата(pan_oleg @ Mar 11 2008, 15:35) *
Драйувер для MT-Link я поставил, Он помтавился вместе с IAR5.11

драйвера для MT-link не существует ибо MT-link это прибор созданный отечественными разработчиками(они тут бывают) по образу и подобию J-link.
с ИАР-ом ставяться драйвера на J-link, который как разработка ранее пренадлежал SEGGER , а потом был одолжен ИАР-у.

Цитата(pan_oleg @ Mar 11 2008, 15:35) *
потом после подключения MT-Link я установил дрова для J-Link

с Сеггера скачали ? в таком случае это просто более последняя версия .. они должны называться например
Setup_JLinkARM_V378c.exe
или
Setup_JLinkARM_V374g.zip или как нить вроде того
Цитата(pan_oleg @ Mar 11 2008, 15:35) *
они поставелись о светодиодики на нем начали себя вести по другому

сказать нечего - светодиодики должны вести себя по разному в зависимости от активности прибора .
у меня MT-link старый там 2 светодиода - красный ready и зеленый busy
в нормальном состоянии зеленый горит красный подмаргивает..
когда заливаю код - красный зажигается как светодиод HDD на компе - в зависимости от активности "на шине"..
Цитата(pan_oleg @ Mar 11 2008, 15:35) *
Подключаю MT-Link через JTAG к STM32-H103 Olimex и подаю на STM32-H103 Olimex питание (подключаю его к USB), и нечего не происходит
наверно я чтото не то делаю
кинте какойто рабочий екземпл проекта, пожалуйста

а что должно произойти ? вы проэкт компилите? проливаете ? как какой откуда ?
pan_oleg
драйвера я взя вот откуда:
C:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\drivers\Jlink
тоесть с своего винта
файлы
jlink.cat
jlinkx64.cat
jlink.inf
jlink64.inf
jlink.sys
jlink64.sys
в системе поставщик драйвера на устройство Segger
даю все сишники и хедери и О ЧУДО ДУБАГЕР ПОДКЛЮЧИЛСЯ, yeah.gif yeah.gif yeah.gif
огромное спасиба beer.gif
можно теперь примерчик для STM32-H103 Olimex чтоб хоть светодиодик зеленый включит и выключить
заранее спасибо
pan_oleg
Люди добрые, помогите с STM32 розобратся.
не могу ни одного примера запустить.
для начала пробую с установкой направления порта и мигание светодиодиками.
после входа в дебаг почемуто стою на адресе 0х08000120
код main.c розмещон в начальных адресах, начиная с 0х000002В8
не могу понять почему так
help.gif
KRS
Цитата(pan_oleg @ Mar 14 2008, 12:48) *
Люди добрые, помогите с STM32 розобратся.
не могу ни одного примера запустить.

Я для начала отключил весь IAR стартап, благо что Cortex-M3 сам стек инитит.
И сразу отказался от ST библиотеки.

Для первого раза можно вообще не инитить сегменты ( не использовать начальные значения и не полагать что все глобальные переменные будут = 0 ) тогда код сильно упрощается и вы можете все проконтролировать

Код
uint32_t const __vector_table[]@".intvec" =
{
    0x20002800, // стек в конец RAM
    (uint32_t)main
};
__noreturn
void main(void)
{
    RCC_APB2ENR_bit.IOPBEN = 1;
    RCC_APB2ENR_bit.IOPAEN = 1;
// дальше надо проинитить нужные GPIO ноги и попробовать дернуть ногой
// это можно сделать и через окно регистров в IAR для пробы там удобно все сделано


в настройках линкера надо указать
entry symbol __vector_table

а icf файл для отладки в RAM у меня такой

Код
define memory mem with size = 4G;
define region RAM = mem:[from 0x20000000 to 0x200027FF];

do not initialize { section .bss };

place at start of RAM { section .intvec };
place in RAM          { readonly,  readwrite };


для флеша
Код
define memory mem with size = 4G;
define region ROM = mem:[from 0 to 0x7FFF];
define region RAM = mem:[from 0x20000000 to 0x200027FF];

do not initialize { section .bss };

place at start of ROM { section .intvec};
place in ROM          { readonly };
place in RAM          { readwrite };


для отладки в RAM еще mac файл для дебагера, но я использую GDB сервер и openocd, с J link должно быть проще, надо посомтреть как будет инитится стек и PC при старте и может не надо будет PC устанавливать.
Код
execUserReset( )
{
    __message "RAM START";
    __writeMemory32(0x20000000,0xE000ED08,"Memory"); // VTOR
    __writeMemory32(0x05FA0001,0xE000ED0C,"Memory"); // Reset request
    __writeMemory32(0x20000000,0xE000ED08,"Memory"); // VTOR
    __writeMemory32(__readMemory32(0x20000004,"Memory") & (~1),0xB4,"Register"); //Set PC to entry point
    //__writeMemory32(0x20002800,0x8C,"Register"); // main stack
}
pan_oleg
извените, не совсем понял, куда мне нужно первую часть кода, что ви добавели, вставить, в main.c?

я добавил в main.c

uint32_t const __vector_table[]@".intvec" =
{
0x20002800, // ñòåê â êîíåö RAM
(uint32_t)main
};
__noreturn


и уменя выскочили ошыбки

Building configuration: 1 - Debug
Updating build tree...
main.c
Error[Pe077]: this declaration has no storage class or type specifier D:\Work\data_sheet\ARM32 CORTEX\my_first\main.c 33
Error[Pe065]: expected a ";" D:\Work\data_sheet\ARM32 CORTEX\my_first\main.c 33
Warning[Pe012]: parsing restarts here after previous syntax error D:\Work\data_sheet\ARM32 CORTEX\my_first\main.c 37
Error while running C/C++ Compiler

Total number of errors: 2
Total number of warnings: 1


возможно уменя и скомпилятором чтото не то ?
KRS
Цитата(pan_oleg @ Mar 14 2008, 14:46) *
извените, не совсем понял, куда мне нужно первую часть кода, что ви добавели, вставить, в main.c?

я предлагаю не добавлять, а создать новый проект, причем так что бы был только ваш код ни каких билиотек, инициализации сегментов и т.п... Для начала это позволит разобраться как стартует процессор, разобраться со стеком, точками входа...
(да еще в настройках дебагера убрать run to main что бы сразу останвливался)

Цитата(pan_oleg @ Mar 14 2008, 14:46) *
я добавил в main.c

uint32_t const __vector_table[]@".intvec" =
{
0x20002800, // ñòåê â êîíåö RAM
(uint32_t)main
};
__noreturn


__noreturn относится к определению main
pan_oleg
какой проект создавать , С или С++ ?
создаю через меню проджект, крийет
KRS
Цитата(pan_oleg @ Mar 14 2008, 14:59) *
какой проект создавать , С или С++ ?
создаю через меню проджект, крийет

раз пошли такие вопросы, проще думаю будет скопировать .ewp и .ewd от примера, потом просто удалить все файлы из проекта и добавить нужные ( для начала хватит одного сишного), потому что там еще куча настроек....
pan_oleg
Простите за глупые вопросы, я просто пока не очень розобрался в STM32.
Подкиньте пример, с которого можно скопировать .ewp и .ewd
pan_oleg
Спасибо всем за советы, получилось запустить.
Взял пример в папке иара, запустился, потом попробовал примеры из сайта ST, не компилет нормально.
Написал в обявлении void main(void) (как в примерах в папке иара), а не int main(void), и подвтавил изпримера icf-файл, о все заработало.
код заливается на отладчик в флешу, выходиш с дебага, он автономно работает. yeah.gif
Всем спасибо за помощ. a14.gif beer.gif
Думаю тему можно закрывать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.