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

Портирование на LPC2103

Коллеги!

 

Давно не работал с микроконтроллерами, но вот пришлось... Последним был ADuC845 на ядре MCS-51. Сейчас пришлось осваивать LPC2103. Учитывая то, что мне предстоит дальше, решил сразу начать работу под FreeRTOS. Эту штуку использовал раньше под AVR и остался вполне доволен. Для 51-ых программировал под Keil, решил и тут воспользоваться им.

 

И тут началось... С архитектурой ARM7 пока знаком плохо, поэтому не могу понять причину вылета в DAbt_Handler при вызове vPortStartFirstTask(). Дайте пинка, чтоб я смог взлететь! Растолкуйте, в чём причина ошибки и как её исправить. Проект во вложении.

8DI.ZIP

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


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

Смотрите что Вы за галочки понаставили в проекте. Судя по тому, что Вы лихо потребовали в конфигурации RTOS 24K RAM только на хип в чипе с 8K RAM, и Вам ее "дали", то конфигурация линкера у Вас от фонаря. Ну нету столько памяти в этом чипе.

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


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

Проверил. Было

 

#define configTOTAL_HEAP_SIZE ( ( size_t ) 4 * 1024 ) - просил 16К

 

Стало

 

#define configTOTAL_HEAP_SIZE ( ( size_t ) 1 * 1024 ) - прошу 4К

 

Раскладка памяти:

 

Screenshot_2.jpg

 

Screenshot_3.jpg

 

Результат тот же. Куда рыть?

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


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

Куда рыть?

Рыть туда, где можете получить ответ как это Ваш проект затребовавший дивное количество памяти собирался линкером без воплей о фатальной ошибке. После этого смотреть на то, какие размеры стеков заданы.

Тут http://electronix.ru/forum/index.php?showt...t&p=1418769 , кстати, случайно оказался как раз конфигурационный файл именно под LPC2103. В нем есть свои нюансы связанные с отличиями в реализации RTOS, но для общего обзора годится.

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


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

Я же поправил

 

#define configTOTAL_HEAP_SIZE ( ( size_t ) 1 * 1024 ) - прошу 4К

 

Или это не 4К?

 

Посмотрел ссылку. Там конфиг для gcc, а у меня Keil с Армовским компилятором. Есть и проект FreeRTOS под gcc, но там Startup сильно отличается от того, что в Keil. Я потому и прошу помощи, что изучать ассемблер ради поиска лишнего нолика в каком-то файле для меня на данном этапе- непозволительная роскошь.

 

Видите ошибку - укажите на неё, а указывать менторским стилем на 24К без указания на то, откуда взята эта цифра, простите, моветон.

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


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

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

 

Видите ошибку - укажите на неё, а указывать менторским стилем на 24К без указания на то, откуда взята эта цифра, простите, моветон.

с

Я бы на Вашем месте не претензии начал предъявлять, а начал бы с чего-нибудь попроще. Вы постом ранее спросили "куда рыть" и это был еще нормальный пост по сравнению с последующим (я подумал начнете осторожно спрашивать/интересоваться далее и т.п., но нет сразу пошли претензии). Вам ответ - ройте в сторону небольшого проекта типа "Hello world". Изучите досконально в нем все вопросы по рисунку 4, что здесь привели, а потом уже переходите на более сложный проект. И претензии не надо предъявлять.

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


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

Я претензий ни кому не предъявляю.

 

Вижу, что здесь куча умников, а не знатоков, которые могут поправить ошибку человека. Буду искать помощи в другом месте.

 

Тема закрыта.

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


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

Я же поправил

Вы можете поправлять что и где угодно. Но, повторю последний раз - проблемы начинаются уже РАНЬШЕ, ибо первоначальный вариант просто не имел никакого права вообще собираться.

Вот с выяснения причин почему он вообще собрался и начинайте. Сделали Вы что-то для этого в вашем посте "поправил" не говорится ничего.

Видите ошибку - укажите на неё, а указывать менторским стилем на 24К без указания на то, откуда взята эта цифра, простите, моветон.

Взята, естественно, из выложенного Вами проекта:

#define configTOTAL_HEAP_SIZE        ( ( size_t ) ( 24 * 1024 ) )

Посмотрел ссылку. Там конфиг для gcc, а у меня Keil с Армовским компилятором

Там конфиг не под GCC, но под binutils. А приводился он для того, что бы дать Вам представление о том, что есть еще много разных НЕОБХОДИМЫХ дефиниций размеров областей RAM.

 

#define configTOTAL_HEAP_SIZE ( ( size_t ) 1 * 1024 ) - прошу 4К

 

Или это не 4К?

Вы, конечно, не поверите, но это таки не 4K. Начните с арифметики и языка Си, ибо size_t это не sizeof, или что там Вам подумалось еще.

 

здесь куча умников, а не знатоков, которые могут поправить ошибку человека. Буду искать помощи в другом месте.

Баба с возу - кобыле легче.

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


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

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

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

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

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

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

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

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

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

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