Например TDA7294

Форум РадиоКот • Просмотр темы - STM32F100RB@Keil VS AtMega8@CVAVR
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн янв 05, 2026 06:50:51

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 103 ]    , , 3, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Пт июн 24, 2011 23:00:57 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
Код:


      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   

     15530        968        630        144       1696          0   Grand Totals
     15530        968        630        144       1696          0   ELF Image Totals
     15530        968        630        144          0          0   ROM Totals

========================

    Total RO  Size (Code + RO Data)                16160 (  15.78kB)
    Total RW  Size (RW Data + ZI Data)              1840 (   1.80kB)
    Total ROM Size (Code + RO Data + RW Data)      16304 (  15.92kB)




насколько я понял много занимает либа таймеров?


Вложения:
Комментарий к файлу: весь мапфайл...
1_map.rar [13.01 KiB]
Скачиваний: 249

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Пт июн 24, 2011 23:13:26 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
clawham писал(а):
насколько я понял много занимает либа таймеров?

У тебя дофига занимают функции стдлиба - работы с арифметикой с плавающей точкой всякие принтфы. Уверен, что в "просто дерганье ногой" они нужны ? -))

----------
7010 474 306 0 100 0 Library Totals
26 0 1 0 4 0 (incl. Padding)

да и с переферией работа чтото очень жирная

620 40 0 0 0 0 stm32f10x_gpio.o
188 18 0 0 0 0 stm32f10x_pwr.o
732 52 0 20 0 0 stm32f10x_rcc.o
272 28 0 0 0 0 stm32f10x_rtc.o
2670 84 0 0 0 0 stm32f10x_tim.o
816 20 0 0 0 0 stm32f10x_usart.o
296 28 0 20 0 0 system_stm32f10x.o


у меня IAR из stellarisware насосал только
driverlib.a: [4]
cpu.o 16
ethernet.o 288
flash.o 176
gpio.o 276
interrupt.o 124
sysctl.o 908
systick.o 40
uart.o 176
----------
Total: 2 004

У тебя компил то релизовый, не дебаг ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Пт июн 24, 2011 23:17:00 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Пт янв 30, 2009 14:50:35
Сообщений: 635
Откуда: Солнечногорск
Рейтинг сообщения: 0
clawham писал(а):
эти кортексы какой-то детский обрезок нормального арма
вроде все признаки армов есть....


Если говорить о Cortex-M (а речь идёт именно о нём, а не о Cortex-A или -R), то самого главного "признака АРМа" в нём как раз и нет: эти процессоры не поддерживают "родную" систему команд ARM, а используют исключительно Thumb-2, которая впервые появилась в версии ARMv4T (ядра ARM7 с буквой T).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Пт июн 24, 2011 23:25:17 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
SII писал(а):
Если говорить о Cortex-M (а речь идёт именно о нём, а не о Cortex-A или -R), то самого главного "признака АРМа" в нём как раз и нет: эти процессоры не поддерживают "родную" систему команд ARM, а используют исключительно Thumb-2, которая впервые появилась в версии ARMv4T (ядра ARM7 с буквой T).

Признаки какого арма ? АРМы - это отнюдь не только app-процессоры для установки winCE/linux'а.
ARM7TDMI поддерживал и Thumb, и нативный режим, а что толку ? На кортексах Thumb2 оставили, т.к. шустрее и компактнее нативного кода получилось для микроконтрллерных применений.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Пт июн 24, 2011 23:26:34 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
Код:

IDE-Version:
µVision V4.20.03.0
Copyright (C) 2011 ARM Ltd and ARM Germany GmbH. All rights reserved.

License Information:
Alex Home
Home
LIC=----

Tool Version Numbers:
Toolchain:        MDK-Lite  Version: 4.20
Toolchain Path:    BIN40\
C Compiler:         Armcc.Exe       V4.1.0.644 [Evaluation]
Assembler:          Armasm.Exe       V4.1.0.644 [Evaluation]
Linker/Locator:     ArmLink.Exe       V4.1.0.644 [Evaluation]
Librarian:             ArmAr.Exe       V4.1.0.644 [Evaluation]
Hex Converter:      FromElf.Exe       V4.1.0.644 [Evaluation]
CPU DLL:               SARMCM3.DLL       V4.20
Dialog DLL:         DCM.DLL       V1.02
Target DLL:             STLink\ST-LINKIII-KEIL.dll       V1.5.6
Dialog DLL:         TCM.DLL       V1.02




