Page 4 of 6

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 16:09
by deathsoft
breeze wrote:возможно, но может это будет какое-то универсальное число?

Да это может быть хоть 1,2,3 главное чтобы драйвер мог понять какая именно версия структуры юзается в софте и включить режим совместимости со старыми версиями (если конечно такой функционал нужен).

Если такой функционал не нужен, то надо детально продумать что в структуре держать, ну и еще несколько резервных полей сделать на прозапас.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 16:09
by breeze
Кроме того, вот опять, смотри я хочу прочитать файл из каталога, в котором 1000 файлов, мой файл по счёту 999й, для того что бы найти мой файл, системе надо куда-то прочитать каталог (частями?) и найти дескриптор моего файла. Отсюда вопрос, сколько же для Struct должно быть выделено места, что бы это было не сильно грамозко и не сильно тормознуто, из-за малого размера ?

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 16:10
by DimkaM
Нужно определится со списком переменных в дескрипторе.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 16:12
by breeze
deathsoft wrote:Вынимать ничего не хочу, но вот вышла новая прошивка, и формат структуры поменялся...


а вот тут уже я начинаю плыть, я так понял, что struct это буфер, который процедура из ROM использует для своих нужд, как-то временные переменные, буфер для чтения итд. Ты же говоришь, что через struct мы передаём какие-то данные для процедуры, внимание вопрос!? что же всё-таки лежить в struct ?

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 16:19
by breeze
что бы хоть от чего-то оттолкнуться, в struct вижу следующие данные:

+#00 53 54 52 - сигнатура STR, что бы система знала, что к ней пришол реально блок данных, а не случайный мусор
+#03 01 00 - два байта версия структуры (0001)
+#05 XX XX - собственно размер данных struct(?)
+#07 00 01 - ID устройства (0001 - floppy, 0002 - hdd (nemo ide), 0003 - cdrom(nemo ide), 0004 - SD (Z), 0005 - SD (NGS), 0006 - hdd (SMUC), 0007 - cdrom(SMUC) итд
+#09 00 - подкласс устройства (например для для floppy это будет 00 - A, 01-B, для HDD/CD 00 - master, 01 - slave, для SD всегда - 00
+#0A 00 C0 - адрес под буфер для чтения
+#0C 01 00 - размер буфера
+#0E ??

какую страницу памяти использовать для буфера? я думаю программа должна сама всё подготовить, процедура из ROM (как мы и условились) ничего не дёргает и никакие банки не переключает!

что ещё должно быть в структуре Struct ?

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 16:40
by DimkaM
что ещё должно быть в структуре
Struct ?

описатель раздела
и номер драйвера каким юзать данный носитель

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 16:44
by DimkaM
1байт номер драйвера
4байта первый сектор с данными
4байта первый сектор с таблицей кластеров
2байта(по моему) секторов в класт
ре
это минимум для фат32

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 16:48
by breeze
DimkaM wrote:номер драйвера каким юзать данный носитель


не не не девид блейн! не не не! программе абсолютно побоку какая там фс, драйвер итд, для этого мы процедуры и пишем. система сама знает какой ей нужен драйвер устройства и драйвер фс, для программы же её вызвавший - всё должно быть прозрачно!

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 16:49
by breeze
DimkaM wrote:это минимум для фат32


ну это уже данные, которые собственно и могут храниться в временном буфере, который мы выделим.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 16:50
by DimkaM
4байта ноМер первого кластера с теКущИм каталогом