diff --git a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/client.elf b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/client.elf new file mode 100755 index 0000000..9fa1017 Binary files /dev/null and b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/client.elf differ diff --git a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/client.o b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/client.o new file mode 100644 index 0000000..1f053e9 Binary files /dev/null and b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/client.o differ diff --git a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/loader.img b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/loader.img index ba63c95..6673e94 100644 Binary files a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/loader.img and b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/loader.img differ diff --git a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/report.txt b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/report.txt index ab895d7..d4fa767 100644 --- a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/report.txt +++ b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/report.txt @@ -7,57 +7,82 @@ # Loader Regions - - + + + + # Monitor (Initial Task) Info virtual memory : MemoryRegion(base=0x8a000000, end=0x8a008000) - physical memory: MemoryRegion(base=0x6024e000, end=0x60256000) + physical memory: MemoryRegion(base=0x60256000, end=0x6025e000) # Allocated Kernel Objects Summary - # of allocated objects: 23 + # of allocated objects: 46 # Bootstrap Kernel Invocations Summary # of invocations : 9 - size of invocations: 576 + size of invocations: 616 # System Kernel Invocations Summary - # of invocations : 48 - size of invocations: 3,232 + # of invocations : 84 + size of invocations: 5,944 # Allocated Kernel Objects Detail - Page(4 KiB): IPC Buffer PD=serial_server 9 cap_addr=8000000000000002 phys_addr=60002000 - Page(4 KiB): MR=STACK:serial_server #0 9 cap_addr=8000000000000003 phys_addr=60003000 - Page(4 KiB): MR=uart @ 9000000 9 cap_addr=8000000000000004 phys_addr=9000000 - Page(4 KiB): MR=ELF:serial_server-0 @ 60247000 9 cap_addr=8000000000000005 phys_addr=60247000 - Page(4 KiB): MR=ELF:serial_server-0 @ 60248000 9 cap_addr=8000000000000006 phys_addr=60248000 - Page(4 KiB): MR=ELF:serial_server-0 @ 60249000 9 cap_addr=8000000000000007 phys_addr=60249000 - Page(4 KiB): MR=ELF:serial_server-0 @ 6024a000 9 cap_addr=8000000000000008 phys_addr=6024a000 - Page(4 KiB): MR=ELF:serial_server-0 @ 6024b000 9 cap_addr=8000000000000009 phys_addr=6024b000 - Page(4 KiB): MR=ELF:serial_server-0 @ 6024c000 9 cap_addr=800000000000000a phys_addr=6024c000 - Page(4 KiB): MR=ELF:serial_server-1 @ 6024d000 9 cap_addr=800000000000000b phys_addr=6024d000 - TCB: PD=serial_server 1 cap_addr=800000000000000c phys_addr=60004000 - SchedContext: PD=serial_server 5 cap_addr=800000000000000d phys_addr=60006000 - Reply: Monitor 6 cap_addr=800000000000000e phys_addr=60008000 - Reply: PD=serial_server 6 cap_addr=800000000000000f phys_addr=60008020 - EP: Monitor Fault 2 cap_addr=8000000000000010 phys_addr=60008040 - Notification: PD=serial_server 3 cap_addr=8000000000000011 phys_addr=60008080 - VSpace: PD=serial_server 8 cap_addr=8000000000000012 phys_addr=6000a000 - PageTable: PD=serial_server VADDR=0x0 11 cap_addr=8000000000000013 phys_addr=6000c000 - PageTable: PD=serial_server VADDR=0xffc0000000 11 cap_addr=8000000000000014 phys_addr=6000d000 - PageTable: PD=serial_server VADDR=0x200000 11 cap_addr=8000000000000015 phys_addr=60258000 - PageTable: PD=serial_server VADDR=0x2000000 11 cap_addr=8000000000000016 phys_addr=60259000 - PageTable: PD=serial_server VADDR=0xffffe00000 11 cap_addr=8000000000000017 phys_addr=6025a000 - CNode: PD=serial_server 4 cap_addr=8000000000000018 phys_addr=6025c000 + Page(4 KiB): IPC Buffer PD=serial_server 9 cap_addr=8000000000000003 phys_addr=60003000 + Page(4 KiB): IPC Buffer PD=client 9 cap_addr=8000000000000004 phys_addr=60004000 + Page(4 KiB): MR=serial_to_client #0 9 cap_addr=8000000000000005 phys_addr=60005000 + Page(4 KiB): MR=client_to_serial #0 9 cap_addr=8000000000000006 phys_addr=60006000 + Page(4 KiB): MR=STACK:serial_server #0 9 cap_addr=8000000000000007 phys_addr=60007000 + Page(4 KiB): MR=STACK:client #0 9 cap_addr=8000000000000008 phys_addr=60008000 + Page(4 KiB): MR=uart @ 9000000 9 cap_addr=8000000000000009 phys_addr=9000000 + Page(4 KiB): MR=ELF:serial_server-0 @ 60248000 9 cap_addr=800000000000000a phys_addr=60248000 + Page(4 KiB): MR=ELF:serial_server-0 @ 60249000 9 cap_addr=800000000000000b phys_addr=60249000 + Page(4 KiB): MR=ELF:serial_server-0 @ 6024a000 9 cap_addr=800000000000000c phys_addr=6024a000 + Page(4 KiB): MR=ELF:serial_server-0 @ 6024b000 9 cap_addr=800000000000000d phys_addr=6024b000 + Page(4 KiB): MR=ELF:serial_server-0 @ 6024c000 9 cap_addr=800000000000000e phys_addr=6024c000 + Page(4 KiB): MR=ELF:serial_server-0 @ 6024d000 9 cap_addr=800000000000000f phys_addr=6024d000 + Page(4 KiB): MR=ELF:serial_server-1 @ 6024e000 9 cap_addr=8000000000000010 phys_addr=6024e000 + Page(4 KiB): MR=ELF:client-0 @ 6024f000 9 cap_addr=8000000000000011 phys_addr=6024f000 + Page(4 KiB): MR=ELF:client-0 @ 60250000 9 cap_addr=8000000000000012 phys_addr=60250000 + Page(4 KiB): MR=ELF:client-0 @ 60251000 9 cap_addr=8000000000000013 phys_addr=60251000 + Page(4 KiB): MR=ELF:client-0 @ 60252000 9 cap_addr=8000000000000014 phys_addr=60252000 + Page(4 KiB): MR=ELF:client-0 @ 60253000 9 cap_addr=8000000000000015 phys_addr=60253000 + Page(4 KiB): MR=ELF:client-0 @ 60254000 9 cap_addr=8000000000000016 phys_addr=60254000 + Page(4 KiB): MR=ELF:client-1 @ 60255000 9 cap_addr=8000000000000017 phys_addr=60255000 + TCB: PD=serial_server 1 cap_addr=8000000000000018 phys_addr=60009000 + TCB: PD=client 1 cap_addr=8000000000000019 phys_addr=60009800 + SchedContext: PD=serial_server 5 cap_addr=800000000000001a phys_addr=6000a000 + SchedContext: PD=client 5 cap_addr=800000000000001b phys_addr=6000c000 + Reply: Monitor 6 cap_addr=800000000000001c phys_addr=6000e000 + Reply: PD=serial_server 6 cap_addr=800000000000001d phys_addr=6000e020 + Reply: PD=client 6 cap_addr=800000000000001e phys_addr=6000e040 + EP: Monitor Fault 2 cap_addr=800000000000001f phys_addr=6000e060 + Notification: PD=serial_server 3 cap_addr=8000000000000020 phys_addr=6000e080 + Notification: PD=client 3 cap_addr=8000000000000021 phys_addr=6000e0c0 + VSpace: PD=serial_server 8 cap_addr=8000000000000022 phys_addr=60260000 + VSpace: PD=client 8 cap_addr=8000000000000023 phys_addr=60262000 + PageTable: PD=serial_server VADDR=0x0 11 cap_addr=8000000000000024 phys_addr=60264000 + PageTable: PD=serial_server VADDR=0xffc0000000 11 cap_addr=8000000000000025 phys_addr=60265000 + PageTable: PD=client VADDR=0x0 11 cap_addr=8000000000000026 phys_addr=60266000 + PageTable: PD=client VADDR=0xffc0000000 11 cap_addr=8000000000000027 phys_addr=60267000 + PageTable: PD=serial_server VADDR=0x200000 11 cap_addr=8000000000000028 phys_addr=60268000 + PageTable: PD=serial_server VADDR=0x2000000 11 cap_addr=8000000000000029 phys_addr=60269000 + PageTable: PD=serial_server VADDR=0x4000000 11 cap_addr=800000000000002a phys_addr=6026a000 + PageTable: PD=serial_server VADDR=0xffffe00000 11 cap_addr=800000000000002b phys_addr=6026b000 + PageTable: PD=client VADDR=0x200000 11 cap_addr=800000000000002c phys_addr=6026c000 + PageTable: PD=client VADDR=0x4000000 11 cap_addr=800000000000002d phys_addr=6026d000 + PageTable: PD=client VADDR=0xffffe00000 11 cap_addr=800000000000002e phys_addr=6026e000 + CNode: PD=serial_server 4 cap_addr=800000000000002f phys_addr=60270000 + CNode: PD=client 4 cap_addr=8000000000000030 phys_addr=60274000 # Bootstrap Kernel Invocations Detail - 0x0000 Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) + 0x0000 Untyped - Retype - 0x0000000000000042 (Untyped @ 0x60000000:0x10000) object_type 4 (SEL4_CNODE_OBJECT - variable size) size_bits 1 (0x2) root (cap) 0x0000000000000002 (CNode: init) @@ -79,9 +104,9 @@ cspace_root_data 0 vspace_root (cap) 0x0000000000000003 (VSpace: init) vspace_root_data 0 - 0x0003 Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) + 0x0003 Untyped - Retype - 0x0000000000000042 (Untyped @ 0x60000000:0x10000) object_type 4 (SEL4_CNODE_OBJECT - variable size) - size_bits 6 (0x40) + size_bits 7 (0x80) root (cap) 0x0000000000000002 (CNode: init) node_index 0 node_depth 0 @@ -94,7 +119,7 @@ src_obj (cap) 0x0000000000000061 (CNode: system) src_depth 64 rights 15 - badge 57 + badge 56 0x0005 Untyped - Retype - 0x000000000000001b (Untyped @ 0x60246000:0x2000 (device)) object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) @@ -102,16 +127,16 @@ node_index 1 node_depth 1 node_offset 0 - num_objects 1 - 0x0006 Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) + num_objects 2 + 0x0006 Untyped - Retype - 0x0000000000000042 (Untyped @ 0x60000000:0x10000) object_type 11 (SEL4_PAGE_TABLE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 - node_offset 1 + node_offset 2 num_objects 1 - 0x0007 Page Table - Map - 0x8000000000000001 (PageTable: monitor) + 0x0007 Page Table - Map - 0x8000000000000002 (PageTable: monitor) vspace (cap) 0x0000000000000003 (VSpace: init) vaddr 0x80000000 attr 3 @@ -120,58 +145,19 @@ vaddr 0x80000000 rights 2 attr 7 + REPEAT: count=2 # System Kernel Invocations Detail - 0x0000 Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) + 0x0000 Untyped - Retype - 0x0000000000000042 (Untyped @ 0x60000000:0x10000) object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 - node_offset 2 - num_objects 2 - 0x0001 Untyped - Retype - 0x0000000000000032 (Untyped @ 0x9000000:0x1000000 (device)) - object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) - size_bits 0 (N/A) - root (cap) 0x0000000000000060 (CNode: root) - node_index 1 - node_depth 1 - node_offset 4 - num_objects 1 - 0x0002 Untyped - Retype - 0x000000000000001b (Untyped @ 0x60246000:0x2000 (device)) - object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) - size_bits 0 (N/A) - root (cap) 0x0000000000000060 (CNode: root) - node_index 1 - node_depth 1 - node_offset 5 - num_objects 1 - 0x0003 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x4000 (device)) - object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) - size_bits 0 (N/A) - root (cap) 0x0000000000000060 (CNode: root) - node_index 1 - node_depth 1 - node_offset 6 - num_objects 1 - 0x0004 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x4000 (device)) - object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) - size_bits 0 (N/A) - root (cap) 0x0000000000000060 (CNode: root) - node_index 1 - node_depth 1 - node_offset 7 - num_objects 1 - 0x0005 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x4000 (device)) - object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) - size_bits 0 (N/A) - root (cap) 0x0000000000000060 (CNode: root) - node_index 1 - node_depth 1 - node_offset 8 - num_objects 1 - 0x0006 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x4000 (device)) + node_offset 3 + num_objects 6 + 0x0001 Untyped - Retype - 0x0000000000000033 (Untyped @ 0x9000000:0x1000000 (device)) object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) @@ -179,7 +165,7 @@ node_depth 1 node_offset 9 num_objects 1 - 0x0007 Untyped - Retype - 0x000000000000001d (Untyped @ 0x6024c000:0x2000 (device)) + 0x0002 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x8000 (device)) object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) @@ -187,7 +173,7 @@ node_depth 1 node_offset 10 num_objects 1 - 0x0008 Untyped - Retype - 0x000000000000001d (Untyped @ 0x6024c000:0x2000 (device)) + 0x0003 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x8000 (device)) object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) @@ -195,238 +181,508 @@ node_depth 1 node_offset 11 num_objects 1 - 0x0009 Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) - object_type 1 (SEL4_TCB_OBJECT - 0x800) + 0x0004 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x8000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 node_offset 12 num_objects 1 - 0x000a Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) - object_type 5 (SEL4_SCHEDCONTEXT_OBJECT - variable size) - size_bits 8 (0x100) + 0x0005 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x8000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) + size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 node_offset 13 num_objects 1 - 0x000b Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) - object_type 6 (SEL4_REPLY_OBJECT - 0x20) + 0x0006 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x8000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 node_offset 14 - num_objects 2 - 0x000c Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) - object_type 2 (SEL4_ENDPOINT_OBJECT - 0x10) + num_objects 1 + 0x0007 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x8000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 15 + num_objects 1 + 0x0008 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x8000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 node_offset 16 num_objects 1 - 0x000d Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) - object_type 3 (SEL4_NOTIFICATION_OBJECT - 0x40) + 0x0009 Untyped - Retype - 0x000000000000001c (Untyped @ 0x60248000:0x8000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 node_offset 17 num_objects 1 - 0x000e Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) - object_type 8 (SEL4_VSPACE_OBJECT - 0x2000) + 0x000a Untyped - Retype - 0x000000000000001d (Untyped @ 0x60250000:0x4000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 node_offset 18 num_objects 1 - 0x000f Untyped - Retype - 0x0000000000000041 (Untyped @ 0x60000000:0x10000) - object_type 11 (SEL4_PAGE_TABLE_OBJECT - 0x1000) + 0x000b Untyped - Retype - 0x000000000000001d (Untyped @ 0x60250000:0x4000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 node_offset 19 - num_objects 2 - 0x0010 Untyped - Retype - 0x0000000000000043 (Untyped @ 0x60258000:0x8000) - object_type 11 (SEL4_PAGE_TABLE_OBJECT - 0x1000) + num_objects 1 + 0x000c Untyped - Retype - 0x000000000000001d (Untyped @ 0x60250000:0x4000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 20 + num_objects 1 + 0x000d Untyped - Retype - 0x000000000000001d (Untyped @ 0x60250000:0x4000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) size_bits 0 (N/A) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 node_offset 21 + num_objects 1 + 0x000e Untyped - Retype - 0x000000000000001e (Untyped @ 0x60254000:0x2000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 22 + num_objects 1 + 0x000f Untyped - Retype - 0x000000000000001e (Untyped @ 0x60254000:0x2000 (device)) + object_type 9 (SEL4_SMALL_PAGE_OBJECT - 0x1000) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 23 + num_objects 1 + 0x0010 Untyped - Retype - 0x0000000000000042 (Untyped @ 0x60000000:0x10000) + object_type 1 (SEL4_TCB_OBJECT - 0x800) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 24 + num_objects 2 + 0x0011 Untyped - Retype - 0x0000000000000042 (Untyped @ 0x60000000:0x10000) + object_type 5 (SEL4_SCHEDCONTEXT_OBJECT - variable size) + size_bits 8 (0x100) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 26 + num_objects 2 + 0x0012 Untyped - Retype - 0x0000000000000042 (Untyped @ 0x60000000:0x10000) + object_type 6 (SEL4_REPLY_OBJECT - 0x20) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 28 num_objects 3 - 0x0011 Untyped - Retype - 0x0000000000000043 (Untyped @ 0x60258000:0x8000) + 0x0013 Untyped - Retype - 0x0000000000000042 (Untyped @ 0x60000000:0x10000) + object_type 2 (SEL4_ENDPOINT_OBJECT - 0x10) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 31 + num_objects 1 + 0x0014 Untyped - Retype - 0x0000000000000042 (Untyped @ 0x60000000:0x10000) + object_type 3 (SEL4_NOTIFICATION_OBJECT - 0x40) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 32 + num_objects 2 + 0x0015 Untyped - Retype - 0x0000000000000044 (Untyped @ 0x60260000:0x20000) + object_type 8 (SEL4_VSPACE_OBJECT - 0x2000) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 34 + num_objects 2 + 0x0016 Untyped - Retype - 0x0000000000000044 (Untyped @ 0x60260000:0x20000) + object_type 11 (SEL4_PAGE_TABLE_OBJECT - 0x1000) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 36 + num_objects 4 + 0x0017 Untyped - Retype - 0x0000000000000044 (Untyped @ 0x60260000:0x20000) + object_type 11 (SEL4_PAGE_TABLE_OBJECT - 0x1000) + size_bits 0 (N/A) + root (cap) 0x0000000000000060 (CNode: root) + node_index 1 + node_depth 1 + node_offset 40 + num_objects 7 + 0x0018 Untyped - Retype - 0x0000000000000044 (Untyped @ 0x60260000:0x20000) object_type 4 (SEL4_CNODE_OBJECT - variable size) size_bits 9 (0x200) root (cap) 0x0000000000000060 (CNode: root) node_index 1 node_depth 1 - node_offset 24 - num_objects 1 - 0x0012 IRQ Control - Get - 0x0000000000000004 (IRQ Control) + node_offset 47 + num_objects 2 + 0x0019 IRQ Control - Get - 0x0000000000000004 (IRQ Control) irq 33 trigger 0 dest_root (cap) 0x0000000000000060 (CNode: root) - dest_index 9223372036854775833 + dest_index 9223372036854775857 dest_depth 64 - 0x0013 ASID Pool - Assign - 0x0000000000000006 (ASID Pool: init) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) - 0x0014 CNode - Mint - 0x0000000000000061 (CNode: system) - dest_index 26 - dest_depth 6 + 0x001a ASID Pool - Assign - 0x0000000000000006 (ASID Pool: init) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) + REPEAT: count=2 + 0x001b CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 50 + dest_depth 7 src_root (cap) 0x0000000000000060 (CNode: root) - src_obj (cap) 0x8000000000000004 (Page(4 KiB): MR=uart @ 9000000) + src_obj (cap) 0x8000000000000009 (Page(4 KiB): MR=uart @ 9000000) src_depth 64 rights 3 badge 0 - 0x0015 CNode - Mint - 0x0000000000000061 (CNode: system) - dest_index 27 - dest_depth 6 + 0x001c CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 51 + dest_depth 7 src_root (cap) 0x0000000000000060 (CNode: root) - src_obj (cap) 0x8000000000000005 (Page(4 KiB): MR=ELF:serial_server-0 @ 60247000) + src_obj (cap) 0x8000000000000005 (Page(4 KiB): MR=serial_to_client #0) + src_depth 64 + rights 3 + badge 0 + 0x001d CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 52 + dest_depth 7 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x8000000000000006 (Page(4 KiB): MR=client_to_serial #0) + src_depth 64 + rights 2 + badge 0 + 0x001e CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 53 + dest_depth 7 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x800000000000000a (Page(4 KiB): MR=ELF:serial_server-0 @ 60248000) src_depth 64 rights 2 badge 0 REPEAT: count=6 - 0x0016 CNode - Mint - 0x0000000000000061 (CNode: system) - dest_index 33 - dest_depth 6 + 0x001f CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 59 + dest_depth 7 src_root (cap) 0x0000000000000060 (CNode: root) - src_obj (cap) 0x800000000000000b (Page(4 KiB): MR=ELF:serial_server-1 @ 6024d000) + src_obj (cap) 0x8000000000000010 (Page(4 KiB): MR=ELF:serial_server-1 @ 6024e000) src_depth 64 rights 3 badge 0 - 0x0017 CNode - Mint - 0x0000000000000061 (CNode: system) - dest_index 34 - dest_depth 6 + 0x0020 CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 60 + dest_depth 7 src_root (cap) 0x0000000000000060 (CNode: root) - src_obj (cap) 0x8000000000000003 (Page(4 KiB): MR=STACK:serial_server #0) + src_obj (cap) 0x8000000000000007 (Page(4 KiB): MR=STACK:serial_server #0) src_depth 64 rights 3 badge 0 - 0x0018 CNode - Mint - 0x0000000000000061 (CNode: system) - dest_index 35 - dest_depth 6 + 0x0021 CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 61 + dest_depth 7 src_root (cap) 0x0000000000000060 (CNode: root) - src_obj (cap) 0x8000000000000011 (Notification: PD=serial_server) + src_obj (cap) 0x8000000000000005 (Page(4 KiB): MR=serial_to_client #0) + src_depth 64 + rights 2 + badge 0 + 0x0022 CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 62 + dest_depth 7 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x8000000000000006 (Page(4 KiB): MR=client_to_serial #0) + src_depth 64 + rights 3 + badge 0 + 0x0023 CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 63 + dest_depth 7 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x8000000000000011 (Page(4 KiB): MR=ELF:client-0 @ 6024f000) + src_depth 64 + rights 2 + badge 0 + REPEAT: count=6 + 0x0024 CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 69 + dest_depth 7 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x8000000000000017 (Page(4 KiB): MR=ELF:client-1 @ 60255000) + src_depth 64 + rights 3 + badge 0 + 0x0025 CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 70 + dest_depth 7 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x8000000000000008 (Page(4 KiB): MR=STACK:client #0) + src_depth 64 + rights 3 + badge 0 + 0x0026 CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 71 + dest_depth 7 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x8000000000000020 (Notification: PD=serial_server) src_depth 64 rights 15 badge 2 - 0x0019 CNode - Mint - 0x0000000000000061 (CNode: system) - dest_index 36 - dest_depth 6 + 0x0027 CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 72 + dest_depth 7 src_root (cap) 0x0000000000000060 (CNode: root) - src_obj (cap) 0x8000000000000010 (EP: Monitor Fault) + src_obj (cap) 0x800000000000001f (EP: Monitor Fault) src_depth 64 rights 15 badge 1 - 0x001a CNode - Mint - 0x8000000000000018 (CNode: PD=serial_server) + 0x0028 CNode - Mint - 0x0000000000000061 (CNode: system) + dest_index 73 + dest_depth 7 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x800000000000001f (EP: Monitor Fault) + src_depth 64 + rights 15 + badge 2 + 0x0029 CNode - Mint - 0x800000000000002f (CNode: PD=serial_server) dest_index 1 dest_depth 9 src_root (cap) 0x0000000000000060 (CNode: root) - src_obj (cap) 0x8000000000000011 (Notification: PD=serial_server) + src_obj (cap) 0x8000000000000020 (Notification: PD=serial_server) src_depth 64 rights 15 badge 0 - 0x001b CNode - Mint - 0x8000000000000018 (CNode: PD=serial_server) + 0x002a CNode - Mint - 0x8000000000000030 (CNode: PD=client) + dest_index 1 + dest_depth 9 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x8000000000000021 (Notification: PD=client) + src_depth 64 + rights 15 + badge 0 + 0x002b CNode - Mint - 0x800000000000002f (CNode: PD=serial_server) dest_index 4 dest_depth 9 src_root (cap) 0x0000000000000060 (CNode: root) - src_obj (cap) 0x800000000000000f (Reply: PD=serial_server) + src_obj (cap) 0x800000000000001d (Reply: PD=serial_server) src_depth 64 rights 15 badge 1 - 0x001c CNode - Mint - 0x8000000000000018 (CNode: PD=serial_server) + REPEAT: count=2 + 0x002c CNode - Mint - 0x800000000000002f (CNode: PD=serial_server) dest_index 3 dest_depth 9 src_root (cap) 0x0000000000000060 (CNode: root) - src_obj (cap) 0x8000000000000012 (VSpace: PD=serial_server) + src_obj (cap) 0x8000000000000022 (VSpace: PD=serial_server) src_depth 64 rights 15 badge 0 - 0x001d CNode - Mint - 0x8000000000000018 (CNode: PD=serial_server) + REPEAT: count=2 + 0x002d CNode - Mint - 0x800000000000002f (CNode: PD=serial_server) dest_index 139 dest_depth 9 src_root (cap) 0x0000000000000060 (CNode: root) - src_obj (cap) 0x8000000000000019 (IRQ Handler: irq=33) + src_obj (cap) 0x8000000000000031 (IRQ Handler: irq=33) src_depth 64 rights 15 badge 0 - 0x001e IRQ Handler - SetNotification - 0x8000000000000019 (IRQ Handler: irq=33) - notification (cap) 0x8000000000000023 (Notification: PD=serial_server (badge=0x2)) - 0x001f Page Table - Map - 0x8000000000000013 (PageTable: PD=serial_server VADDR=0x0) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) + 0x002e CNode - Mint - 0x800000000000002f (CNode: PD=serial_server) + dest_index 12 + dest_depth 9 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x8000000000000021 (Notification: PD=client) + src_depth 64 + rights 15 + badge 2 + 0x002f CNode - Mint - 0x8000000000000030 (CNode: PD=client) + dest_index 11 + dest_depth 9 + src_root (cap) 0x0000000000000060 (CNode: root) + src_obj (cap) 0x8000000000000020 (Notification: PD=serial_server) + src_depth 64 + rights 15 + badge 4 + 0x0030 IRQ Handler - SetNotification - 0x8000000000000031 (IRQ Handler: irq=33) + notification (cap) 0x8000000000000047 (Notification: PD=serial_server (badge=0x2)) + 0x0031 Page Table - Map - 0x8000000000000024 (PageTable: PD=serial_server VADDR=0x0) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) vaddr 0x0 attr 3 - 0x0020 Page Table - Map - 0x8000000000000014 (PageTable: PD=serial_server VADDR=0xffc0000000) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) + 0x0032 Page Table - Map - 0x8000000000000025 (PageTable: PD=serial_server VADDR=0xffc0000000) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) vaddr 0xffc0000000 attr 3 - 0x0021 Page Table - Map - 0x8000000000000015 (PageTable: PD=serial_server VADDR=0x200000) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) + 0x0033 Page Table - Map - 0x8000000000000026 (PageTable: PD=client VADDR=0x0) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0x0 + attr 3 + 0x0034 Page Table - Map - 0x8000000000000027 (PageTable: PD=client VADDR=0xffc0000000) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0xffc0000000 + attr 3 + 0x0035 Page Table - Map - 0x8000000000000028 (PageTable: PD=serial_server VADDR=0x200000) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) vaddr 0x200000 attr 3 - 0x0022 Page Table - Map - 0x8000000000000016 (PageTable: PD=serial_server VADDR=0x2000000) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) + 0x0036 Page Table - Map - 0x8000000000000029 (PageTable: PD=serial_server VADDR=0x2000000) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) vaddr 0x2000000 attr 3 - 0x0023 Page Table - Map - 0x8000000000000017 (PageTable: PD=serial_server VADDR=0xffffe00000) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) + 0x0037 Page Table - Map - 0x800000000000002a (PageTable: PD=serial_server VADDR=0x4000000) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) + vaddr 0x4000000 + attr 3 + 0x0038 Page Table - Map - 0x800000000000002b (PageTable: PD=serial_server VADDR=0xffffe00000) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) vaddr 0xffffe00000 attr 3 - 0x0024 Page - Map - 0x800000000000001a (Page(4 KiB): MR=uart @ 9000000 (derived)) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) + 0x0039 Page Table - Map - 0x800000000000002c (PageTable: PD=client VADDR=0x200000) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0x200000 + attr 3 + 0x003a Page Table - Map - 0x800000000000002d (PageTable: PD=client VADDR=0x4000000) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0x4000000 + attr 3 + 0x003b Page Table - Map - 0x800000000000002e (PageTable: PD=client VADDR=0xffffe00000) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0xffffe00000 + attr 3 + 0x003c Page - Map - 0x8000000000000032 (Page(4 KiB): MR=uart @ 9000000 (derived)) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) vaddr 0x2000000 rights 3 attr 6 - 0x0025 Page - Map - 0x800000000000001b (Page(4 KiB): MR=ELF:serial_server-0 @ 60247000 (derived)) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) + 0x003d Page - Map - 0x8000000000000033 (Page(4 KiB): MR=serial_to_client #0 (derived)) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) + vaddr 0x4000000 + rights 3 + attr 7 + 0x003e Page - Map - 0x8000000000000034 (Page(4 KiB): MR=client_to_serial #0 (derived)) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) + vaddr 0x4001000 + rights 2 + attr 7 + 0x003f Page - Map - 0x8000000000000035 (Page(4 KiB): MR=ELF:serial_server-0 @ 60248000 (derived)) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) vaddr 0x200000 rights 2 attr 3 REPEAT: count=6 - 0x0026 Page - Map - 0x8000000000000021 (Page(4 KiB): MR=ELF:serial_server-1 @ 6024d000 (derived)) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) + 0x0040 Page - Map - 0x800000000000003b (Page(4 KiB): MR=ELF:serial_server-1 @ 6024e000 (derived)) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) vaddr 0x206000 rights 3 attr 7 - 0x0027 Page - Map - 0x8000000000000022 (Page(4 KiB): MR=STACK:serial_server #0 (derived)) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) + 0x0041 Page - Map - 0x800000000000003c (Page(4 KiB): MR=STACK:serial_server #0 (derived)) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) vaddr 0xfffffff000 rights 3 attr 7 - 0x0028 Page - Map - 0x8000000000000002 (Page(4 KiB): IPC Buffer PD=serial_server) - vspace (cap) 0x8000000000000012 (VSpace: PD=serial_server) + 0x0042 Page - Map - 0x800000000000003d (Page(4 KiB): MR=serial_to_client #0 (derived)) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0x4000000 + rights 2 + attr 7 + 0x0043 Page - Map - 0x800000000000003e (Page(4 KiB): MR=client_to_serial #0 (derived)) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0x4001000 + rights 3 + attr 7 + 0x0044 Page - Map - 0x800000000000003f (Page(4 KiB): MR=ELF:client-0 @ 6024f000 (derived)) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0x200000 + rights 2 + attr 3 + REPEAT: count=6 + 0x0045 Page - Map - 0x8000000000000045 (Page(4 KiB): MR=ELF:client-1 @ 60255000 (derived)) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0x206000 + rights 3 + attr 7 + 0x0046 Page - Map - 0x8000000000000046 (Page(4 KiB): MR=STACK:client #0 (derived)) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0xfffffff000 + rights 3 + attr 7 + 0x0047 Page - Map - 0x8000000000000003 (Page(4 KiB): IPC Buffer PD=serial_server) + vspace (cap) 0x8000000000000022 (VSpace: PD=serial_server) vaddr 0x207000 rights 3 attr 7 - 0x0029 SchedControl - ConfigureFlags - 0x0000000000000012 (None) - schedcontext (cap) 0x800000000000000d (SchedContext: PD=serial_server) + 0x0048 Page - Map - 0x8000000000000004 (Page(4 KiB): IPC Buffer PD=client) + vspace (cap) 0x8000000000000023 (VSpace: PD=client) + vaddr 0x207000 + rights 3 + attr 7 + 0x0049 SchedControl - ConfigureFlags - 0x0000000000000012 (None) + schedcontext (cap) 0x800000000000001a (SchedContext: PD=serial_server) budget 1000 period 1000 extra_refills 0 badge 256 flags 0 - 0x002a TCB - SetSchedParams - 0x800000000000000c (TCB: PD=serial_server) + 0x004a SchedControl - ConfigureFlags - 0x0000000000000012 (None) + schedcontext (cap) 0x800000000000001b (SchedContext: PD=client) + budget 1000 + period 1000 + extra_refills 0 + badge 257 + flags 0 + 0x004b TCB - SetSchedParams - 0x8000000000000018 (TCB: PD=serial_server) authority (cap) 0x0000000000000001 (TCB: init) mcp 254 priority 254 - sched_context (cap) 0x800000000000000d (SchedContext: PD=serial_server) - fault_ep (cap) 0x8000000000000010 (EP: Monitor Fault) - 0x002b TCB - SetSpace - 0x800000000000000c (TCB: PD=serial_server) - fault_ep (cap) 0x8000000000000024 (None) - cspace_root (cap) 0x8000000000000018 (CNode: PD=serial_server) + sched_context (cap) 0x800000000000001a (SchedContext: PD=serial_server) + fault_ep (cap) 0x800000000000001f (EP: Monitor Fault) + 0x004c TCB - SetSchedParams - 0x8000000000000019 (TCB: PD=client) + authority (cap) 0x0000000000000001 (TCB: init) + mcp 253 + priority 253 + sched_context (cap) 0x800000000000001b (SchedContext: PD=client) + fault_ep (cap) 0x800000000000001f (EP: Monitor Fault) + 0x004d TCB - SetSpace - 0x8000000000000018 (TCB: PD=serial_server) + fault_ep (cap) 0x8000000000000048 (None) + cspace_root (cap) 0x800000000000002f (CNode: PD=serial_server) cspace_root_data 55 - vspace_root (cap) 0x8000000000000012 (VSpace: PD=serial_server) + vspace_root (cap) 0x8000000000000022 (VSpace: PD=serial_server) vspace_root_data 0 - 0x002c TCB - SetIPCBuffer - 0x800000000000000c (TCB: PD=serial_server) + REPEAT: count=2 + 0x004e TCB - SetIPCBuffer - 0x8000000000000018 (TCB: PD=serial_server) buffer 0x207000 - buffer_frame (cap) 0x8000000000000002 (Page(4 KiB): IPC Buffer PD=serial_server) - 0x002d TCB - WriteRegisters - 0x800000000000000c (TCB: PD=serial_server) + buffer_frame (cap) 0x8000000000000003 (Page(4 KiB): IPC Buffer PD=serial_server) + 0x004f TCB - SetIPCBuffer - 0x8000000000000019 (TCB: PD=client) + buffer 0x207000 + buffer_frame (cap) 0x8000000000000004 (Page(4 KiB): IPC Buffer PD=client) + 0x0050 TCB - WriteRegisters - 0x8000000000000018 (TCB: PD=serial_server) resume false arch_flags 0 regs pc: 0x0000000000200000 @@ -465,7 +721,48 @@ x28: 0x0000000000000000 tpidr_el0: 0x0000000000000000 tpidrro_el0: 0x0000000000000000 - 0x002e TCB - BindNotification - 0x800000000000000c (TCB: PD=serial_server) - notification (cap) 0x8000000000000011 (Notification: PD=serial_server) - 0x002f TCB - Resume - 0x800000000000000c (TCB: PD=serial_server) + 0x0051 TCB - WriteRegisters - 0x8000000000000019 (TCB: PD=client) + resume false + arch_flags 0 + regs pc: 0x0000000000200000 + sp: 0x0000010000000000 + spsr: 0x0000000000000000 + x0: 0x0000000000000000 + x1: 0x0000000000000000 + x2: 0x0000000000000000 + x3: 0x0000000000000000 + x4: 0x0000000000000000 + x5: 0x0000000000000000 + x6: 0x0000000000000000 + x7: 0x0000000000000000 + x8: 0x0000000000000000 + x16: 0x0000000000000000 + x17: 0x0000000000000000 + x18: 0x0000000000000000 + x29: 0x0000000000000000 + x30: 0x0000000000000000 + x9: 0x0000000000000000 + x10: 0x0000000000000000 + x11: 0x0000000000000000 + x12: 0x0000000000000000 + x13: 0x0000000000000000 + x14: 0x0000000000000000 + x15: 0x0000000000000000 + x19: 0x0000000000000000 + x20: 0x0000000000000000 + x21: 0x0000000000000000 + x22: 0x0000000000000000 + x23: 0x0000000000000000 + x24: 0x0000000000000000 + x25: 0x0000000000000000 + x26: 0x0000000000000000 + x27: 0x0000000000000000 + x28: 0x0000000000000000 + tpidr_el0: 0x0000000000000000 + tpidrro_el0: 0x0000000000000000 + 0x0052 TCB - BindNotification - 0x8000000000000018 (TCB: PD=serial_server) + notification (cap) 0x8000000000000020 (Notification: PD=serial_server) + REPEAT: count=2 + 0x0053 TCB - Resume - 0x8000000000000018 (TCB: PD=serial_server) + REPEAT: count=2 diff --git a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/serial_server.elf b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/serial_server.elf index ae2083a..0f90dbf 100755 Binary files a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/serial_server.elf and b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/serial_server.elf differ diff --git a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/serial_server.o b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/serial_server.o index 15ac273..9b2f0fe 100644 Binary files a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/serial_server.o and b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/build/serial_server.o differ diff --git a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/client.c b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/client.c index 9530a58..b1851db 100644 --- a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/client.c +++ b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/client.c @@ -4,8 +4,12 @@ #include "printf.h" #include "wordle.h" +uintptr_t serial_to_client_vaddr; +uintptr_t client_to_serial_vaddr; + #define MOVE_CURSOR_UP "\033[5A" #define CLEAR_TERMINAL_BELOW_CURSOR "\033[0J" +#define SERIAL_SERVER_CHANNEL_ID 1 #define INVALID_CHAR (-1) @@ -30,6 +34,13 @@ void wordle_server_send() { void serial_send(char *str) { // Implement this function to get the serial server to print the string. + int i = 0; + while (str[i] != '\0') { + ((char *)client_to_serial_vaddr)[i] = str[i]; + i++; + } + ((char *)client_to_serial_vaddr)[i] = '\0'; + microkit_notify(SERIAL_SERVER_CHANNEL_ID); } // This function prints a CLI Wordle using pretty colours for what characters @@ -121,4 +132,13 @@ void init(void) { print_table(false); } -void notified(microkit_channel channel) {} +void notified(microkit_channel channel) { + switch (channel) { + case SERIAL_SERVER_CHANNEL_ID:{ + char ch = ((char *)serial_to_client_vaddr)[0]; + add_char_to_table(ch); + print_table(true); + } + } +} + diff --git a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/serial_server.c b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/serial_server.c index ba7d7cd..69a96d3 100644 --- a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/serial_server.c +++ b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/serial_server.c @@ -4,6 +4,8 @@ // This variable will have the address of the UART device uintptr_t uart_base_vaddr; +uintptr_t serial_to_client_vaddr; +uintptr_t client_to_serial_vaddr; #define RHR_MASK 0b111111111 #define UARTDR 0x000 @@ -12,9 +14,13 @@ uintptr_t uart_base_vaddr; #define UARTICR 0x044 #define PL011_UARTFR_TXFF (1 << 5) #define PL011_UARTFR_RXFE (1 << 4) +#define CLIENT_CHANNEL_ID 2 +#define SERIAL_SERVER_CHANNEL_ID 1 +#define NEWLINE 0x0a #define REG_PTR(base, offset) ((volatile uint32_t *)((base) + (offset))) + void uart_init() { *REG_PTR(uart_base_vaddr, UARTIMSC) = 0x50; } @@ -57,11 +63,22 @@ void init(void) { // After initialising the UART, print a message to the terminal // saying that the serial server has started. uart_put_str("SERIAL SERVER: starting\n"); + + //send a messageto teh receiver + microkit_notify(CLIENT_CHANNEL_ID); } void notified(microkit_channel channel) { - int character = uart_get_char(); - uart_put_char(character); - uart_handle_irq(); - microkit_irq_ack(1); + switch (channel) { + case SERIAL_SERVER_CHANNEL_ID: { + ((char *)serial_to_client_vaddr)[0] = uart_get_char(); + uart_handle_irq(); + microkit_irq_ack(channel); + microkit_notify(CLIENT_CHANNEL_ID); + break; + } + case CLIENT_CHANNEL_ID: + uart_put_str((char *)client_to_serial_vaddr); + break; + } } diff --git a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/wordle.system b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/wordle.system index c49c1de..caec863 100644 --- a/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/wordle.system +++ b/ME_2150/microkit_tutorial/microkit_tutorial/tutorial/wordle.system @@ -1,10 +1,26 @@ + + + + + + + + + + + + + + + +