конечно не этовот...не комильфо..но принтф не столько занимает много....вот разве инициализация таймеров....походу он компилит в выход ВСЁ что только попало в либу!!! даже если я не вызывал этих функций....
при разных настройках оптимизации получается или 15600 кода или двадцать КИЛОВ!!! это чтото уж чересчур....

ну а по поводу периферии..ну так я инициализирую питание бекап домена, инициализирую РТЦ, инициализирую ugbj? инициализирую прерывания, инициализирую частоты, инициализирую таймера, ну и уарт....
мож кая-то директива прагмовская есть не включать неюзанные коды в прошивку?

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Пт июн 24, 2011 23:31:23 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
насчет Arm против Avr на арм.ком хорошая страничка есть

http://www.arm.com/products/processors/ ... tex-m0.php

по тестам размер кода в 2 раза МЕНЬШЕ авра, с умножением и так было понятно, что получится.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 02:38:00 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Пт янв 30, 2009 14:50:35
Сообщений: 635
Откуда: Солнечногорск
Рейтинг сообщения: 1
Satyr писал(а):
Признаки какого арма ? АРМы - это отнюдь не только app-процессоры для установки winCE/linux'а.
ARM7TDMI поддерживал и Thumb, и нативный режим, а что толку ? На кортексах Thumb2 оставили, т.к. шустрее и компактнее нативного кода получилось для микроконтрллерных применений.


Именно АРМа как такового. Первые три версии АРМа имели только одну систему команд -- ту, которую сейчас и называют АРМовской. Тумбу прикрутили уже позже. Оправдано или нет отказались от АРМа в Кортехах-М -- это уже другой вопрос, я лишь говорю о том, что Кортех-М -- это, по сути, уже не АРМ, а процессор другой архитектуры.

Кстати говоря, вся эта история с развитием АРМов фактически показала ошибочность изначальной концепции RISC-процессоров: использование только простых инструкций фиксированной длины в противовес "медленным и сложным" CISC'ам. Хотя само название АРМ прямо говорит, что это РИСК-архитектура, на сегодняшний день от этой концепции почти ничего не осталось. Система команд постоянно разбухала и усложнялась, ну а с появлением Тумбы-2 отказались от предпоследней особенности РИСКа -- кодирования любой команды фиксированным числом разрядов (родные АРМовские команды занимают всегда 32 бита, что часто избыточно -- вот и лишний расход памяти; команды Тумбы всегда занимают 16 бит -- а это сильно ограничивает гибкость; в итоге пришли к тому, что в Тумбе-2 применяется переменная длина команды -- 16 или 32-разряда). Последним признаком РИСК-архитектуры в АРМах остаётся только их неспособность выполнять операции регистр-память (и тем более память-память): сначала изволь всё нужное загрузить в регистры.

Ну а возвращаясь к Кортеху-М... В общем-то, использование более компактной кодировки в микроконтроллерах однозначно оправданнее. Флэш-память по сравнению с ОЗУ -- вещь медленная, поэтому вполне возможна ситуация, что алгоритмически (т.е. по числу необходимых инструкций для решения задачи) более медленная, но более компактная система команд (Тумба) на практике будет работать быстрей, чем алгоритмически более быстрая, но неэкономная в плане памяти (АРМ). Если не изменяет память, у АТМЕЛовских АРМв4 (AT91SAM7...) частота выборки из флэш-памяти была раза в два меньше, чем максимальная частота собственно процессорного ядра, причём за каждый такт из флэша выбиралось всего одно слово -- т.е. одна команда АРМ или же Тумбы. Если я прав, то получается, что эти процессоры почти за одно и то же время выполняли либо одну команду АРМ, либо две Тумбы, что, понятное дело, выгоднее. Так что ориентация именно на расширенную Тумбу в Кортехах-М вполне закономерно и оправданно. В микропроцессорах ситуация сложней. Программы там гоняют из ОЗУ, а не из флэш-памяти; кроме того, у них обычно достаточно приличный объём кэша. Тем не менее, расход этого самого кэша на громоздкую систему команд АРМ существенно выше, чем на Тумбу, поэтому не факт, что программа на АРМе будет однозначно быстрей, чем на Тумбе. Думается, тут очень сильно зависит от эффективности транслятора (ну или умений программиста, если программа пишется на ассемблере): сумеет ли он воспользоваться всей гибкостью системы команд АРМ.

