Перейти к содержанию
    

Scatter файл. Настройка доп. секции.

Приветствую всех! 

Нужно все массивы с картинками(битмапы) собрать в один бинарный файл. Далее этот файл будет загружаться отдельно в внешнюю spi flash.

Делаю так

Создал в scatter файле регион и секцию extrom

LR_IROM1 0x08004000 0x00040000  {    ; load region size_region
  ER_IROM1 0x08004000 0x00040000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00010000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

LR_ROM1 0x00010000 0x00010000  {
   ER_ROM1 0x00010000 0x00010000 {
  *(extrom)
  }
}

Далее перед всеми массивами с битмапами добавил строчку.

__attribute__((section("extrom"))) const char bitmap[]={.........};

Собираю проект и далее с помошью утилиты fromelf делаю бинарник из axf файла. Вернее fromelf делает 2 файла обзывает их

ER_ROM1 - 150 KB бинарник с кодом

ER_ROM2 -10 KB бинарник с картинками.

На этом этапе все четко и именно то чего добивался.

Далее я пытаюсь запустить отладку и отладчик пытается прошить сначала ER_ROM2 по адресу 0x0001 0000 ('этот адрес может быть и 0x0 или 0x1000 он во внешней spi flash) получается ошибка.

Quote

No Algorithm found for: 00010000H - 0001043FH

Partial Erase Done (areas with no algorithms skipped!)

No Algorithm found for: 00010000H - 0001043FH

Partial Programming Done (areas with no algorithms skipped!)

Partial Verify OK (areas with no algorithms skipped!)

Далее завершается с ошибкой.

Quote

Cannot access terget. Shuttung down debig session/

Как мне настроить проект или секцию эту чтобы отладчик не пытался прошивать при старте отладки.

 

Изменено пользователем pvo125

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем такие сложности? Keil умеет шить внешнюю память через какой угодно интерфейс, которым подключена эта память к МК. Нужно лишь написать или использовать готовый алгоритм.

В ..\Keil\ARM\Flash\ есть готовые реализации. При желании их можно переделать по свою плату и свою память. Да хоть по I2C заливайте Keil-ом внешнюю память, никаких проблем ))

В этом случае достаточно, например, в версии сборки release предусмотреть заливку ВСЕХ образов, а в версии debug заливать только код, отключив из выходного образа все данных для внешней памяти.

Если в образе добавилось/поменялось что-то, то собираете release, заливаете, переключаетесь обратно в debug и работаете как обычно.

Так работа пойдет быстрее ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот алгоритм нужно выбрать и добавить в настройках опций проекта. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Quote

а в версии debug заливать только код, отключив из выходного образа все данных для внешней памяти.

Про это действие можно подробнее? Как исключить?  Файл инит править для отладки? (в настройках есть возможность его подключать.)Потому что на данном этапе думаю мне это как раз и нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, pvo125 said:

Про это действие можно подробнее? Как исключить?  

Нажать правой кнопкой мыши на файл и в настройках убрать галку Include In Target Build

Там же можно настроить индивидуальные опции компилятора/билдера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно написать алгоритм прошивки в /dev/null и в Debug ветке выбрать его для прошивки внешней флэшь. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...