- posted
20 years ago
AVR ADC & IAR2.28
- Vote on answer
- posted
20 years ago
Всем привет!
Dima Orlov писал к All 29.01.2004:
DO> Заодно и еще один вопрос. Как сказать компилятору в IDE чтобы он код DO> вида puts("Hello, World!"); не компилировал как константную строку в DO> ПЗУ и указатель на нее в ОЗУ.
Чтобы именно этот код - никак. Поскольку функция puts работает со строкой из ОЗУ. Есть функция puts_P, которая работает со строкой из flash. Есть опция "--string_literals_in_flash" при включении которой все литералы будут размещаться во flash, а не в ОЗУ. Или, если эту опцию не включать, разместить строку во flash можно так: char __flash str[]="Hello, World!";
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
Всем привет!
Dima Orlov писал к Askold Volkov 30.01.2004:
DO> Я пока что пользуюсь IDE, там эта опция не включается...
включается, как и любая другая. В параметрах компилятора в IDE есть поле "Additional compiler options", куда можно вписать все, что угодно.
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
Всем привет!
Dima Orlov писал к Askold Volkov 30.01.2004:
DO> Меня насторожило то, что такая опция в принципе есть и DO> включается крыжиком, но при выборе меги 32 она становится неактивной.
нету там такого крыжика! А тот, который ты, видимо, имеешь в виду предназначен для другого - он размещает строковые литералы во внешнем ПЗУ данных, коего у меги 32 быть не может по причине отсутствия интерфейса внешней памяти.
DO> PS А по поводу загадочного поведения каналов АЦП идей нет?
да сильно много ты там понаписал - в лом разбираться. Но ни в компиляторе ни в АЦП (mega128) я никаких странностей не замечал.
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
Привет, 30 января 2004 г., 13:51:46, ты писал(а):
DO>>> Я пока что пользуюсь IDE, там эта опция не включается... AV>> включается, как и любая другая. В параметрах компилятора в AV>> IDE есть поле AV>> "Additional compiler options", куда можно вписать все, что угодно. ST> в доке на 2.28 не нашел такого. компилер ругается на неправильный ST> синтаксис. или речь не о 2.28?
2.28А прекрасно понимает этот ключВсего хорошего.
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
Привет, 31 января 2004 г., 8:32:59, ты писал(а):
AV> Точно ответить могут только авторы, я же могу только высказать свои AV> догадки. AV> Во-первых, это свежая опция, возможно ее просто не успели внести в IDE к AV> моменту его выпуска. Во-вторых IARовцы очень долго сопротивлялись ее AV> введению, считая идеологически неправильной, и сделали это только под AV> давлением пользователей. И действительно - включение этой опции AV> противоречит AV> стандарту языка.
Это еще каким местом противоречит ?
Всего хорошего.
- Vote on answer
- posted
20 years ago
--
"Dima Orlov" сообщил в новостях следующее:
Я для каждого проекта создаю свой xcl файл, где явным образом все сегменты прописываю, и все из среды компилю - полет нормальный. Модель Small не использую, Tiny достаточно. Причем необходимость собственного xcl у меня вызывается тем, что я компилятор обманываю - слово __no_init использую для внутренней памяти (почему-то авторы его только для внешней задумали), а я не хочу static неявно инициализировать (вроде как стандарт С предусматривает неявную инициализацию нулем всех static переменных, во всяком случае IAR C так делает). А чтобы со строками во флеши оверхеда не было, их надо массивами объявлять: char __flash Tx_Text[]="Text";
А потом уже массив строк: char __flash * Family[3] { Tx_Text, Tx_Text2, Tx_Text3 };
А объявление типа char __flash * Family[3] { "Text", "Text2", "Text3" }; и чтобы без копирования в RAM мне тоже не удалось создать.
Примите уверения в совершеннейшем к Вам почтении