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

 
 
> LPC1778 не получается переместить программу, Не могу переместить программу в нужный адрес FLASH
Metallist64
сообщение May 8 2013, 12:40
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Здравствуйте уважаемые специалисты.
Использую KEIL 4.53 + LPC1778.
Столкнулся с непонятной ситуацией.
При попытке зашить программу в нужный адрес, отличный от 0 (например 0х10000)- получаю отвал PLL ну и остановку контроллера. В общем для LPC2367 я выставлял IROM1 start address 0x10000 - все было хорошо. Контроллер работал и отлаживался замечательно.
А на LPC1778 что-то не проходит такой фокус. Причем создается ощущение, что контроллер просто не запускается.
Может надо таблицу векторов перемещать, или еще что-нибудь а RAM ??? А то наблюдается полный ступор...
Если кто сталкивался, прошу помощи.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KnightIgor
сообщение May 8 2013, 20:23
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Metallist64 @ May 8 2013, 13:40) *
Может надо таблицу векторов перемещать, или еще что-нибудь а RAM ??? А то наблюдается полный ступор...

Почти правильно: надо иметь две таблицы векторов. Основная сгенерируется в рамках компиляции программы и разместится по адресу, который Вы указываете в качестве начального (Ваш пример 0х10000). Однако процессор об этом ничего не знает, после сброса будет пытаться использовать таблицу по 0х0 и уйдёт в никуда... Поэтому необходимо еще разместить минимальную таблицу векторов из двух слов по стандартному адресу загрузки: первое слово должно содержать значение для загрузки указателя стека, а второе - адрес, куда прыгать. Фактически, оба слова должны быть копией таких слов из "основной" таблицы векторов. Однако надо еще настроить и контроллер прерываний на новое место таблицы векторов путем записи ее адреса в регистр VTOR.

Поэтому в startup_LPC17xx.s файле Вашего процессора начальный "загрузчик" должен будет выглядеть как:
Код
...

; Vector Table Mapped to Address 0 at Reset
                AREA    BOOT, DATA, READONLY

__Boot          DCD     __initial_sp    ; Top of Stack
                DCD     Reset_Handler; Reset Handler
...
                AREA    RESET, DATA, READONLY
                EXPORT  __Vectors

__Vectors       DCD     __initial_sp             ; Top of Stack
                DCD     Reset_Handler            ; Reset Handler
                DCD     NMI_Handler              ; NMI Handler
...

Reset_Handler   PROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  __main
                IMPORT  SystemInit
                MOV32   R1, #VTOR        ; Load VTOR register address
                LDR     R0, =__Vectors; Load user program vector table address
                STR     R0, [R1]            ; Store to VTOR to relocate the vector table
                LDR     R0, =SystemInit
                BLX     R0              
                LDR     R0, =__main
                BX      R0
                ENDP
...


Но еще надо будет указать компоновщику разместить секцию BOOT по адресу 0х0. Это можно сделать, указав ему модифицированый (и переименованный!) файл *.sct, взяв за основу тот, что генерирует KEIL для проекта автоматически. Там найти что-то типа:

Код
LR_IROM_CODE 0х10000 0x0003F800  {
  ER_IROM1 0х10000 0x0003F800  {  
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
}

и перед ним вставить:
Код
LR_IROM_BOOT 0x0 0x8  {
  ER_IROM_BOOT 0x0 0x8  {
     *.o (BOOT, +First)
  }
}


Сообщение отредактировал KnightIgor - May 8 2013, 20:30
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Metallist64   LPC1778 не получается переместить программу   May 8 2013, 12:40
- - jcxz   Так.... Как обычно включаю экстрасенсорные способн...   May 9 2013, 15:39
|- - Axel   ...откуда такие выводы про PLL??? [/quote] Моя инт...   May 9 2013, 17:20
|- - jcxz   Оттуда-же откуда Ваши фантазии про бутлоадер   May 9 2013, 17:56
|- - Axel   Цитата(jcxz @ May 9 2013, 20:56) Оттуда-ж...   May 10 2013, 02:59
|- - jcxz   Нет, не означает. Возможно - только планируется. А...   May 10 2013, 06:32
- - sensor_ua   Может, всё хорошо, только отладчику скрипт нужен с...   May 12 2013, 05:01
|- - jcxz   Предлагаю переименовать тему в "Пасхальные га...   May 12 2013, 07:40
|- - Metallist64   Цитата(sensor_ua @ May 12 2013, 08:01) Мо...   May 13 2013, 13:17
- - Metallist64   Честно говоря, топикстартер пытается понять, что е...   May 12 2013, 13:38
- - Metallist64   Большое спасибо, всем заинтересовавшимся! ОФФТ...   May 12 2013, 14:51
|- - _Артём_   Цитата(Metallist64 @ May 12 2013, 17:51) ...   May 12 2013, 15:03
|- - jcxz   Цитата(Metallist64 @ May 12 2013, 20:51) ...   May 12 2013, 15:47
- - sensor_ua   Всё-таки попробуйте Dbg_ROM.ini подложить дебаггер...   May 12 2013, 15:18
- - Metallist64   Сейчас попробовал следующий вариант: -Полностью оч...   May 13 2013, 06:41
|- - KnightIgor   Цитата(Metallist64 @ May 13 2013, 07:41) ...   May 13 2013, 10:14
|- - jcxz   Цитата(KnightIgor @ May 13 2013, 16:14) а...   May 13 2013, 12:18
|- - Metallist64   Цитата(jcxz @ May 13 2013, 15:18) А вот п...   May 13 2013, 12:25
|- - jcxz   Меняется только адрес начала флеш-памяти, описанны...   May 13 2013, 12:44
- - sensor_ua   Вот, например, цифирьки по образу и подобию https:...   May 13 2013, 15:52
- - Metallist64   Уважаемые специалисты. Вроде сделал как надо: Код...   May 14 2013, 07:25
- - sensor_ua   ЦитатаУказатель стека указывает на ОЗУ... А настро...   May 14 2013, 11:48
|- - Metallist64   Цитата(sensor_ua @ May 14 2013, 14:48) А ...   May 14 2013, 12:46
- - sensor_ua   А для ROM со смещением так пробовал? Я из RAM не п...   May 14 2013, 14:53
|- - Metallist64   Цитата(sensor_ua @ May 14 2013, 17:53) А ...   May 14 2013, 20:57
- - Metallist64   Пока решил оставить затею отлаживать прошивку с лю...   May 15 2013, 07:36
- - Metallist64   В руководстве пользователя написано, что с адреса ...   May 15 2013, 08:44
- - Metallist64   Вот я баран! Я в коде объявил несколько переме...   May 15 2013, 13:05
|- - KnightIgor   Цитата(Metallist64 @ May 15 2013, 14:05) ...   May 15 2013, 20:56
|- - Metallist64   Цитата(KnightIgor @ May 15 2013, 23:56) М...   May 16 2013, 07:59
- - Golikov A.   так и программу из флеши в озу тоже никто кроме ва...   May 16 2013, 19:40
- - Metallist64   В ближайшее время попробую переложить в ОЗУ. Сейча...   May 17 2013, 07:35


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

 


RSS Текстовая версия Сейчас: 18th August 2025 - 07:56
Рейтинг@Mail.ru


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