Перейти к содержанию
    

Вливаюсь в коллектив ARMоводов

При отладке я шагаю по ассемблерным инструкциям. Можно ли настроить IAR-ARM, чтобы можно было шагать по строчкам исходной программы на C++,

Поставить курсор в окно с исходным текстом на С++.

а ещё лучше по брейкпоинтам?.. :ohmy:
Ставишь брейкпоинт (кажется не более 3 при отладке из флеш, при том что одну отладчик ставит на main если стоит галочка "Run to main" и сколько угодно при отладке из ОЗУ), жмешь Run.
Изменено пользователем Сергей Борщ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ставишь брейкпоинт (кажется не более 3 при отладке из флеш, при том что одну отладчик ставит на main если стоит галочка "Run to main"

Две :-( аппаратно поддерживаются, причем одна занимается в по умолчанию создаваемом проекте на перехват вывода и если не отключть (что-то типа галочки "runtime control..."), то уже не очень-то и потрассируешь с одной точкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сложилось впечатление что таймеры продалжают считать, даже если отладчик останавливает процессор. Это так или у меня глюки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сложилось впечатление что таймеры продалжают считать, даже если отладчик останавливает процессор. Это так или у меня глюки?

Да. В смысле таймеры а не глюки :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сложилось впечатление что таймеры продалжают считать, даже если отладчик останавливает процессор. Это так или у меня глюки?

Да. В смысле таймеры а не глюки :-)

Ну это засада - че трудно чтоли TAP контроллеру через элемент 2И-НЕ запереть clk всех шин, в том числе и переферийной от которой тактируются счетчики таймеров?

Ну да ладна, буду считать что так в какомто стандарте прописано. :cranky:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну это засада - че трудно чтоли TAP контроллеру....

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

Ну что из того, что какое-то из ПЕРЕФЕРИЙНЫХ устройств

случайно оказалось внутри корпуса контроллера? А если их реально 36 штук и все они внешние. Что "вешатся" по причине того, что при останове контроллера они в трепете не останавливаются? Более того, может оказаться желательным и именно неостанавливающаяся периферия.

Общий случай отладки с периферийным устройством решения останова оного не имеет, ну и примите это как даденность.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При отладке я шагаю по ассемблерным инструкциям. Можно ли настроить IAR-ARM, чтобы можно было шагать по строчкам исходной программы на C++,

Поставить курсор в окно с исходным текстом на С++.

Да, это конечно так, при отладке симулятором у меня всё шагает по коду на

C++, но при запуске отладки "в железе" при начале отладки у меня вылетает ошибка что main не найдено и запускает отладку по ASMу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В книге написано что в miniARM, LPC2101/2/3 в модуле MAM есть счетчики сбора статистики обращения к МАМ, к МАМ -> FLAS и тп, которые предназначены для мониторинга эфективности работы MAM и подсчета числа исполненых инструкций. Облазил хидеры, нигде немогу найти описания и адреса этих регистров. Где они находятся

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рассматривая пример программы для sam7s64 я наткнулся на следующее:

//Setting PLL and divider:

//- div by 5 Fin = 3,6864 =(18,432 / 5)

//- Mul 25+1: Fout = 95,8464 =(3,6864 *26)

//for 96 MHz the erroe is 0.16%

//Field out NOT USED = 0

//PLLCOUNT pll startup time estimate at : 0.844 ms

//PLLCOUNT 28 = 0.000844 /(1/32768)

pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & 3) | (AT91C_CKGR_PLLCOUNT & (28<<8)) | (AT91C_CKGR_MUL & (24<<16)));

В комментарии написано, что при частоте кварца в 18,432 МГц чтобы задать частоту PLL в 96 МГц нужно установить предделитель на 5 и множитель на 26. Однако в строчке кода задается ((18,432 / 3) * 24) = 147,456 Мгц. У меня плохо с математикой или я что-то не учел?... :w00t:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Плохо с математикой, вернее с булевой алгеброй, 3 и 24<<16 это маски, а не множители. :) Хотя код тоже не самый удачный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Плохо с математикой, вернее с булевой алгеброй, 3 и 24<<16 это маски, а не множители. :) Хотя код тоже не самый удачный.

Неа :) Как раз 3 и 24<<16 получается значения, а AT91C_CKGR_DIV и прочие это маски (что подтверждает дебаггер). Вероятно просто ошибка в примере...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А ну да. Это у меня чего-то последнее время плохо башка варит, внимательности маловато. Блин, это надо же маски вперед значения ставить. Не удивительно что код с ошибками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В качестве эксперемента посмотречть че будет если выставил для ФАПЧ множитель 7 и делитель 1. Получается частота тактирования ядра и переферии 103.219Мгц при кварце 14.7456МГц. При работе из флеша сразу ессесено возникает Page Abort Exeption, а вот при работе из паямяти все чудно рабоет, без збоевэ, в качестве теста зациклил переключение вывода порта - осцилограф мерит частотц 29,54Мгц

 

кусок кода

#define FastIOMeandr(fiomask) \
{\
    int fiomask = _BV(4);\
    int fiopin_addr = FIOPIN_ADDR;\
  __asm__ ("\
        mov  r0 , #0x01;    /*установка SCS=1*/ \
        str  r0 , %0   ;    \
        ldr  r0 , %3   ;    /*установка FIODIR = ~fiomask*/\
    str  r0 , %1   ;    \
        ldr  r0 , %3   ;    /*установка FIOMASK = fiomask */\
    mvn  r0 , r0   ;    \
    str  r0 , %2   ;    \
        ldr  r1 , %4   ;    /*загрузка адреса FIOPIN*/\
    ldr  r0 , %3   ;    \
    mov  r2 , #0x0 ;    \
     Lab:                    \
        str  r0 , [r1]; str  r2 , [r1]; str  r0 , [r1];str  r2 , [r1]; str  r0 , [r1]; str  r2 , [r1];    \
        str  r0 , [r1]; str  r2 , [r1]; str  r0 , [r1];str  r2 , [r1]; str  r0 , [r1]; str  r2 , [r1];    \
        ..... очень много раз эти пары строк....
        str  r0 , [r1]; str  r2 , [r1]; str  r0 , [r1];str  r2 , [r1]; str  r0 , [r1]; str  r2 , [r1];    \
        str  r0 , [r1]; str  r2 , [r1]; str  r0 , [r1];str  r2 , [r1]; str  r0 , [r1]; str  r2 , [r1];    \
        b Lab;             "\
        :                    \
        : "m"(SCS) , "m"(FIODIR) , "m"(FIOMASK) , "m"(fiomask) , "m"(fiopin_addr)\
    : "r0" , "r1"  , "r2"\
        ); \

 

Чето цифры не сходятся, если предположить что тратится по одному такту на инструкцию, частота переключения должна быть ~51Мгц (APBDIV выставлен равным 1-без деления частоты AHB), прчем 103.219 даже близко нацело не делится на 29,54.

Почему так?

Эксперементы с разгоном могут привести к неприятностям?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня возникла проблема с IAR-ARM 4.3xa, при запуске выдает такую ошибку .

Скачал новую версию 4.40a, установил - ошибка та же. Как это можно исправить?

На всякий случай скачал CW 1.6, нет ли у кого-нибудь клизмы для него? Пришлите, пожалуйста, если не сложно [email protected]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня возникла проблема

Это не оно?

http://supp.iar.com/Support/?note=70964&am...m=search+result

Другиx проблен не было.

 

 

Чето цифры не сходятся,

Никто обещал, что обращение к периферийной шине будет за один такт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...