?

Log in

No account? Create an account
 

worklog: немного злит

About Уничтожить всех уродов

Previous Entry worklog: немного злит 3 апр, 2015 @ 06:30 Next Entry
Копаясь в тыщах строк магического кода, должного реализовать USB Mass Storage класс, пытаюсь не впасть в уныние от его мутной сложности. Нагромождение функций, которые что-то делают. Что, зачем, почему так - х.з.

В общем, решил идти "снизу вверх" - не пришивать готовый пример, отказывающийся работать... лучшее, чем добился: дивайс распознаётся виндой, она видит ДВА накопителя (не два тома на одном контроллере, а как бы два отдельных контроллера), оба нулевого объёма и при попытке считать их параметры контроллер виснет в неизвестной точке - поймать её не удаётся ни отладчиком, ни вываливанием в консоль каких-либо диагностических сообщений (ибо непонятно, куда их надо вписать в этой лапше).

Попутно наталкиваюсь на интересные конструкции типа
(uint32_t)((uint32_t)~(RegisterContent))
Либо писал конченый параноик, ещё более параноидальный, чем я... либо кто-то, страдающий жесточайшей амнезией. Или одновременно.

Так вот, я решил сделать так: изучить этот грёбаный USB-модуль, чтобы иметь представление о том, как им управлять. Я не люблю "чёрные ящики", которые что-то делают...

Поэтому сижу и пишу, пишу, читаю, пишу снова. Там немного регистров, но нагромождение логики (аппаратной - под ними - и программной сверху) осознать очень нелегко - всё-таки я не програмер.
Оставить комментарий
[User Picture Icon]
From:simsun
Date:Апрель, 3, 2015 04:55 (UTC)
(Link)
я мало видел кода если чё, но может это труд какого нибудь автоматического транслятора?
[User Picture Icon]
From:kincajou
Date:Апрель, 3, 2015 05:03 (UTC)
(Link)
скорее, бездумного переписывания туда-обратно
выкинул всё это нахрен
[User Picture Icon]
From:simsun
Date:Апрель, 3, 2015 05:08 (UTC)
(Link)
хотел тут что то накидать с PIC на AVR, но прикинул, что можно из cmd автозаменой обойтись :) где уж тут думать
[User Picture Icon]
From:kincajou
Date:Апрель, 3, 2015 05:08 (UTC)
(Link)
Ещё меня радуют заранее заданные массивы каких-то констант, без малейшей попытки объяснить - зачем они такие, почему такие, как изменить (если возможно). Причём выглядит, например, вот так (немного утрирую, но близко к тексту):
uint8_t ArrayOfShit[4] =
{
  0x00, 0x00, 0x00, 0x01
};


ну да, я могу поискать в коде, какие функции сие используют. Но нахрена ЭТО вываливать как глобальную переменную (даже не константу, хотя вроде нигде не меняем), например?

Edited at 2015-04-03 05:09 (UTC)
[User Picture Icon]
From:simsun
Date:Апрель, 3, 2015 06:59 (UTC)
(Link)
[User Picture Icon]
From:mbr
Date:Апрель, 3, 2015 05:35 (UTC)
(Link)
Поздравляю с более близким знакомством с расовым индусским кодом.

Вот ссылки на реализацию USB device OTG в STM32F105/F2/F4 на регистрах

https://github.com/alexeyk13/rexos/blob/master/drv/stm32/stm32_usb.c

И L0

https://github.com/alexeyk13/rexos/blob/master/drv/stm32/stm32_usbl.c

Последнее должно быть более близко к F103
(Оставить комментарий)
Top of Page Разработано LiveJournal.com