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

 
 
> Как заставить помещать строки во флэш?
prottoss
сообщение Nov 2 2006, 19:49
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Всем доброго времени суток!

Столкнулся с такой проблемой: для отладки пользую USART и посылаю собственной функцией usart_print(uchar *str) сообщения вида:

Код
usart_print(("start time at:")
и т.п.

Все бы хорошо, функция отлаженна давно и работает безукоризненно. Но, когда у меня накопилось, в отлаживаемом в данный момент проекте, много сообщений у меня начались глюки в программе выражающиеся, в основном, в том, что программа стала вылетать на reset. После отладки в AVRStudio, оказалось, что добрая часть SRAM заполненна именно моими сообщениями. Установка галки в опциях компилера "Place aggregate initializers in flash memory" ничего не дает. Строки просто дублируются в памяти программ и все. В SRAM они так же присутствуют (((. Конечно, можно все сообщения поместить в отдельные массивы с префиксом __flash, создать еще одну функцию типа usart_print_flash(uchar __flash * str) и делать записи типа
Код
usart_print_flash(msg1)
но это не очень удобно и не очень наглядно. Может быть есть какая то возможность указать компилятору, чтобы динамически создаваемые строки он помещал во флэш, или создавал буфер на лету? ИАР версии 4.10В. Надеюсь, я понятно все объяснил. Спасибо


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andy_F
сообщение Nov 2 2006, 22:07
Сообщение #2


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

Группа: Свой
Сообщений: 109
Регистрация: 27-07-06
Из: С.-Петербург
Пользователь №: 19 148



Может быть, поможет подключение pgmspace ? Т.е., пишем

Код
#include <pgmspace.h>


, в опциях проекта в закладке "C compiler" -> "Extra Options"
ставим птицу "Use command line options"
и набираем строчку --string_literals_in_flash

У меня, правда, получилось не очень. Похоже, если при использовании функций из pgmspace происходит прерывание, то работает это дело некорректно.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 18:41
Рейтинг@Mail.ru


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