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

 
 
> Использование FLASH памяти, Перенос части кода в FLASH память
Andrew_k5
сообщение Nov 19 2009, 09:22
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 15-02-07
Из: Днепропетровск
Пользователь №: 25 387



Хочу перенести константы строковые во флеш, как это сделать. Есть ф-ция вывода на экран сообщения stroka (volatile flash unsigned char *str,volatile unsigned char nstr)

Нужное сообщение вывожу командой stroka(" PRIMER TEKSTA ",1); Как бы все возможные выводимые сообщения хранить во флеш памяти.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andrew_k5
сообщение Nov 19 2009, 09:28
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 15-02-07
Из: Днепропетровск
Пользователь №: 25 387



Mega16
CodeVisionAVR 1.25.5 Professional

Сообщение отредактировал Andrew_k5 - Nov 19 2009, 09:30
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 19 2009, 19:37
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Andrew_k5 @ Nov 19 2009, 11:28) *
Mega16 CodeVisionAVR 1.25.5 Professional

Пример как это сделать в IAR'е. По аналогии можете применить себе:

Код
#include <stdlio.h>

#ifdef __IAR_SYSTEMS_ICC__

    #if defined(__IOM128_H)
    #define PROGMEM __farflash
    #elif defined(__IOM64_H) || defined(__IOM162_H)
    #define PROGMEM __flash
    #endif
    
#endif


#define pgm_print(x) do {\
    static const U8 PROGMEM str[] = x;\
        __pgm_print( str );\
} while(0)

#define pgm_printf(x, ...) do {\
    static const U8 PROGMEM pgm_str[] = x;\
    char pgm_data_buf[sizeof(pgm_str)];\
    __pgm_strcpy( pgm_data_buf, pgm_str);\
    printf( pgm_data_buf, __VA_ARGS__);\
} while(0)

void __pgm_print(const U8 PROGMEM *str);
void __pgm_strcpy(char *dst, const U8 PROGMEM *str);

в программе пользую:

pgm_print("simple string");
pgm_printf("format string x = %d", x);
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 10:50
Рейтинг@Mail.ru


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