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

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

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

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

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

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


Ответ
Опции темы
Непрочитано 12.08.2018, 18:11   #5371
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,651
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Подниму свой вопрос. Пытаюсь на основе работающего кода для HID сделать CDC. Но что-то у меня даже стадию энумерации не проходит (пока оставил "чисто HID'овскую" энумерацию). Причем, железяка уходит в глубокий зависон (hardfault?).
Вот мне бы хоть решить проблему, какого черта она виснет: внутрь обработчиков USB не засунешь диагностические сообщения (иначе сразу компьютер считает железку неизвестной)...
Реклама:
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума   Ответить с цитированием
Непрочитано 12.08.2018, 20:03   #5372
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,047
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от eddy Посмотреть сообщение
внутрь обработчиков USB не засунешь диагностические сообщения
Есть такая тема - SWV (Serial Wire Viewer) - та него можно попробовать логи отправлять.
dgrishin вне форума   Ответить с цитированием
Непрочитано 12.08.2018, 20:15   #5373
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,651
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Содра config descriptorл с PL2303 . Вот его компьютер воспринял (до этого был какой-то из сети, со страной длиной 67 байт). Дальше пошло:
Код:
Aug 12 19:12:53 ishtar kernel: cdc_acm 1-6.2:1.0: Zero length descriptor references
Aug 12 19:12:53 ishtar kernel: cdc_acm: probe of 1-6.2:1.0 failed with error -22
Aug 12 19:12:53 ishtar kernel: pl2303 1-6.2:1.0: pl2303 converter detected
Aug 12 19:12:53 ishtar kernel: pl2303 1-6.2:1.0: pl2303_vendor_read - failed to read [8484]: -32
...
Остается правильную обработку остальных конечных точек реализовать + специфические запросы (вроде line_coding).
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума   Ответить с цитированием
Непрочитано 12.08.2018, 22:05   #5374
Passer_by
Частый гость
 
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
Passer_by на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от DanilinSA Посмотреть сообщение
Такие объемные доки обычно набирают не с "нуля". Скорее всего берут что-то из близкого семейства и правят. Но бывает правят невнимательно.
И не только в этом беда. Основная беда всех ARM-ов - отсутствие работы с битами на уровне команд процессора, которая, в свою очередь, проистекает из баловства сей уважаемой конторы с Big- и Little- endian, которые определяются на самом последнем этапе проектирования ядра.
А это делает любой Cortex изначально ущербным в качестве ядра микроконтроллера. Ибо операции проверки битов регистров периферии не атомарны.
Иными словами, то, что на захудалом PIC-е выполняется за одну команду, в ARM-е требует не менее 3-х. И в их последовательность может вклиниться изменение данных в периферии. А это уже чревато. Отсюда и появляются всякие HAL-ы и прочие костыли. Средствами одного CMISIS-а эта проблема, к сожалению, не решается.
Про то, что отсутствие битовых команд жрет память программ, как не в себя и увеличивает время выполнения программы по отношению к PIC-ам, например, я уже просто молчу.
Passer_by вне форума   Ответить с цитированием
Непрочитано 12.08.2018, 23:02   #5375
scorpi_0n
Прописка
 
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
scorpi_0n на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Да не позорьтесь такую чушь нести. Атомарность в ПИКах - посмеялся.
И разве 24-е и 32-е не load/store? Что-то у вас совсем все перепуталось.
scorpi_0n вне форума   Ответить с цитированием
Непрочитано 12.08.2018, 23:03   #5376
Djakovskij
Вид на жительство
 
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 327
Сказал спасибо: 104
Сказали Спасибо 105 раз(а) в 69 сообщении(ях)
Djakovskij на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Passer_by Посмотреть сообщение
увеличивает время выполнения программы по отношению к PIC-ам, например, я уже просто молчу.
Улыбнуло..
Djakovskij вне форума   Ответить с цитированием
Непрочитано 13.08.2018, 09:51   #5377
Passer_by
Частый гость
 
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
Passer_by на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от scorpi_0n Посмотреть сообщение
И разве 24-е и 32-е не load/store?
24-e и dsPIC - не Load/Store.
Вот фрагмент кода, переключающего тактирование ядра для dsPIC33E
Код:
;Fcy=Fosc/2=1/2((Fin*M)/(N1*N2))=1/2((8 000 000*60)/(2*2))=60 000 000 Гц
;новая величина М=60 (PLLFBD=58)
    mov     #0x003A, W0
    mov     W0, PLLFBD