Что касается сравнения АРМа и АВР8, то с технической точки зрения первый безусловно выгодней и по скорости, и по памяти. Например, простой, но часто встречающийся на практике случай: сложение или вычитание 32-разрядных целых чисел. На АВР8 в общем случае для этого потребуется 16 команд (8 загрузок из памяти, 4 сложения/вычитания, 4 записи в память), которые займут 32 байта. На АРМе -- 4 команды (2 загрузки, одно сложение/вычитание и одна запись), 16 байт. На Тумбе -- те же 4 команды, но уже 8 байт. Если рассматривать 16-разрядное сложение/вычитание, то у АВР8 число команд сократится вдвое (8 команд, 16 байт), у АРМа останется тем же самым -- 4 команды и 16/8 байт, что как минимум не хуже по памяти и уж точно лучше по скорости.

У АВР8 больше регистров (32 против реально 13 у АРМа -- ещё 3 имеют специальное назначение; у Тумбы и вовсе свободно можно использовать только 8), но у АРМа они в 4 раза "толще", что при сколько-нибудь сложных расчётах безусловно предпочтительней. Кроме того, АРМовские регистры универсальнее (так, в АВР8 результат умножения всегда кладётся в R0:R1; для чтения-записи с автоинкрементом или автодекрементом можно использовать только три пары из шести последних регистров, ну и т.д.; у АРМа все 13 регистров равноправны).

В общем, получается, что программа под АРМ должна занимать меньше памяти и работать существенно быстрей. Почему на практике так получается далеко не всегда, надо разбираться. Возможно, компилятор и компоновщик тащат в выполняемый файл всё подряд, а не только то, что нужно. Может также быть, что под АВР8 используется компилятор Си, а вот АРМ -- Си++, и последний порождает кучу ненужной в данном случае фигни для ООП, обработки исключений и т.д. и т.п. В общем, надо тщательно разбираться в параметрах трансляторов и компоновщиков, а заодно изучить код, который получен в результате: по крайней мере, станет понятно, что же именно столько места сожрало. Наконец, стоит помнить, что подготовка АРМа к работе намного сложней (куча периферии, ПЛЛ и т.д. и т.п.) -- а это тоже память. Так что, думается, наиболее правильный подход -- сравнение размера именно "целевых" функций, которые, собственно, и выполняют полезную работу. В тестовых задачах их объём может быть невелик по сравнению с инициализационным кодом, вот и создаётся впечатление, что АРМ менее эффективен по памяти. Но если задача крупная, то вся эта инициализация будет занимать лишь небольшой размер по сравнению с объёмом в целом -- и там можно увидеть реальную картину.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 09:22:50 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
radio-kot писал(а):
Возможно, но у известно кого STM32L Discovery по 850 рублей

avr , имей совесть !!! В Элитане сей кит 483 рубля...
http://www.elitan.ru/price/index.php?se ... +Discovery

Топикстартеру могу сказать только одно : атмел - это диагноз , ни в коем случае не слазьте с них, если уж вы начали сравнивать их с arm .


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 10:23:23 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
спасиб за разьяснения..впринципе я как-то так и предполагал что ну не может математика так много занимать..попробую перетащить всё в иар с нуля накалякать....посмотрим что там...толи этот мой кейл чтото не то лепит толи я ему чтото не то говорю ..как-то вот неделю его колупаю и никак не могу разобраться с его настройками...в иаре настроек просто туча...посмотрим

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 11:25:55 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
Да, запустил я Keil, оказывается был он у меня.
То, что мне показалось, что по гибкости настроек близок к IAR - это я, мягко говоря, погорячился -))))
Keil какой то для новичков чтоли. Настроек минимум, мастеров максимум.
Тот же мастер подкинул мне шаблонный стартап в котором таблица прерывания забитая хенделрами практически на все возможные прерывания, которые при компиле видимо всасываются из библиотек при том, что ты эту периферию и соотв. обработку прерываний от них вообще пользовать не собираешься.
Если попользоваться мастером и руками не почистить, возможно там пустая прога пол флеша займет, если МК простенький.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 11:33:30 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
dosikus писал(а):
атмел - это диагноз , ни в коем случае не слазьте с них, если уж вы начали сравнивать их с arm .

