Намедни освоил новый проц/архитектуру/производителя/способ отладки
имеется STM32VLDiscovery
запустил с нуля созданный в кейле проект через StdPeriphDriver + CMSIS
впринципе могу и без СтдПерипДрайвера - после 3-х дней общения камушек стал прост до безобразия...
и вот на новой платформе заинтересовали меня сравнения...
1) Каково потребление
2) макс частота
3) насколько быстрее атмеги на той же частоте
4) насколько больше/меньше жрёт на меговской частоте
5) насколько высока макс частота
6) разница по объёму кода
в результате чего было проведено масса тестов
итак..
программа - обыкновенная простая заготовочка с инициализацией системы, PLL, некоторых таймеров, РТЦ, и самописный драйверок экрана 44780+граф либа к нему....вся вычислительная и рисовательная часть один-в-один с атмеговских проектов...
значиться так по пунктам
1) при 24 мегагерцах и указанной периферии - 10 ма(11 при активных вычислениях)
2) макс частота 56 мегагерц....кушает при этом 25 ма или 29 при активных вычислениях
3) написал прогу примитивнейшую...
Код: Выделить всё
f1 = x;
f1 = f1/23;
//f1=f1+y;
f3 = f1;
f4 = y;
f4 = f4/23;
f4+=f3;
f5 = y;
f5 = f5/230;
f2 = sin(f4*0.95/2)*f5+4.0;
f1=f1*3;
dot((int)f1, (int)f2, 1);
//if(((int)f1)>40)
// bufinit();
Sinuses+=1;
функция дот это
Код: Выделить всё
void dot(int x, int y, char mode)
{
unsigned char tmp;
unsigned char tmp1;
char bitnum;
char strnum;
while(x>MAX_X)
x-=(MAX_X+1);
while(y>MAX_Y)
y-=(MAX_Y+1);
while(x<0)
x+=(MAX_X);
while(y<0)
y+=(MAX_Y);
bitnum = y;
tmp = DispBuf[0][x];
tmp1 = 1<<bitnum;
if(mode==1)
{
tmp|=tmp1;
}
if(mode==2)
{
tmp&=~tmp1;
}
if(mode==3)
{
tmp=~(tmp&tmp1);
}
DispBuf[0][x] = tmp;
}
так вот
на 8 мегагерцах
АРМ за секунду проходит указанный тестовый код 2300 раз...
АтМега8 - 800 при оптимизации на объём и 900 при оптимизации на скорость
разница в два с половиной раза всего....не радует...
5) на 8-ми мегагерцах и указанных вычислениях - токи примерно равны....+- 1 миллиампер...
но мега-то рабоатет от 5-ти вольт а арм от 3.3 тоесть мощность в два раза меньше
6) тестовая программка на кодвижне скомпилилась в 5 килобайт коду...
оптимизация по размеру ....по скорости - скомпилится в 5.2 кб..разницы нет
АРМовский код аналогичен....занимает 17 килов! без оптимизации и 12 килов с макс оптимизацией по размеру .... на скорость влияет ПОЛОЖИТЕЛЬНО...+ 100-200 проходов в секунду
ИТОГО.....если дать АРМУ 56 мегагерц + его архитектура + кеил который поточнее будет чем свавр овский флоат = 15000 вычислений в секунду
атмегу не гнал...да и разницы нет....скорость растет линейно - 900 при 8 мегагерцах...
ИТОГО...
-в 3 раза больше прошивка аналогичная по функциям - можно сделать вывод что 128 КБ у арма = 32 килобайтам у АТМЕГИ
-в 2.5 раза больше быстродействие при той же частоте...
-в 3,5 раза больше макс допустимая частота
-в результате - производительность всего в 8 раз выше .... и это максимум....при том что макс допустимой частоты моего арма 24 мегагерца...
- если использовать стандартные частоты то мега на 16-ти мегагерцах выдаёт 1800 вычислений в секунду
а АРМ выдаёт 6400 вычислений в секунду на 24 мегагерцах
тоесть всего в 3.5 раза больше....при этом и кода сравнительно тоже так же само больше по обьёму...тоесть 128 кб у арма это 36 КБ у атмеги...
не радует память...у арма 8 килобайт всего....2000 занято этой прогой...
а у меги занято всего 200 байт!!!! при её то килобайте ВСЕГО
+ у меги есть еепром а у арма - 20 байт бекап регостров для которых надо батарейка...
но арм всётаки покруче будет меги...особенно таймерами и режимами ног...большая половина которых 5Вольт толерантная...
и на последок - очень тяжелое ВИДЕО двух устройств рядом...
арму я динамически на ходу менял тактовую
http://clawham.hopto.org/DriveD/PubD/66/MVI_8188.AVI
ОСТОРОЖНО 500 МЕГАБАЙТ!
Если есть ктото у кого дискаверя лежит и он зная атмеги не знает как перейти на армы - обращайтесь помогу чем смогу..мне с ней уже стало скучно...всё что хотел и мог хотеть уже попробывал настроит и получил....
АРМ это довольно просто....пересесть с атмела на арм нечего делать



