Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

бъгчета в STM библиотечките
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=13059
Страница 1 от 2

Автор:  miro_atc [ Пон Юли 14, 2014 2:50 pm ]
Заглавие:  бъгчета в STM библиотечките

често забелязвам разни бъгчета и обикновено ги подминавам, ама ще взема да ги събирам в тая тема...

файл: stm32f2xx_ll_usb.c
функция: HAL_StatusTypeDef USB_FlushTxFifo (USB_OTG_GlobalTypeDef *USBx, uint32_t num )

Код:
USBx->GRSTCTL = ( USB_OTG_GRSTCTL_TXFFLSH |(uint32_t)( num << 5 ));
трабва да е:
USBx->GRSTCTL = ( USB_OTG_GRSTCTL_TXFFLSH |(uint32_t)( num << 6 ));

Автор:  FiTTiLA [ Пон Юли 14, 2014 4:48 pm ]
Заглавие:  Re: бъгчета в STM библиотечките

Евала!

Автор:  bobihot [ Пон Юли 14, 2014 8:28 pm ]
Заглавие:  Re: бъгчета в STM библиотечките

В коя среда за програмирване. За кой проц- ако има значение?
И ако има някакво решение- в случая си го писал де. :)

Автор:  miro_atc [ Пон Юли 14, 2014 8:59 pm ]
Заглавие:  Re: бъгчета в STM библиотечките

bobihot написа:
В коя среда за програмирване. За кой проц- ако има значение?
И ако има някакво решение- в случая си го писал де. :)


В случая тоя бъг касае всички арм на ST и всички среди. То по принцип библеотечката на ST е обща.
Специализиране са само хедърите на фамилиите.... и там съм мяркал доста "печатни" и copy-paste грешки :D
Нищо сериозно и аз правя подобни грешки... просто като сравнявам моя код с техния и се виждат разликите. А като мине известно време забравям и хайде пак сравнявай с дейташит... Та затова в тая тема ще почна да си водя записки :D

Автор:  timt [ Пон Юли 14, 2014 10:17 pm ]
Заглавие:  Re: бъгчета в STM библиотечките

Добра идея. Аз също го правя. :rolleyes:

Автор:  gicho [ Вто Юли 15, 2014 9:09 am ]
Заглавие:  Re: бъгчета в STM библиотечките

Извинявам се за офф-топика, ама нека на обобщаваме толкова генерално - тук говорите за StdPeripheral libraries на STM.
Има още няколко подобни по функционалност (хардуерна абстракция за ST) библиотеки, за които това може би не се отнася (например - libopencm3)

Автор:  Цецо [ Вто Юли 15, 2014 9:40 am ]
Заглавие:  Re: бъгчета в STM библиотечките

Е какъв е проблема, кой каквито бъгове в файловете намира да пише, пък дали ST са го проспали или някой "свободен", какво значение има?

Автор:  miro_atc [ Вто Юли 15, 2014 9:53 am ]
Заглавие:  Re: бъгчета в STM библиотечките

gicho написа:
тук говорите за StdPeripheral libraries на STM.


ъхъ, което сега го прекръстиха на "STM32Cube Firmware Package"

Цитат:
Има още няколко подобни по функционалност (хардуерна абстракция за ST) библиотеки, за които това може би не се отнася (например - libopencm3)

Не бях чувал за libopencm3... някой ден ще ги разгледам по-подробно... и да това с USB-то не се отнася за тях, най-малкото не виждам да имат USB стек ;-)

Автор:  Цецо [ Вто Юли 15, 2014 10:01 am ]
Заглавие:  Re: бъгчета в STM библиотечките

То те като цяло нямат почти нищо завършено. Много в начална фаза са нещата, да видим дали ще го добутат до някъде. За добро или лошо, на тоя етап само ST дават пълни библиотеки с цялата условност, че кода им е далеч от перфектния и в много случаи даже е проблемен за ползване.

Относно куба на ST, аз се зарових преди седмица по-дълбоко в комуникационните драйвери (SPI, UART). Лошо. Опитали са се да вдигнат малко нивото на абстракция, опитали са се да прибавят някаква функционалност за вграждане в ОС... ама всичко е един голям турлюгювеч... според мен де. Спрели са някъде в нищото, нито са лоу-левел драйвери, нито истински комуникационни драйвери. Заебах ги засега.

Автор:  gicho [ Вто Юли 15, 2014 11:21 am ]
Заглавие:  Re: бъгчета в STM библиотечките

По-завършено и работещо? Примерно HAL-а на чибито има почти всичко, и засега не съм го хващал в издънка.

Цитат:
и да това с USB-то не се отнася за тях, най-малкото не виждам да имат USB стек ;-)

