Так же она должна измерять
Так же она должна измерять скорость вращения привода, чтобы во-первых, определить постоянство временных замеров (пляшут ли они как пьяные человечки или нет), а во-вторых скорректировать формулу для вычисления угла, ведь как легко показать, чем быстрее вращается диск, тем скорее "уплывает" сектор.
Исходный текст "измеряющей" программы приведен ниже:
//-[чтение сектора с диска]---------------------------------------------------
// ARG:
// CD указатель на строку с именем провода (например, "TEAC"),
// адрес на ASPI-шине (например, "1.1") или имя диска("\\.\G:");
// первые два варианта работают через ASPI, последний через SPTI;
//
// buf указатель на буфер SECROR_SIZE*2
//
// sector номер сектора в LBA-формате
//
// RETURN:
// 0 успешно
// -1 ошибка
read_from_cd(char *CD, unsigned char *buf, long sector)
{
int stat;
stat=cd_raw_sector_read(CD, buf, SECTOR_SIZE, sector, ONE_SECTOR, W_USER_DATA);
if (stat == SCSI_OK) return 0; return -1;
}
//-[чтение TSC-счетчика]------------------------------------------------------
unsigned int A()
{
__asm{
_emit 0xF ; RDTSC
_emit 0x31
}
}
#define argCD v[1]
// КОНФИГУРАЦИЯ
//----------------------------------------------------------------------------
// номер первой точки измерения (LBA-адрес)
// данная утилита измеряет топологию только по одной точке,
// что не есть хорошо, т.к. легко подобрать похожий диск
// для уверенности следует выбрать несколько точек:
// в начале, середине и конце диска
#define _CFG_BGN_SEC_ 17699
// кол-во секторов для измерения
// должно быть не меньше утроенного кол-ва секторов на виток в данной
// точке измерения (см. _CFG_BGN_SEC_ )
// число витков спирали N с поперечной плотностью D витков/мм
// от радиуса R1 до радиуса R2 определяется формулой: N = (R2- R1) * D
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий