summary refs log tree commit diff
path: root/F2024/coe718/labs/lab2/report
diff options
context:
space:
mode:
Diffstat (limited to 'F2024/coe718/labs/lab2/report')
-rwxr-xr-xF2024/coe718/labs/lab2/report/movs.pngbin0 -> 11239 bytes
-rw-r--r--F2024/coe718/labs/lab2/report/out.pdfbin0 -> 134172 bytes
-rwxr-xr-xF2024/coe718/labs/lab2/report/profiling.pngbin0 -> 9532 bytes
-rw-r--r--F2024/coe718/labs/lab2/report/report.md208
-rw-r--r--F2024/coe718/labs/lab2/report/ryeU_logo.pngbin0 -> 10628 bytes
-rwxr-xr-xF2024/coe718/labs/lab2/report/times.txt4
-rw-r--r--F2024/coe718/labs/lab2/report/title.aux8
-rw-r--r--F2024/coe718/labs/lab2/report/title.log399
-rw-r--r--F2024/coe718/labs/lab2/report/title.out0
-rw-r--r--F2024/coe718/labs/lab2/report/title.pdfbin0 -> 57128 bytes
-rw-r--r--F2024/coe718/labs/lab2/report/title.tex85
11 files changed, 704 insertions, 0 deletions
diff --git a/F2024/coe718/labs/lab2/report/movs.png b/F2024/coe718/labs/lab2/report/movs.png
new file mode 100755
index 0000000..ee5b99f
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/movs.png
Binary files differdiff --git a/F2024/coe718/labs/lab2/report/out.pdf b/F2024/coe718/labs/lab2/report/out.pdf
new file mode 100644
index 0000000..70a20bf
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/out.pdf
Binary files differdiff --git a/F2024/coe718/labs/lab2/report/profiling.png b/F2024/coe718/labs/lab2/report/profiling.png
new file mode 100755
index 0000000..4fd13b6
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/profiling.png
Binary files differdiff --git a/F2024/coe718/labs/lab2/report/report.md b/F2024/coe718/labs/lab2/report/report.md
new file mode 100644
index 0000000..0cbd9c4
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/report.md
@@ -0,0 +1,208 @@
+# Objective
+
+This lab project dives into embedded ARM programming by managing GPIO pins through various methods.
+Each method achieves the same effect,
+but with different performance characteristics.
+Further, unique ARM architecture optimizations such as conditional execution and barrel shifting are explored.
+
+# Implementation
+
+## Software
+
+Building on the first lab,
+Lab 2 requires exploring the compiled assembly of the project.
+To set up the debugging environment,
+several features were first enabled in the simulator:
+
+- _Execution Profiling > Show Times_: Used to measure CPU time for relevant sections of the code
+- _C/C++ > Optimization > (O0|O3)_: Toggles compiler optimizations.
+  Although -O0 is measurably slower,
+  it is useful for inspecting raw instructions coherently before the compiler mangles the output for performance.
+
+Once enabled,
+the debugger should provide output containing instructions alongside the corresponding c code,
+notice the instructions with their respective execution time:
+
+![Example of conditional execution through a jump table](./movs.png)
+
+## Hardware
+
+The project requires access to the GPIO pins of the board for LED access,
+the SysTick implementation for introducing necessary delay,
+as well as the LCD for debugging purposes.
+The user manual for the LPC17xx chip was heavily consulted,
+for gathering memory addresses useful for programming I/O,
+and configuring the SysTick timer to provide useful interrupts.
+
+# Assignment
+
+The program can be logically considered as a small state machine,
+that is configured to change state every 500ms.
+Each state represents one of the three methods of accessing GPIO pins,
+using its execution time to toggle an individual LED on GPIO ports 1 and 2.
+
+The `main()` function in this program is only used for chip configuration,
+only running a few lines of code before looping indefinitely.
+After initializing the LED ports,
+the _SysTick_ timer is configured using the internal clock,
+which will run its interrupt handler periodically.
+This handler callback function is delegated the actual logic of the program,
+which will run as the main thread is looping through no-ops.
+The `SysTick_Handler()` function is used to implement the state transitions:
+it is designed to run each millisecond,
+but will accumulate a configured value of _ticks_ before actually transitioning.
+
+Each method of addressing is handled within its own function.
+The decision to wrap the execution of each method within a function was made to present neat boundaries for measuring execution time of each method.
+An example run is shown:
+
+![Runtime profiling the state machine](./profiling.png)
+
+The compiler is usually able to optimize out any static calculations through static analysis,
+and each function will likely be inlined in _-O3 mode_,
+thus, this method provides consistent measurements of the relevant part of each function:
+writing bits to the specified addresses.
+
+# Results
+
+| Method               | Time (-O0) | Time (-O3) | % Improvement |
+| -------------------- | ---------- | ---------- | ------------- |
+| Masking              | 0.510us    | 0.120us    | 76.4%         |
+| `BitBand()` function | 0.180us    | 0.040us    | 77.8%         |
+| Direct Bit Banding   | 1.470us    | 0.250us    | 82.9%         |
+
+: Comparing performance of each method and optimization improvements
+
+Masking and direct bit banding offer measurably slower execution once results are normalized.
+Since they are writing to the GPIO interfaces first,
+the internal logic of the chip responsible for controlling GPIO is invoked,
+adding a runtime penalty.
+The function method bypasses this extraneous GPIO logic
+-- writing directly to the register --
+and thus offers the best performance.
+
+All methods receive a large,
+yet roughly similar improvement when compiled with optimizations,
+which is to be expected.
+
+# Appendix
+
+```
+/* bitband.c*/
+
+#include "LPC17xx.h"
+#include "GLCD.h"
+
+#include <stdio.h>
+
+//------- ITM Stimulus Port definitions for printf ------------------- //
+#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
+#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
+#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))
+
+#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
+#define TRCENA          0x01000000
+
+struct __FILE { int handle;  };
+FILE __stdout;
+FILE __stdin;
+
+int fputc(int ch, FILE *f) {
+  if (DEMCR & TRCENA) {
+    while (ITM_Port32(0) == 0);
+    ITM_Port8(0) = ch;
+  }
+  return(ch);
+}
+//------------------------------------------------------------------- //
+
+#define __USE_LCD 0	// Uncomment to use the LCD
+#define __FI      1 // Font index 16x24
+
+// Bit Band Macros used to calculate the alias address at run time
+#define ADDRESS(x)    (*((volatile unsigned long *)(x)))
+#define BitBand(x, y) 	ADDRESS(((unsigned long)(x) & 0xF0000000) | 0x02000000 |(((unsigned long)(x) & 0x000FFFFF) << 5) | ((y) << 2))
+
+#ifdef __USE_LCD
+static inline void method2lcd(unsigned char* msg) {
+  GLCD_DisplayString(6,  8, __FI,  msg);
+}
+#endif
+
+// Simple register masking
+static void method_mask(){
+	LPC_GPIO1->FIOPIN ^= (1 << 28);
+	LPC_GPIO2->FIOPIN ^= (1 << 2);
+}
+
+// Define pointer with bitband method
+static void method_function(){
+	volatile unsigned long* bit1 = &BitBand(&LPC_GPIO1->FIOPIN, 29);
+	volatile unsigned long* bit2 = &BitBand(&LPC_GPIO2->FIOPIN, 3);
+
+	static _Bool state = 1;
+
+	*bit1 = *bit2 = state;
+	state = !state;
+}
+
+// Raw bitbanding
+static void method_bitbanding() {
+	const size_t addr1 = 0x22000000 + (0x2009C034 * 32UL) + (31 * 4);
+	const size_t addr2 = 0x22000000 + (0x2009C054 * 32UL) + (4 * 4);
+
+	static _Bool state = 1;
+
+	ADDRESS(addr1) = ADDRESS(addr2) = state;
+	state = !state;
+}
+
+void SysTick_Handler(void) {
+    static size_t tick = 0;
+	static size_t state = 0;
+
+	if (tick++ < 500) { return; }
+	tick = 0;
+
+	// Uses MOVS instruction to implement jump table
+	if 			(state == 0) { method_mask(); state++; }
+	else if (state == 1) { method_function(); state++; }
+	else if (state == 2) { method_bitbanding(); state = 0; }
+
+	#ifdef __USE_LCD
+	if 			(state == 1) { method2lcd("MASK    "); }
+	else if (state == 2) { method2lcd("FUNCTION"); }
+	else if (state == 0) { method2lcd("BITBAND "); }
+	#endif
+}
+
+int main(void){
+	LPC_SC->PCONP     |= (1 << 15);            /* enable power to GPIO & IOCON  */
+    LPC_GPIO1->FIODIR |= 0xB0000000;           /* LEDs on PORT1 are output      */
+    LPC_GPIO2->FIODIR |= 0x0000007C;           /* LEDs on PORT2 are output			*/
+
+	// Configure SysTick with interrupt and internal clock source
+	ADDRESS(0xE000E010) = (1 << 0) | (1 << 1) | (1 << 2);
+
+	// Run handler every 1ms
+	ADDRESS(0xE000E014) = 99999;
+
+	#ifdef __USE_LCD
+    GLCD_Init();                               /* Initialize graphical LCD (if enabled */
+
+    GLCD_Clear(White);                         /* Clear graphical LCD display   */
+    GLCD_SetBackColor(Blue);
+    GLCD_SetTextColor(Yellow);
+    GLCD_DisplayString(0, 0, __FI, "     COE718 Lab 2    ");
+    GLCD_SetTextColor(White);
+    GLCD_DisplayString(1, 0, __FI, "       bitband.c     ");
+    GLCD_DisplayString(2, 0, __FI, "  Watch the LEDs!    ");
+    GLCD_SetBackColor(White);
+    GLCD_SetTextColor(Blue);
+    GLCD_DisplayString(6, 0, __FI, "Method:");
+	#endif
+
+	// Let SysTick callback run in background
+	while (1) {}
+}
+```
diff --git a/F2024/coe718/labs/lab2/report/ryeU_logo.png b/F2024/coe718/labs/lab2/report/ryeU_logo.png
new file mode 100644
index 0000000..f9a8187
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/ryeU_logo.png
Binary files differdiff --git a/F2024/coe718/labs/lab2/report/times.txt b/F2024/coe718/labs/lab2/report/times.txt
new file mode 100755
index 0000000..f4920a3
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/times.txt
@@ -0,0 +1,4 @@
+		-O0		-O3

