INDICE DE RECURSOS PARA CREAR OS:
BIOS (Basic Input Output System):
Se debe destacar que si bien cada equipo tiene una BIOS, cada vez que le acoplamos por ejemplo una tarjeta de video, una controladora SCSI, un chip adiciona eprom.... estos son tambi?n parte del BIOS y cada uno tiene un ?rea en la memoria (estas ?reas de memoria en EPROM o ROM se pueden mover a RAM en lo que se conoce como SHADOW RAM que es m?s r?pida y realojable).
El proceso de arranque de un ordenador lo describen en:
http://www.comptechdoc.org/hardware/pc/pcboot.html- AREA DE DATOS BIOS (BDA: Bios Data Area):
Es un ?rea de la BIOS donde podemos encontrar una gran cantidad de informaci?n sobre el equipo, basta con que observeis las descripciones para darse cuenta de la utilidad que tiene.
Se debe tener en cuenta que muchas interrupciones
INTXX leen y escriben datos en ella :
http://heim.ifi.uio.no/~stanisls/helppc/bi..._data_area.html- AREA DE DATOS BIOS EXTENDIDA (EDBA):
http://www.kryslix.com/nsfaq/Q.6.htmlA las ?reas de memoria BIOS podemos acceder con instrucciones de lectura-escritura desde un ensamblador, o instrucciones de un compilador como en TurboPascal puertocom1 := mem [$40:0]
ya que 40:00 word que es la direcci?n de memoria que alberga el valor del puerto COM1.
Podemos acceder al equipo mediante interrupciones que son m?s sencillas o mediante el uso de puertos directamente (instrucciones de ensamblador in / out ) o de TurboPascal dato:=port[numero de puerto]
Ejmplos:
http://www.geocities.com/SiliconValley/Par...s/pasl2011.htmlhttp://www.doc.ic.ac.uk/~ih/doc/par/doc/data/tp.htmlMuchos compiladores os permiten llamar a interrupciones (
bios interrupt call) dentro de su c?digo estandar o bien mediante c?digo ensamblador embebido (por ejemplo en TurboPascal, C, C++........).
De modo m?s directo se emplea en los ensambladores en los cuales su uso es habitual (NASM, FASM...)
Este tipo de interrupciones es de tipo software y suelen ser estandares en ordenadores compatibles, y por citar algunas la int 33h que gestiona el mouse o la int 16h del teclado, 13h de disco, 10h de video, 1Ah reloj, 14 comunicaciones, otras como la int 15h suelen depender del fabricante del equipo.
Cabe decir que en torno a las BIOS han surgido una serie de estandares que han ido evolucionando a trav?s de versiones llegando a fundirse en nuevas especificaciones, algunas de ellas son:
BIOS BOOT SPECIFICATION:
http://www.phoenix.com/NR/rdonlyres/56E38D...specsbbs101.pdfVer tambi?n
http://members.tripod.com/~Vitaly_Filatov/...asm_001.12.html relativa a la int 19h bootstrap loader service.
STANDARD BIOS 32:
http://www.phoenix.com/NR/rdonlyres/ECF22C...ecsbios32sd.pdfSYSTEM MANAGEMENT BIOS:
http://www.phoenix.com/NR/rdonlyres/51EEA1...specssmbios.pdfhttp://www.dmtf.org/standards/smbios/ENHANCED DISK DRIVE SPECIFICATION:
http://www.phoenix.com/NR/rdonlyres/19FEBD.../specsedd30.pdfPlug and Play BIOS Specification:
http://www.osdever.net/documents/PNPBIOSSp...0apdf?the_id=51DMI:
http://www-pc.uni-regensburg.de/ hardware/TECHDOK/BIOS_DMI_20.PDF
EMBEDDED BIOS USER MANUAL:
http://www.embeddedarm.com/Manuals/EBIOS-UM.PDFMuy relacionada con la BIOS tenemos la CMOS que es un chip o circuito integrado de muy bajo consumo que nos permite mantener entre un arranque y otro valores como la hora, la fecha, tipo de disco duro instaldo......Para ello se env?a al puerto 70h el registro indice que nos interesa y a continuaci?n leemos o escribimos en el puerto 71h. Ante la duda cuidado si no se sabe lo que se est? haciendo y en cualquier caso es mejor practicar en un principio solamente con la lectura, para ver que uso tiene cada registro vienen bien los siguientes enlaces.
Si buscais un poco mejor en internet probablemente encontrareis algo m?s de informaci?n sobre todo en el aspecto de que cada fabricante le puede haber a?adido alguna funcionalidad.
http://www.gilanet.com/ohlandl/config/cmos..._registers.htmlhttp://www.plasma-online.de/textual/downlo..._registers.htmlhttp://bochs.sourceforge.net/doc/docbook/d...t/cmos-map.htmlhttp://www.codepedia.com/1/CMOS_Chttp://www.bioscentral.com/misc/cmosmap.htmLISTADO DE PUERTOS DE UN EQUIPO (no confundir con puertos de red)
http://heim.ifi.uio.no/~stanisls/helppc/ports.htmlBUSES:
ISA:
PCI (Peripheral Component Interconnect)
PCI Configuration Address Register: 0CF8h puerto entrada/salida de 32 bits.
PCI Configuration Data Register: 0CFCh puerto de entrada salida de 8 16 y 32 bits
- salvo error u omisi?n.........claro.
De todos modos aqu? teneis un interesante documento donde explica bastante bien todo esto:
http://www2.dis.ulpgc.es/~itis-byp/NotasDe...nfiguracion.docUna forma mas c?moda de acceder es mediante el estandar BIOS 32 citado anteriormente:
http://www.phoenix.com/NR/rdonlyres/ECF22C...ecsbios32sd.pdf?Accediendo a PCI desde modo protegido?
http://www.osdev.org/osfaq2/index.php/I heard you can do PCI calls with the BIOS in Protected Mode%3F
C?digo relacionado con PCI del sistema operativo RDOS:
http://www.koders.com/assembler/fidE1B4D38...CCD2BD9E14.aspxTambi?n podeis acceder a la web de Craig Hart que es uno de los pocos sitios aceptables que se han mantenido con informaci?n de este tipo a lo largo de bastante tiempo, ofrece programas y lo que es m?s importante podeis estudiar su c?digo fuente:
http://members.datafast.net.au/dft0802/Mediante interrupciones:
http://www.ctyme.com/intr/int-1a.htm- PCI Express:
Historia:
http://zone.ni.com/devzone/cda/tut/p/id/3767 CONTROLADOR DE INTERRUPCIONES:
http://atc.ugr.es/docencia/udigital/1204.htmlMEMORIA:
SPD (Serial Presence Detect) de la memoria:
http://www.simmtester.com/page/news/showpu...ews.asp?num=101http://www.jedec.org/download/search/4_01_02_00R9.PDFhttp://www.intel.com/design/chipsets/memor...ry/spdsd12a.pdfhttp://www.st.com/stonline/products/ promlit/pdf/brserind0406.pdf
Relacionado hasta cierto punto con memoria podriamos considerar EDID:
http://en.wikipedia.org/wiki/EDIDPor si se les ha olvidado poner una forma de leer esta informaci?n de EDID:
http://www.ctyme.com/intr/rb-0307.htmhttp://www.ctyme.com/intr/rb-0308.htmY de paso VDIF:
http://www.ctyme.com/intr/rb-0309.htm(Gracias Ralf por la dedicaci?n en reunir tanta documentaci?n sobre interrupciones).
Del m?todo para leer dicha informaci?n SPD pues NPI solo decir que puede ser a trav?s del bus I2C / SMBUS sobre los cuales no tengo esperiencia, y que al igual que los sensores de temperatura, de rpm de ventiladores y similares est?n muy determinados por cada tipo de placa base.
PUERTOS:
SERIE:
Pines:
http://www.connectworld.net/rs232.htmlPARALELO :
Registros de estado,control, datos:
http://heim.ifi.uio.no/~stanisls/helppc/pa...allel_port.htmlhttp://www.beyondlogic.org/spp/parallel.htmhttp://www.epanorama.net/circuits/parallel_output.htmlhttp://www.hackcanada.com/blackcrawl/elctr...rnic/tomlpt.txthttp://www.geocities.com/nozomsite/parallel.htmhttp://www.ctv.es/pckits/tutorial.htmlhttp://www.osdever.net/documents/ PNP-Parellel-v1.0b.pdf?the_id=55
IEEE1284
- Pines:
http://www.connectworld.net/ieee1284.htmlCentronics:
http://www.connectworld.net/centronics.htmlUSB:
http://www.usb.org/developers/docs/http://www.lvr.com/usbcenum.htmhttp://www.delcom-eng.com/downloads/USBIODS.pdfhttp://www.computer-engineering.org/index....title=USB_NotesUSB ID:
http://www.linux-usb.org/usb.idsPines:
http://www.connectworld.net/usb.htmlPERIFERICOS:
TECLADO:
http://www.computer-engineering.org/ps2keyboard/http://www.beyondlogic.org/keyboard/keybrd.htmhttp://www.idlebox.net/2006/apidocs/HelpPC...ip/hw-8042.htmlhttp://www.computer-engineering.org/index....yboard_Protocolhttp://www.computer-engineering.org/index....board_Interface(En HelpPC podeis encontrar informaci?n sobre como enviar y recibir informaci?n del teclado, adem?s tambi?n os recuerdo que en el ?rea de datos de la BIOS citada anteriormente m?s arriba tambi?n se puede interactuar con el mismo, podeis encontrar por ejemplo que visualizando la secci?n correspondiente "desde el DOS" se encuentra el buffer del teclado, ese que cuando se dejaba una tecla apretada mucho rato pitaba tanto......si se llenaba).
Un peque?o programilla t?pico es el que altera los leds del teclado
Una especificaci?n de teclado:
http://www.electronic-engineering.ch/micro...ts/kbd_spec.pdfhttp://www.electronic-engineering.ch/micro...yboard_V3xx.pdfRATON:
http://www.computer-engineering.org/ps2mouse/CONTROLADOR DE DISQUETES NEC 765:
http://atc.ugr.es/docencia/udigital/1206.htmlhttp://lamagra.digibel.be/projects/ftape/d...ocs/floppy.htmlhttp://www.ousob.com/ng/hardware/ngd127.phphttp://www.ukcpu.net/index.aspIDE/ATAPI/ DISCOS
http://home.arcor.de/wzwz.de/wiki/interrupt/i13_en.htmEL TORITO BOOTABLE CD-ROM FORMAT SPECIFICATION 1.0
http://www.phoenix.com/NR/rdonlyres/98D321.../specscdrom.pdfTECHNICAL COMMITEE T13 AT ATTACHMENT:
http://t13.org/Standards/Default.aspx?DocumentType=3SATA:
http://www.sata-io.org/SCSI:
http://www.t10.org/Pines:
http://www.connectworld.net/scsi.htmlFIBRE CHANNEL:
http://www.t11.org/index.htmlInformaci?n sobre sectores de arranque, particiones, .........
http://thestarman.pcministry.com/asm/mbr/M...R_in_detail.htmREDES:
NETBIOS:
http://www.ctyme.com/intr/rb-6395.htm(ni idea de si puede llegar a funcionar con alguna tarjeta moderna)
Sensores:
http://www.lm-sensors.org/wiki/HardwareHackingBueno lo dicho de nuevo relacionados con el tema del I2C y SMBUS........
MISCELANEA:
ENERGY STAR:
http://www.eu-energystar.org/es/es_000.htmEspero que os sea de utilidad, creo que en definitiva ahorrar? tiempo a la hora de buscar documentaci?n que ya es algo.
De todo esto apenas logro entender unas pocas cosas, lo cual os puede indicar la magnitud de tratar de implementar un sistema operativo, solos ante el hardware........
Como vereis muchas veces se encuentra documentaci?n detallada sobre algunos temas pero la gran pregunta ?como acceder a tal o cual dispositivo.......) muchas veces algo tan simple como tener m?s de 40 hojas de contenido y ni siquiera poder saber a que puerto llamar para obtener esa informaci?n o un ejemplo "simple" de como hacer lo m?s m?nimo. Sin ir m?s lejos es como querer obtener el n?mero de serie de un disco duro y no saber a que puerto indicarselo, que por cierto es una t?pica pregunta en internet y la m?s de las veces le responden con el n?mero se serie del volumen l?gico :greenface: cuando con unos simples ejemplos se podr?a explicar hasta como obtener su revisi?n de firmware, fabricante....... considero que hay mucha desinformaci?n interesada, pero ?nimo se trata de aprender y aunque no lo parezca hay mucha gente en peque?os proyectos que ya ha recorrido los primeros pasos.
TO BE CONTINUED........