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

 
 
 
Reply to this topicStart new topic
> CrosssWorks AVR, Как приделать в выходной файл файл данных?
Андрей (Питер)
сообщение Mar 20 2008, 19:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 10-03-08
Пользователь №: 35 776



Как приделать(прикомпилировать) в выходной файл файл данных? Так чтобы он попал в облать FLASH.
Go to the top of the page
 
+Quote Post
Kirill Frolov
сообщение Mar 20 2008, 19:36
Сообщение #2


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

Группа: Новичок
Сообщений: 111
Регистрация: 10-02-07
Из: St.Petersburg, Russia
Пользователь №: 25 241



Цитата(Андрей (Питер) @ Mar 20 2008, 22:31) *
Как приделать(прикомпилировать) в выходной файл файл данных? Так чтобы он попал в облать FLASH.


cat *.bin | bin2hex > file.c


--------------------
[ZX]
Go to the top of the page
 
+Quote Post
Андрей (Питер)
сообщение Mar 21 2008, 05:52
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 10-03-08
Пользователь №: 35 776



Цитата(Kirill Frolov @ Mar 20 2008, 22:36) *
cat *.bin | bin2hex > file.c


Хотелось бы как то прикрутить его в section_placement файл (чтобы он попадал с секцию CODE после програмного кода), и в программе использовать указатель на начало секции. Какие есть мысли?
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 21 2008, 07:38
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Андрей (Питер) @ Mar 21 2008, 07:52) *
Хотелось бы как то прикрутить его в section_placement файл (чтобы он попадал с секцию CODE после програмного кода), и в программе использовать указатель на начало секции. Какие есть мысли?
http://srecord.sourceforge.net
Умеет генерировать в том числе и asm-файл с директивами секций и метками (два варианта - с RSEG и .text), С-файл с массивами (но надо или перед сборокй допиливать напильником полученный файл на тему __flash/PROGMEM, можно sed-ом/gawk-ом автоматизировать), или допиливать сам srecord, чтобы можно было какие-то расширенные ключи или, ещё лучше, шаблон С-файла подсовывать.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Андрей (Питер)
сообщение Mar 21 2008, 18:57
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 10-03-08
Пользователь №: 35 776



Цитата(ReAl @ Mar 21 2008, 10:38) *
http://srecord.sourceforge.net
Умеет генерировать в том числе и asm-файл с директивами секций и метками (два варианта - с RSEG и .text), С-файл с массивами (но надо или перед сборокй допиливать напильником полученный файл на тему __flash/PROGMEM, можно sed-ом/gawk-ом автоматизировать), или допиливать сам srecord, чтобы можно было какие-то расширенные ключи или, ещё лучше, шаблон С-файла подсовывать.


ясно, я догадывался что без напильника тут не обойтись smile.gif
сгенерировал массив, вставил в код, и выяснилось что что C-компилятор (CrossWorks AVR 1.4) не переваривает массивы > 32767 байт:
const char my_array[N]={n1,n2,...nN};//где N>32767 - ОШИБКА!

это во всех версиях так, ило что то где то надо включить, чтобы компилер это переваривал?
ещё заметил такой момент, линковка при использовании больших константных массивов занимает много времени - минут этак по 5-10! это глюк?
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 22 2008, 09:46
Сообщение #6


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Андрей (Питер) @ Mar 21 2008, 20:57) *
сгенерировал массив, вставил в код, и выяснилось что что C-компилятор (CrossWorks AVR 1.4) не переваривает массивы > 32767 байт:
const char my_array[N]={n1,n2,...nN};//где N>32767 - ОШИБКА!
это во всех версиях так, ило что то где то надо включить, чтобы компилер это переваривал?
Это во многих компиляторах так. Разность двух указателей (тип ptrdiff_t) должна работать в пределах массиваи она знаковая. Обычно ptrdiff_t (stddef.h) за-typedef-лен как int (бывает как long), если int 16-битный, то разность двух указателей лежит в пределах +32767..-32768 и размер массива не может превышать 32767.

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


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

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

 


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


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