12.08.2018, 18:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,629
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Подниму свой вопрос. Пытаюсь на основе работающего кода для HID сделать CDC. Но что-то у меня даже стадию энумерации не проходит (пока оставил "чисто HID'овскую" энумерацию). Причем, железяка уходит в глубокий зависон (hardfault?).
Вот мне бы хоть решить проблему, какого черта она виснет: внутрь обработчиков USB не засунешь диагностические сообщения (иначе сразу компьютер считает железку неизвестной)...
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
12.08.2018, 20:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.02.2013
Сообщений: 1,038
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от eddy
|
внутрь обработчиков USB не засунешь диагностические сообщения
|
Есть такая тема - SWV (Serial Wire Viewer) - та него можно попробовать логи отправлять.
|
|
|
|
12.08.2018, 20:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,629
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
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).
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
12.08.2018, 22:05
|
|
Частый гость
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от DanilinSA
|
Такие объемные доки обычно набирают не с "нуля". Скорее всего берут что-то из близкого семейства и правят. Но бывает правят невнимательно.
|
И не только в этом беда. Основная беда всех ARM-ов - отсутствие работы с битами на уровне команд процессора, которая, в свою очередь, проистекает из баловства сей уважаемой конторы с Big- и Little- endian, которые определяются на самом последнем этапе проектирования ядра.
А это делает любой Cortex изначально ущербным в качестве ядра микроконтроллера. Ибо операции проверки битов регистров периферии не атомарны.
Иными словами, то, что на захудалом PIC-е выполняется за одну команду, в ARM-е требует не менее 3-х. И в их последовательность может вклиниться изменение данных в периферии. А это уже чревато. Отсюда и появляются всякие HAL-ы и прочие костыли. Средствами одного CMISIS-а эта проблема, к сожалению, не решается.
Про то, что отсутствие битовых команд жрет память программ, как не в себя и увеличивает время выполнения программы по отношению к PIC-ам, например, я уже просто молчу.
|
|
|
|
12.08.2018, 23:02
|
|
Прописка
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да не позорьтесь такую чушь нести. Атомарность в ПИКах - посмеялся.
И разве 24-е и 32-е не load/store? Что-то у вас совсем все перепуталось.
|
|
|
|
12.08.2018, 23:03
|
|
Вид на жительство
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 327
Сказал спасибо: 104
Сказали Спасибо 105 раз(а) в 69 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Passer_by
|
увеличивает время выполнения программы по отношению к PIC-ам, например, я уже просто молчу.
|
Улыбнуло..
|
|
|
|
13.08.2018, 09:51
|
|
Частый гость
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
|
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-и приведены в качестве примера. Как наиболее известные...
|
|
|
|
13.08.2018, 10:43
|
|
Прописка
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
|
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-и выглядят убого и точка.
|
|
|
|
13.08.2018, 13:08
|
|
Частый гость
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
|
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.
|
|
|
|
13.08.2018, 13:40
|
|
Прописка
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
|
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.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:11.
|
|