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

 
 
> Запихнуть содержимое bin файла в память программ
Karl
сообщение Jun 29 2006, 05:06
Сообщение #1


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

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



Как сказать компилятору, чтобы он поместил содержимое .bin файла в память программ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Jun 30 2006, 11:35
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Karl @ Jun 29 2006, 08:06) *
Как сказать компилятору, чтобы он поместил содержимое .bin файла в память программ?

Это надо сказать линкеру.
Опция --image_input
Код
--image_input=filename,symbol,segment,alignment

Всё подробно описано на стр 32 xlink.pdf
Go to the top of the page
 
+Quote Post
Karl
сообщение Jul 3 2006, 05:31
Сообщение #3


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

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



Спасибо, посмотрел. Линкеру сказал следующее: --image_input=test.bin,Bootstrap,CODE,1
При компиляции не ругается. Но в откомпилированном коде найти этот кусок не могу sad.gif И как к нему обращаться? В бинарнике находится массив, который нужно использовать в программе.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 3 2006, 12:38
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Karl @ Jul 3 2006, 08:31) *
Спасибо, посмотрел. Линкеру сказал следующее: --image_input=test.bin,Bootstrap,CODE,1
При компиляции не ругается. Но в откомпилированном коде найти этот кусок не могу sad.gif И как к нему обращаться? В бинарнике находится массив, который нужно использовать в программе.

В указанном документе написано следующее:"...содержимое чисто бинарного файла будет включено в выходной код в сегмент такой-то только если Ваше приложение содержит обращение к символу Bootstrap (в данном случае)"
Где-нибудь в хедере обьявите следующее
Код
extern __flash unsigned char Bootstrap[100];

и где-нибудь в приложении обратитесь к этому массиву, например, прочитайте из него.
Go to the top of the page
 
+Quote Post
Karl
сообщение Jul 4 2006, 03:18
Сообщение #5


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

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



Цитата(IgorKossak @ Jul 3 2006, 18:38) *
Цитата(Karl @ Jul 3 2006, 08:31) *

Спасибо, посмотрел. Линкеру сказал следующее: --image_input=test.bin,Bootstrap,CODE,1
При компиляции не ругается. Но в откомпилированном коде найти этот кусок не могу sad.gif И как к нему обращаться? В бинарнике находится массив, который нужно использовать в программе.

В указанном документе написано следующее:"...содержимое чисто бинарного файла будет включено в выходной код в сегмент такой-то только если Ваше приложение содержит обращение к символу Bootstrap (в данном случае)"
Где-нибудь в хедере обьявите следующее
Код
extern __flash unsigned char Bootstrap[100];

и где-нибудь в приложении обратитесь к этому массиву, например, прочитайте из него.

Благодарю за помощь. Все получилось. smile.gif
Go to the top of the page
 
+Quote Post
shamray
сообщение Aug 17 2006, 11:54
Сообщение #6


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

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Цитата(Karl @ Jul 4 2006, 06:18) *
Цитата(IgorKossak @ Jul 3 2006, 18:38) *


В указанном документе написано следующее:"...содержимое чисто бинарного файла будет включено в выходной код в сегмент такой-то только если Ваше приложение содержит обращение к символу Bootstrap (в данном случае)"
Где-нибудь в хедере обьявите следующее
Код
extern __flash unsigned char Bootstrap[100];

и где-нибудь в приложении обратитесь к этому массиву, например, прочитайте из него.

Благодарю за помощь. Все получилось. smile.gif


У меня МЕГА128 и если ложить по такому принципу бутлодер в пространство
-Z(CODE)BOOT=1E000-1FFFF

то при обращении к массиву Bootstrap (который должен лежать по жтому адресу) выдается ошибка

Код
Error[e18]: Range error,  
Number out of range. Valid range is -128 (-0x80) to 255 (0xFF).
File: D:\Projects\SVN_PRJ\hardware\UK0\Cfile\main.c, Line: 77  
Source: LDI R17, (bootmas) >> 8
  Where $ = main + 0x4  [0x2754]
            in module "main" (D:\Projects\SVN_PRJ\hardware\UK0\Cfile\Debug\Obj\main.r90),
            offset 0x4 in segment part 18, segment CODE
  What: 8 ? (bootmas >> 1 & 0x7FFFFFFF) >> 8 - 1 : bootmas [0x1E0]
  Allowed range: 0xFFFFFF01 - 0xFF
  Operand: bootmas [0x1e000]
           in module  Image file 0 (D:\Projects\SVN_PRJ\hardware\UK0\bootloader\Debug\Exe\bootloader.bin),
           Offset 0x0 in segment part 0, segment BOOT
Error[e122]: The address 0x1e000 is too large to be represented in the output format 'intel-standard'


Т.е. я так понимаю что он не понимает адресацию за пределами 0xffff. Как это можно обойти?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Aug 17 2006, 13:37
Сообщение #7


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(shamray @ Aug 17 2006, 14:54) *
Error[e122]: The address 0x1e000 is too large to be represented in the output format 'intel-standard'
[/code]

Т.е. я так понимаю что он не понимает адресацию за пределами 0xffff. Как это можно обойти?

Вместо выходного формата intel-standard использовать intel-extended.
Go to the top of the page
 
+Quote Post
shamray
сообщение Aug 18 2006, 12:21
Сообщение #8


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

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Цитата(IgorKossak @ Aug 17 2006, 16:37) *
Цитата(shamray @ Aug 17 2006, 14:54) *

Error[e122]: The address 0x1e000 is too large to be represented in the output format 'intel-standard'
[/code]

Т.е. я так понимаю что он не понимает адресацию за пределами 0xffff. Как это можно обойти?

Вместо выходного формата intel-standard использовать intel-extended.



Удже поменял. Но ошибкка "Error[e18]: Range error" оталась.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Karl   Запихнуть содержимое bin файла в память программ   Jun 29 2006, 05:06
|- - IgorKossak   Цитата(shamray @ Aug 18 2006, 15:21) ... ...   Aug 18 2006, 13:24
|- - shamray   Цитата(IgorKossak @ Aug 18 2006, 16:24) Р...   Aug 19 2006, 08:53
|- - IgorKossak   Цитата(shamray @ Aug 19 2006, 11:53) ...Н...   Aug 19 2006, 10:06
- - Волощенко   Привет! У меня была подобная проблема. Нужно б...   Jul 3 2006, 08:57
|- - Karl   Это не совсем то, что хотелось бы реализовать... Т...   Jul 3 2006, 11:15
|- - Волощенко   Цитата(Karl @ Jul 3 2006, 14:15) Это не с...   Jul 3 2006, 11:44
- - Wild   Цитата(Karl @ Jun 29 2006, 09:06) Как ска...   Jul 3 2006, 12:40
- - Lexy_one   Подскажите пожалуста как и где объявить сегмент дл...   Apr 27 2011, 12:16


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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 08:00
Рейтинг@Mail.ru


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