Jump to content

    

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/

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

 

Edited by pvo125

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Quote

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

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

Share this post


Link to post
Share on other sites
1 minute ago, pvo125 said:

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now