èªä½ã®Cè¨èªããã°ã©ã ããï¼BIOSè¨å®(CMOS)ãèªã¿æ¸ãããæ¹æ³ãï¼ã®èª¿æ»ãã°ï¼
èªä½ã®ããã°ã©ã ããï¼BIOSã®è¨å®ãå¤æ´ããäºã¯å¯è½ãªã®ãã
ä¾ãã°ãã¼ãããã¤ã¹è¨å®ããã¼ãã·ã¼ã±ã³ã¹ã®è¨å®ã¯ï¼
ãµã¤ãã¯PCèµ·åæã®ãBIOSè¨å®ç»é¢ãããæåã§å¤æ´ããããã ãï¼
ãããã®é
ç®ãï¼èªä½ããã°ã©ã ããæ¸ãæããäºã¯ã§ããã®ãã
- ï¼ï¼ï¼BIOSãCMOSãªã©é¢é£ãã¼ã¯ã¼ãã«ã¤ãã¦
- ï¼ï¼ï¼èªä½ããã°ã©ã ããBIOS/CMOSã«ã¢ã¯ã»ã¹ããæ¹æ³
- ï¼ï¼ï¼å ·ä½çãªãµã³ãã«ã³ã¼ãã¨å®ç¾æ¹é
- ï¼ï¼ï¼çµè«
ï¼ï¼ï¼BIOSãCMOSãªã©é¢é£ãã¼ã¯ã¼ãã«ã¤ãã¦ç°¡åã«ãããã
PCã®èµ·åã®æµãï¼
- ã¦ã¼ã¶ã¯PCã®é»æºãå ¥ããã
- PCã®ãã¶ã¼ãã¼ãã«éé»ãããããã§ï¼ãã¶ã¼ãã¼ãä¸ã«ã¯ï¼CPUï¼ROMã¾ãRAMãè¨ç½®ããã¦ããã
- ROMå
ã«ã¯ï¼BIOSã®ããã°ã©ã ãå
¥ã£ã¦ããã
- ROMã¨ã¯ããï¼ãã©ãã·ã¥ã¡ã¢ãªãªã®ã§ï¼æ¸ãæãå¯è½ã§ãããããã®æ¸ãæãã¯ï¼BIOSã¢ãããã¼ããæå³ããã
- RAMå
ã«ã¯ï¼BIOSã®è¨å®å
容ãè¨æ¶ããã¦ãããããã¯å
èµé»æ± ã«ãã£ã¦è¨æ¶ããã£ã¦ããã
- ãã®RAMãCMOS RAMã§ãããç¥ãã¦åã«CMOSã¨ãå¼ã¶ãBIOSã®è¨å®ãä¿ç®¡ããã¦ããï¼éè¦ãªå ´æã
- ROMå
ã«ã¯ï¼BIOSã®ããã°ã©ã ãå
¥ã£ã¦ããã
- ãã¶ã¼ãã¼ãä¸ã®CPUãåä½ãå§ããã
- CPUã¯ï¼BIOSããã°ã©ã ãæ¢ç´¢ãã¦å®è¡ããã
- åè¿°ã®éãï¼BIOSããã°ã©ã ã¯å®ã¡ã¢ãªä¸ã§ã¯ãªãï¼BIOSç¨ã®ROMä¸ã«åå¨ããããã®é åã¯ä»®æ³ã¡ã¢ãªã¨ãã¦èªèããã¦ããï¼ã¡ã¢ãªé åå ¨ä½ã®æ«å°¾ã«ãããã³ã°ããã¦ããããã®ããï¼CPUãBIOSãæ¢ç´¢ããéã«ã¯ï¼ã¡ã¢ãªã®æ«å°¾ã«ã¸ã£ã³ãããä¸ã§å½ä»¤ãèªã¿è¾¼ãã§ããã
- BIOSã¯ï¼å種ããã¤ã¹ãèµ·åããã
- BIOSã¯ï¼å種ããã¤ã¹ã®ä¸ããï¼ãã¼ãããã¤ã¹ï¼ãã¼ããã©ã¤ãï¼ãæ¢ç´¢ã»æ±ºå®ããã
- BIOSã¯ï¼ãã¼ããã©ã¤ãã®å é ã»ã¯ã¿ï¼ï¼MBRï¼ããï¼ãã¼ããã¼ããèªã¿åãï¼ã¡ã¢ãªä¸ã«ãã¼ããã¦å®è¡ããã
- ãã¼ããã¼ãã¯ï¼OSï¼ã®ã«ã¼ãã«ï¼ãèªã¿åãï¼ã¡ã¢ãªä¸ã«ãã¼ããã¦å®è¡ããã
ãã¼ã ã¹ãã©ãã - ã³ã³ãã¥ã¼ã¿ã®èµ·åæé ï¼CPUã®åä½ããã¼ãé ã追ã£ã¦ç®æ¡æ¸ãã«ãªã£ã¦ããï¼é常ã«è©³ããï¼
http://park12.wakwak.com/~eslab/pcmem...
- CPU ãèµ·åç´å¾ã«æåã«åç §ããã¡ã¢ãªä½ç½® (0xFFFF0) ããªã»ãããã¯ã¿ã¨ãã
- ã¡ã¢ãªã® 0xE0000 ã 0xFFFFF ã®ç¯å²ã«ã¯ãROM ã«è¨é²ãããã³ã¼ã (ã·ã¹ãã BIOS) ããããããã¦ãããããã®ãã CPU ãã¢ãã¬ã¹ ãã¹ã«åºåãã 0xFFFF0 ã®å¤ã¯ããããã»ãã (ãã¼ã¹ããªãã¸) ã®ã¢ãã¬ã¹ ãã³ã¼ãã«ãããã·ã¹ãã BIOS (ROM) å´ã¸ã®ã¢ã¯ã»ã¹ã«åãæ¿ãããã (åè·¯ãéããã)ã
- ã¢ãã¬ã¹ 0xFFFF0 ã®ä½ç½®ã«ã¯ã·ã¹ãã BIOSå é ã¢ãã¬ã¹ã¸ã®ã¸ã£ã³ãå½ä»¤ããããã·ã¹ãã BIOS ã¯ãã®å é ããé 次 CPU ã¸èªã¿è¾¼ã¾ãã¦å¦çãããã
redhat ãã¼ãããã»ã¹ã®è©³ç´°
http://docs.redhat.com/docs/ja-JP/Red...
- BIOS (Basic Input/Output System) ã¯ããã¼ãããã»ã¹ã®ç¬¬ 1 ã¹ããããå¶å¾¡ããã ãã§ãªããå¨è¾ºæ©å¨ããã¤ã¹ã«æä½ã¬ãã«ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãæä¾ãããã¡ã¼ã ã¦ã§ã¢ã¤ã³ã¿ã¼ãã§ã¼ã¹ã§ãã
- BIOS ãè£ åãã x86 ã·ã¹ãã ã§ã¯ãããã°ã©ã ã¯èªã¿åãå°ç¨ã®åºå®ã¡ã¢ãªã¼ã«æ¸ãè¾¼ã¾ããããã常ã«ä½¿ç¨ã§ãã¾ãã
- ã·ã¹ãã ã®ãã¼ãæã«ãããã»ããµã¯ã·ã¹ãã ã¡ã¢ãªã¼ã®æå¾ã§ BIOS ããã°ã©ã ãæ¢ãã¦ãå®è¡ãã¾ãã
BIOSã®åºæ¬ã¨ãã¬ã³ã
http://www.dosv.jp/other/0805/index.htm
- BIOSããã°ã©ã ã¯ãã©ãã·ã¥ã¡ã¢ãªã«æ¸ãè¾¼ã¾ãã¦ããããæ¸ãæããå¯è½ã§ãBIOSããã°ã©ã ãæ°ããæ¸ãæãããã¨ããBIOSã¢ãããã¼ããã¨è¨ã
ãã©ãã·ã¥ã¡ã¢ãª
http://ja.wikipedia.org/wiki/%E3%83%9...
- æ¸ãæãå¯è½ãä¸è¬ã«ã¯ROMã«åé¡ãããããROMã§ãRAMã§ããªãåå¨ã¨ãã¦å¥ã«åé¡ããã¦ããå ´åããã
ãã¶ã¼ãã¼ãã®CMOSã¯ãªã¢ã¨ã¯
http://arigato.web.infoseek.co.jp/pcj...
- ãã¶ã¼ãã¼ãä¸ã®CMOS RAMï¼Complementary Metal Oxide Semiconductor Random Access Memoryï¼ã«ã¯ãBIOSã®è¨å®ç»é¢ã«ããã¦è¨å®ããæ å ±ãä¿åããã¦ãã¾ã
- CMOSã¯ãªã¢ï¼CMOSã¯ããã¼ãããã¨èªã¿ã¾ãï¼ã¨ã¯ããã®CMOS RAMã«ä¿åããã¦ããæ å ±ãæ¶å»ããæä½ã®ãã¨
ããããããã§ï¼
- BIOSã®è¨å®ãèªã¿æ¸ãããããã«ã¯ï¼CMOSã®ä¸èº«ãèªã¿æ¸ãã§ããã°ããã
ã¨ãããã¨ã«ãªãã
ããã¦ï¼ãã®CMOSã¨ããã®ãåå¨ããé åã¯å®ã¡ã¢ãªé åã§ã¯ãªãï¼
ãã¶ã¼ãã¼ãä¸ã«åå¨ããRAMãªã®ã§ããã
ã¤ã¾ãCè¨èªãªã©ã®ããã°ã©ãã³ã°ã§è¨ãã¨ï¼
æ®éã®ãã¡ã¤ã«èªã¿æ¸ããã¡ã¢ãªæä½ã®APIã§ã¯ã¨ã¦ãæãå±ããªãå ´æã«ããã
ã©ããã£ã¦ã¢ã¯ã»ã¹ãããããã®ãï¼
ï¼ï¼ï¼èªä½ããã°ã©ã ããBIOS/CMOSã«ã¢ã¯ã»ã¹ããæ¹æ³
ããªã詳ããæè¡è³æãã
CMOS Memory Map
http://www-ivs.cs.uni-magdeburg.de/~z...
å
¨è¨³ã¯ããã©ãã®ã§ï¼ããã¤ã¾ãã§æ¶åããã
Originally, the IBM PC/AT only made use of a small portion of CMOS memory
and was defined in the IBM PC/AT Technical Reference Manual, specifically
bytes 10h, 12h, 14h-18h, 2Eh-33h. The balance was left undefined but was
quickly appropriated by various BIOS manufacturers for such user-selectable
options such as wait states, clock speeds, initial boot drive selection, and
password storage.
ç¾å¨ï¼PCã®ã¢ã¼ããã¯ãã£ã®ä¸çæ¨æºã¯ï¼IBMã®ãPC/ATäºææ©ãã§ãããï¼Macãé¤ãï¼
ãããã£ã¦ï¼BIOSå¨ãã®ä½ãè¾¼ã¿ã«ã¤ãã¦ç¥ãããå ´åï¼ãã®è¦æ ¼ã«ã¤ãã¦èª¿æ»ããã°ããã
PC/ATäºææ©ã®CMOSã¡ã¢ãªã®ä»æ§ã¯ï¼ãã¨ãã¨å°ããä»æ§ã ã£ãã®ã ãï¼
æ代ãçµããã¡ã«IBMã®ã³ã³ããã¼ã«ä¸ã«çã¾ããªããªã£ã¦ãã¦ï¼
ä»ã§ã¯ã¯ããã¯ã¹ãã¼ãããã¼ããã©ã¤ãæ å ±ãªã©ã®æ§ã ãªæ å ±ãæ ¼ç´ããããã«ãªã£ãã
PC/ATäºææ©
http://ja.wikipedia.org/wiki/PC/AT%E4...
CMOSã®å
·ä½çãªã¢ãã¬ã¹ä»æ§ãæ²è¼ããã¦ããã
Accessing the CMOS
The CMOS memory exists outside of the normal address space and cannot
contain directly executable code. It is reachable through IN and OUT
commands at port number 70h (112d) and 71h (113d). To read a CMOS byte,
an OUT to port 70h is executed with the address of the byte to be read and
an IN from port 71h will then retrieve the requested information. The
following BASIC fragment will read 128 CMOS bytes and print them to the
screen in 8 rows of 16 values.1Dh - (Zenith Z-200 monitor) Boot Drive Selection
Bits 6-5 (0xx0 0000)
00 - MFM Monitor
01 - First floppy drive (A:)
10 - First fixed disk (C:)
11 - First floppy drive (A:). If not there then First fixed disk (C:)
(this is the default).
ã»ã»ã»
CMOS/BIOSã¯ï¼CMOSã¡ã¢ãªã¨ç§°ãããããã©ãï¼é常ã®ã¡ã¢ãªç©ºéã«ã¯å±ããªãã
CPUã®70çªã»71çªã®ãã¼ããä»ãã¦ã¢ã¯ã»ã¹ããã
ããã§ï¼CPUã«ãã¼ããããã¨ããã®ã¯è³æ £ããªããããããªãã
ã¡ããã©TCP/IPä¸ã®éä¿¡ã«ããããã¼ãçªå·ã¨åãããã«ï¼
CPUã«ãå ¥åºåã®ããã®ãã¼ããè¤æ°åå¨ãï¼å種ããã¤ã¹ã¨æ å ±ãããåãããã®ã§ããã
PCå é¨ã§ã®ãããã£ãéä¿¡ãªããæ å ±ä¼éã®äºãï¼ãã¼ãããããI/Oã¨å¼ã¶ã
I/Oãã¼ã
http://e-words.jp/w/I2FOE3839DE383BCE...
- ã³ã³ãã¥ã¼ã¿å é¨ã§ãCPUãå¨è¾ºæ©å¨ã«ãã¼ã¿ãéåä¿¡ããããã«ä½¿ãçªå£ããå ¥åºåãã¼ããã¨ã
ã¡ã¢ãªããããI/O
http://ja.wikipedia.org/wiki/%E3%83%A...
- ãã¼ãããããI/Oã§ã¯ãå ¥åºåç¨ã®ç¹å¥ãªCPUå½ä»¤ã使ç¨ãããä¾ãã°ãã¤ã³ãã«ã®x86ã«ã¯å ¥åºåå°ç¨ã® IN å½ä»¤ã¨ OUT å½ä»¤ããããå ¥åºåæ©å¨ã®1ã¤ã®ãã¤ãã®èªã¿æ¸ããè¡ããå ¥åºåæ©å¨ã¯ä¸»è¨æ¶è£ ç½®ã¨ã¯åé¢ããã¢ãã¬ã¹ç©ºé
I/O空é
http://ja.wikipedia.org/wiki/%E5%85%A...
- Z80ãIntelx86ãªã©ã®CPUãPCIãã¹ãªã©ã§ã¯ãã¡ã¤ã³ã¡ã¢ãªã¨ã¯å¥ã®ã¢ãã¬ã¹ç©ºéã¨ãã¦I/O空éããããããªãã§ã©ã«ã®ã¬ã¸ã¹ã¿ãæ¥ç¶ããããã«ç¨æããã¦ããã x86ã§ã¯I/O空éã¯ã¡ã¢ãªç©ºéããçããã¢ã¯ã»ã¹ã§ããå½ä»¤ãéå®ããã¦ããã I/O空éã®ã¢ãã¬ã¹ã¯I/Oã¢ãã¬ã¹ãI/Oãã¼ãã¢ãã¬ã¹ã¨å¼ã°ããã
ï¼ï¼ï¼å ·ä½çãªãµã³ãã«ã³ã¼ãã¨å®ç¾æ¹é
ä¸è¨ã®è³æã«ã¯ï¼CMOSè¨å®ã¸ã®ã¢ã¯ã»ã¹ãå®ç¾ããããã®BASICã®ãµã³ãã«ã³ã¼ãã¾ã§ä¸å¯§ã«æ²è¼ããã¦ããã
10 CLS 20 FOR i = 0 TO &H7F 30 OUT &H70, i 40 PRINT USING "\ \"; HEX$(INP(&H71)); 50 NEXT i 60 PRINT " "
ãã®ã³ã¼ããä¸ä½ã©ãããç°å¢ã§åä½ãããã ï¼ã¨ããçªã£è¾¼ã¿ã¯ç½®ãã¨ãã¦ï¼
- 70çªã71çªã®ã¬ã¸ã¹ã¿ã¸ã®å ¥åºåããã¦ãã
- æ©æ¢°èªã®ã¬ãã«ã§å²ãè¾¼ã¿å½ä»¤ï¼INT, INP, interruptï¼ãåºãã¦ãã
ã¨ããã¤ã¡ã¼ã¸ã¯ã¨ããããæ´ããã ããã
ãªãï¼é常ã®Windows/Win32APIçµç±ã§ã¯ç¡çã
OSèµ·åå¾ã«ï¼CPUãä¿è·ã¢ã¼ãã«å
¥ãããã
ROM BIOS Call in VC++ 6.0
http://www.programmersheaven.com/mb/C...I am asking is about ROM BIOS Calls in VC++ 6.0 Envirment
Windows does not support direct access like that. You must use standard Win32 API function calls.
It's not Microsoft's fault that you can't do it. The reason is that the hardware CPU and computer is booted into protected mode when Windows starts.
Change BIOS settings using the C language
http://stackoverflow.com/questions/17...
in general how do I contact the BIOS settings?You can access the BIOS settings via I/O port 70h and 71h. (Some chipsets also have an extended CMOS at 72/73 or similar.)
If you are running Windows, you won't be able to do port I/O directly from an application, you'll have to write a kernel mode driver. Under Linux, you can use /dev/nvram to get at the CMOS settings.Maybe your motherboard vendor can provide you with a CMOS map.
Try dumping the CMOS settings with various memory sizes and figure out which bits change.Once you change the setting, it won't take effect to the next reboot
Accessing BIOS using C language
http://www.programmersheaven.com/mb/C...
to access BIOS, you might want to use interrupts, e.g. int 21h and int 10h,.
Change Bios Using C/C++?
http://thedailyreviewer.com/dotnet/vi...
Is it possible to change BIOS using a C/C++ programm? For example I must
activate Hyperthreading in BIOS for all machine.With sufficient work (which would probably entail reverse-engineering parts
of the BIOS), I'm sure it could be done, but the solution would almost
certainly be hardware and BIOS specific. There's simply no standard for how
BIOS settings are stored or manipulated.I assume that
some of the bigger vendors (IBM, DELL etc) have created interfaces/BIOS API for
their own computer systems, so you might want to ask your vendor.
ã©ããã¦ãWindowsä¸ã§ä½ããããã°ï¼ã«ã¼ãã«ã¢ã¼ãã§åä½ãããããªããã¤ã¹ãã©ã¤ããä½æããå¿ è¦ãããã
ããã¾ã§æãåºããçè ãããã°ï¼ä¸è¨ã®ã¨ã³ããªãªã©ãåèã«ä½ã£ã¦ã¿ã¦é ãããã
ã¦ã£ã³ãã¦ããã£ããã« Windows ã®å é¨ã®ä»çµã¿ãæ¢ããï¼å¾åï¼ã·ã¹ãã ã³ã¼ã«ããã«ã¼ãã«ããã¤ã¹ãã©ã¤ãã¾ã§
http://language-and-engineering.hatenablog.jp/entry/20081111/1226413103
ãã®éï¼ã¢ã»ã³ãã©ã§BIOSã³ã¼ã«ããããã®å²ãè¾¼ã¿å½ä»¤ã®æ¸ãæ¹ãç¥ã£ã¦ããã°å½¹ã«ç«ã¤ã
BIOS interrupt call
http://en.wikipedia.org/wiki/BIOS_int...
mov ah, 0x0e
mov al, '!'
int 0x10
Hello Worldã³ã¬ã¯ã·ã§ã³
21 ã³ã³ãã¥ã¼ãã£ã³ã°ã®åºç¤ãå¦ã³ããæ¹ã¸ - BIOSã³ã¼ã«ã®ã¢ã»ã³ãã©ç·¨
http://journal.mycom.co.jp/column/hel...
DOSä¸ã®*.comå½¢å¼ã®å®è¡ãã¡ã¤ã«ã®ä¸ããBIOSã³ã¼ã«ãè¡ããããªã¢ã»ã³ãã©ããã°ã©ã ãä½æBIOSã³ã¼ã«ã®ããã®ã½ããã¦ã§ã¢å²ãè¾¼ã¿ã«ã¯ãè¤æ°ã®ç¨®é¡ãããã¾ãããç»é¢åºåé¢ä¿ã«ã¯ãint $0x10ãã使ãã¾ããalã¬ã¸ã¹ã¿ã«ã¯åºåæåããahã«ã¯BIOSã³ã¼ã«çªå·ãä»£å ¥ãã¾ã
Linuxã§ã³ã¼ãã£ã³ã°ããæ¹æ³ã調æ»ãã¦ãï¼çµå±ã¯ï¼ã«ã¼ãã«ã¢ã¸ã¥ã¼ã«ã®ä½ææ¹æ³ã«è¡ãçãã
Windowsã®å ´åã¨ãã¾ãäºæ ã¯å¤ãããªãã
The Linux Kernel Module Programming Guide
http://tldp.org/LDP/lkmpg/2.6/html/lk...
2.1. Hello, World (part 1): The Simplest Module
ã«ã¼ãã«ã¢ã¸ã¥ã¼ã«ããã°ã©ãã³ã°è¶ å ¥é #1(ä»®)
http://www.slideshare.net/tsukubalinu...
Linux ã§ã¢ã»ã³ããªããã°ã©ãã³ã°
http://www.mztn.org/lxasm/asm00.html
- linuxã§NASMã§ã¢ã»ã³ãã©
BIOSè¨å®ãå¤æ´ãããããªï¼ãµã¼ããã¼ãã£è£½ã®ã½ããã¦ã§ã¢ã確ãã«åå¨ããã
ã ãï¼è¨å®å¤æ´æä½ã¯åä½ä¿è¨¼å¤ã ã£ããããã
Dellã®ãµã¼ããã·ã³ã®BIOSè¨å®ãLinuxä¸ããè¡ãæ¹æ³
http://jfut.integ.jp/2009/11/12/dell-...Dellã®ãµã¼ããã·ã³ã«ç¨æããã¦ããBIOSã®è¨å®é ç®ãã¹ã¦ãè¨å®ã§ããã®ã ã¨æãã¾ãããã ããBIOSã®è¨å®ãå¤ãã activateCmosToken ã¨ããã³ãã³ã㯠Unsupported Binaries ã«åé¡ããã¦ãã¾ããå¾ã£ã¦ããã®è¨äºãèªãã§è¨å®ãããBIOSãå£ãã¦ãã·ã³ãèµ·åããªããªããã¨ãããããããã¾ããããããªã£ã¦ãèªåã§è²¬ä»»ã¨ããæ¹ä»¥å¤ã¯çµ¶å¯¾ã«è¡ããªãæ¹ãè¯ãã§ãããã
è¨å®ãè¡ãã®ã¯activateCmosToken ã³ãã³ãã使ãã¾ããåºæ¬æ§æã¯æ¬¡ã®ã¨ããã§ãã
# /usr/sbin/activateCmosToken 0x"Token Value"
ã«ã¼ãã«ã«æãåºãããï¼ããã¤ã¹ãã©ã¤ãã«æãåºãããããã®ã
ã©ãã»ã©æéãé£ãä½æ¥ã«ãªããã«ã¤ãã¦ã¯ï¼ç¥ã人ãç¥ãã
ãã«ã¼ã¹ã¯ãªã¼ã³ãæ¥å¸¸è¶é£¯äºã§ï¼OSåèµ·åä¸å¯ãããããä¸çï¼ã¨ã®äºã ã
å®ç¾ã³ã¹ãã¨ãªã¹ã¯ã大ããããã
ï¼ï¼ï¼çµè«
ããããããã§ï¼ãèªä½ããã°ã©ã ã«ããBIOSè¨å®ã®æ¸ãæãããå®ç¾ããããã«å¿ è¦ãªæè¡è¦ç´ ã¨ï¼ãã®ä»çµã¿ã»åä½åçã¯ããã£ãã
ã«ã¼ãã«ã¢ã¼ãã§ã®æä½ã«ãªãã®ã§ï¼ããã°ã©ã ä½æã«ã¯æ¥µãã¦å¤§ããªã³ã¹ãã¨ãªã¹ã¯ãä¼´ãï¼ã¨ããäºãã
ããã ãããã£ã¦ããã°ï¼ã½ããã¦ã§ã¢éçºè ã¨ãã¦ã¯ååã ããã
ä¸ãä¸ã«ãï¼ã½ããã¦ã§ã¢ã®æ©è½ä»æ§ã¨ãã¦ãBIOSæ¸ãæãããææ¡ãããæï¼å³çã§ä½ã¨çããã°ãããï¼ããã£ãäºã«ãªãã®ã ããã»ã»ã»ã
ã