Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 02.05.2013, 09:40  
stmfaq
Прописка
 
Регистрация: 31.03.2013
Сообщений: 146
Сказал спасибо: 50
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
stmfaq на пути к лучшему
Лампочка Вопросы stmfaq

В моей программе много глобальных массивов констант, можно ли их разместить в eeprom ? На AVR это можно было делать а как это сделать в STM8S105? Если можно разместить, то как это может повлиять на скорость и стабильность выполнение программы, или лучше этого не делать?
Реклама:
stmfaq вне форума  
Непрочитано 02.05.2013, 11:29  
a-fisher
Прописка
 
Аватар для a-fisher
 
Регистрация: 15.11.2007
Адрес: СПБ
Сообщений: 214
Сказал спасибо: 37
Сказали Спасибо 42 раз(а) в 34 сообщении(ях)
a-fisher на пути к лучшему
По умолчанию Re: FAQ по STM8

На STM нету EEPROM, можно размещать в памяти программ или подключить внешний EEPROM по I2C
a-fisher вне форума  
Непрочитано 02.05.2013, 11:42  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от stmfaq Посмотреть сообщение
можно ли их разместить в eeprom ? На AVR это можно было делать а как это сделать в STM8S105?
Да точно также - указав соответствующий storage modifier. Смотрите __eeprom в хэлпе компилятора:

__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 02.05.2013 в 11:45.
tempora вне форума  
Эти 2 пользователя(ей) сказали Спасибо tempora за это сообщение:
stmfaq (02.05.2013), _Слон_ (04.05.2013)
Непрочитано 02.05.2013, 11:47  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от a-fisher Посмотреть сообщение
На STM нету EEPROM, можно размещать в памяти программ или подключить внешний EEPROM по I2C
Ты не прав, Федя! STM8S003, STM8S103...
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 02.05.2013, 16:09  
stmfaq
Прописка
 
