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

 
 
> не могу расположить код в LPC1768 начиная с 0x2000 в Keil, Could not write CPU register MSP: .....
Dunduk
сообщение Jan 31 2012, 08:16
Сообщение #1


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

Группа: Участник
Сообщений: 87
Регистрация: 15-08-09
Пользователь №: 51 904



довольно большой, рабочий проект решил сдвинуть на 2 сектора выше, дабы освободить место для Ethernet bootloader-а. Но Keil ругает меня, программа не идет.
Could not write CPU register MSP: Written: 0xffffffff, Read: 0xfffffffc
Единственное, что я делаю с рабочим проектом - я в проекте "Option for target" выставляю IROM1: 0x2000 и проблема появляется. Изначально, там был 0 и все работало.
what the фак am i doing wrong?

Пилю eth bootloader из комплекта Flash Magic. Там есть описание, как править проект чтоб оно заработало. Но как я понял, оно написано для LPC2378. Может, там есть какая-то специфика?



Сообщение отредактировал Dunduk - Jan 31 2012, 08:19
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aaron
сообщение Feb 21 2012, 07:37
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 5-10-06
Из: Зеленоград
Пользователь №: 21 007



Во! Столкнулся с аналогичной проблемой, у меня проц другой - AT91SAM7A3, написал бутлоадер, добавил код по совету из того топика ниже.
с адреса 0x00100000 бутлоадер,
с адреса 0x00102800 пользовательская прошивка должна быть.
По логике надо делать вот так:
Прикрепленное изображение

Тогда после компиляции в карте памяти имеем:
Код
    ....
    FLASH_BASE                               0x00100000   Number         0  sam7.o ABSOLUTE
    RESET                                    0x00102800   Section      324  sam7.o(RESET)
    Vectors                                  0x00102800   ARM Code       4  sam7.o(RESET)
    Reset_Addr                               0x00102820   Data           4  sam7.o(RESET)
    Undef_Addr                               0x00102824   Data           4  sam7.o(RESET)
    SWI_Addr                                 0x00102828   Data           4  sam7.o(RESET)
    PAbt_Addr                                0x0010282c   Data           4  sam7.o(RESET)
    DAbt_Addr                                0x00102830   Data           4  sam7.o(RESET)
    Reserved_Addr                            0x00102834   Data           4  sam7.o(RESET)
    IRQ_Addr                                 0x00102838   Data           4  sam7.o(RESET)
    FIQ_Addr                                 0x0010283c   Data           4  sam7.o(RESET)
    SWI_Handler                              0x00102844   ARM Code       4  sam7.o(RESET)
    MOSCS_Loop                               0x00102884   ARM Code       4  sam7.o(RESET)
    PLL_Loop                                 0x00102898   ARM Code       4  sam7.o(RESET)
    WAIT_Rdy1                                0x001028b0   ARM Code       4  sam7.o(RESET)
    WAIT_Rdy2                                0x001028c4   ARM Code       4  sam7.o(RESET)
    !!!main                                  0x00102a00   Section        8  __main.o(!!!main)
    !!!scatter                               0x00102a08   Section       56  __scatter.o(!!!scatter)
    !!handler_copy                           0x00102a40   Section       40  __scatter_copy.o(!!handler_copy)
    !!handler_zi                             0x00102a68   Section       44  __scatter_zi.o(!!handler_zi)
    .emb_text                                0x00102a98   Section       16  lib_init.o(.emb_text)
    .text                                    0x00102aa8   Section       36  sam7.o(.text)
    .text                                    0x00102acc   Section     4616  main.o(.text)
    ....

Затык у меня на следующем шаге после компиляции sm.gif Keil генерирует *.axf и *.hex файлы, для создания *.bin файла прошивки использовал всегда батник вида:
Цитата
C:\Keil\ARM\BIN30\fromelf.exe --bin --output "e:\project\compile\binary.bin" "e:\project\compile\binary.axf"

Однако при выставлении смещения старт-адреса при запуске батника вместо бинарника получаю папку binary.bin и в ней два бинарных файла без расширений ER_IROM1 и STARTUP, по размерам соответствующие коду и RESET секции.
Что делать с этим, ума не приложу. Попробовал кейловский axf подсунуть gcc objcopy - ругается на формат, естественно. Есть ещё старая утилитка у меня HEX2BIN.EXE - она тоже ругается на неверный формат hex файлов, вроде потому что она для C51 рассчитана sm.gif
По-любому у кого-то здесь должен быть опыт подобного рода, прошу поделиться решением проблемы!
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 21 2012, 08:18
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Откуда процессор узнает, что ему надо стартовать не с обычной точки старта (с начала флеш для LPC17x & LPC23x), а с вашего адреса?

Если вы скомпилили программу так, чтобы она работала с бутлоадером, то его нужно предварительно прошить во флеш.
Также он должен знать куда передавать управление для запуска вашей прошивки.
Также его таблица векторов прерываний должна перенаправлять все прерывания на обработчики рабочей программы
(либо рабочая прога должна переместить таблицу своих векторов в ОЗУ).

Читайте даташиты по процессу загрузки процессора. Для LPC17x это "Boot process flowchart" - у NXP всё хорошо разжёвано.
Go to the top of the page
 
+Quote Post



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

 


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


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