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

 
 
> Запускается во FLASH, но не доходит до main() !?, IAR, LPC2294, J-link, 1M RAM, 4M ROM (OLIMEX)
DnTrm
сообщение May 15 2009, 21:24
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 15-05-09
Пользователь №: 49 137



Несколько дней бьюсь над проблемой. Помогите.. Имею: IAR, LPC2294, J-link, 1M RAM, 4M ROM (OLIMEX). Проект нормально работает в RAM (под JTAG'ом). После прошивки PHILIPS'овской утилитой во FLASH (с расчетом KS и размещением по 0х00000014 адресу) имею следующее: В отладчике IAR'а, через JTAG, работает. Без отладчика - прорабатывает cstarup, __low_level_init и после проработки ее последней команды return (1) куда-то "девается"... Я исполльзую scmRTOS ну и соответственно __low_level_init ее родная, в нее добавил только инициализацию частоты процессора, портов и включение MAM (MAMTIM=3). В стандартном cstartup, в самом начале, перед определением стеков добавил настройку внешней памяти. Там есть такие слова, что-то вроде: "свои инициализации добавлять сюда..". Добавил вот только сегодня. Возлагал на это дело большие надежды.. Не помогло..! Как я понял, что добираюсь до указанного места? Просто в самом начале __low_level_init настроил один из pin'ов процессора на выход и в цикле мигаю светодиодом. Так вот до выхода из __low_level_init мигает, а в main() уже нет. В отладчике мигает и в main(). Да и вообще в отладчике программа выполняет свое назначение. Да, еще! В отладчике наблел, что между __low_level_init и main() прорабатывается две (видимо стандартные процедуры) что-то вроде __sector_init (инициализирует ICODE) и чего-то там еще (какя-то вложенная процедура). Не запомнилось, так, как уже уходил с работы. Увидел только, что во всю используется стек, а он у меня во внешней памяти (проект большой, ну и стек ему соответствует). Успел только попробовать с инициализацией внешней памяти в cstartup. Но, как уже сказал - не помогло. Раньше работал с 51-ми, ATmega, Winbond, с msp430-м немного. В ARM все не так! Медленно, как-то все продвигается! Помогите советом.

Сообщение отредактировал DnTrm - May 15 2009, 21:29
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DnTrm
сообщение May 18 2009, 12:26
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 15-05-09
Пользователь №: 49 137



Макрос есть. Проработку попробовал отключить. Поставил точку останова перед своей инициализацией. При останове в регистрах уже нужные настройки!? Подозреваю, что пока JTAG сбрасывает процессор успевает проработаться загруженный в кристалл cstartup (как раз моя инициализация). Дело в том, что IAR не грузит ничего он только сбрасывает процессор и "подхватывает" исполняющуюся программу (я не сумел настроить IAR на загрузку и шью Philis'овской утилитой). В точке останова обнулил BCFG0 (0x00000000) и BCFG1 (0x20000000). Затем по шагам проработал свою инициализацию.. Все OK! Инициализировалась теми же значениями, что и перед сбросом! Кстати все происходит, в отличии от RAM'овского вариаета отладки, в дизассемблере. Но это вроде так и должно быть?
Стоп! Макрос-то отключил, а питание не выключал ! Сейчас отпишусь...
Макрос восстановил, питание передернул: Все работает. После сброса (0х00000000) перескакивает на cstartup еще раз инициирует память моим кодом (первый раз инициализация в макросе) и дальше работает как надо.
Макрос отключил, питание тоже передернул. После адреса 0х00000000 начинает переберать адреса последовательно 0х00000004, 0х00000008 и т.д. до первого BL и все... вылетает (пошаговой отладке кирдык, хотя остановить могу и даже сбросить в 0х00000000).
Еще одно! Взял и все повторил в соответствии с первым абзацем:
Макрос восстановил, питание передернул.. - все работает.
Макрос отключил, НО питание не передергивал. Вроде как должно бы быть, все по первому абзацу, т.е. должно бы заработать. Однако получил тотже перебор адресов с "вылетом".
Кстати пару раз после прошивки программы и пересброса(питанием) она начинала работать во FLASH'е. Но стоило выключить питание минут на несколько.. ВСЕ!

Когда начинается перебор адресов то первая команда CDPLE P0,14,C0,C14,C8,0 ??!!!
Во FLASH'е по нулевому адресу нормальная команда перехода LDR,[PC,#+24] (проверил Philips утилитой).
Чего это? Не туда ремапится? Но при автономной работе я же вижу (по светодиоду), что во FLASH"е начинает работать.
Go to the top of the page
 
+Quote Post



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

 


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


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