diff --git a/ch03-04-debugging-programs.html b/ch03-04-debugging-programs.html
index fbb5064..1f041de 100644
--- a/ch03-04-debugging-programs.html
+++ b/ch03-04-debugging-programs.html
@@ -200,7 +200,7 @@
diff --git a/print.html b/print.html
index b3e8a99..7ac28ad 100644
--- a/print.html
+++ b/print.html
@@ -724,7 +724,7 @@
diff --git a/searchindex.js b/searchindex.js
index a0a1d17..3e2d264 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Object.assign(window.search, {"doc_urls":["ch00-00-introduction.html#introduction","ch00-00-introduction.html#architecture","ch00-00-introduction.html#servers","ch00-00-introduction.html#messages-aka-ipc","ch00-00-introduction.html#acknowledgement","ch01-00-getting-started.html#getting-started","ch01-00-getting-started.html#update-your-device","ch01-00-getting-started.html#setting-up-security","ch01-00-getting-started.html#jargon","ch01-00-getting-started.html#other-issues","ch01-00-getting-started.html#pre-boot--security","ch01-00-getting-started.html#between-the-software-and-hardware-hardware-abstractions","ch01-00-getting-started.html#hardware-documentation","ch01-00-getting-started.html#trng-chronicles","ch01-00-getting-started.html#audit-trail","ch01-00-getting-started.html#meta-issues","ch01-02-hello-world.html#hello-world","ch01-04-coding-style.html#coding-style","ch01-04-coding-style.html#lint","ch01-04-coding-style.html#formatting","ch01-04-coding-style.html#exception-handling","ch01-04-coding-style.html#background","ch01-04-coding-style.html#recommendation","ch02-00-server-architecture.html#server-architecture","ch02-00-server-architecture.html#what-is-the-difference-between-a-thread-and-a-server","ch02-04-synchronization.html#synchronization-primitives","ch02-04-synchronization.html#thread-sleeping","ch02-04-synchronization.html#mutex","ch02-04-synchronization.html#mutex-locking","ch02-04-synchronization.html#mutex-unlocking","ch02-04-synchronization.html#condvar","ch02-04-synchronization.html#condvar-waiting-for-a-condition","ch02-04-synchronization.html#condvar-signaling-wakeups","ch03-00-introducing-the-kernel.html#introducing-the-kernel","ch03-00-introducing-the-kernel.html#memory-and-mapping","ch03-00-introducing-the-kernel.html#interrupts","ch03-00-introducing-the-kernel.html#supported-platforms-risc-v-32-and-hosted","ch03-01-memory-layout.html#memory-management-in-xous","ch03-01-memory-layout.html#physical-addresses","ch03-01-memory-layout.html#virtual-addresses","ch03-01-memory-layout.html#demand-paging","ch03-01-memory-layout.html#the-heap","ch03-01-memory-layout.html#virtual-memory-regions","ch03-02-hosted-mode.html#hosted-mode","ch03-02-hosted-mode.html#the-kernel-as-a-process","ch03-02-hosted-mode.html#initial-processes","ch03-02-hosted-mode.html#launching-a-process","ch03-02-hosted-mode.html#sending-and-receiving-syscalls","ch03-02-hosted-mode.html#threading","ch03-03-process-creation.html#process-creation","ch03-03-process-creation.html#creating-processes-in-hosted-mode","ch03-03-process-creation.html#creating-processes-in-test-mode","ch03-03-process-creation.html#creating-processes-on-native-hardware-eg-risc-v","ch03-03-process-creation.html#native-hardware-entrypoint","ch03-03-process-creation.html#limitations-of-created-processes","ch03-04-debugging-programs.html#debugging-with-gdb","ch03-04-debugging-programs.html#building-a-gdb-compatible-image","ch03-04-debugging-programs.html#attaching-to-the-debugger-renode","ch03-04-debugging-programs.html#attaching-to-the-debugger-hardware","ch03-04-debugging-programs.html#debugging-a-process","ch03-04-debugging-programs.html#debugging-a-thread","ch04-00-renode-emulation.html#renode-emulation","ch04-00-renode-emulation.html#quickstart-using-the-renode-emulator","ch04-00-renode-emulation.html#network-support","ch04-04-writing-cs-peripherals.html#writing-renode-c-peripherals","ch04-04-writing-cs-peripherals.html#setting-up-an-ide----visual-studio-code","ch04-04-writing-cs-peripherals.html#creating-a-new-peripheral","ch04-04-writing-cs-peripherals.html#using-the-new-peripheral","ch05-00-system-startup.html#xous-operating-system-startup","ch05-01-arguments.html#system-arguments","ch05-01-arguments.html#xarg-tag----xous-arguments-meta-tag","ch05-01-arguments.html#xkrn-tag----xous-kernel-description","ch05-01-arguments.html#inie-and-inif-tag----initial-elf-programs","ch05-01-arguments.html#pnam-tag----program-names","ch05-01-arguments.html#bflg-tag----boot-flags","ch05-01-arguments.html#mrex-tag----additional-memory-regions","ch05-02-loader.html#xous-loader","ch05-02-loader.html#signature-checking-the-kernel","ch05-02-loader.html#loading-the-os","ch05-02-loader.html#reading-initial-configuration","ch05-02-loader.html#loader-stage-1-copying-and-aligning-data","ch05-02-loader.html#loader-stage-2-setting-page-tables","ch05-02-loader.html#preparing-to-boot","ch05-02-loader.html#jumping-to-the-kernel","ch05-02-loader.html#resuming-from-suspend","ch05-03-minielf.html#minielf-file-format","ch05-03-minielf.html#program-header","ch05-03-minielf.html#section-headers","ch05-03-minielf.html#elf-flags","ch05-03-minielf.html#page-aligned-minielf","ch06-00-build-system-overview.html#xous-build-system-overview","ch06-00-build-system-overview.html#building-images","ch06-00-build-system-overview.html#build-command-syntax-details","ch06-00-build-system-overview.html#the-internal-flow-of-the-build-system","ch06-00-build-system-overview.html#step-0-build-the-build-system","ch06-00-build-system-overview.html#step-1-build-the-kernel","ch06-00-build-system-overview.html#step-2-build-the-initial-programs","ch06-00-build-system-overview.html#step-3-build-the-loader","ch06-00-build-system-overview.html#step-4-package-it-all-up","ch06-01-testing-crates.html#testing-crates","ch06-01-testing-crates.html#testing-crates-on-xous","ch06-02-create-image.html#xous-image-creation","ch06-02-create-image.html#the-kernel-and-initial-programs","ch06-03-target-specification.html#target-specification-and-hardware-registers-with-utra","ch06-03-target-specification.html#specifying-targets","ch06-03-target-specification.html#about-the-utra","ch06-03-target-specification.html#utra-api-details","ch06-03-target-specification.html#example-usage","ch07-00-messages.html#messages-and-message-passing","ch07-00-messages.html#connecting-to-and-disconnecting-from-servers","ch07-00-messages.html#connection-limitations","ch07-00-messages.html#disconnecting","ch07-00-messages.html#message-overview","ch07-00-messages.html#scalar-and-blockingscalar-messages","ch07-00-messages.html#borrow-mutableborrow-and-send-messages","ch07-01-xous-names.html#xous-names","ch07-01-xous-names.html#well-known-names","ch07-01-xous-names.html#discovered-names","ch07-02-caller-idioms.html#caller-idioms","ch07-02-caller-idioms.html#basic-template","ch07-03-nonsynchronizing.html#non-synchronizing-idioms","ch07-03-nonsynchronizing.html#scalar-pattern","ch07-03-nonsynchronizing.html#memory-pattern","ch07-04-synchronizing.html#synchronizing","ch07-04-synchronizing.html#scalar-pattern","ch07-04-synchronizing.html#memory-pattern","ch07-05-asynchronous.html#asynchronous-idioms-or-push-notifications","ch07-06-deferred.html#deferred-response","ch07-06-deferred.html#scalar-pattern","ch07-06-deferred.html#memory-pattern","ch07-07-forwarding.html#forwarding-messages","ch07-08-performance.html#messaging-performance","ch07-08-performance.html#scalar-message-performance","ch07-08-performance.html#memory-message-performance","ch07-08-performance.html#optimizing-memory-message-performance","ch08-00-graphics.html#graphics-toolkit","ch08-00-graphics.html#overview","ch08-00-graphics.html#modals-and-menus","ch08-00-graphics.html#gam","ch08-00-graphics.html#graphics-server","ch08-01-modals.html#modals","ch08-01-modals.html#static-notification","ch08-01-modals.html#progress-bar","ch08-01-modals.html#dynamic-notifications","ch08-01-modals.html#text-entry","ch08-01-modals.html#radio-box","ch08-01-modals.html#check-box","ch08-02-menus.html#menus","ch08-02-menus.html#raising-the-menu","ch08-02-menus.html#permission-to-create-menus","ch08-02-menus.html#modifying-the-menu","ch09-00-pddb-overview.html#the-plausibly-deniable-database-pddb-overview","ch09-01-basis.html#basis-internal-structure","ch09-01-basis.html#overview","ch09-01-basis.html#a-short-example","ch09-01-basis.html#orthogonal-virtual-page-table-structure","ch09-01-basis.html#page-table-format","ch09-01-basis.html#page-table-orthogonality","ch09-01-basis.html#virtual-memory-layout","ch09-01-basis.html#basis-virtual-memory-layout","ch09-01-basis.html#memory-pools","ch09-01-basis.html#size-limits","ch09-01-basis.html#ram-pressure","ch09-01-basis.html#the-make-before-break-mbbb-structure","ch09-01-basis.html#free-space","ch09-01-basis.html#spaceupdate-records","ch09-01-basis.html#physical-layout","ch09-02-rootkeys.html#deriving-the-pddbs-keys","ch09-02-rootkeys.html#basis-keys","ch09-02-rootkeys.html#secret-basis-key-derivation","ch09-02-rootkeys.html#system-basis-key-derivation","ch09-03-api-native.html#native-api","ch09-03-api-native.html#the-pddb-object","ch09-03-api-native.html#access-examples","ch09-03-api-native.html#management","ch09-04-api-std.html#std-api","ch09-04-api-std.html#path-conventions","ch09-04-api-std.html#examples","ch09-04-api-std.html#corner-cases","ch09-04-api-std.html#api-status","ch09-05-testing.html#testing-and-ci","ch09-05-testing.html#the-ci-feature","ch09-05-testing.html#the-autobasis-feature","ch09-06-backups.html#backups","ch09-06-backups.html#analysis","ch09-07-discussion.html#security-and-deniability","ch09-07-discussion.html#deniability","ch09-07-discussion.html#ciphertext-comparison-attacks","ch09-07-discussion.html#api-leakage","ch09-07-discussion.html#free-space-cache-fscb-leakage","ch09-07-discussion.html#page-table-collision-leakage","ch09-07-discussion.html#security","ch09-07-discussion.html#approach","ch09-07-discussion.html#known-issues","ch10-00-swap-overview.html#encrypted-swap","ch10-00-swap-overview.html#review-of-virtual-memory-implementation-without-swap","ch10-00-swap-overview.html#encryption-method","ch10-00-swap-overview.html#swap-implementation","ch10-00-swap-overview.html#boot-setup-loader","ch10-00-swap-overview.html#kernel-runtime","ch10-00-swap-overview.html#swapper-responsibilities"],"index":{"documentStore":{"docInfo":{"0":{"body":89,"breadcrumbs":1,"title":1},"1":{"body":69,"breadcrumbs":1,"title":1},"10":{"body":21,"breadcrumbs":3,"title":3},"100":{"body":84,"breadcrumbs":5,"title":3},"101":{"body":219,"breadcrumbs":5,"title":3},"102":{"body":108,"breadcrumbs":5,"title":3},"103":{"body":52,"breadcrumbs":7,"title":5},"104":{"body":37,"breadcrumbs":4,"title":2},"105":{"body":216,"breadcrumbs":3,"title":1},"106":{"body":295,"breadcrumbs":5,"title":3},"107":{"body":151,"breadcrumbs":4,"title":2},"108":{"body":29,"breadcrumbs":3,"title":3},"109":{"body":88,"breadcrumbs":3,"title":3},"11":{"body":21,"breadcrumbs":5,"title":5},"110":{"body":24,"breadcrumbs":2,"title":2},"111":{"body":68,"breadcrumbs":1,"title":1},"112":{"body":27,"breadcrumbs":2,"title":2},"113":{"body":72,"breadcrumbs":3,"title":3},"114":{"body":106,"breadcrumbs":4,"title":4},"115":{"body":67,"breadcrumbs":3,"title":2},"116":{"body":81,"breadcrumbs":4,"title":3},"117":{"body":256,"breadcrumbs":3,"title":2},"118":{"body":371,"breadcrumbs":3,"title":2},"119":{"body":256,"breadcrumbs":3,"title":2},"12":{"body":29,"breadcrumbs":2,"title":2},"120":{"body":0,"breadcrumbs":6,"title":3},"121":{"body":111,"breadcrumbs":5,"title":2},"122":{"body":249,"breadcrumbs":5,"title":2},"123":{"body":0,"breadcrumbs":4,"title":1},"124":{"body":117,"breadcrumbs":5,"title":2},"125":{"body":508,"breadcrumbs":5,"title":2},"126":{"body":483,"breadcrumbs":7,"title":4},"127":{"body":96,"breadcrumbs":5,"title":2},"128":{"body":105,"breadcrumbs":5,"title":2},"129":{"body":166,"breadcrumbs":5,"title":2},"13":{"body":18,"breadcrumbs":2,"title":2},"130":{"body":160,"breadcrumbs":5,"title":2},"131":{"body":60,"breadcrumbs":3,"title":2},"132":{"body":196,"breadcrumbs":4,"title":3},"133":{"body":207,"breadcrumbs":4,"title":3},"134":{"body":468,"breadcrumbs":5,"title":4},"135":{"body":14,"breadcrumbs":2,"title":2},"136":{"body":0,"breadcrumbs":1,"title":1},"137":{"body":21,"breadcrumbs":2,"title":2},"138":{"body":87,"breadcrumbs":1,"title":1},"139":{"body":29,"breadcrumbs":2,"title":2},"14":{"body":23,"breadcrumbs":2,"title":2},"140":{"body":68,"breadcrumbs":3,"title":1},"141":{"body":16,"breadcrumbs":4,"title":2},"142":{"body":95,"breadcrumbs":4,"title":2},"143":{"body":79,"breadcrumbs":4,"title":2},"144":{"body":156,"breadcrumbs":4,"title":2},"145":{"body":72,"breadcrumbs":4,"title":2},"146":{"body":53,"breadcrumbs":4,"title":2},"147":{"body":266,"breadcrumbs":3,"title":1},"148":{"body":20,"breadcrumbs":4,"title":2},"149":{"body":90,"breadcrumbs":5,"title":3},"15":{"body":19,"breadcrumbs":2,"title":2},"150":{"body":98,"breadcrumbs":4,"title":2},"151":{"body":282,"breadcrumbs":5,"title":5},"152":{"body":0,"breadcrumbs":7,"title":3},"153":{"body":30,"breadcrumbs":5,"title":1},"154":{"body":134,"breadcrumbs":6,"title":2},"155":{"body":0,"breadcrumbs":9,"title":5},"156":{"body":280,"breadcrumbs":7,"title":3},"157":{"body":114,"breadcrumbs":7,"title":3},"158":{"body":297,"breadcrumbs":7,"title":3},"159":{"body":85,"breadcrumbs":8,"title":4},"16":{"body":173,"breadcrumbs":4,"title":2},"160":{"body":112,"breadcrumbs":6,"title":2},"161":{"body":300,"breadcrumbs":6,"title":2},"162":{"body":174,"breadcrumbs":6,"title":2},"163":{"body":142,"breadcrumbs":9,"title":5},"164":{"body":375,"breadcrumbs":6,"title":2},"165":{"body":336,"breadcrumbs":6,"title":2},"166":{"body":59,"breadcrumbs":6,"title":2},"167":{"body":19,"breadcrumbs":7,"title":3},"168":{"body":209,"breadcrumbs":6,"title":2},"169":{"body":185,"breadcrumbs":8,"title":4},"17":{"body":0,"breadcrumbs":4,"title":2},"170":{"body":326,"breadcrumbs":8,"title":4},"171":{"body":36,"breadcrumbs":6,"title":2},"172":{"body":315,"breadcrumbs":6,"title":2},"173":{"body":129,"breadcrumbs":6,"title":2},"174":{"body":32,"breadcrumbs":5,"title":1},"175":{"body":115,"breadcrumbs":6,"title":2},"176":{"body":29,"breadcrumbs":6,"title":2},"177":{"body":85,"breadcrumbs":5,"title":1},"178":{"body":113,"breadcrumbs":6,"title":2},"179":{"body":80,"breadcrumbs":6,"title":2},"18":{"body":5,"breadcrumbs":3,"title":1},"180":{"body":123,"breadcrumbs":6,"title":2},"181":{"body":144,"breadcrumbs":6,"title":2},"182":{"body":24,"breadcrumbs":6,"title":2},"183":{"body":11,"breadcrumbs":5,"title":1},"184":{"body":69,"breadcrumbs":5,"title":1},"185":{"body":7,"breadcrumbs":6,"title":2},"186":{"body":21,"breadcrumbs":5,"title":1},"187":{"body":114,"breadcrumbs":7,"title":3},"188":{"body":152,"breadcrumbs":6,"title":2},"189":{"body":137,"breadcrumbs":9,"title":5},"19":{"body":49,"breadcrumbs":3,"title":1},"190":{"body":206,"breadcrumbs":8,"title":4},"191":{"body":10,"breadcrumbs":5,"title":1},"192":{"body":31,"breadcrumbs":5,"title":1},"193":{"body":76,"breadcrumbs":6,"title":2},"194":{"body":130,"breadcrumbs":2,"title":2},"195":{"body":190,"breadcrumbs":6,"title":6},"196":{"body":348,"breadcrumbs":2,"title":2},"197":{"body":30,"breadcrumbs":2,"title":2},"198":{"body":383,"breadcrumbs":3,"title":3},"199":{"body":596,"breadcrumbs":2,"title":2},"2":{"body":91,"breadcrumbs":1,"title":1},"20":{"body":0,"breadcrumbs":4,"title":2},"200":{"body":83,"breadcrumbs":2,"title":2},"21":{"body":106,"breadcrumbs":3,"title":1},"22":{"body":88,"breadcrumbs":3,"title":1},"23":{"body":13,"breadcrumbs":2,"title":2},"24":{"body":408,"breadcrumbs":4,"title":4},"25":{"body":11,"breadcrumbs":4,"title":2},"26":{"body":41,"breadcrumbs":4,"title":2},"27":{"body":42,"breadcrumbs":3,"title":1},"28":{"body":87,"breadcrumbs":4,"title":2},"29":{"body":26,"breadcrumbs":4,"title":2},"3":{"body":259,"breadcrumbs":3,"title":3},"30":{"body":31,"breadcrumbs":3,"title":1},"31":{"body":44,"breadcrumbs":5,"title":3},"32":{"body":28,"breadcrumbs":5,"title":3},"33":{"body":103,"breadcrumbs":2,"title":2},"34":{"body":47,"breadcrumbs":2,"title":2},"35":{"body":85,"breadcrumbs":1,"title":1},"36":{"body":51,"breadcrumbs":6,"title":6},"37":{"body":68,"breadcrumbs":5,"title":3},"38":{"body":59,"breadcrumbs":4,"title":2},"39":{"body":24,"breadcrumbs":4,"title":2},"4":{"body":28,"breadcrumbs":1,"title":1},"40":{"body":141,"breadcrumbs":4,"title":2},"41":{"body":57,"breadcrumbs":3,"title":1},"42":{"body":129,"breadcrumbs":5,"title":3},"43":{"body":54,"breadcrumbs":4,"title":2},"44":{"body":66,"breadcrumbs":4,"title":2},"45":{"body":136,"breadcrumbs":4,"title":2},"46":{"body":104,"breadcrumbs":4,"title":2},"47":{"body":168,"breadcrumbs":5,"title":3},"48":{"body":96,"breadcrumbs":3,"title":1},"49":{"body":43,"breadcrumbs":4,"title":2},"5":{"body":17,"breadcrumbs":2,"title":2},"50":{"body":57,"breadcrumbs":6,"title":4},"51":{"body":34,"breadcrumbs":6,"title":4},"52":{"body":110,"breadcrumbs":9,"title":7},"53":{"body":88,"breadcrumbs":5,"title":3},"54":{"body":59,"breadcrumbs":5,"title":3},"55":{"body":66,"breadcrumbs":4,"title":2},"56":{"body":131,"breadcrumbs":6,"title":4},"57":{"body":96,"breadcrumbs":5,"title":3},"58":{"body":59,"breadcrumbs":5,"title":3},"59":{"body":78,"breadcrumbs":4,"title":2},"6":{"body":26,"breadcrumbs":2,"title":2},"60":{"body":75,"breadcrumbs":4,"title":2},"61":{"body":61,"breadcrumbs":2,"title":2},"62":{"body":58,"breadcrumbs":4,"title":4},"63":{"body":82,"breadcrumbs":2,"title":2},"64":{"body":61,"breadcrumbs":6,"title":4},"65":{"body":161,"breadcrumbs":8,"title":6},"66":{"body":800,"breadcrumbs":5,"title":3},"67":{"body":45,"breadcrumbs":5,"title":3},"68":{"body":72,"breadcrumbs":4,"title":4},"69":{"body":102,"breadcrumbs":4,"title":2},"7":{"body":26,"breadcrumbs":3,"title":3},"70":{"body":76,"breadcrumbs":8,"title":6},"71":{"body":105,"breadcrumbs":7,"title":5},"72":{"body":288,"breadcrumbs":8,"title":6},"73":{"body":44,"breadcrumbs":6,"title":4},"74":{"body":42,"breadcrumbs":6,"title":4},"75":{"body":101,"breadcrumbs":7,"title":5},"76":{"body":98,"breadcrumbs":4,"title":2},"77":{"body":400,"breadcrumbs":5,"title":3},"78":{"body":93,"breadcrumbs":4,"title":2},"79":{"body":34,"breadcrumbs":5,"title":3},"8":{"body":7,"breadcrumbs":1,"title":1},"80":{"body":263,"breadcrumbs":8,"title":6},"81":{"body":413,"breadcrumbs":8,"title":6},"82":{"body":90,"breadcrumbs":4,"title":2},"83":{"body":127,"breadcrumbs":4,"title":2},"84":{"body":127,"breadcrumbs":4,"title":2},"85":{"body":58,"breadcrumbs":5,"title":3},"86":{"body":37,"breadcrumbs":4,"title":2},"87":{"body":95,"breadcrumbs":4,"title":2},"88":{"body":33,"breadcrumbs":4,"title":2},"89":{"body":86,"breadcrumbs":5,"title":3},"9":{"body":0,"breadcrumbs":1,"title":1},"90":{"body":42,"breadcrumbs":4,"title":4},"91":{"body":70,"breadcrumbs":2,"title":2},"92":{"body":525,"breadcrumbs":4,"title":4},"93":{"body":9,"breadcrumbs":4,"title":4},"94":{"body":9,"breadcrumbs":5,"title":5},"95":{"body":15,"breadcrumbs":4,"title":4},"96":{"body":15,"breadcrumbs":5,"title":5},"97":{"body":14,"breadcrumbs":4,"title":4},"98":{"body":14,"breadcrumbs":4,"title":4},"99":{"body":44,"breadcrumbs":4,"title":2}},"docs":{"0":{"body":"Xous is a microkernel operating system with processes, threads, and messages. It is designed to have an extremely small kernel that delegates as much as possible to userspace. This book describes the operating system kernel as well as the services that support normal operating system behavior. As this book is a work in progress, some chapters are placeholders and will appear blank. The book is written for two audiences: kernel maintainers, and application developers. Chapters 2 (Server Architecture) , 3 (Introducing the Kernel) , and 5 (System Startup) are primarily for kernel maintainers and system programmers. Chapters 1 (Getting Started) , 4 (Renode Emulation) , 6 (Build System Overview) , 7 (Messages) and 8 (Graphics) are more appropriate for application developers. Chapter 9 (PDDB) covers the Plausibly Deniable DataBase, and has sub-sections for both kernel and application developers.","breadcrumbs":"Introduction","id":"0","title":"Introduction"},"1":{"body":"Xous is a collection of small, single purpose Servers which respond to Messages . The Xous Kernel delivers Messages to Servers, allocates processing time to Servers, and transfers memory ownership from one Server to another. Every Xous Server contains a central loop that receives a Message, matches the Message Opcode , and runs the corresponding rust code. When the operation is completed, the Server waits to receive the next Message at the top of the loop, and processing capacity is released to other Servers. Every service available in Xous is implemented as a Server. Every user application in Xous is implemented as a Server. Architecturally, Xous is most similar to QNX , another microkernel message-passing OS.","breadcrumbs":"Architecture","id":"1","title":"Architecture"},"10":{"body":"What happens before boot? fills in the details of everything that happens before the first instruction gets run. \" Secure Boot \" and key ROM layout eFuse/BBRAM FPGA key FAQ","breadcrumbs":"Pre-Boot & Security","id":"10","title":"Pre-Boot & Security"},"100":{"body":"The cargo test subcommand accepts a --target flag, as well as the --no-run flag to prevent actually running the code. All we have to do is compile tests for our target, then run that executable on real hardware or in Renode: $ cargo test --target=riscv32imac-unknown-xous-elf --no-run Finished test [unoptimized + debuginfo] target(s) in 0.07s Executable unittests src/lib.rs (target/riscv32imac-unknown-xous-elf/debug/deps/gdbstub-7542e01db3053fd1)\n$ By running this, the build system has created an ELF executable that we can load onto real hardware. The easiest way to incorporate it into real hardware is to use the libstd-test target as part of core: $ cd ../xous-core/\n$ cargo xtask libstd-test ../gdbstub/target/riscv32imac-unknown-xous-elf/debug/deps/gdbstub-7542e01db3053fd1\n$ You can then run the resulting image in Renode or on real hardware Renode running Test","breadcrumbs":"Build System » Testing Crates on Xous","id":"100","title":"Testing Crates on Xous"},"101":{"body":"Xous image creation is primarily performed by the create-image program. This program bundles memory definitions, the kernel, and initial programs together and generates an image on-disk suitable for passing to the loader. You can run this program manually to see how it works: $ cargo run -p tools --bin create-image -- --help Finished dev [unoptimized + debuginfo] target(s) in 0.19s Running `target/debug/create-image --help`\nXous Image Creator 0.1.0\nSean Cross \nCreate a boot image for Xous USAGE: create-image [FLAGS] [OPTIONS]