Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB ROM API в LPC1830 - вызов из встроенной RAM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Harvester
Добрый день.
Пытаюсь разобраться с USB ROM API. Взял пример cdc_vcom из LPC_OPEN, запустил - все работает.
Поскольку моя программа будет выполняться из внутреннего ОЗУ, переделал пример на отладку из IRAM.
Пример запускается, однако при вызове функции USBD_API->hw->Init(...) возникает исключение Hard Fault. wacko.gif
Код располагается в области 0x10000000..., буфер для USB стека - начиная с 0x20000000, так что здесь проблем быть не должно.
Что нужно сделать, чтобы функции ROM API можно было вызывать из внутреннего ОЗУ?
scifi
Цитата(Harvester @ Oct 8 2015, 08:54) *
Пример запускается, однако при вызове функции USBD_API->hw->Init(...) возникает исключение Hard Fault. wacko.gif

Что мешает пройтись по шагам в окне дизассемблера и установить точно, какая инструкция приводит к ошибке? Обычно там всё сразу становится очевидно.
Опять же, можно сделать обработчик Hard Fault, показывающий значения регистров при сбое. Тогда можно вычислить виновную инструкцию даже без внутрисхемного отладчика.
Kabdim
Не используйте это глюкало. Почти наверняка можно найти тот же код, но без ром апи. Его хотя бы можно исправить. Тем более на 1830 проблем с недостатком памяти быть не должно.
Harvester
Цитата(scifi @ Oct 8 2015, 09:41) *
Что мешает пройтись по шагам в окне дизассемблера и установить точно, какая инструкция приводит к ошибке?

В принципе, ничего не мешает. Только:
1. Шагать по голому ассемблерному коду без каких-либо знаний об алгоритме, не говоря уже обо исходниках, занятие довольно бессмысленное
2. По большому счету, мне неинтересно какая именно из инструкций в ROM приводит к исключению.
Я просто подумал, может кто-нибудь уже сталкивался с этим поделием NXP. Мне нужно понять - ROM функции из внутренней RAM в принципе нельзя вызывать или же можно, но с какими-либо определенными телодвижениями.

Цитата(Kabdim @ Oct 8 2015, 10:44) *
Не используйте это глюкало. Почти наверняка можно найти тот же код, но без ром апи. Его хотя бы можно исправить. Тем более на 1830 проблем с недостатком памяти быть не должно.

В принципе, нехватка памяти - одна из причин интереса к USB ROM.
Harvester
Цитата(Harvester @ Oct 8 2015, 08:54) *
Добрый день.
Пытаюсь разобраться с USB ROM API. Взял пример cdc_vcom из LPC_OPEN, запустил - все работает.
Поскольку моя программа будет выполняться из внутреннего ОЗУ, переделал пример на отладку из IRAM.
Пример запускается, однако при вызове функции USBD_API->hw->Init(...) возникает исключение Hard Fault. wacko.gif
Код располагается в области 0x10000000..., буфер для USB стека - начиная с 0x20000000, так что здесь проблем быть не должно.
Что нужно сделать, чтобы функции ROM API можно было вызывать из внутреннего ОЗУ?

Вроде разобрался. Как обычно, оказалось, что сам дурак laughing.gif
Буфер для стека располагался, начиная с 0x20000000, и по этим же адресам линкер размещал переменные.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.