Easyelectronics.ru

Электроника для всех
Текущее время: 12 дек 2018, 14:55

Часовой пояс: UTC + 5 часов




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 04 мар 2018, 07:37 
Только пришел

Зарегистрирован: 04 мар 2018, 06:58
Сообщения: 9
Откуда: Самара
Для gcc под AVR написаны макросы для размещения констант во флеш, и обращения к ним.
( Думая проблема в том, что сам gcc создавался не для микроконтроллеров со встроенным ПЗУ)

Пример :
//Подключаеш макрос
#include <avr/pgmspace.h>
// Объявляеш константу/ы
const PROGMEM bytye bb[] = { 65, 32, 16, 10, 112};

И далее работаеш с ними ...

Вопрос
Как в этом языке ( в специализированных Ci все есть )
разместить константу/ы не просто во флеш,
НО ЕЩЕ И ПО ЖЕЛАЕМОМУ АДРЕСУ ???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 04 мар 2018, 11:00 
Старожил

Зарегистрирован: 21 янв 2015, 16:19
Сообщения: 529
Подцепить asm файл, а там - .byte .word???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 04 мар 2018, 11:51 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2536
Откуда: Санкт-Петербург
http://lmgtfy.com/?q=gcc+fixed+address+variable
По первой же ссылке - подробное объяснение. Не для avr, но какая разница?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 04 мар 2018, 14:21 
Только пришел

Зарегистрирован: 04 мар 2018, 06:58
Сообщения: 9
Откуда: Самара
1.
remontsofta писал(а):
Подцепить asm файл, а там - .byte .word???

2.
aamonster писал(а):
http://lmgtfy.com/?q=gcc+fixed+address+variable
По первой же ссылке - подробное объяснение. Не для avr, но какая разница?


Спасибо !!.
То что можно руками сделать самому = не сомневаюсь,
думалось, может не все прочел и уже кто- то создал и можно воспользоваться.
Но проще видимо использовать специализированные языки ( платные ) для этих целей.
Там все уже реализовано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 04 мар 2018, 14:28 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 577
wasq писал(а):
Но проще видимо использовать специализированные языки ( платные ) для этих целей.
Там все уже реализовано.

Можно пример такого языка?

Хинт! Можно воспользоваться платным программистом, тогда вообще ничего делать не надо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 04 мар 2018, 15:41 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 1281
Платные языки программирования!? WTF?! Это вообще как?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 04 мар 2018, 16:32 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 577
Не, отчасти, wasq прав. В платном IAR всё это делается легко и непринуждённо без бубна. Но платный язык программирования это забористо :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 04 мар 2018, 17:12 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 1281
Ну так IAR и не язык программирования ведь )

PS: Оно кстати и бесплатное avr-gcc с использованием named пространств умеет, без обертки pgmspace.h: https://gcc.gnu.org/onlinedocs/gcc/Name ... paces.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 04 мар 2018, 23:18 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2010, 01:03
Сообщения: 647
Откуда: Херсон
Код:
/* Длинна строки должна быть 6 печатных знаков */
u08 * const __flash Lst_nSets_Ram[] = {
  "_min_ ",
  "_mid_ ",
  "_max_ ",
  "_usr1_",
  "_usr2_",
  "_usr3_",
  "_usr4_",
  "_usr5_",
};
u08 *const __flash * ppszListItem_RAM;
ppszListItem_RAM = Lst_nSets_Ram;

_________________
Если руки золотые, то не важно с какого места они растут.
Изображение
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 05 мар 2018, 02:13 
Старожил
Аватара пользователя

Зарегистрирован: 18 апр 2017, 03:01
Сообщения: 868
S_Alex, что это?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 05 мар 2018, 03:43 
Старожил

Зарегистрирован: 19 мар 2011, 05:05
Сообщения: 2435
длинна же)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 05 мар 2018, 05:56 
Старожил
Аватара пользователя

Зарегистрирован: 18 апр 2017, 03:01
Сообщения: 868
я о том, что из этого где находится (flash или RAM).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 05 мар 2018, 09:18 
Только пришел

Зарегистрирован: 04 мар 2018, 06:58
Сообщения: 9
Откуда: Самара
Всем спасибо.
Но видимо нормальных решений в виде директив компилятору или написанных кем то макросов — нет.

GCC изначально 50 лет назад создавался для машин с ОСью и работы в ОЗУ, где распределением памяти и ресурсов занимается ОСь. Спасибо сообществу которое довело его до работы с AVR, правда без полного контроля микроконтроллера.

Закрытый код пишу на платных средах ( там чаще до 8 кбайт бесплатно можно ) и привык к
полному контролю на МК его ОЗУ, ПЗУ, регистрами и т.д., простыми средствами в виде директив компилятору
Самый простой пример :

BootHello: string = 'Hello'; org 0x1E90;
procedure Bootloader; org 0x1E00;
begin
end;

Даже процедуру спокойно размешаю по желаемому адресу, не говоря уже о константе.

Но открытый код приходиться писать на GCC – доступно всем, все бесплатно, но не все возможно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 05 мар 2018, 11:08 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 1281
wasq писал(а):
Всем спасибо.
Но видимо нормальных решений в виде директив компилятору или написанных кем то макросов — нет.

Я вам только что выше написал как это нормально делается через named space. В ваших "платных средах" по сути те же директивы компилятора используются. В архитектуре AVR просто флэш находится в другом адресном пространстве и обращаться к нему надо по-другому. Если бы асме писали, тоже пришлось бы дополнительный код делать.

wasq писал(а):
GCC изначально 50 лет назад создавался для машин с ОСью и работы в ОЗУ, где распределением памяти и ресурсов занимается ОСь. Спасибо сообществу которое довело его до работы с AVR, правда без полного контроля микроконтроллера.

Лет 50 не было ОСей таких, которые распределяли бы память и ресурсы. Да и GCC вышел в 87 году самый первый, это 31 год назад.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 06 мар 2018, 00:56 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2010, 01:03
Сообщения: 647
Откуда: Херсон
h4lf писал(а):
S_Alex, что это?

Пример. Массив указателей, находящийся во FLESH, на строки длинной 6 символов находящееся в RAM.

_________________
Если руки золотые, то не важно с какого места они растут.
Изображение
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: gcc AVR флеш для CONST как ?
СообщениеДобавлено: 06 мар 2018, 18:31 
Старожил
Аватара пользователя

Зарегистрирован: 18 апр 2017, 03:01
Сообщения: 868
S_Alex, понятно. На последнюю строчку компилятор ругается ошибкой "Error 3 conflicting types for 'ppszListItem_RAM'"
а если переделать так:
Код:
char *const __flash * ppszListItem_RAM = Lst_nSets_Ram;
то не ругается, почему, что там не так?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Snake


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB