Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Потребление ядра
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Alexashka
На днях выяснял насколько МАЛО потребляет контроллер (AT91SAM7SE512) и от чего зависит потребление и получил такую странную зависимость (извиняюсь если тема уже поднималась,все посты прочитать не успел). Ну с потреблением по 3.3 более-менее понятно- это практически ток по линиям ввода-вывода. А вот с ядром странность. При тактировании ядра от 32кГц генератора потребление 50мкА если код выполняется из SRAM. Как только код загружается во Флешь (или если к ней идет обращение из программы) ток возрастает до 1.6...2.0 мА, т.е в 40 раз!!! Неужели столько есть контролеер флешки??
Поскольку такое потребление никак не устраивает появилась мысль заливать программу во флешь, после чего она копирует себя (или часть себя) в SRAM, где собстно и выполняется.
Хотя не совсем понятно -если просто скопировать код из флешь в статику, то все абсолютные адреса в коде станут недействительными, а ежели размещать функции в SRAMe то при заливке они туда зальются, но при выключении питания сотрутся...Как быть?
smile3046.gif
Посоветуйте!!
aaarrr
По поводу потребления - Note под табличкой Power Consumption for Different Modes:
Цитата
Low power consumption figures stated above cannot be guaranteed when accesing the Flash
in Ultra Low Power mode. In order to meet given low power consumption figures, it is recommended
to either stop the processor or jump to SRAM.


Цитата
если просто скопировать код из флешь в статику, то все абсолютные адреса в коде станут недействительными, а ежели размещать функции в SRAMe то при заливке они туда зальются, но при выключении питания сотрутся...Как быть?

Поручить это дело линкеру - прописать нужные функции в соответствующих секциях и разместить в RAM. Конкретная реализация зависит от компилятора.
Alexashka
Цитата(aaarrr @ Aug 26 2008, 01:41) *
По поводу потребления - Note под табличкой Power Consumption for Different Modes:
Поручить это дело линкеру - прописать нужные функции в соответствующих секциях и разместить в RAM. Конкретная реализация зависит от компилятора.


\чтож если вы говорите что это реально- попробую. smile.gif

А про табличку -это многое объясняет biggrin.gif
И почему все ляпы и узкие места производители прописывают гденибудь внизу страницы мелким шрифтом ? biggrin.gif
Rst7
Цитата
Как только код загружается во Флешь (или если к ней идет обращение из программы) ток возрастает до 1.6...2.0 мА, т.е в 40 раз!!!


Вообще, конечно, весьма странно. Почему, например, AVR, исполняя программу из флеша, прекрасно справляется с микроамперными токами потребления... Что-то, как говорится, ниасилили...
Alexashka
Цитата(Rst7 @ Aug 26 2008, 10:23) *
Вообще, конечно, весьма странно. Почему, например, AVR, исполняя программу из флеша, прекрасно справляется с микроамперными токами потребления... Что-то, как говорится, ниасилили...


да проверял тем что вставил ассемблерный код, который просто в цикле читает по опред.адресу. Если этот адрес входит в область RAM- то все ок, а если он приходится на область FLASH -ток потребления сразу подскакивает.


2 all: проблема решилась вставкой ключевого слова __rumfunc перед определением функции. Теперь функция сохраняется во флешь, а при стартапе копируется в RAM, где потом собсно и выполняется smile.gif 08.gif
Сергей Борщ
Цитата(Alexashka @ Aug 26 2008, 11:12) *
2 all: проблема решилась вставкой ключевого слова __rumfunc перед определением функции.
Выворачивался, терпел пытки, но название компилятора не выдал smile.gif Чтоб вам тоже тренироваться в телепатии. wink.gif
SergeiCh
Цитата(Сергей Борщ @ Aug 26 2008, 15:54) *
Выворачивался, терпел пытки, но название компилятора не выдал

__ramfunc в IAR, а в gcc __attribute__ ((section (".ramfunc"))) В скриптах атмеловских приметов для gcc секция .ramfunc уже определена.
Alexashka
Цитата(SergeiCh @ Aug 26 2008, 14:05) *
__ramfunc в IAR, а в gcc __attribute__ ((section (".ramfunc"))) В скриптах атмеловских приметов для gcc секция .ramfunc уже определена.



Так точно! IAR v5.10
proba
у многих мк тоже самое:
Renesas M16C/R8C: @32kHz с RAM - 30uA, с Flash - 150uA
Freescale MC9S08QE: @16kHz c RAM - 7uA, c Flash - 22uA
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.