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

Как в IAR записать дополнительный файл во flash

Нужно во flash помимо прошивки разместить дополнительный hex файл по заданному адресу, как это можно сделать? Отладчик -jlink, процессор str912faw44. Компилятор IAR 5.50

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


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

Нужно во flash помимо прошивки разместить дополнительный hex файл по заданному адресу, как это можно сделать? Отладчик -jlink, процессор str912faw44. Компилятор IAR 5.50

Project - Option - Linker - Input - Raw Binary Image.

Предварительно обработать hex2bin.

Адрес секции задается с icf-файле линкера.

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


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

Нужно во flash помимо прошивки разместить дополнительный hex файл по заданному адресу, как это можно сделать? Отладчик -jlink, процессор str912faw44. Компилятор IAR 5.50

Свойства проекта -> свойства линкера -> config -> raw binary image

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


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

А что при этом должно быть записано в Symbol: Section: Align: ?

Help - C/C++ Development Guide - Part2 Reference information - Linker Option - Description of options - --image-input.

Символ - глобальный символ, на который будет ссылаться программа.

Section - имя секции, в которую линкер положит этот файл. Описывается в icf-файле

Align - выравнивание данных. Поставить 4.

 

Если на символ не будет ссылки, то линкер выбросит этот файл.

 

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


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

Вот icf файл, что-то непонятно, как в нем прописать адрес секции

 

/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x00000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x000000EC;
define symbol __ICFEDIT_region_ROM_end__   = 0x0007FFFF;  /*512 KBytes of Flash*/

/*define symbol __ICFEDIT_region_ROM_end__     = 0x0003FFFF;*/ /*256 KBytes of Flash*/
/*define symbol __ICFEDIT_region_ROM_end__     = 0x000FFFFF;*/ /*1024 KBytes of Flash*/
/*define symbol __ICFEDIT_region_ROM_end__     = 0x001FFFFF;*/ /*2048 KBytes of Flash*/

define symbol __ICFEDIT_region_RAM_start__ = 0x4000000;
define symbol __ICFEDIT_region_RAM_end__   = 0x4017FFF;  /*96 KBytes of RAM*/

/*define symbol __ICFEDIT_region_RAM_end__     = 0x0400FFFF;*/ /*64 KBytes of RAM*/

/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__   = 0x400;
define symbol __ICFEDIT_size_svcstack__ = 0x100;
define symbol __ICFEDIT_size_irqstack__ = 0x400;
define symbol __ICFEDIT_size_fiqstack__ = 0x400;
define symbol __ICFEDIT_size_undstack__ = 0x100;
define symbol __ICFEDIT_size_abtstack__ = 0x100;
define symbol __ICFEDIT_size_heap__     = 0x400;
/**** End of ICF editor section. ###ICF###*/


define memory mem with size = 4G;
define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];

define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
define block SVC_STACK with alignment = 8, size = __ICFEDIT_size_svcstack__ { };
define block IRQ_STACK with alignment = 8, size = __ICFEDIT_size_irqstack__ { };
define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { };
define block UND_STACK with alignment = 8, size = __ICFEDIT_size_undstack__ { };
define block ABT_STACK with alignment = 8, size = __ICFEDIT_size_abtstack__ { };
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };

initialize by copy { readwrite };
do not initialize  { section .noinit };

place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

place in ROM_region   { first block ICode{section .icode}, readonly };
place in RAM_region   { readwrite,
                        block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK,
                        block UND_STACK, block ABT_STACK, block HEAP };

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


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

Вот icf файл, что-то непонятно, как в нем прописать адрес секции

 

place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

place at address mem:0x12345678 { readonly section tbird };

Секция tbird (только для чтения) будет размещена по адресу 0x12345678.

 

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


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

Не работает:-( Память по заданному адресу по прежнему забита FFками....

 

 

ПОЛУЧИЛОСЬ!!! Надо было еще заполнить пункт keep symbols

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

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


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

А как ссылаться на данную секцию?

Как добраться до данных которые в ней описанны?

И что надо такого надо написать в keep symbols - подскажите?

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

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


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

А как ссылаться на данную секцию?

 

извиняюсь за поднятие некропоста, но будет быстрой посказкой, тем кто ищет в поисковиках

 

ответ в картинке

post-1143-1423583044_thumb.png

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


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

Еще раз пронекропостю...

Так и не понял, что делает эта опция Align

Цитирую Help - C/C++ Development Guide - Part2 Reference information - Linker Option - Description of options - --image-input.

--image_input bootstrap.abs,Bootstrap,CSTARTUPCODE,4

The contents of the pure binary file bootstrap.abs are placed in the section

CSTARTUPCODE. The section where the contents are placed is 4-byte aligned and will

only be included if your application (or the command line option --keep) includes a

reference to the symbol Bootstrap.

Т.е. это выравнивание в байтах? Ставил и 1, и 4, и 16 - выходной файл не меняется, выравнивание всегда до 4х байт.

(Если поставить "0", то выскакивает ошибка Su003)

IAR-7.50.2 Arm-cortex-M7

 

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


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

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

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

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

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

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

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

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

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

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