Пт апр 23, 2021 14:29:42
Пт апр 23, 2021 15:20:45
Назначение BIOS:
проверка работоспособности оборудования;
загрузка операционной системы;
предоставление API для работы с оборудованием;
настройка оборудования.
После включения IBM PC-совместимого компьютера процессор, реализующий микроархитектуру x86, читает код BIOS из ПЗУ (с микросхемы EEPROM), записывает его в ОЗУ (оперативную память) и передаёт управление коду BIOS.
Затем код BIOS
выполняет тестирование оборудования компьютера (см. POST, англ. power-on self-test);
читает настройки из энергонезависимого ПЗУ;
применяет настройки;
ищет и загружает в оперативную память код загрузчика;
передаёт управление загрузчику.
Таким образом BIOS обеспечивает начальную загрузку IBM PC-совместимого компьютера.
В дальнейшем загрузчик ищет и загружает в память код операционной системы и передаёт ему управление.
BIOS реализует API для работы с внутренними и внешними устройствами компьютера. Загрузчик ОС и сама ОС используют это API для работы с оборудованием до тех пор, пока не загрузят собственные драйверы.
Тем самым - что придумал и собрал - то и будет работать
Пт апр 23, 2021 21:07:01
Пт апр 23, 2021 22:03:43
Только в том виде, который я себе представляю
Пт апр 23, 2021 22:13:42
Сб апр 24, 2021 06:16:27
Сб апр 24, 2021 10:05:00
Только в том виде, который я себе представляю
Сб апр 24, 2021 11:34:49
Сб апр 24, 2021 16:41:35
Вс апр 25, 2021 01:52:59
Вс апр 25, 2021 08:07:55
Вс апр 25, 2021 11:43:57
Вс апр 25, 2021 12:03:05
Так что снова придется самому разбираться
uchar ispWriteFlash(unsigned long address, uchar data, uchar pollmode) {
/* 0xFF is value after chip erase, so skip programming
if (data == 0xFF) {
return 0;
}
*/
ispUpdateExtended(address);
ispTransmit(0x40 | ((address & 1) << 3));
ispTransmit(address >> 9);
ispTransmit(address >> 1);
ispTransmit(data);
if (pollmode == 0)
return 0;
if (data == 0x7F) {
clockWait(15); /* wait 4,8 ms */
return 0;
} else {
/* polling flash */
uchar retries = 30;
uint8_t starttime = TIMERVALUE;
while (retries != 0) {
if (ispReadFlash(address) != 0x7F) {
return 0;
};
if ((uint8_t) (TIMERVALUE - starttime) > CLOCK_T_320us) {
starttime = TIMERVALUE;
retries--;
}
}
return 1; /* error */
}
}
Вс апр 25, 2021 18:57:52
Вс апр 25, 2021 19:23:14
самоделка интересна именно в плане самоделки, а не полного плагиата
Насчёт ассемблера "не Вашего стиля"
Пн апр 26, 2021 10:15:26
oleg110592 писал(а):повторюсь исходников затерянных в постах не вижу, если там в ассеблере инклуд *.txt - то не надо.
...
Пн апр 26, 2021 11:02:42
а прямое отрицание права
По сути - при побайтовом протоколе у АТ89S с межбайтовыми/межпакетными интервалами особо проблем нету, а вот при постраничном придется
Насчет "изобретательства велосипедов"...Прожка сейчас делается под адуринку (под Си)
Пн апр 26, 2021 15:55:22
oleg110592 писал(а):....
Это домыслы называется. .... Потом конечно можно выдать за свое, как видели в обсуждении DDS - три раза скопипастить код и это уже мое, а по сути тоже самое.
Пн апр 26, 2021 16:38:57
Algorithm for Page write mode:
1. Power on the circuit.
2. Send the instruction for programming enable.
3. Check the 4th byte on MISO pin. If we receive 0x69 this means chip is enabled.
4. If the serial programming mode is enabled then send the chip erase instruction.
5. Send first byte to enable page write mode followed by the address of the page.
6. After the address bytes the 256 data bytes of data is sent on the MOSI pin.
7. Keep repeating step 6 till all the pages you want to write are written.
Вт апр 27, 2021 09:54:29