Хм, стек не знам дали имат, но ти си дал бъг в драйвера за работа с USB контролера. Такова си имат, и за мен са много по-добре написани от стм-ските:
"libopencm3\examples\stm32\f4\stm32f4-discovery\usb_cdcacm":
Код:
int main(void)
{
   rcc_clock_setup_hse_3v3(&hse_8mhz_3v3[CLOCK_3V3_120MHZ]);

   rcc_peripheral_enable_clock(&RCC_AHB1ENR, RCC_AHB1ENR_IOPAEN);
   rcc_peripheral_enable_clock(&RCC_AHB2ENR, RCC_AHB2ENR_OTGFSEN);

   gpio_mode_setup(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE,
         GPIO9 | GPIO11 | GPIO12);
   gpio_set_af(GPIOA, GPIO_AF10, GPIO9 | GPIO11 | GPIO12);

   usbd_init(&otgfs_usb_driver, &dev, &config, usb_strings);
   usbd_register_set_config_callback(cdcacm_set_config);

   while (1)
      usbd_poll();
}

Автор:  miro_atc [ Сря Юли 16, 2014 3:38 pm ]
Заглавие:  Re: бъгчета в STM библиотечките

поредната гадинка:

файл: stm32f2xx_ll_usb.c

функция: HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx , uint8_t hc_num)

Код:
  /* Check for space in the request queue to issue the halt. */
  if (((USBx_HC(hc_num)->HCCHAR) & (HCCHAR_CTRL << 18)) || ((USBx_HC(hc_num)->HCCHAR) & (HCCHAR_BULK << 18)))

Тоя if трябва да проверява дали ендпоинта е control или bulk (непериодичен) и ако е така се гледа дали има място в непериодичното фифо, иначе периодичното.... Само че който е писал кода го е написал с оная си работа.
Всъщност не е само тоя if... цялата функция е пълна боза и не отговаря на написаното в чаршафите...

Цитат:
Before disabling a channel, the application must ensure that there is at least one free space
available in the nonperiodic request queue (when disabling a nonperiodic channel) or the
periodic request queue (when disabling a periodic channel).The application can simply
flush the posted requests when the Request queue is full (before disabling the channel), by
programming the OTG_HS_HCCHARx register with the CHDIS bit set to 1, and the CHENA
bit cleared to 0.


Тъй де... те така или иначе гледат грешно фифо, кво значение има дали го гледат "преди" или "след" ;-)

Автор:  Цецо [ Сря Юли 16, 2014 4:15 pm ]
Заглавие:  Re: бъгчета в STM библиотечките

Ами имам чувството, че всички УСБ стекове са така. Написали нещо, то светнало в контрол панела на бозата и аре пускай на юзера да се мъчи.

Поне на фрискейл стека изглежда същия буламач, там грешки не съм намерил, ама това което забелязах е, че една камара анормални състояния на шината въобще не си правят труда да ги отработват, а други просто ги хвърлят на юзера като маска битове без никаква документация как се очаква юзера да реагира на тях.

Автор:  miro_atc [ Сря Юли 16, 2014 4:39 pm ]
Заглавие:  Re: бъгчета в STM библиотечките

мани, тия просто са си го изсмукали от пръстите...
как може в една функция да има 100 бъга. Първо пускат заявка без да знаят дали фифото не е пълно, то и чаршафа е леко подведжащ щото заявка се пуска с вдигане на едно битче когато канала е разрешен, а се флъшва с вдигане на същото битче при забранен канал. Та тия тия са си решили първо да вдигнат битчето без да мислят какво ще стане. После като проверяват кое фифо да гледат бъркат проверката за типа на ендпоинта. И не стига че ще гледат регистри от грешно фифо, ами във варианта с непериодично вземат и грешни битове на регъстъра. Изобщо бозата се лее отвсялъде...
Да не говорим на колко места имат фикснати регистри, а пък чеповете имат по 2 usb-та и се предполага че драйвера трябва уж да работи и с 2-та. То и тва да го нямаше на сума си места имат слийп по 200ms с while(); Aз не знам как ще работи устройството ако някой драйвер си позволява да блокира по 200ms.
Просто ужас, то не случайно повечето изобщо не се занимават с USB особено пък хост... Сега погледнах сорсовете дето имам на чиби-то, на нут-а.. няма, или моите копия са стари? Някой сеща ли се за host на STM32 освен тяхната боза?

Автор:  Цецо [ Сря Юли 16, 2014 5:33 pm ]
Заглавие:  Re: бъгчета в STM библиотечките

Нута уж има HOST съпорт за STM. Или поне това пише в документацията.

Автор:  miro_atc [ Сря Юли 16, 2014 5:53 pm ]
Заглавие:  Re: бъгчета в STM библиотечките

верно бе!
мамка му, хем преди да почна проверявах и видях на главната им страница че споменават само LPC17xx като USB host и реших че няма смисъл да дърпам сорсове :evil:

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/