Это точно. Именно по этому надо слезать до конца, раз удалось заглянуть за пределы этого порочного круга.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 12:13:16 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
Прошу ногами сильно не пинать ибо за кейл я серъезно взялся только вчера. Простейший пример мигания светодиодом из встроенной справки. При компиляции выдает объем занимаемой памяти:
Код:
Program Size: Code=376 RO-data=252 RW-data=0 ZI-data=608

Идем в настройки: Project->Options for Target1. Далее тыкаем галку Use MicroLib, снова компилируем:
Код:
Program Size: Code=168 RO-data=252 RW-data=0 ZI-data=512

Видно, что объем кода и занимаемых данных сильно уменьшился. Возможно вам следует тоже попробовать такую опцию.

Далее, идем в файл system_stm32f10x_cl.c, и наблюдаем следующую картину:
Код:
  if (__RCC_CR_VAL & RCC_CR_HSION) {                 /* if HSI enabled*/
    while ((RCC->CR & RCC_CR_HSIRDY) == 0);          /* Wait for HSIRDY = 1 (HSI is ready)*/
  }

  if (__RCC_CR_VAL & RCC_CR_HSEON) {                 /* if HSE enabled*/
    while ((RCC->CR & RCC_CR_HSERDY) == 0);          /* Wait for HSERDY = 1 (HSE is ready)*/
  }

  if (__RCC_CR_VAL & RCC_CR_PLL3ON) {                /* if PLL3 enabled*/
    RCC->CR |= RCC_CR_PLL3ON;                              /* PLL3 On */
    while ((RCC->CR & RCC_CR_PLL3RDY) == 0);         /* Wait for PLL3RDY = 1 (PLL is ready)*/
  }
и т.д.

У меня есть подозрения, что все эти IF-ы тупо переписываются во флеш-память.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 13:17:30 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
SII писал(а):
Именно АРМа как такового. Первые три версии АРМа имели только одну систему команд -- ту, которую сейчас и называют АРМовской. Тумбу прикрутили уже позже. Оправдано или нет отказались от АРМа в Кортехах-М -- это уже другой вопрос, я лишь говорю о том, что Кортех-М -- это, по сути, уже не АРМ, а процессор другой архитектуры.

Нуу, если так рассуждать, то да. Все, что кортексы - и M, и А - не "армы".

Цитата:
Кстати говоря, вся эта история с развитием АРМов фактически показала ошибочность изначальной концепции RISC-процессоров: использование только простых инструкций фиксированной длины в противовес "медленным и сложным" CISC'ам. Хотя само название АРМ прямо говорит, что это РИСК-архитектура, на сегодняшний день от этой концепции почти ничего не осталось.

чистый RISC - это крайность. Эволюционно пришли от RISC к некоторой неортогональной системе комманд т.к. это позволяет достичь бОльше производительности без сильного усложнения. Допустим, чужда идеологии RISC такая сложносочлененная инструкция, как умножение с накоплением. Зато в железе делается просто и здоров ускоряет задачи обработки сигналов. Аналогично и с остальным.

Цитата:
Если не изменяет память, у АТМЕЛовских АРМв4 (AT91SAM7...) частота выборки из флэш-памяти была раза в два меньше, чем максимальная частота собственно процессорного ядра, причём за каждый такт из флэша выбиралось всего одно слово -- т.е. одна команда АРМ или же Тумбы.

Насколько помню, все АРМ МК что видел имель флешку работающую с вейтстейтами уже после ~35МГц.
Но многие последние жирные ARM7TDMI имели механизмы предвыборки. Классика 128битная шина флеша и 128битный буфер предвыборки. Если код идет последовательно, то никаких задержек.

Цитата:

Если я прав, то получается, что эти процессоры почти за одно и то же время выполняли либо одну команду АРМ, либо две Тумбы, что, понятное дело, выгоднее.

конвеер там один. сколько б не навыбирали, выполняется всеравно 1 комманда.

