можно, для чего следует разместить переменную в отдельной секции памяти при помощи атрибута .section, а затем при линковке задать нужный адрес начала этой секции - переменная там и окажется.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Задачка чуть шире, необходимо разместить несколько (обычно до 100) переменных по фиксированным адресам, обычно эти адреса идут последовательно (или поледовательно несколькими групами), и переменные могут быть разными 1...4 байтные.
...хотя можно наверное все свалить в struct, а уже структуру загнать в отдельную секцию... что-то типа
Один из вариантов реализации протокола MODBUS RTU. Чтобы не писать длиный swith{case:....break;...} при дешифрации адреса ячеек (регистров и пр. переменных), хочу их держать последовательно в памяти. Тогда резко сокращаяется код обработки команды, достаточно по адресу который передается в команде вычислить смещение и скопировать в буфер ответа запрошенное количество регистров (ячеек, входов и пр.). Учитывая, что стандарт предусматривает запрос несколькоих регистров подряд (сколько определяет пользователь), то это еще более экономит память, не нужна будет сборка ответа из разрозненых переменных.
Заголовок сообщения: Re: AVR studio в вопросах и ответах
Добавлено: Пт дек 16, 2016 19:13:36
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2708 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
_dark писал(а):
как правильно инициировать структуру значениями по умолчанию? код ниже не работает (в части инициализации)... Код: volatile misk my_var __attribute__((section(".my_data"))) = {1,2,3,4};
Может как-то атрибут мешает ? Например у меня при объявлении структуры все отлично инициализируется именно такой записью, но никаких атрибутов не применял.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
да я ваш скопировал но чистым этот тест не назовешь - я только убедился в отсутствии ошибок компиляции, в память я не смотрел, что там получалось. некогда, да и лень
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
ну ладно закончу эти экзерцисы, в принципе понятно как без доп. секций все реализовать только на структурах...
Всем кто откликнулся Спасибо!
Добавлено after 39 minutes: Я собственно о чем подумал, похоже дело в том, что
.my_data не является секцией .data ( глубокая мысль ) и поэтому нет начальной инициализации. вот если объявить .my_data как подсекцию .data, тогда наверное все должно получиться...
я, честно говоря, уже не очень четко помню... но по-моему, инициализируемая область ОЗУ - это секция .bss, а .data - это остальное ОЗУ, точнее вообще все ОЗУ, включая .bss... ща попробую все-таки собрать более-менее адекватный тест... терпение
Добавлено after 1 hour 12 minutes 43 seconds: в общем, дело такое... во-первых, я все сказал наоборот: .bss - это область ОЗУ глобальных переменных, не имеющая начальных данных (обнуляется по умолчанию), а .data - это как раз проинициализированные переменные во-вторых, при выделении отдельной секции под переменную, она оказывается именно по этому адресу... но как ее проинициализировать "по умолчанию", я так и не понял... похоже, что никак... либо я просто слишком туп, чтоб понять, как.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Заголовок сообщения: Re: AVR studio в вопросах и ответах
Добавлено: Вс дек 18, 2016 08:20:11
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2708 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Доброго воскресного времени суток. Существует ли возможность настроить AS6 так, чтобы он имя HEXа назначал по какому-то правилу. Например добавлял время или что-то выдергивал из исходника и добавлял к имени. И если да, то как это сделать. Я makefile ручками не пишу, пользуюсь автоматизацией студии, мне бы как-нибудь там же и настроить это дело. Спасибо.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
боюсь, что так не выйдет. я на 100% не уверен, но все предыдущие версии AVR Studio не умели "автоматически" работать ни с каким компилятором, кроме WinAVR. поэтому я могу вам дать не очень правильный совет: сначала установить WinAVR, а затем просто поверх ее папок перезаписать файлами из AVR Toolchain. студия будет думать, что это WinAVR, но фактически будет работать с новым компилятором.
как сделать совсем правильно - не знаю, к сожалению...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
AVR Toolchain это WinAVR и есть, только более новых версий
нет, это не совсем так. WinAVR - это прежде всего инсталлятор, который делает такие изменения в окружении Windows, которые позволяют студии автоматически обнаружить его присутствие и соответственно предлагать создание проектов для WinAVR. о наличии toolchain студия, похоже, самостоятельно узнать не может, а как ей помочь - я не в курсе (точнее, сказал, как делал я)
кроме того, AVR Toolchain не содержит документации по avr-libc и вообще по avr-gcc, а WinAVR содержит все "из коробки".
функционально - да, это версии компилятора под AVR, но комплектность разная. в частности, мне очень не нравится формат вывода сводки о размере полученного кода, который выдает avr-size в toolchain последних версий, приходится применять версию из WinAVR
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Сейчас этот форум просматривают: Google [Bot] и гости: 19
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения