Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по IAR asm
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
kuber
Приветствую всех.
Подскажите знатоки IARа, как можно в проекте подключить внешний бинарный файл. Например картинку.
Как в ассемблере (наверное и в Си так же) определить внешний файл в нужное мне адресное пространство.
#include "имя файла.bin" не катит, ассемблер считает что там программа.
megajohn
вроде оно и даже с примером
prottoss
Цитата(kuber @ Dec 7 2017, 15:17) *
Приветствую всех.
Подскажите знатоки IARа, как можно в проекте подключить внешний бинарный файл. Например картинку.
Как в ассемблере (наверное и в Си так же) определить внешний файл в нужное мне адресное пространство.
#include "имя файла.bin" не катит, ассемблер считает что там программа.

Привет.
На поставленный вопрос не отвечу. Но скажу, что я, например, конвертирую бинарные данные, если таковые требуются в текстовый Си-файл с объявленным массивом.
Obam
В опциях проекта:
Нажмите для просмотра прикрепленного файла

Оно?
kuber
Пока не нашол решения, я использую вот такую конструкцию

RSEG CODE
ASEGN CODE_5000:CODE, 0x5000 ; Место где будет располагаться массив.
;
#include "имя файла.h"

файл содержит:

метка:
DC8 константа1,2,3,4,...
DC16 константа1,2,3,4,...
и так далее.
Это работает, но геморой ещо тот!

Надо тупо поместить при компиляции двоичные данные в
память программы. КАК?
Obam
Цитата(kuber @ Dec 7 2017, 16:58) *
Пока не нашол решения, я использую вот такую конструкцию

RSEG CODE
ASEGN CODE_5000:CODE, 0x5000 ; Место где будет располагаться массив.
;

RSEG не CODE, а CONST ибо рискуете получить в младшем бите ваших данных установленную единичку, если архитектура Thumb (кстати, не указали IAR EWB-кто?)

Цитата
#include "имя файла.h"

файл содержит:

метка:
DC8 константа1,2,3,4,...
DC16 константа1,2,3,4,...
и так далее.
Это работает, но геморой ещо тот!
Надо тупо поместить при компиляции двоичные данные в
память программы. КАК?

Это ассемблер (; здесь ты один на один с железом (;
В IAR C/C++ProgrammingGuide наверняка всё расписано, как линкеру внешний бинарник скормить.
kolobok0
Цитата(kuber @ Dec 7 2017, 15:58) *
... двоичные данные в память программы. КАК?


собственно варианты прозвучали:
- заставить линковщик вставить в нужное место потроха некоего файла (как есть)
- заставить отработать компилятор с исходными данными

обычно использую второй подход + самописная прожка (тут на любителя - думаю в инете мона найти готовые вещи) которая конвертит то что на входе в то что нужно.

как то так
(круглый)
kuber
Использую
IAR Embedded Workbench for Renesas 78K
программирую на ассемблере.
Приходится преобразовывать в нех последовательность, так и подключаю.
Хотелось бы проще
megajohn
Цитата(kuber @ Dec 7 2017, 22:46) *
Хотелось бы проще


вам и я и obam дали решение. Чем оно не помогло ?
jcxz
Цитата(kuber @ Dec 7 2017, 11:17) *
Подскажите знатоки IARа, как можно в проекте подключить внешний бинарный файл. Например картинку.

В опциях проекта во вкладке Linker\ExtraOptions добавить строку типа:
--image_input=$PROJ_DIR$\ENET\content.cpio,httpContent,.httpContent,2
Подробное описание ключа - см. в документации на IAR.

Цитата(kuber @ Dec 7 2017, 14:58) *
Пока не нашол решения, я использую вот такую конструкцию

А где искали? Документацию на компилятор открывать пробовали? laughing.gif

ЗЫ: Пишется: нашёл.
kuber
Предложенные варианты у меня не работают
prottoss
Цитата(kuber @ Dec 8 2017, 18:33) *
Предложенные варианты у меня не работают

А почему не хотите файл преобразовать в массив Си? По мне так самый простой вариант.
kuber
Си не знаю, программирую только на ассемблере.
prottoss
Цитата(kuber @ Dec 8 2017, 18:53) *
Си не знаю, программирую только на ассемблере.

Тогда Вам совет - изучите Си. Если умеете на ассемблере, то Си Вам по зубам. Решите сразу несколько будущих проблем, включая эту.
Ассемблер не универсален. Си универсален. По крайней мере, по отношению к ассемблеру в сотни раз.
kuber
У меня нет проблем с ассемблером под все мною освоенные микроконтроллеры. А нюансы, рано или поздно найду решение.
Си много раз пытался освоить, не моё.
prottoss
Цитата(kuber @ Dec 8 2017, 19:10) *
У меня нет проблем с ассемблером под все мною освоенные микроконтроллеры. А нюансы, рано или поздно найду решение.
Си много раз пытался освоить, не моё.
Я думаю, что у всех, кто Вам в этом топике что то советовал, нет проблем с ассемблером под разные платформы, но у всех этих людей так же нет проблем с Си, так как Си, в принципе, поддерживает любые платформы.
jcxz
Цитата(kuber @ Dec 8 2017, 14:33) *
Предложенные варианты у меня не работают

Что именно из предложенного не работает: "--image_input" или
Цитата(jcxz @ Dec 8 2017, 12:31) *
Документацию на компилятор открывать пробовали?
не работает? biggrin.gif
kuber
Очень рад за всех этих людей.
Если конкретно по ассемблеру реальных примеров нет, то Си оставим в покое.
Конструкцию из даташита

--image_input=filename,symbol,segment,alignment

В линкере строка есть, но файл не добавляет в код
jcxz
Цитата(kuber @ Dec 8 2017, 17:30) *
В линкере строка есть, но файл не добавляет в код

Т.е. - "почему у других работает, а у меня нет?" даже не задумались?
Видимо нужно ещё обеспечить чтобы линкёр не выкидывал эту секцию из выходного файла. А для этого имя "httpContent" должно использоваться где-то в программе.
Ну и регион компоновки для секции ".httpContent" в .icf-файле тоже неплохо указать.
kuber
Всё заработало.

-gbootsymbol
--image_input=$PROJ_DIR$\папка\файл.bin,bootsymbol,BOOTLOADER,1
-Z(CONST)BOOTLOADER=0x7400,0x7fff

Спасибо всем.
Obam
Спасибо не булькает... (; Что не так-то было? Расскажите.
kuber
Про ключ -g напрочь забыл.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.