Цитата:
Так что ориентация именно на расширенную Тумбу в Кортехах-М вполне закономерно и оправданно. В микропроцессорах ситуация сложней. Программы там гоняют из ОЗУ, а не из флэш-памяти; кроме того, у них обычно достаточно приличный объём кэша. Тем не менее, расход этого самого кэша на громоздкую систему команд АРМ существенно выше, чем на Тумбу, поэтому не факт, что программа на АРМе будет однозначно быстрей, чем на Тумбе. Думается, тут очень сильно зависит от эффективности транслятора (ну или умений программиста, если программа пишется на ассемблере): сумеет ли он воспользоваться всей гибкостью системы команд АРМ.

АРМ сам рекомендует на кортексах-А пользовать именно Тумб2

Цитата:
У АВР8 больше регистров (32 против реально 13 у АРМа -- ещё 3 имеют специальное назначение; у Тумбы и вовсе свободно можно использовать только 8), но у АРМа они в

А что толку? или на асме писать (да еще в голове эти 32 регистра держать), или на сях редко какой компилятор пользует хоть половину из них

Цитата:
В общем, получается, что программа под АРМ должна занимать меньше памяти и работать существенно быстрей. Почему на практике так получается далеко не всегда, надо разбираться. Возможно, компилятор и компоновщик тащат в выполняемый файл всё подряд, а не только то, что нужно. Может также быть, что под АВР8 используется компилятор Си, а вот АРМ -- Си++, и последний порождает кучу ненужной в данном случае фигни для ООП, обработки исключений и т.д. и т.п.

Нет смылса рассуждать, если компиляторы вобще разные разных контор


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 14:08:15 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
Тэксь....Ребятушки знавцы...
создал я тут в иаре ту же прогу с теми же либами и т.д.

результат убивает
1) если без оптимизации вообще то код получается 22 килобайта!!! и при этом некоректно работает(на экране появились какие-то посторонние символы...)...частота в прерывании не меряется корректно и т.д. и ооооченнььь медленно работает
2) если включить максимальную оптимизацию на размер - получается 13 килобайт кода и оно всё работает очень красиво НО....скорость 14000 и не выше...при том же кварце системе код просто скопипастил!!!!!!
3) оптимизация максимум сбалансированно - 14300 тыщ вычислений и 15 килобайт кода.... всё работает коректно
4) максимальная скорость....впринципе некоректно работает и в кейле НО...в кейле работает экран и скорость реально 16000 становится....а в иаре вообще не инициализируется экран...не рабоатет прерываание ( лампочка не моргает)....вообще некоректность видать все пустые циклы ожидания повыкидывал....

ИТОГО.....КЕИЛ РУЛИТ!
хоть и срёт файлами - надо просто красиво свои файлы пораскладывать по папкам
НО делает не сильно раздутый код на макс оптимизации и даёт производительность на 6% больше!!!!!!!!!!! правда помоему кушает больше рамы...кстати из тех 1800 байт оперативки - 1000 это стек....впрочем в иаре аналогиично! но там рамы закушано 1200

КЕИЛ на макс оптимизации
Код:
Total RO  Size (Code + RO Data)                16160 (  15.78kB)
Total RW  Size (RW Data + ZI Data)              1840 (   1.80kB)
Total ROM Size (Code + RO Data + RW Data)      16304 (  15.92kB)

15200 проходов по синусу

КЕИЛ на мин оптимизации
Код:

    Total RO  Size (Code + RO Data)                20616 (  20.13kB)
    Total RW  Size (RW Data + ZI Data)              1848 (   1.80kB)
    Total ROM Size (Code + RO Data + RW Data)      20768 (  20.28kB)


141700 проходов



ИАР на макс балансед оптимизации
Код:
13 740 bytes of readonly  code memory
 140 bytes of readonly  data memory
 1 232 bytes of readwrite data memory

14300 проходов

ИАР на минимальной оптимизации не работает коректно - два лишних символа на экране - скорость 12000 !!!!
а вот на средней оптимизации нормально работает
Код:

  14 320 bytes of readonly  code memory
     140 bytes of readonly  data memory
   1 232 bytes of readwrite data memory


результат 13800 проходов по синусу в секунду!!!

Вывод?
- экономим - иар
- скорость Кеил

да ещё одно наблюдение...
у меня машинка старичек...
Soket939 разогнанный до 533 мегагерц DDR рама и проц до 3.2 гигагерц в винраре одно ядро 720 показывает
винт 4хсамс250 Stripe raid 500 мегабайт в секунду чтения/записи