+Masking:	0.510us		0.120us

+Function:	0.180us		0.040us

+Bitband:	1.470us		0.250us
\ No newline at end of file
diff --git a/F2024/coe718/labs/lab2/report/title.aux b/F2024/coe718/labs/lab2/report/title.aux
new file mode 100644
index 0000000..23c9134
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/title.aux
@@ -0,0 +1,8 @@
+\relax 
+\providecommand\babel@aux[2]{}
+\@nameuse{bbl@beforestart}
+\providecommand\hyper@newdestlabel[2]{}
+\providecommand\HyField@AuxAddToFields[1]{}
+\providecommand\HyField@AuxAddToCoFields[2]{}
+\babel@aux{english}{}
+\gdef \@abspage@last{1}
diff --git a/F2024/coe718/labs/lab2/report/title.log b/F2024/coe718/labs/lab2/report/title.log
new file mode 100644
index 0000000..0545480
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/title.log
@@ -0,0 +1,399 @@
+This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024/Arch Linux) (preloaded format=pdflatex 2024.9.19)  25 SEP 2024 09:29
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**title.tex
+(./title.tex
+LaTeX2e <2023-11-01> patch level 1
+L3 programming layer <2024-02-20>
+(/usr/share/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
+(/usr/share/texmf-dist/tex/latex/base/size12.clo
+File: size12.clo 2023/05/17 v1.4n Standard LaTeX file (size option)
+)
+\c@part=\count188
+\c@section=\count189
+\c@subsection=\count190
+\c@subsubsection=\count191
+\c@paragraph=\count192
+\c@subparagraph=\count193
+\c@figure=\count194
+\c@table=\count195
+\abovecaptionskip=\skip48
+\belowcaptionskip=\skip49
+\bibindent=\dimen140
+)
+(/usr/share/texmf-dist/tex/generic/babel/babel.sty
+Package: babel 2024/02/07 v24.2 The Babel package
+\babel@savecnt=\count196
+\U@D=\dimen141
+\l@unhyphenated=\language5
+
+(/usr/share/texmf-dist/tex/generic/babel/txtbabel.def)
+\bbl@readstream=\read2
+\bbl@dirlevel=\count197
+
+(/usr/share/texmf-dist/tex/generic/babel-english/english.ldf
+Language: english 2017/06/06 v3.3r English support from the babel system
+Package babel Info: Hyphen rules for 'british' set to \l@english
+(babel)             (\language0). Reported on input line 82.
+Package babel Info: Hyphen rules for 'UKenglish' set to \l@english
+(babel)             (\language0). Reported on input line 83.
+Package babel Info: Hyphen rules for 'canadian' set to \l@english
+(babel)             (\language0). Reported on input line 102.
+Package babel Info: Hyphen rules for 'australian' set to \l@english
+(babel)             (\language0). Reported on input line 105.
+Package babel Info: Hyphen rules for 'newzealand' set to \l@english
+(babel)             (\language0). Reported on input line 108.
+))
+(/usr/share/texmf-dist/tex/generic/babel/locale/en/babel-english.tex
+Package babel Info: Importing font and identification data for english
+(babel)             from babel-en.ini. Reported on input line 11.
+)
+(/usr/share/texmf-dist/tex/latex/geometry/geometry.sty
+Package: geometry 2020/01/02 v5.9 Page Geometry
+
+(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
+\KV@toks@=\toks17
+)
+(/usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty
+Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead.
+
+(/usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+Package: iftex 2022/02/03 v1.0f TeX engine tests
+))
+\Gm@cnth=\count198
+\Gm@cntv=\count199
+\c@Gm@tempcnt=\count266
+\Gm@bindingoffset=\dimen142
+\Gm@wd@mp=\dimen143
+\Gm@odd@mp=\dimen144
+\Gm@even@mp=\dimen145
+\Gm@layoutwidth=\dimen146
+\Gm@layoutheight=\dimen147
+\Gm@layouthoffset=\dimen148
+\Gm@layoutvoffset=\dimen149
+\Gm@dimlist=\toks18
+)
+(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 2021/08/11 v1.11 sin cos tan (DPC)
+)
+(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
+)
+Package graphics Info: Driver file: pdftex.def on input line 107.
+
+(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
+File: pdftex.def 2022/09/22 v1.2b Graphics/color driver for pdftex
+))
+\Gin@req@height=\dimen150
+\Gin@req@width=\dimen151
+)
+(/usr/share/texmf-dist/tex/latex/tools/tabularx.sty
+Package: tabularx 2023/07/08 v2.11c `tabularx' package (DPC)
+
+(/usr/share/texmf-dist/tex/latex/tools/array.sty
+Package: array 2023/10/16 v2.5g Tabular extension package (FMi)
+\col@sep=\dimen152
+\ar@mcellbox=\box51
+\extrarowheight=\dimen153
+\NC@list=\toks19
+\extratabsurround=\skip50
+\backup@length=\skip51
+\ar@cellbox=\box52
+)
+\TX@col@width=\dimen154
+\TX@old@table=\dimen155
+\TX@old@col=\dimen156
+\TX@target=\dimen157
+\TX@delta=\dimen158
+\TX@cols=\count267
+\TX@ftn=\toks20
+)
+(/usr/share/texmf-dist/tex/latex/multirow/multirow.sty
+Package: multirow 2021/03/15 v2.8 Span multiple rows of a table
+\multirow@colwidth=\skip52
+\multirow@cntb=\count268
+\multirow@dima=\skip53
+\bigstrutjot=\dimen159
+)
+(/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2024-01-20 v7.01h Hypertext links for LaTeX
+
+(/usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
+Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO)
+)
+(/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
+)
+(/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
+
+(/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+Package: ltxcmds 2023-12-04 v1.26 LaTeX kernel commands for general use (HO)
+)
+(/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO
+)
+
+(/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
+)
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode found.
+))
+(/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
+)
+(/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
+)
+(/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+Package: nameref 2023-11-26 v2.56 Cross-referencing by name of section
+
+(/usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
+)
+(/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
+
+(/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO)
+))
+\c@section@level=\count269
+)
+(/usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty
+Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW)
+\etb@tempcnta=\count270
+)
+\@linkdim=\dimen160
+\Hy@linkcounter=\count271
+\Hy@pagecounter=\count272
+
+(/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2024-01-20 v7.01h Hyperref: PDFDocEncoding definition (HO)
+Now handling font encoding PD1 ...
+... no UTF-8 mapping file for font encoding PD1
+)
+(/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
+)
+\Hy@SavedSpaceFactor=\count273
+
+(/usr/share/texmf-dist/tex/latex/hyperref/puenc.def
+File: puenc.def 2024-01-20 v7.01h Hyperref: PDF Unicode definition (HO)
+Now handling font encoding PU ...
+... no UTF-8 mapping file for font encoding PU
+)
+Package hyperref Info: Option `colorlinks' set `true' on input line 4062.
+Package hyperref Info: Hyper figures OFF on input line 4179.
+Package hyperref Info: Link nesting OFF on input line 4184.
+Package hyperref Info: Hyper index ON on input line 4187.
+Package hyperref Info: Plain pages OFF on input line 4194.
+Package hyperref Info: Backreferencing OFF on input line 4199.
+Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
+Package hyperref Info: Bookmarks ON on input line 4446.
+\c@Hy@tempcnt=\count274
+
+(/usr/share/texmf-dist/tex/latex/url/url.sty
+\Urlmuskip=\muskip16
+Package: url 2013/09/16  ver 3.4  Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 4784.
+\XeTeXLinkMargin=\dimen161
+
+(/usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
+
+(/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO
+)
+))
+\Fld@menulength=\count275
+\Field@Width=\dimen162
+\Fld@charsize=\dimen163
+Package hyperref Info: Hyper figures OFF on input line 6063.
+Package hyperref Info: Link nesting OFF on input line 6068.
+Package hyperref Info: Hyper index ON on input line 6071.
+Package hyperref Info: backreferencing OFF on input line 6078.
+Package hyperref Info: Link coloring ON on input line 6081.
+Package hyperref Info: Link coloring with OCG OFF on input line 6088.
+Package hyperref Info: PDF/A mode OFF on input line 6093.
+
+(/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi
+package with kernel methods
+)
+\Hy@abspage=\count276
+\c@Item=\count277
+\c@Hfootnote=\count278
+)
+Package hyperref Info: Driver (autodetected): hpdftex.
+
+(/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
+File: hpdftex.def 2024-01-20 v7.01h Hyperref driver for pdfTeX
+
+(/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend pac
+kage
+with kernel methods
+)
+\Fld@listcount=\count279
+\c@bookmark@seq@number=\count280
+
+(/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO)
+
+(/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
+)
+Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
+85.
+)
+\Hy@SectionHShift=\skip54
+)
+(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+File: l3backend-pdftex.def 2024-02-20 L3 backend support: PDF output (pdfTeX)
+\l__color_backend_stack_int=\count281
+\l__pdf_internal_box=\box53
+)
+No file title.aux.
+\openout1 = `title.aux'.
+
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 11.
+LaTeX Font Info:    ... okay on input line 11.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 11.
+LaTeX Font Info:    ... okay on input line 11.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 11.
+LaTeX Font Info:    ... okay on input line 11.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 11.
+LaTeX Font Info:    ... okay on input line 11.
+LaTeX Font Info:    Checking defaults for TS1/cmr/m/n on input line 11.
+LaTeX Font Info:    ... okay on input line 11.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 11.
+LaTeX Font Info:    ... okay on input line 11.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 11.
+LaTeX Font Info:    ... okay on input line 11.
+LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 11.
+LaTeX Font Info:    ... okay on input line 11.
+LaTeX Font Info:    Checking defaults for PU/pdf/m/n on input line 11.
+LaTeX Font Info:    ... okay on input line 11.
+*geometry* driver: auto-detecting
+*geometry* detected driver: pdftex
+*geometry* verbose mode - [ preamble ] result:
+* driver: pdftex
+* paper: a4paper
+* layout: <same size as paper>
+* layoutoffset:(h,v)=(0.0pt,0.0pt)
+* modes: 
+* h-part:(L,W,R)=(90.3375pt, 416.83289pt, 90.3375pt)
+* v-part:(T,H,B)=(72.26999pt, 700.50687pt, 72.26999pt)
+* \paperwidth=597.50787pt
+* \paperheight=845.04684pt
+* \textwidth=416.83289pt
+* \textheight=700.50687pt
+* \oddsidemargin=18.0675pt
+* \evensidemargin=18.0675pt
+* \topmargin=-37.0pt
+* \headheight=12.0pt
+* \headsep=25.0pt
+* \topskip=12.0pt
+* \footskip=30.0pt
+* \marginparwidth=35.0pt
+* \marginparsep=10.0pt
+* \columnsep=10.0pt
+* \skip\footins=10.8pt plus 4.0pt minus 2.0pt
+* \hoffset=0.0pt
+* \voffset=0.0pt
+* \mag=1000
+* \@twocolumnfalse
+* \@twosidefalse
+* \@mparswitchfalse
+* \@reversemarginfalse
+* (1in=72.27pt=25.4mm, 1cm=28.453pt)
+
+(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
+[Loading MPS to PDF converter (version 2006.09.02).]
+\scratchcounter=\count282
+\scratchdimen=\dimen164
+\scratchbox=\box54
+\nofMPsegments=\count283
+\nofMParguments=\count284
+\everyMPshowfont=\toks21
+\MPscratchCnt=\count285
+\MPscratchDim=\dimen165
+\MPnumerator=\count286
+\makeMPintoPDFobject=\count287
+\everyMPtoPDFconversion=\toks22
+) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
+Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
+Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
+85.
+
+(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
+File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
+e
+))
+(/usr/share/texmf-dist/tex/latex/graphics/color.sty
+Package: color 2022/01/06 v1.3d Standard LaTeX Color (DPC)
+
+(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
+File: color.cfg 2016/01/02 v1.6 sample color configuration
+)
+Package color Info: Driver file: pdftex.def on input line 149.
+
+(/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx))
+Package hyperref Info: Link coloring ON on input line 11.
+\@outlinefile=\write3
+\openout3 = `title.out'.
+
+<ryeU_logo.png, id=4, 375.4025pt x 203.76125pt>
+File: ryeU_logo.png Graphic file (type png)
+<use ryeU_logo.png>
+Package pdftex.def Info: ryeU_logo.png  used on input line 14.
+(pdftex.def)             Requested size: 166.7306pt x 90.49779pt.
+ [1
+
+{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} <./ryeU_logo.png>] (./title
+.aux)
+ ***********
+LaTeX2e <2023-11-01> patch level 1
+L3 programming layer <2024-02-20>
+ ***********
+
+
+Package rerunfilecheck Warning: File `title.out' has changed.
+(rerunfilecheck)                Rerun to get outlines right
+(rerunfilecheck)                or use package `bookmark'.
+
+Package rerunfilecheck Info: Checksums for `title.out':
+(rerunfilecheck)             Before: <no file>
+(rerunfilecheck)             After:  D41D8CD98F00B204E9800998ECF8427E;0.
+ ) 
+Here is how much of TeX's memory you used:
+ 10079 strings out of 476076
+ 158622 string characters out of 5793775
+ 1939187 words of memory out of 5000000
+ 32085 multiletter control sequences out of 15000+600000
+ 561935 words of font info for 49 fonts, out of 8000000 for 9000
+ 14 hyphenation exceptions out of 8191
+ 75i,9n,79p,592b,464s stack positions out of 10000i,1000n,20000p,200000b,200000s
+</usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/
+texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texmf-dist/font
+s/type1/public/amsfonts/cm/cmti12.pfb></usr/share/texmf-dist/fonts/type1/public
+/amsfonts/cm/cmtt12.pfb>
+Output written on title.pdf (1 page, 57128 bytes).
+PDF statistics:
+ 37 PDF objects out of 1000 (max. 8388607)
+ 23 compressed objects within 1 object stream
+ 2 named destinations out of 1000 (max. 500000)
+ 6 words of extra memory for PDF output out of 10000 (max. 10000000)
+
diff --git a/F2024/coe718/labs/lab2/report/title.out b/F2024/coe718/labs/lab2/report/title.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/title.out
diff --git a/F2024/coe718/labs/lab2/report/title.pdf b/F2024/coe718/labs/lab2/report/title.pdf
new file mode 100644
index 0000000..fa1f274
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/title.pdf
Binary files differdiff --git a/F2024/coe718/labs/lab2/report/title.tex b/F2024/coe718/labs/lab2/report/title.tex
new file mode 100644
index 0000000..d2f83f4
--- /dev/null
+++ b/F2024/coe718/labs/lab2/report/title.tex
@@ -0,0 +1,85 @@
+\documentclass[a4paper, 12pt]{article}
+\usepackage[english]{babel}
+\usepackage[top=1in, bottom=1in, left=1.25in, right=1.25in]{geometry}
+\usepackage{graphicx}
+\usepackage{tabularx, array}
+\usepackage{multirow}
+\usepackage[colorlinks=true, urlcolor=blue]{hyperref}
+
+\renewcommand{\arraystretch}{1.5}
+
+\begin{document}
+\begin{titlepage}
+\begin{center}
+\includegraphics[width=0.4\textwidth]{ryeU_logo.png} \\
+Faculty of Engineering, Architecture and Science
+
+\vspace{0.5cm}
+
+\textbf{Department of Electrical and Computer Engineering}
+
+\vspace{0.5cm}
+
+\begin{tabularx}{0.8\textwidth} {
+ | >{\centering\arraybackslash}X
+ | >{\centering\arraybackslash}X |}
+\hline
+Course Number & COE 718\\
+\hline
+Course Title  & Embedded Systems Design\\
+\hline
+Semester/Year & F2024\\
+\hline
+Instructor    & Dr. Gul Khan\\
+\hline
+\end{tabularx}
+
+\vspace{0.5cm}
+
+\begin{tabularx}{\textwidth} {
+ | >{\centering\arraybackslash}X
+ | >{\centering\arraybackslash}X |}
+\hline
+\textbf{\Large ASSIGNMENT No.} & Lab 2\\
+\hline
+Assignment Title  & Exploring ARM Cortex M3 Features \\
+\hline
+\end{tabularx}
+
+\vspace{0.5cm}
+
+\begin{tabularx}{\textwidth} {
+ | >{\centering\arraybackslash}X
+ | >{\centering\arraybackslash}X |}
+\hline
+Submission Date & Tuesday, September 25\\
+\hline
+Due Date  & Wednesday, September 25\\
+\hline
+\end{tabularx}
+
+\vspace{0.5cm}
+
+\begin{tabularx}{\textwidth} {
+ | >{\centering\arraybackslash}X
+ | >{\centering\arraybackslash}X |}
+\hline
+Student Name & Kleidi Bujari\\
+\hline
+Student ID  & 501040047\\
+\hline
+\rule{0pt}{4em}
+  \raisebox{1.5em}{Signature*}  & \raisebox{1.5em}{ \it{Kleidi Bujari} }\\
+\hline
+\end{tabularx}
+
+\vspace{0.5cm}
+
+\begin{minipage}{\textwidth}
+*By signing above you attest that you have contributed to this written lab report and confirm that all work you have contributed to this lab report is your own work. Any suspicion of copying or plagiarism in this work will result in an investigation of Academic Misconduct and may result in a “0” on the work, an “F” in the course, or possibly more severe penalties, as well as a Disciplinary Notice on your academic record under the Student Code of Academic Conduct, which can be found online at: \url{www.ryerson.ca/senate/current/pol60.pdf}.
+\end{minipage}
+\end{center}
+\end{titlepage}
+\end{document}
+
+Collapse