|
Запихнуть содержимое bin файла в память программ |
|
|
|
 |
Ответов
|
Jun 30 2006, 11:35
|

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

|
Цитата(Karl @ Jun 29 2006, 08:06)  Как сказать компилятору, чтобы он поместил содержимое .bin файла в память программ? Это надо сказать линкеру. Опция --image_input Код --image_input=filename,symbol,segment,alignment Всё подробно описано на стр 32 xlink.pdf
|
|
|
|
|
Jul 3 2006, 05:31
|
Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429

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

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

|
Цитата(Karl @ Jul 3 2006, 08:31)  Спасибо, посмотрел. Линкеру сказал следующее: --image_input=test.bin,Bootstrap,CODE,1 При компиляции не ругается. Но в откомпилированном коде найти этот кусок не могу  И как к нему обращаться? В бинарнике находится массив, который нужно использовать в программе. В указанном документе написано следующее:"...содержимое чисто бинарного файла будет включено в выходной код в сегмент такой-то только если Ваше приложение содержит обращение к символу Bootstrap (в данном случае)" Где-нибудь в хедере обьявите следующее Код extern __flash unsigned char Bootstrap[100]; и где-нибудь в приложении обратитесь к этому массиву, например, прочитайте из него.
|
|
|
|
|
Jul 4 2006, 03:18
|
Частый гость
 
Группа: Свой
Сообщений: 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 При компиляции не ругается. Но в откомпилированном коде найти этот кусок не могу  И как к нему обращаться? В бинарнике находится массив, который нужно использовать в программе. В указанном документе написано следующее:"...содержимое чисто бинарного файла будет включено в выходной код в сегмент такой-то только если Ваше приложение содержит обращение к символу Bootstrap (в данном случае)" Где-нибудь в хедере обьявите следующее Код extern __flash unsigned char Bootstrap[100]; и где-нибудь в приложении обратитесь к этому массиву, например, прочитайте из него. Благодарю за помощь. Все получилось.
|
|
|
|
|
Aug 17 2006, 11:54
|

Частый гость
 
Группа: Свой
Сообщений: 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]; и где-нибудь в приложении обратитесь к этому массиву, например, прочитайте из него. Благодарю за помощь. Все получилось.  У меня МЕГА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. Как это можно обойти?
|
|
|
|
|
Aug 18 2006, 12:21
|

Частый гость
 
Группа: Свой
Сообщений: 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" оталась.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|