реклама на сайте
подробности

 
 
> Как сказать по IARски?
Dog Pawlowa
сообщение Jan 7 2008, 10:10
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Адаптирую позаимствованное smile.gif

В произведении есть такие строки:
#define strncmp_flash(sram,sflash,n) strncmp_P(sram,PSTR(sflash),n)

strncmp_flash(cl,"help",4);

strncmp_P в IARе не нашел, PSTR тоже.
Не подскажете, кто праздновать устал, как это записать по IAR'ски?
Можно это сделать без копирования флэшевой строки в ОЗУ?
Спасибо.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение Jan 8 2008, 00:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



А ещё рекомендую прочитать в доке на компилятор про extended keywords.

"The __generic pointer type attribute declares a generic pointer that can point to objects in both code and data space."

С использованием этого расширения можно писать функции с формальными параметрами вроде char __generic *s, которые могут работать с данными как в RAM так и во Flash.
К сожалению есть только у IAR, при переносе на другой компилятор придётся переделывать.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Baser
сообщение Jan 8 2008, 07:43
Сообщение #3


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(SSerge @ Jan 8 2008, 02:56) *
С использованием этого расширения можно писать функции с формальными параметрами вроде char __generic *s, которые могут работать с данными как в RAM так и во Flash.

Это все прекрасно и удобно только когда в достатке программной памяти, поскольку такие функции обычно избыточны. При написании бюджетных проектов я чаще всего применяю свои маленькие функции, как вышеприведенный пример. Они "заточены" под конкретную задачу и не содержат оверхеда.
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Jan 11 2008, 10:00
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



2: SSerge
А у вас какая версия IAR ? Дело в том что у меня начиная с версии IAR AVR 4.30 при создании таких функций выдается ошибка. И 4.30 пришлось снести sad.gif
2: Baser
не такие они уж и избыточные, использует указатель на 24 бита, причем в старшем хранит только страницы памяти. Когда-то тоже задавался этой целью, и у меня получилось что данный вариант предпочтительнее и по скорости и по размеру.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dog Pawlowa   Как сказать по IARски?   Jan 7 2008, 10:10
- - Baser   Цитата(Dog Pawlowa @ Jan 7 2008, 12:10) s...   Jan 7 2008, 10:30
- - Сергей Борщ   Код#include <pgmspace.h> void Test(...   Jan 7 2008, 10:30
|- - SSerge   > А у вас какая версия IAR ? 4.12A   Jan 11 2008, 16:36
- - Waso   День добрый! Назрел такой вопрос: как ИАР-у(4....   Jun 9 2008, 05:13
- - vet   он ее вроде бы и в данном случае игнорирует. можно...   Jun 9 2008, 05:21
- - Waso   Нет. всеравно не хочет. дело в том что там в цикле...   Jun 9 2008, 07:43
- - vet   Скомпилировал ради интереса этот пример. Код//#pra...   Jun 9 2008, 09:20
- - Waso   0_0 Красиво компилит! Только что заметил что у...   Jun 10 2008, 07:57
- - vet   приведенный мной выше листинг - это код THUMB. на ...   Jun 10 2008, 09:45
- - vashurin   Привет всем. Не стал создавать новую тему решил на...   Jul 15 2008, 06:24
- - vet   vashurin Код1 char __flash *p = (char __flash ...   Jul 15 2008, 09:52


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016