Easyelectronics.ru

Электроника для всех
Текущее время: 20 сен 2018, 06:03

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



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 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
Сообщения: 511
Подцепить asm файл, а там - .byte .word???


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

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2507
Откуда: Санкт-Петербург
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
Сообщения: 368
wasq писал(а):
Но проще видимо использовать специализированные языки ( платные ) для этих целей.
Там все уже реализовано.

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

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


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

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


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

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


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

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 963
Ну так 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
Сообщения: 848
S_Alex, что это?


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

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


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

Зарегистрирован: 18 апр 2017, 03:01
Сообщения: 848
я о том, что из этого где находится (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
Сообщения: 963
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
Сообщения: 848
S_Alex, понятно. На последнюю строчку компилятор ругается ошибкой "Error 3 conflicting types for 'ppszListItem_RAM'"
а если переделать так:
Код:
char *const __flash * ppszListItem_RAM = Lst_nSets_Ram;
то не ругается, почему, что там не так?


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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