пишу прогу для проверки памяти...

Тема в разделе "WASM.OS.DEVEL", создана пользователем abcd008, 10 ноя 2010.

  1. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    Есть исходники memtest, но в С я не бум-бум.
    Если кто разбирал эту прогу, то напишите алгоритм ее работы.
    желательно не свое мнение, а что-то похожее на то как работает memtest.
    буду очень благодарен.

    особенно интересует нюанс с памятью выделенной под bios и устройства.
    я так понял ее эта прога не тестит.
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    ну так пиши7 или назови тему, "прошу написать за меня. или разжевать мне до такого состояния, когда я смогу чего то написать, при условии что я в С не бум-бум"

    PS а в чем вы бум бум?
     
  3. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    530
    Адрес:
    Russia
    abcd008
    с таким подходом, только такой вариант:
    натравиливаешь IDA на то, что реализует необходимый тебе функционал и разбираешься, как это работает


    Отредактировано Jupiter (Сегодня 88:88:88)
     
  4. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    BIOS не запустится, если будет повреждён.
    А каждое устройтво имеет свою нюнансы работы со своей памятью.
    Поэтому это тестить в утилите для проверки ОЗУ не надо.

    А проверять память легко:
    Надо записать некое значение в каждый байт памяти и затем прочитать - если прочиталось не то, что записано значит в этом месте память неисправна.
    При этом надо пропустить код самой программы, которая проверяет.
     
  5. dtt

    dtt New Member

    Публикаций:
    0
    Регистрация:
    9 окт 2010
    Сообщения:
    26
    плюс учитывать кэш процессора
     
  6. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    >>пишу прогу для проверки памяти...
    увидев название темы, не глянув на подфорум подумал по началу про человеческую память )))) млять , аж прет)
     
  7. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    Записал потом считал. Если нужно восстановить состояние оси, то выгрузка на диск всей памяти. Логично да.. после изучения мсдн возвращайтесь с вопросами.
     
  8. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    спасибо за ответы,
    но некоторые могут только хайть и боятся признаться что сами полный 0. Умный промолчит, а еще умнее подскажет.

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

    но есть еще вопросы.
    как убедиться что память самой программы не испорчена?

    я думаю сделать контрольный crc код в программе.
    и сначало проверить какой-то адрес(куда перенести себя) а потом загрузить туда копию себя и передать управление.
    а дальше тестить всю память по блокам. в несколько приемов для точности. сохраняя контекст памяти в уже проверенный блок.
     
  9. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Вранье.
    Почти правда.
    При использовании 2 не нужно. Да почему бы и память PCI не проверить.

    Не в два, а как минимум в 3. На сайте wasm.ru обсуждалось.
     
  10. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    память надо тестить вне ОС, которая умеет работать в PM - то есть либо DOS, либо свой собственный загрузчик. После загрузки надо проверить CRC своей программы, чтобы убедится, что память с ней работает нормально Затем надо запросить у BIOS карту памяти. Чекить все области, которые отмечены как доступные прикладной программе и расположенные выше 1 Мб (можно и ниже, но тут важно пропустить таблицу прерываний, область данных BIOS и код самой программы). Причём память восстанавливать не обязательно (на работе DOS изменение памяти выше 1 МБ не отразится, если не используются "драйверы верхней памяти", но их быть не должно иначе мы не получим нормального доступа к ОЗУ).
    Память PCI служит для управления устройствами. Если туда писать что попало, то устройствам это не понравится. К тому же не всегда может прочитаться то, что записано, и притом это будет абсолютно нормально для некоторых устройств (при записи и чтении одного и того же участка памяти происходят обращения к разным регистрам устройства, один из которых read only, другой - write only). Поэтому туда лучше не соваться.
     
  11. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Вы путаете память PCI устройств и MMIO (регистры отображенные в память компьютера).
     
  12. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    он не путает.
    вся память выделенная устройству, перекрывается устройством будь оно mmio или обычная.
    так что если даже оперативная память по этим адресам испорчена, на устройстве это не скажется, так как у него своя память.

    >При использовании 2 не нужно.
    в спецификации про e820 написано что она описывает только интегрированные устройства.
    а те что отдельно вставлены и можно(нужно) искать самому. (так же как и устройства pnp)
    >Почти правда.
    почему?
    >Не в два, а как минимум в 3. На сайте wasm.ru обсуждалось.
    почему. именно здесь на форуме я и прочитал что два раза. но для уверенности можно еще сколько хочешь.
     
  13. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    >память надо тестить вне ОС, которая умеет работать в PM - то есть либо DOS, либо свой собственный загрузчик. >После загрузки надо проверить CRC своей программы, чтобы убедится, что память с ней работает нормально Затем >надо запросить у BIOS карту памяти. Чекить все области, которые отмечены как доступные прикладной программе и >расположенные выше 1 Мб (можно и ниже, но тут важно пропустить таблицу прерываний, область данных BIOS и код >самой программы). Причём память восстанавливать не обязательно (на работе DOS изменение памяти выше 1 МБ не >отразится, если не используются "драйверы верхней памяти", но их быть не должно иначе мы не получим нормального >доступа к ОЗУ).
    про crc я это и имел ввиду.
    а прогу я пишу для dos и память надо сохранять, потому что некоторые могут работать в нереальном режиме
    и можно повредить данные.
    соглашусь только с проверкой 1Мб