реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблема с отладкой ARM через JTAG
the_spirit
сообщение Nov 25 2010, 11:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 25-11-10
Из: Красногорск
Пользователь №: 61 170



Использую IAR Embedded workbench 5.4 отлаживаю приложение на контроллере NXP LPC2103. При попытке запустить выполнение до breakpoint iar теряет контроль над контроллером при попытке остановить выполнение на текущей инструкции пишет "Unable to halt ARM Core". При выполнениии пошаговой отладки все работает нормально,но это чудовищно долго. Использую программатор MT-Link
опции отладчика J-link/J-trace частота работы определяется автоматически, breakpointы также автоматически. В программировании ARM новичок.
Go to the top of the page
 
+Quote Post
KRS
сообщение Nov 26 2010, 16:37
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



А где первый брейкпоинт стоит?
Попробуйте поставить через несколько асм инструкций и запустить, для проверки.
Может быть у вас реально чип виснет или перегружается до брейкпоинта (неправильная инициализация PLL, WDT ....)
Go to the top of the page
 
+Quote Post
the_spirit
сообщение Nov 26 2010, 16:51
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 25-11-10
Из: Красногорск
Пользователь №: 61 170



ставил на входе в main выходе функции инициализации
она выглядит слкдующим образом,возможно я не правильно инициализирую PLL?
//crystal is 14 745 600
//devide or multiplier
//here is calculate frecuence Cclk=Fosc*M 156<Fcco<320=60*2*P FCCO = 14.7456MHz * M * 2 * P = 235.9296MHz
PLLCFG_bit.MSEL = 0x3; //M - multiplier ->
PLLCFG_bit.PSEL = 0x1; //P - devider ->
PLLCON = 1; // Disable PLL, disconnected
PLLFEED = 0xAA;
PLLFEED = 0x55;

//set changes (require from architecture)
PLLFEED_bit.FEED = 0xAA;
PLLFEED_bit.FEED = 0x55;


//enable or connect PLL
//enable PLL
PLLCON_bit.PLLE = 1;
//set changes (require from architecture)
PLLFEED_bit.FEED = 0xAA;
PLLFEED_bit.FEED = 0x55;

//wait for PLOK (correct freq)
while(PLLSTAT_bit.PLOCK == 0);

//connect PLL
PLLCON_bit.PLLC = 1;
//set changes (require from architecture)
PLLFEED_bit.FEED = 0xAA;
PLLFEED_bit.FEED = 0x55;
// Enabling MAM and setting number of clocks used for
// Flash memory fetch (4 cclks in this case)
MAMCR=0x2; // Memory accelerator functions fully enabled
MAMTIM=0x4; // fetch cycles are 4 clocks in duration

// Sets the Peripheral Clock (PCLK)
// to *HALF* the processor clock CCLK
APBDIV = 0x02; // PCLK = 29.491MHz
Go to the top of the page
 
+Quote Post
PraNkiSh
сообщение Nov 29 2010, 17:51
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 25-02-05
Из: Москва
Пользователь №: 2 889



реально отладчик в 2103 позволяет ставить точку останова только одну при работе с программы из флэш. (из памяти - больше). пятая версия иар делает точки останова в этом случае на программном уровне. однако по всей видимости проблема с прерываниями - плохо отладчик с ними работает - зависает иногда на обработчике. поэтому советовал бы уменьшить количество прерываний.

пользоваться не точками останова а run to cursor - так почему то надежнее работает
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016