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

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

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

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

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

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


 
Опции темы
Непрочитано 10.09.2012, 23:35  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Sergi_alc Посмотреть сообщение
Вот почему получилось 6 тактов вместо 4, не пойму?
А где Вы читаете?
Я залез на ARM (http://infocenter.arm.com/help/index.../CHDIJAFG.html) (собственно, а кудаж ещё?) и читаю
LDR R1,[R0] - 3 такта, STRB R1,[R4,#0x1] - 2[c] такта, где [c] - Neighboring load and store single instructions can pipeline their address and data phases. This enables these instructions to complete in a single execution cycle.
(http://infocenter.arm.com/help/index.../CHDDIGAC.html). Итого - 6, что у Вас и получается.
===
Но вопрос ведь не в этом. Ещё раз отмечаю - вылизывание проги до такта при серии выше 10000 штук абсолютно безперспективное дело. Примените аппаратное решение, которое будет на децл дороже (что не факт) и обеспечит требуемое.
Прога должна быть максимально независима!!!!
Реклама:
SasaVitebsk вне форума  
Непрочитано 10.09.2012, 23:53  
Sergi_alc
Частый гость
 
Регистрация: 30.10.2011
Сообщений: 28
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sergi_alc на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Фраза LDR R0,[R1,R2]; STR R0,[R3,#20] - normally three cycles total подразумевает всего! 3 цикла на 2 команды. Это как раз мой вариант.
Пусть даже по отдельности
Load Word LDR Rd, [Rn, ‹op2›] 2[c]
Store Word STR Rd, [Rn, ‹op2›] 2[c]
всего 4.
Sergi_alc вне форума  
Непрочитано 10.09.2012, 23:58  
_Артём_
Гражданин KAZUS.RU
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от SasaVitebsk Посмотреть сообщение
А где Вы читаете?
Но вопрос ведь не в этом. Ещё раз отмечаю - вылизывание проги до такта при серии выше 10000 штук абсолютно безперспективное дело.
Насчёт тактов согласен - не нужно и порой невозможно их сосчитать.
А вот мнение насчёт серии в 10к показалось странным - как раз тот случай, где нужно вылизывать с целью понизить себестоимость, в ущерб независимости программы.
_Артём_ вне форума  
Непрочитано 11.09.2012, 03:05  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Sergi_alc Посмотреть сообщение
Фраза LDR R0,[R1,R2]; STR R0,[R3,#20] - normally three cycles total подразумевает всего! 3 цикла на 2 команды. Это как раз мой вариант.
Пусть даже по отдельности
Load Word LDR Rd, [Rn, ‹op2›] 2[c]
Store Word STR Rd, [Rn, ‹op2›] 2[c]
всего 4.
Ну от части соглашусь. Насколько я понял, если идут подряд команды загрузки сохранения, то возможна экономия одного цикла. Иными словами 3+2-1 = 4. Но это в общем-то касается только кода. У вас ещё есть выборка из флэши. Попробуйте выполнить этот код из ОЗУ.
Честно говоря я не разбирался в этом. Нет желания. Примерно я могу оценить производительность контролера, а вылизыванием тайминга на ARMе я никогда не занимался. Ввиду непреднозначенности контролера с конвеером, для таких дел. Во-первых будет сильный джитер, за счёт работы конвеера и выборки. Во-вторых, в реальной задаче у вас будут прерывания, что вообще рубит на корню такие вещи. Обрабтчик, всёже достаточно громоздкий получается.

Работа с флэш:
zero wait state, if 0 ‹ SYSCLK  24 MHz
one wait state, if 24 MHz ‹ SYSCLK  48 MHz
two wait states, if 48 MHz ‹ SYSCLK  72 MHz

Сложно посчитать. Задержки частично компенсируются выборкой 64 бита. Но возможно во время ввода ещё шина приостанавливается, хотя и говорят о независимости.
Видно по тестам. Время выполнения из флэши на реальной проге всёже больше, чем из ОЗУ, хотя и незначительно. Понятно, что зависит от конкретной проги. Что говорит, о сложности предсказания как грузится, как конвеер и шины работают.
Симулятор даже не показывает по тактам. Говорят, есть проги, которые позволяют показать и посчитать время выполнения реального куска программы.

Только зачем? Раз вы определили, что кусок исполняется за 6, то чем это можно изменить?
Надо просто убедится что вы верно настроили шины и PLL.

Последний раз редактировалось SasaVitebsk; 11.09.2012 в 03:08.
SasaVitebsk вне форума  
Непрочитано 11.09.2012, 10:18  
EXIS
Прописка
 
Регистрация: 20.02.2006
Сообщений: 284
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
EXIS на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Hives Посмотреть сообщение
EXIS интересно, готовые это какие?
Ну если быть точнее готовые функции библиотеки stm32f10x_flash.c
Пока просто счетчик запусков сделал как-то так:
Код:
Data=(*(__IO int32_t*) 0x08003C00);
Data++;
FLASH_UnlockBank1();
NbrOfPage = (BANK1_WRITE_END_ADDR - BANK1_WRITE_START_ADDR) / FLASH_PAGE_SIZE;
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
for(EraseCounter = 0; (EraseCounter ‹ NbrOfPage) && (FLASHStatus == FLASH_COMPLETE); EraseCounter++)
{
       FLASHStatus = FLASH_ErasePage(BANK1_WRITE_START_ADDR + (FLASH_PAGE_SIZE * EraseCounter));
}
Address = BANK1_WRITE_START_ADDR;
FLASHStatus = FLASH_ProgramWord(Address, Data);
FLASH_LockBank1();
EXIS вне форума  
Непрочитано 11.09.2012, 11:24  
Arpad1
Частый гость
 
Регистрация: 24.08.2010
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Arpad1 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

[QUOTE=Left Radio;554181]Привет, интересные фото Это с помощью моей граф. библиотеки делали? Уж больно похож интерфейс
Сообщение от dosikus Посмотреть сообщение
Можно посмотреть вашу либу ?
Если после некоторого более-менее длительного испытательного срока удается задрать еще необследованную подюбочное пространство,то выявляется у всех интерфейс, уж больно одинакова и похожа, но в общем-то с учетом и скидкой на сроки эксплуатации. (Шутка)
Экран LS020 (S65) имеет более 4-х раз меньше пикс. 176 Х 132 против 400 Х 240 и это есть самое жесткое ограничение.Графической библиотекой не пользовался, смотрел кто - что лепил, а вот общее фото использовал мне, уже давным-давно запало в душу синий фон на LS020 еще представленным "FUSION 2000" на мега8 на асм-е около 2006-2007 годов, позволяющий обходиться без подсветки при дневном свете или со слабой до пару мА при слабом, правда чем новее по выпуску дисплей тем больше требует тока.Вероятная причина подметают в изоляторе брака и спрос рождает предложение, а в безрыбье и рак будет рыбой. Этот дисплей на
сегодняшний день можно использовать если ничего другого нет, достать его трудновато и дорого, лучше доплатить на 50% и больше и взять уже на макетке дисплей покруче с описанием может уже и с тачскреном.
Вложения:
Тип файла: rar Grafmix.rar (3.42 Мб, 99 просмотров)

Последний раз редактировалось Arpad1; 11.09.2012 в 11:27.
Arpad1 вне форума  
Непрочитано 12.09.2012, 06:58  
Left Radio
Частый гость
 
Аватар для Left Radio
 
Регистрация: 20.09.2009
Сообщений: 40
Сказал спасибо: 17
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
Left Radio на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от dosikus Посмотреть сообщение
Можно посмотреть вашу либу ?

Конечно можно - Free Simple HX8352 Graphics Library, пока поддерживается только ЖК на основе НХ8352 и я ее уже несколько изменил(и оптимизировал немного), но обновить все времени не хватает.

Пример использования этой библиотеки в NeilScope3 -
__________________

Последний раз редактировалось Left Radio; 12.09.2012 в 07:00.
Left Radio вне форума  
Сказали "Спасибо" Left Radio
dosikus (12.09.2012)
Непрочитано 12.09.2012, 18:26  
pasipaka
Прописка
 
Регистрация: 21.03.2011
Сообщений: 107
Сказал спасибо: 15
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
pasipaka на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Вопрос скорее по С.
(работаю с IAR).

Как бы слово 32бита положить в 4 байта массива, не сдвигая 3 раза на 8бит.
u8 BufferIN[]. Например затолкать WORD32 в BufferIN[3]-BufferIN[6]??

Чую можно же... Одним махом... Или наоборот 4 соседние байта массива "рассмотреть" как слово, не двигая биты и суммируя?

Последний раз редактировалось pasipaka; 12.09.2012 в 18:31.
pasipaka вне форума  
Непрочитано 12.09.2012, 18:33  
_Артём_
Гражданин KAZUS.RU
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от pasipaka Посмотреть сообщение
Как бы слово 32бита положить в 4 байта массива, не сдвигая на 8бит.
u8 BufferIN[]. Например затолкать WORD32 в BufferIN[3]-BufferIN[6]??
Код:
*((uint32_t *)&BufferIN[3])=0x12345678;
Сообщение от pasipaka Посмотреть сообщение
Или наоборот 4 соседние байта массива "рассмотреть" слово, не двиная биты и суммируя?
Код:
uint32_t word_var=*((uint32_t *)&BufferIN[3]);
Можно ещё через union-ы, но не чревато ли это всё fault-ами?
Если чревато, то где и когда?

Последний раз редактировалось _Артём_; 12.09.2012 в 18:45.
_Артём_ вне форума  
Сказали "Спасибо" _Артём_
pasipaka (12.09.2012)
Непрочитано 12.09.2012, 19:14  
pasipaka
Прописка
 
Регистрация: 21.03.2011
Сообщений: 107
Сказал спасибо: 15
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
pasipaka на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Спасибо. Сам бы не догадался в каком порядке разыменователи и & и приведения типа ставить... Особенно еще одна звезда в приведении типа
А гугль на спонтанный запрос не ответил.


union не катит, т.к. слово в разные места массива ложится...
Грубо гря слово (счетчик) в кольцевой буфер запихаю периодически в купе с пакетом инфы.

А чего, когда fault светить может???
pasipaka вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


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


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