Регистрация: 31.03.2013
Сообщений: 146
Сказал спасибо: 50
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
stmfaq на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от tempora Посмотреть сообщение
Да точно также - указав соответствующий storage modifier. Смотрите __eeprom в хэлпе компилятора:
Посмотрел но не сильно разобрался .
Сделал так
Код:
__eeprom unsigned char md5crypt [4][64]={.............
Компилятор выругался Error[Ta004]: __eeprom variable must be __no_init

Посмотрел что это такое,ниже прикрепил описание,я так понял что так нельзя обьявлять переменную , а нужно что то типа такого
Код:
unsigned char md5crypt[4][64] @ "eeprom" = {....
Но для такого объявления нужно что то настроить в линкере, что я так и не понял. Есть ли вообще смысл пихать глобальные константы в eeprom ? Дело в том что у меня уже много места занято под глобальные переменные, а написано только 50% программы. Поэтому решил перетащить их в EEPROM .
Обьясните пожалуйста на пальцах, что нужно настроить в IAR , чтобы можно было размещать глобальные переменные в EEPROM таким образом
Код:
unsigned char md5crypt[4][64] @ "eeprom" = {....
? А то из описаний на англ языке не сильно понятно что делать.
Миниатюры:
Нажмите на изображение для увеличения
Название: eepromstm8s.jpg
Просмотров: 69
Размер:	78.2 Кб
ID:	46444  

Последний раз редактировалось stmfaq; 02.05.2013 в 16:12.
stmfaq вне форума  
Непрочитано 02.05.2013, 16:38  
s64
Временная регистрация
 
Регистрация: 08.02.2010
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 14 раз(а) в 12 сообщении(ях)
s64 на пути к лучшему
По умолчанию Re: FAQ по STM8

компилятор вам правильно говорит - он не может инициализировать переменную в EEPROM, поэтому ее нужно обьявлять как __no_init , а где то в основном цикле инициализировать(перед этим разрешить запись в EEPROM)
s64 вне форума  
Сказали "Спасибо" s64
stmfaq (02.05.2013)
Непрочитано 02.05.2013, 17:04  
stmfaq
Прописка
 
Регистрация: 31.03.2013
Сообщений: 146
Сказал спасибо: 50
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
stmfaq на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от s64 Посмотреть сообщение
поэтому ее нужно обьявлять как __no_init , а где то в основном цикле инициализировать(перед этим разрешить запись в EEPROM)
Так что делать нужно так __no_init unsigned char md5crypt [4][64]={..
?
а как инициализировать? Пример можно?
А если мне не нужно изменять значение констант , зачем нужно разрешать запись в eeprom ? И если это нужно то как разрешить без использования SPL, что в какой регистр нужно записать?
stmfaq вне форума  
Непрочитано 02.05.2013, 17:18  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от stmfaq Посмотреть сообщение
Так что делать нужно так __no_init unsigned char md5crypt [4][64]={..
?
а как инициализировать? Пример можно?
А если мне не нужно изменять значение констант , зачем нужно разрешать запись в eeprom ? И если это нужно то как разрешить без использования SPL, что в какой регистр нужно записать?
Путь непрост и тернист.
Нужны кое-какие знания и понимание структуры HEX-файлов.
Абстрагируясь от МК вообще, нужно сгенерировать массив данных, которые предполагается хранить в eeprom. Затем преобразовать в hex-формат. И наконец, используя STVP загрузить это файл и записать его в адреса по закладке DATA. Эти данные будут доступны для чтения и недоступны для модификации без принятия особой меры по разблокировке этой области памяти на запись.
Иначе в самом начале программы придется переписывать данные из выделенной части флеша в область eeprom (через эту самую разблокировку с последующей блокировкой) и смирится с поетрянной частью флеша, которая могла бы быть занята кодом.
Если данных для хранения немного, то можно их записать вручную прямо в среде STVP. Та еще работка.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Сказали "Спасибо" ut1wpr
stmfaq (02.05.2013)
Непрочитано 02.05.2013, 17:31  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от stmfaq Посмотреть сообщение
Есть ли вообще смысл пихать глобальные константы в eeprom ? Дело в том что у меня уже много места занято под глобальные переменные, а написано только 50% программы.
Смысл писать что-то в EEPROM возникает только когда это настроечные данные, то есть - подлежат изменению во время работы (калибровочные константы, запомненные последние режимы и т.д.). Если же это константы, то проще держать их во флеши, тем более, что EEPROM'а-то не шибко много, значительно меньше, чем флеши.

В приведенной цитате из "Technical Note 32477" написано, что в настоящий момент не реализованы поцедуры инициализации данных, размещенных в EEPROM, то есть, данные там должны быть записаны заранее, а в программе они д.б. объявлены как __no_init. Далее обещается, что такие процедуры будут реализованы в следующих версиях, однако, Вам от этих следующих версий не будет никакого проку, поскольку Ваши данные - константы. То есть, по существу, эти следующие версии будут уметь переписывать инициализированные данные из флеши (куда компилятор поместит их двоичный образ) в еепром, чтобы там они могли быть изменены работающей программой. То есть, эти данные займут место и во флеши (там расположен их образ), и в еепроме, куда они могут быть скопированы процедурами инициализации сегментов памяти. Таким образом, удвоенный объем занимаемый этими данными в кристалле - это цена за возможность их и автоматически инициализировать и менять программно.

Ваша же цель, как я понял, совсем другая - убрать из ОЗУ константы, которые ни инициализации, ни изменению не подлежат, поэтому, либо объявляете эти данные "__eeprom __no_init" и записываете их в еепром заранее самостоятельно (возникнет проблема ручного распределения памяти), либо держите свои константы в памяти программ.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 02.05.2013, 17:33  
stmfaq
Прописка
 
Регистрация: 31.03.2013
Сообщений: 146
Сказал спасибо: 50
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
stmfaq на пути к лучшему
По умолчанию Re: FAQ по STM8

Жесть какая. Я думал что просто перед массивом констант поставлю модификатор и скомпилирую прошью МК и все дела. У меня табличных данных очень много, порядка 1000 кбайт. Ручной набор отпадает. Я вот не пойму есть у меня допустим массив unsigned char hash [40],я его преобразую в HEX файл? прошиваю , а как потом программа поймет где находится мой массив в eeprom ? или перед массивом указывается заголовок с названием моего массива? Чувствую я этого не осилю, наверно придется отказаться от некоторых функций девайса, иначе я все не впихну, жаль планы были грандиозные но кишка тонка.
stmfaq вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по проекту Kurbash Proteus 0 30.03.2013 17:35
Вопросы по RS485 Zemlyanov Микроконтроллеры, АЦП, память и т.д 49 09.12.2011 23:26
9v AC -> 3.5v DC. Вопросы valentinindi Источники питания и свет 48 06.10.2010 23:24
Вопросы о разном. AMilyushin Отвлекитесь, эмбеддеры! 4 17.01.2009 21:40
Вопросы по Си. Zemlyanov Proteus, KiCAD и другие ECAD 5 20.11.2006 15:36


Часовой пояс GMT +4, время: 13:26.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot