|
CrosssWorks AVR, Как приделать в выходной файл файл данных? |
|
|
|
Mar 20 2008, 19:31
|
Участник

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

|
Как приделать(прикомпилировать) в выходной файл файл данных? Так чтобы он попал в облать FLASH.
|
|
|
|
|
 |
Ответов
|
Mar 20 2008, 19:36
|

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

|
Цитата(Андрей (Питер) @ Mar 20 2008, 22:31)  Как приделать(прикомпилировать) в выходной файл файл данных? Так чтобы он попал в облать FLASH. cat *.bin | bin2hex > file.c
--------------------
[ZX]
|
|
|
|
|
Mar 21 2008, 05:52
|
Участник

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

|
Цитата(Kirill Frolov @ Mar 20 2008, 22:36)  cat *.bin | bin2hex > file.c Хотелось бы как то прикрутить его в section_placement файл (чтобы он попадал с секцию CODE после програмного кода), и в программе использовать указатель на начало секции. Какие есть мысли?
|
|
|
|
|
Mar 21 2008, 07:38
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 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, чтобы можно было какие-то расширенные ключи или, ещё лучше, шаблон С-файла подсовывать.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Mar 21 2008, 18:57
|
Участник

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

|
Цитата(ReAl @ Mar 21 2008, 10:38)  http://srecord.sourceforge.netУмеет генерировать в том числе и asm-файл с директивами секций и метками (два варианта - с RSEG и .text), С-файл с массивами (но надо или перед сборокй допиливать напильником полученный файл на тему __flash/PROGMEM, можно sed-ом/gawk-ом автоматизировать), или допиливать сам srecord, чтобы можно было какие-то расширенные ключи или, ещё лучше, шаблон С-файла подсовывать. ясно, я догадывался что без напильника тут не обойтись  сгенерировал массив, вставил в код, и выяснилось что что C-компилятор (CrossWorks AVR 1.4) не переваривает массивы > 32767 байт: const char my_array[N]={n1,n2,...nN};//где N>32767 - ОШИБКА! это во всех версиях так, ило что то где то надо включить, чтобы компилер это переваривал? ещё заметил такой момент, линковка при использовании больших константных массивов занимает много времени - минут этак по 5-10! это глюк?
|
|
|
|
|
Mar 22 2008, 09:46
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 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. Обход сего дела если и есть, то это компиляторо-зависимая вещь, ничем не могу помочь.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|