eddy_em: (Default)
eddy_em ([personal profile] eddy_em) wrote2025-01-08 06:09 pm
Entry tags:

На STM32F103 заработало…

Собственно, вот: "новый подход" к USB. Вынес базовую часть, общую для "всего на свете" в usb_lib.c; дескрипторы с функцией их выдачи — usb_descr.c (функции записи пришлось туда пихать, т.к. sizeof() не хочет между файлами работать); базовый функционал — usb_dev.c.
Реализовал HID, CDC, PL2303 и 7 CDC "в одном флаконе". С последним хотел буфер максимально использовать, однако, в отладке увидел, что ни хрена хост не хочет по 22 байта присылать/отправлять, а упорно присылает лишь по 16 (а когда пытаешься ему 22 отправить, вообще считает этой ошибкой, несмотря на то, что в дескрипторах конечных точек указано 22 и lsusb это отображает). Баг какой-то в libusb, наверное (а то и в ядре).
Теперь остается это дело испытать на F0x2 и F303, и можно будет в "snippets" переместить.

Еще, возможно, полезно было бы MSD сделать (чтобы вообще по-максимуму настройки упростить: тупо открываешь файл, да читаешь/пишешь, а как файл с новыми записями сохранил, МК это во флеш-памяти обновит). Но пока что-то не хочется лезть в дебри блочных устройств и, тем более, файловых систем. На гитхабе есть проект littlefs (вроде как вообще достаточно компактная штука), и она вроде как через FUSE в линуксе работает. Но интересней было бы, конечно, выдрать из какого-нибудь ядра v1.0.0 модуль ext2 и портировать на микроконтроллеры — уж эта ФС однозначно "из коробки" в любом линуксе будет работать.

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org