Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как залить программу в мк 0_O ?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Kasey
У меня есть плата olimex aduc-m7020 с мк. Я написал простенькую программу в IAR EWARM (взял с сайта olimex и слегка переделал). У платы есть usb. Я сгенерировал hex файл (его ли надо?).
Какие установки в опциях нужно установить?
Как залить программу в мк и проверить ее работоспособность? Какие программы нужны? Надо ли дописывать еще что-то в коде?
Текст кода:
Нажмите для просмотра прикрепленного файла

Я этим ни разу не занимался и в глаза не видел как это делается. Мне нужна конкретная информация по моему вопросу, кто-нибудь может подкинуть полезных ссылок?
Kasey
Неужели всем сложно помочь мне? ((
AHTOXA
Спокойствие, только спокойствие! © smile.gif
Программа заливается в этот процессор через последовательный порт. USB на вашей плате - это преобразователь USB-последовательный порт. Программа для заливки называется ARMWSD, качается с сайта производителя.
Kasey
Спасибо, но что-то у меня все равно не так...

Запускаю прогу, подключаю плату через USB A-B (на плате выход B ). Загораются лампочки питания на плате. Но в ARMWSD можно выбрать только COM1 порт. Но у меня нет кабеля для COM порта или JTAG. Некто мне посоветовал что нужна другая программа, где поддерживается USB, и что лучше заливать через JTAG. Я наверное просто делаю что-то не так.

А, и еще: что значат слова Press Download and pulse Reset on hardware ? Я так понимаю, что я должен определенным способом нажать две кнопки на плате и только после этого программа увидит плату?
Сергей Борщ
QUOTE (Kasey @ Dec 2 2010, 12:20) *
Запускаю прогу, подключаю плату через USB A-B (на плате выход B ). Загораются лампочки питания на плате. Но в ARMWSD можно выбрать только COM1 порт.
Если у вас на плате стоит мост USB-UART, то при подключении виндовс должен был запросить драйвера. После успешной установки драйверов в системе должен появиться еще один COM. Вот на него и надо натравливать ARMWSD. Если у вас в компе нет встроенного COM-порта, то возможно этот COM1 и есть ваш виртуальный. Точнее можно посмотреть в диспетчере устройств.


QUOTE (Kasey @ Dec 2 2010, 12:20) *
А, и еще: что значат слова Press Download and pulse Reset on hardware ? Я так понимаю, что я должен определенным способом нажать две кнопки на плате и только после этого программа увидит плату?
Вы должны нажать кнопку Download в ARMWSD и после этого нажать кнопку сброса на вашей плате.
Kasey
Цитата(Сергей Борщ @ Dec 2 2010, 14:56) *
при подключении виндовс должен был запросить драйвера.


Да, виндовс запрашивает драйвера как только я подключаю плату. А где их можно взять? и что это за драйвера?

А есть другие программы кроме ARMWSD для моей платы?
AHTOXA
Цитата(Kasey @ Dec 2 2010, 19:21) *
Да, виндовс запрашивает драйвера как только я подключаю плату. А где их можно взять? и что это за драйвера?

Ну давайте я погуглю за вас. Вводим в гугль название вашей платы: olimex aduc-m7020. Находим страничку производителя.
Там есть схема. На ней написано название микросхемы-конвертера: FT323BM.
Дальше пожалуйста самиsmile.gif
Kasey
Спасибо большое! Пойду дальше разбираться...
Kasey
Еще раз благодарю за ответы (про драйвера для usb не догадался бы rolleyes.gif )!!! ...Но...

Программу удается залить на мк, но она почему-то не работает. (Пробовал грузить разные - и с olimex'а про светодиоды и из примеров keil)
Текст моей самой маленькой программы:

#include "ledonly.h"
int main (void)
{

GP0DAT=0xC0000000; // выводы 0.7 и 0.6 - выходы (32, 31); желтый и зеленый леды
GP4DAT=0x04000000; // 4.2 - тоже выход (26) диод рядом с мк

while (1){
GP4DAT=0x04040000; // даю данные на вывод
GP0DAT |= 0x00400000; // тоже самое для зеленого
GP0SET = 0x800000; // так вроде тоже можно
}
}

//ledonly.h
#include <ioaduc7020.h>

После надписи в ARMWSD ""flashing complete" я, как понимаю, надо нажать RESET на плате или Run. Дальше пишется running... и ничего не загорается.
Я что-то делаю не так? Может где в настройках проекта или программатора покопаться? smile3046.gif

Помогите сделать реальный первый шаг в программировании мк, а то в ИАРе все без проблем компилируется и бегает. Может у кого-нибудь есть рабочий hex файл для этой платы, дайте пожалуйста.
AHTOXA
Цитата(Kasey @ Dec 7 2010, 02:47) *
Дальше пишется running... и ничего не загорается.
Я что-то делаю не так?


Судя по схеме, зажигать светодиоды надо нулём, а не единичкой sm.gif
Kasey
Все работает.
Оказалось, что все то, что я делал в IAR почему-то не работало на моей плате.
Загрузил keil и взял пример для aduc7024 оттуда, подправил и все работает отлично. Но когда создаю свой пример при компиляции пишется шесть ошибок "error L6218E: Undefined symbol DAbt_Handler (referred from aduc702x.o)" ;также вместо DAbt там FIQ, IRQ, PAbt, SWI, Undef. При выборе мк также подключал startup.s Однако, если заменить подключаемый startup.s на тот, что в примере, то все работает и он в два раза меньше.

Я сравнил эти два стартапа и обнаружил... эээ некое различие. Правый - из примера, левый - что подсунул keil.
Далее вместо "EXTERN Undef_Handler" поставил "Undef_Handler B Undef_Handler" и далее по аналогии поменял - заработало.
Нажмите для просмотра прикрепленного файла

Я так понимаю, startup.s - обязательный файл для программы. А то, что я поменял в нем каким-нибудь образом отразится вдальнейшем, если я буду использовать его в других программах (например, будут ли работать прерывания?)? Или я что-то не так сделал?
AHTOXA
Я с кейлом и иаром не работал, но примеры видел. В тех примерах у кейла был отдельный файл irq_arm.c, в котором были расположены обработчики исключений.
Так как сделали вы - тоже можно. Вы объявили для каждого из обработчиков прерывания минимальную заглушку, зацикливающую выполнение программы. Когда станет надо использовать прерывание (например IRQ), удалите из файла startup.s строчку
Код
IRQ_Handler:  B IRQ_Handler

,вместо неё верните строчку
Код
EXTERN IRQ_Handler

и добавьте в какой-нибудь из си-файлов обработчик прерывания:
Код
void    IRQ_Handler(void) __irq
{
...
}

Или же можно объявить в startup.s обработчики прерываний как WEAK, то есть, слабые. В этом случае менять startup.s при добавлении своего обработчика станет не надо, достаточно будет создать свой обработчик, и он будет задействован вместо WEAK-обработчика. К сожалению, я не знаю, как это делать в кейле.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.