From a08ba0b85e826713ba5564ce8fc1ac75cc461ce6 Mon Sep 17 00:00:00 2001 From: acheronfail Date: Tue, 16 Oct 2018 00:06:43 +1000 Subject: [PATCH] add screenshots and gif of hardware timer --- .../posts/08-hardware-interrupts/index.md | 8 ++++---- .../qemu-hardware-timer-dots.gif | Bin 0 -> 10563 bytes .../qemu-hardware-timer-double-fault.png | Bin 0 -> 5906 bytes .../qemu-single-dot-printed.png | Bin 0 -> 3014 bytes src/main.rs | 1 - 5 files changed, 4 insertions(+), 5 deletions(-) create mode 100644 blog/content/second-edition/posts/08-hardware-interrupts/qemu-hardware-timer-dots.gif create mode 100644 blog/content/second-edition/posts/08-hardware-interrupts/qemu-hardware-timer-double-fault.png create mode 100644 blog/content/second-edition/posts/08-hardware-interrupts/qemu-single-dot-printed.png diff --git a/blog/content/second-edition/posts/08-hardware-interrupts/index.md b/blog/content/second-edition/posts/08-hardware-interrupts/index.md index 690079086..08d4f1a7a 100644 --- a/blog/content/second-edition/posts/08-hardware-interrupts/index.md +++ b/blog/content/second-edition/posts/08-hardware-interrupts/index.md @@ -102,7 +102,7 @@ pub mod interrupts; // in src/interrupts.rs -use pic8259::ChainedPics; +use pic8259_simple::ChainedPics; use spin; pub const PIC_1_OFFSET: u8 = 32; @@ -165,7 +165,7 @@ pub extern "C" fn _start() -> ! { The `interrupts::enable` function of the `x86_64` crate executes the special `sti` instruction (“set interrupts”) to enable external interrupts. When we try `bootimage run` now, we see that a double fault occurs: -TODO screenshot +![QEMU printing `EXCEPTION: DOUBLE FAULT` because of hardware timer](qemu-hardware-timer-double-fault.png) The reason for this double fault is that the hardware timer (the [Intel 8253] to be exact) is enabled by default, so we start receiving timer interrupts as soon as we enable interrupts. Since we didn't define a handler function for it yet, our double fault handler is invoked. @@ -208,7 +208,7 @@ We introduce a `TIMER_INTERRUPT_ID` constant to keep things organized. Our `time In our timer interrupt handler, we print a dot to the screen. As the timer interrupt happens periodically, we would expect to see a dot appearing on each timer tick. However, when we run it we see that only a single dot is printed: -TODO screenshot +![QEMU printing only a single dot for hardware timer](qemu-single-dot-printed.png) ### End of Interrupt @@ -233,7 +233,7 @@ We need to be careful to use the correct interrupt vector number, otherwise we c When we now execute `bootimage run` we see dots periodically appearing on the screen: -TODO screenshot gif +![QEMU printing consequtive dots showing the hardware timer](qemu-hardware-timer-dots.gif) ### Configuring The Timer diff --git a/blog/content/second-edition/posts/08-hardware-interrupts/qemu-hardware-timer-dots.gif b/blog/content/second-edition/posts/08-hardware-interrupts/qemu-hardware-timer-dots.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ea34202ac9bc0b1408fe6c147ce527610529e3e GIT binary patch literal 10563 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 Q6to7>(H?kxt3l`g0Z=0h(*OVf literal 0 HcmV?d00001 diff --git a/blog/content/second-edition/posts/08-hardware-interrupts/qemu-hardware-timer-double-fault.png b/blog/content/second-edition/posts/08-hardware-interrupts/qemu-hardware-timer-double-fault.png new file mode 100644 index 0000000000000000000000000000000000000000..7d02b13ad15e0be4bac18f680a4d26f57819c290 GIT binary patch literal 5906 zcmeHLS5#A5x88sh0Rd5pK)@qSDMEx$rKku7r1vgz=v4>?2@ntw=?0{UKp=`Bz1Kjb z2r4ZSX%dP^haffd+<3P9K@eeC_@qEKgkyK2Twpx2>8eZCfvO{kq`mY}+Q!?<;Pl%0FKS zr&riPAdoZwxY*Fxs6-}w6weF&S=A$yryA@(AIFubjd`?#*BR^|tZ=A#+*z2&vK=3| zz1{CxGw%IC20%a4#^BxM(+v#`sm|epcMNatjm6D>%_y_0Te;*l3aWcF{4vU~Uq*@v z0z?Qxviqa|F^Jb_zf7M{@Yd($v=R%@6M``#n}CrjpjqeC6G_LIbaSideQt>7c#VRe z$9-wjYk;N(_0O+od)_azYWm`H5kMQh?q7)Gl6=o+dM=0t*fDhW^pt>}5dbvv?y!+f zfrvIwg>24H8X!!Z8kj%(C;BC{nO2hNGRTvr_T3Ji+#7*?VD|oj(-}rM^6>efy1eR- zkdNir?cb`ZzYW;8sQ><0lAhb{vRE#u0W_TwIS+i*zmVh+6F^rSk&`-tEew(yZr$Sx$9v^ro> z5)nZc{F)_vv9(N2PVsns8oBU%kcx={U!tWivKuiKw227c_&J(KUbqv(CXHRoA0H

BR7;)zQ2spY{+W?8Y$iL@_=-9-1Pb-7kaO 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 CfoG}! literal 0 HcmV?d00001 diff --git a/blog/content/second-edition/posts/08-hardware-interrupts/qemu-single-dot-printed.png b/blog/content/second-edition/posts/08-hardware-interrupts/qemu-single-dot-printed.png new file mode 100644 index 0000000000000000000000000000000000000000..cfdc06cc9812fc6138920a04487bc163111392c0 GIT binary patch literal 3014 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 literal 0 HcmV?d00001 diff --git a/src/main.rs b/src/main.rs index 5dd9e622f..f2b5756e5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,7 +21,6 @@ pub extern "C" fn _start() -> ! { blog_os::gdt::init(); init_idt(); - unsafe { PICS.lock().initialize() }; x86_64::instructions::interrupts::enable();