;новая величина N2=2 (PLLPOST=0), новая величина N1=2 (PLLPRE=0)
    mov     #0x0000, W0
    mov     W0, CLKDIV
;размещение нового типа генератора (NOSC=0b011 первичный генератор с ФАПЧ) в W0
    mov     #0x0003,W0
;разблокировка OSCCONH (старший байт) 
    mov     #OSCCONH, W1
    mov     #0x78, W2
    mov     #0x9A, W3
    mov.b   W2, [W1]		; запись 0x0078
    mov.b   W3, [W1]		; запись 0x009A
;установка нового типа генератора
    mov.b   WREG, OSCCONH
;разблокировка OSCCONL (младший байт)
    mov     #OSCCONL, W1
    mov     #0x46, W2
    mov     #0x57, W3
    mov.b   w2,[W1]		;запись 0x0046
    mov.b   w3,[W1]		;запись 0x0057
;разрешение переключния тактирования
    bset    OSCCON, #OSWEN      ;операция атомарна запрос на переключение тактирования установкой бита OSWEN bit
;ожидание завершения преключения тактирования
WaitOSCSwitch:	
    btsc    OSCCON, #OSWEN      ;
    bra	    WaitOSCSwitch       ;
;ожидание блокировки основной PLL
WaitMainPLLLock:
    btss    OSCCON,#LOCK	;операция атомарна 
    bra	    WaitMainPLLLock     ;
Тот же код для Cortex приведу позже. Посмотрим, где же там атомарность..
32-е PIC-и, таки да. Тоже самое, что и ARM - MIPS потому что.
Там те же костыли, что и HAL, только название другое.
Сообщение от scorpi_0n Посмотреть сообщение
Да не позорьтесь такую чушь нести. Что-то у вас совсем все перепуталось.
И без перехода на личности, pls...
Обсуждаем Cortex-ы, а не меня. Пользователь должен представлять себе не только достоинства, но и недостатки выбранного предмета приложения сил. PIC-и приведены в качестве примера. Как наиболее известные...
Passer_by вне форума   Ответить с цитированием
Непрочитано 13.08.2018, 10:43   #5378
scorpi_0n
Прописка
 
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
scorpi_0n на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Passer_by Посмотреть сообщение
24-e и dsPIC - не Load/Store.
Разве?
Код:
;новая величина М=60 (PLLFBD=58)
    mov     #0x003A, W0
    mov     W0, PLLFBD
А что это по вашему?
Сообщение от Passer_by Посмотреть сообщение
Посмотрим, где же там атомарность..
Код:
;разблокировка OSCCONL (младший байт)
    mov     #OSCCONL, W1
    mov     #0x46, W2
    mov     #0x57, W3
    mov.b   w2,[W1]		;запись 0x0046
    mov.b   w3,[W1]		;запись 0x0057
Нет тут никакой атомарности. Ищите по никам Alex_B и DL36. Они расписывали в своё время прелести "атомарности" на PIC24.
Сообщение от Passer_by Посмотреть сообщение
32-е PIC-и, таки да. Тоже самое, что и ARM - MIPS потому что.
Там те же костыли, что и HAL, только название другое.
А что вы сравниваете? MIPS и HAL? Чудесно просто!
Сообщение от Passer_by Посмотреть сообщение
И без перехода на личности, pls...
Ничего личного, но чушь - ваша. За домашнее задание - ДВА!
Сообщение от Passer_by Посмотреть сообщение
PIC-и приведены в качестве примера. Как наиболее известные...
Все эти моменты уже давно сгорели в бесконечных холиварах. PIC-и выглядят убого и точка.
scorpi_0n вне форума   Ответить с цитированием
Непрочитано 13.08.2018, 13:08   #5379
Passer_by
Частый гость
 
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
Passer_by на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