проект в кеиле пересобирается с 47 секунд с нажатия рекомпиле алл до начала загрузки в камень проги секунд и 15-20 секунд по ф7
проект в ИАРЕ делается аж 10 секунд...пересборка полная...и 1-2 секунды по ф7

прошивка таргета везде одинакова

вот и выводы....

я остановлюсь на иаре....мне меньше рамы и большая возможность контроля компилера линковщика и т.д. важнее будет...

ну и исходники проектов -
http://clawham.hopto.org/DriveD/PubD/66/

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 14:22:14 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Пт янв 30, 2009 14:50:35
Сообщений: 635
Откуда: Солнечногорск
Рейтинг сообщения: 0
Satyr писал(а):
Нуу, если так рассуждать, то да. Все, что кортексы - и M, и А - не "армы".


Тут Вы ошибаетесь. Кортех-А -- натуральный АРМ, поскольку имеет систему команд АРМ, его системную архитектуру и т.д. (другое дело, что сильно расширен, но, тем не менее, совместим).

Цитата:
чистый RISC - это крайность. Эволюционно пришли от RISC к некоторой неортогональной системе комманд т.к. это позволяет достичь бОльше производительности без сильного усложнения. Допустим, чужда идеологии RISC такая сложносочлененная инструкция, как умножение с накоплением. Зато в железе делается просто и здоров ускоряет задачи обработки сигналов. Аналогично и с остальным.


О чём и речь. Хотя, если на первом плане стоит производительность, то лучше "настоящий" ЦИСК, только не такой, как ИА-32, а нормальный (например, древний VAX-11). Как показал опыт Интела, даже неудачную систему команд (того самого ИА-32) можно быстро декодировать и превращать в последовательность простых операций, причём выполнять несколько команд одновременно, за счёт чего и достигается очень высокая пиковая производительность. Другое дело, что при этом, мягко говоря, страдает энергопотребление, но тут уж надо выбирать, что важней для конкретной задачи.

Цитата:
Насколько помню, все АРМ МК что видел имель флешку работающую с вейтстейтами уже после ~35МГц.
Но многие последние жирные ARM7TDMI имели механизмы предвыборки. Классика 128битная шина флеша и 128битный буфер предвыборки. Если код идет последовательно, то никаких задержек.


Кажись, у атмеловских нет такого механизма, но утверждать не буду... Вот у NXP LPC24xx есть, поэтому он на полной скорости может работать (до 72 МГц).

Цитата:
конвеер там один. сколько б не навыбирали, выполняется всеравно 1 комманда.


Дело не в конвейере. Представьте, что у этого АРМа используется 32-разрядная флэш-память, способная работать с частотой до 30 МГц, а процессорное ядро может работать до 60 МГц. На частотах до 30 МГц флэш будет успевать выдавать для процессора код команды, а на частотах свыше 30 -- уже нет, нужно вводить такты ожидания. Поскольку каждая команда АРМ имеет длину 32 бита, процессор сможет их исполнять лишь с частотой 30 МГц, даже если сам "заведён" на 60 МГц: флэшка просто не будет успевать ему выдавать команды. Но если он исполняет команды Тумбы, он будет работать на полной частоте, ведь каждое считанное из флэшки 32-разрядное слово будет содержать две команды, на выполнение которых процессору потребуется два такта, в течение которых флэша успеет выдать очередное 32-разрядное слово и т.д. В итоге и получаем, что на системе команд Тумб такой процессор будет работать быстрей, чем на АРМ.

Цитата:
АРМ сам рекомендует на кортексах-А пользовать именно Тумб2


Сам вот всё собираюсь её внимательно посмотреть, но руки не доходят: по работе занят с более древними армами (АРМв4 и АРМв5)...

Цитата:
А что толку? или на асме писать (да еще в голове эти 32 регистра держать), или на сях редко какой компилятор пользует хоть половину из них


Ну, прошлую задачу на асме на АВР8 и писал. Си, во-первых, терпеть не могу (сплошной рассадник ошибок), а во-вторых, не влезла б в память, а менять контроллер -- проблема (аппарат в серийном производстве уже был, только функционал всё расползался). Для интереса посмотрел микроПаскаль: компилятор вообще никакой; похоже, изначально он был написан для 8051, и логика работы в лоб содрана на АВРки. Большое число регистров реально не используется, все операции производятся в одном регистре (Р16), ну и т.д...

