Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Портирование на LPC2103
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
tonyk_av
Коллеги!

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

И тут началось... С архитектурой ARM7 пока знаком плохо, поэтому не могу понять причину вылета в DAbt_Handler при вызове vPortStartFirstTask(). Дайте пинка, чтоб я смог взлететь! Растолкуйте, в чём причина ошибки и как её исправить. Проект во вложении.
zltigo
Смотрите что Вы за галочки понаставили в проекте. Судя по тому, что Вы лихо потребовали в конфигурации RTOS 24K RAM только на хип в чипе с 8K RAM, и Вам ее "дали", то конфигурация линкера у Вас от фонаря. Ну нету столько памяти в этом чипе.
tonyk_av
Проверил. Было

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

Стало

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

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





Результат тот же. Куда рыть?
zltigo
QUOTE (tonyk_av @ Apr 15 2016, 07:22) *
Куда рыть?

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

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

Или это не 4К?

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

Видите ошибку - укажите на неё, а указывать менторским стилем на 24К без указания на то, откуда взята эта цифра, простите, моветон.
AleksBak
Цитата(tonyk_av @ Apr 15 2016, 09:58) *
... Я потому и прошу помощи, что изучать ассемблер ради поиска лишнего нолика в каком-то файле для меня на данном этапе- непозволительная роскошь.

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

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

Тема закрыта.
zltigo
QUOTE (tonyk_av @ Apr 15 2016, 08:58) *
Я же поправил

Вы можете поправлять что и где угодно. Но, повторю последний раз - проблемы начинаются уже РАНЬШЕ, ибо первоначальный вариант просто не имел никакого права вообще собираться.
Вот с выяснения причин почему он вообще собрался и начинайте. Сделали Вы что-то для этого в вашем посте "поправил" не говорится ничего.
QUOTE
Видите ошибку - укажите на неё, а указывать менторским стилем на 24К без указания на то, откуда взята эта цифра, простите, моветон.

Взята, естественно, из выложенного Вами проекта:
CODE
#define configTOTAL_HEAP_SIZE        ( ( size_t ) ( 24 * 1024 ) )

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

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

QUOTE (tonyk_av @ Apr 15 2016, 08:58) *
#define configTOTAL_HEAP_SIZE ( ( size_t ) 1 * 1024 ) - прошу 4К

Или это не 4К?

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

QUOTE (tonyk_av @ Apr 15 2016, 09:39) *
здесь куча умников, а не знатоков, которые могут поправить ошибку человека. Буду искать помощи в другом месте.

Баба с возу - кобыле легче.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.