Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Непонятно с Code Protect
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
toweroff
Без CRPx все работает, USB поднимается, девайс адекватен
Включаю CRP1 или CRP2 (0х12345678 или 0х87654321 по адресу 0x1FC), зверь вообще молчит, USB_CONNECT не выставляет и, соответственно, компьютером даже как неопознанное устройство не распознается
Смотрел, что там скомпилилось... линкер вроде как все нормально собрал, да и никаких ему указаний по размещению, кроме

const unsigned int secure __at(0x000001FC) = 0x87654321 ;

не было, никакая функция не портится этой константой

Какие есть мысли, куда посмотреть еще?
zltigo
Цитата(toweroff @ Mar 24 2010, 20:39) *
Какие есть мысли, куда посмотреть еще?

В бинарник посмотреть. В бинарник, до и после.
Цитата
никакая функция не портится этой константой

как я в этом сомневаюсь sad.gif
toweroff
Смотрю бинарник. Без CRPx

Vectors LDR PC, Reset_Addr
LDR PC, Undef_Addr
LDR PC, SWI_Addr
LDR PC, PAbt_Addr
LDR PC, DAbt_Addr
и т.д.


А как только вставляю размещение константы, это дело уползает до адреса 0x200

и вот тут вообще не знаю как победить... хотя, казалось бы, для этого региона явно указано

AREA RESET, CODE, READONLY
ARM
zltigo
Цитата(toweroff @ Mar 24 2010, 21:08) *
А как только вставляю размещение константы, это дело уползает до адреса 0x200

Ну вот и все smile.gif. Курите скрипт линкера, что там с принудительным заданием адресов и, как минимум, выделением векторов в отдельную маленькую секцию.
toweroff
Цитата(zltigo @ Mar 24 2010, 21:30) *
Ну вот и все smile.gif. Курите скрипт линкера, что там с принудительным заданием адресов и, как минимум, выделением векторов в отдельную маленькую секцию.

где бы его в Keil 4 еще найти smile.gif
zltigo
Цитата(toweroff @ Mar 24 2010, 21:38) *
где бы его в Keil 4 еще найти smile.gif

Ну, с Keil не помогу sad.gif
toweroff
странно, но проект под LPC2103 нормально компилится, все опции в проекте аналогичны LPC2468... и как всегда, заказчик ждет сегодня )))))))
toweroff
вот в таком виде у меня используется scatter линкера

Код
LR_IROM1 0x00000000  0x00080000 {   ; load region size_region
  ER_IROM1 0x00000000   { ; load address = execution address
   LPC2400.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
}
  RW_IRAM1 0x40000000 0x00010000  { ; RW data
   .ANY (+RW +ZI)
  }
}


по идее, секцию RESET он должен впихнуть в самое начало с адреса 0, но не происходит этого... мозг рванет сейчас... (((
zltigo
Цитата(toweroff @ Mar 25 2010, 00:59) *
по идее, секцию RESET он должен впихнуть в самое начало с адреса 0, но не происходит этого...

Почему - происходит, с начала и впихивает, только у Вас в эту секцию очевидно кроме собственно векторов и другого напихано, вот она до 0x1FC и не влезает. Смотрите, как ограничить размер, до размера таблицы.
toweroff
Цитата(zltigo @ Mar 25 2010, 02:10) *
Почему - происходит, с начала и впихивает, только у Вас в эту секцию очевидно кроме собственно векторов и другого напихано, вот она до 0x1FC и не влезает. Смотрите, как ограничить размер, до размера таблицы.

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