Цитата:
Нет смылса рассуждать, если компиляторы вобще разные разных контор


Ну почему ж... Сравнить-то по-любому можно, заодно станет более-менее понятно, насколько эффективный код порождает конкретный компилятор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 14:49:01 
Друг Кота
Аватар пользователя

Карма: 77
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7518
Рейтинг сообщения: 0
Цитата:
атмел - это диагноз


:)))

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Сб июн 25, 2011 21:19:56 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
clawham писал(а):
ИТОГО.....КЕИЛ РУЛИТ!

Итого тут вывод не что кейл рулит, а несколько иной, прозвучавший бы обидно для тебя.
В общих словах - от разработчика зависит не меньше, чем от платформы и компилятора.

Если с разными настройками оптимизации работает/не работает - то это ошибка в коде/таймингах.

например, вот это:

void delay_ms(int Dly)
{
int a=0;
int b=0;
for(a=0;a<Dly;a++)
{
for(b=0;b<450;b++)
{
//c++;
}
}
}

void delay_us(int Dly)
{
int a=0;
for(a=0;a<Dly;a++)
{

}
}

рекомендую посмотреть в асме что получается при компиле с оптимизацией -)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Вс июн 26, 2011 02:12:08 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 5
Зарегистрирован: Пт авг 22, 2008 03:58:30
Сообщений: 235
Откуда: Union Soviet Socialist Republics
Рейтинг сообщения: 0
Satyr писал(а):
clawham писал(а):
рекомендую посмотреть в асме что получается при компиле с оптимизацией -)))


У меня IAR такие циклы с полной оптимизации по скорости выкидывает даже если внутри не просто декремент а какие нибудь условия которые по его мнению бесполезны(например проверка переменной которая обновляется по приему UART в прерывании, а компилер считает что переменная всегда равна 0 например и не видит как во время цикла она может изменится поэтому и выкидывает) поэтому если этот цикл действительно необходим приходится в него вставлять что нибудь другое, бесполезное с точки зрения программы но не компилятора, для исполнения.

Поэтому Вы совершенно правы, нельзя бездумно пользоваться оптимизацией не разобравшись хотя бы примерно как компилятор ее проводит. Рулят прямые руки и понимание работы компилятора :)

_________________
Крылья... Крылья.... Хвост! Изображение
Нестрашно не знать, страшно не стремиться знать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Вс июн 26, 2011 05:09:12 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб июн 12, 2010 16:19:17
Сообщений: 190
Откуда: Россия, Томск
Рейтинг сообщения: 0
Код:
Рулят прямые руки и понимание работы компилятора

В вашем случае они пока "не рулят", компилятор всего лишь делает, то что вы ему говорите.
Если ваша переменная обновляется в прерываниях или вы делаете задержку, то просто объявите переменную с volatile и будем вам счастье. Читайте доку...

_________________
С уважением, Денис Железняков aka ZiB
Мой блог: http://ziblog.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F100RB@Keil VS AtMega8@CVAVR
СообщениеДобавлено: Вс июн 26, 2011 07:49:11 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 5
Зарегистрирован: Пт авг 22, 2008 03:58:30
Сообщений: 235
Откуда: Union Soviet Socialist Republics
Рейтинг сообщения: 0
Zheleznjakov писал(а):
Код:
Рулят прямые руки и понимание работы компилятора

В вашем случае они пока "не рулят", компилятор всего лишь делает, то что вы ему говорите.
Если ваша переменная обновляется в прерываниях или вы делаете задержку, то просто объявите переменную с volatile и будем вам счастье. Читайте доку...

Не нужно резкостей, не один Вы знаете про volatile, что по Вашему я полный идиот? Переменная так и объявлена, но тем не менее IAR этот цикл выкидывает, точнее даже так проверку которая в цикле он выполняет но только один раз и выходит из цикла.

----------

Эх... зря я ввязался, я неправ, все, Аминь.

_________________
Крылья... Крылья.... Хвост! Изображение
Нестрашно не знать, страшно не стремиться знать.


Последний раз редактировалось Left Radio Вс июн 26, 2011 08:01:57, всего редактировалось 1 раз.

Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 103 ]    , , 3, , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y