При чем здесь указанный Вами код?
Я говорил исключительно об атомарности битовых операций.
Вернемся, таки, к Cortex-ам.
Код:
//NMI occurs if quartz error present
void NMI_Handler (void)
{
	//CSS is turned on and if HSE errors occurred, the HSE and PLL must be disabled
	//and HSI must be the system clock source at 8 MHz therefore we must turned on the 
	//PLL with multiplier 12 to achive frequency 48 MHz of system clock
	RCC-›CR &=~RCC_CR_CSSON;
	RCC-›CFGR = (RCC-›CFGR & ~(RCC_CFGR_PLLMUL | RCC_CFGR_PLLSRC | RCC_CFGR_SW)) | (RCC_CFGR_PLLMUL12);
	RCC-›CR |= RCC_CR_PLLON;
	while((RCC-›CR & RCC_CR_PLLRDY) == 0)
	{

	}
	//switch system clock from HSI to PLL
	RCC-›CFGR |= (uint32_t) (RCC_CFGR_SW_PLL);
	while ((RCC-›CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL)
	{
				
	}
	//clear CSSC bit 
	RCC-›CIR|=RCC_CIR_CSSC;
}
Заметьте, здесь работа с битами вообще не атомарна.
Дизассемблер приводить будем?
Сообщение от scorpi_0n Посмотреть сообщение
Разве?
А что вы сравниваете? MIPS и HAL? Чудесно просто!
Ничего личного, но чушь - ваша. За домашнее задание - ДВА!
Все эти моменты уже давно сгорели в бесконечных холиварах. PIC-и выглядят убого и точка.
Я сравниваю Microchip Harmony для MIPS и STM HAL для ARM.
Что то, что другое призвано заткнуть дыры в архитектуре.
Еще раз прошу Вас унять эмоции и перейти в конструктивное русло обсуждения...
Еще раз повторю. Это не попытка развести холливар.
Это попытка донести до пользователей STM32, что имеется серьезный источник ошибок,
связанный с неатомарностью битовых операций с регистрами ядра и периферии на
сравнительном примере.
Особенно для тех, кто хочет пользоваться исключительно CMISIS.

Последний раз редактировалось Passer_by; 13.08.2018 в 13:25.
Passer_by вне форума   Ответить с цитированием
Непрочитано 13.08.2018, 13:40   #5380
scorpi_0n
Прописка
 
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
scorpi_0n на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Passer_by Посмотреть сообщение
При чем здесь указанный Вами код?
Я говорил исключительно об атомарности битовых операций.
В STM32 для пинов есть BSSR, а для остального битбэндинг.
Сообщение от Passer_by Посмотреть сообщение
Заметьте, здесь работа с битами вообще не атомарна.
Ну и что? Во всех ли случаях нужна эта атомарность?
Сообщение от Passer_by Посмотреть сообщение
Я сравниваю Microchip Harmony для MIPS и STM HAL для ARM.
Для чего? Смысла с этого аж никакого. Особенно рьяно с этого смеются бывшие любители АВР, они вообще о Microchip Harmony впервые слышат.
Сообщение от Passer_by Посмотреть сообщение
Что то, что другое призвано заткнуть дыры в архитектуре.
Какие дыры? По сравнению с чем? С 8080, 8051 или PDP11?
Сообщение от Passer_by Посмотреть сообщение
Еще раз прошу Вас унять эмоции и перейти в конструктивное русло обсуждения...
Еще раз повторю. Это не попытка развести холливар.
Ещё раз, прекратите нести чушь, не разобравшись. Сиять своими незнаниями совсем необязательно.
Сообщение от Passer_by Посмотреть сообщение
Это попытка донести до пользователей STM32, что имеется серьезный источник ошибок,
связанный с неатомарностью битовых операций с регистрами ядра и периферии на сравнительном примере.
Особенно для тех, кто хочет пользоваться исключительно CMISIS.
Проблемы неатомарности присутствуют везде, и в PIC, и в AVR. Это отдельная тема и ARM здесь не исключение. А уж CMSIS здесь вообще ни причём. К чему вы это приплели совсем непонятно.

Последний раз редактировалось scorpi_0n; 13.08.2018 в 13:42.
scorpi_0n вне форума   Ответить с цитированием
Ответ

Закладки


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

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, время: 22:24.


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