personal-website/assets/diagrams/hal_concept_with_board.drawio.svg
2023-10-27 11:44:15 -04:00

1 line
25 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="671px" height="691px" viewBox="-0.5 -0.5 671 691" content="&lt;mxfile&gt;&lt;diagram id=&quot;SKV8PHPIui5c4Fc6kAOh&quot; name=&quot;Page-1&quot;&gt;5VrZcqM4FP0aV6UfnDLg9dFLFld1alKTdHXnUQbZqCIQLYSX+fqRhGQWKYk7seMJ82LQtSTg3HuPLge1vGm0vaEgCe9IAHHL7QTbljdrua7TG/T5QVh2yjIYdXPLiqJA2QrDA/oHKmNHWTMUwLTSkRGCGUqqRp/EMfRZxQYoJZtqtyXB1asmYAUNw4MPsGn9iQIW5tZhr1PYbyFahfrKTkf9EwHdWRnSEARkUzJ5Vy1vSglh+Vm0nUIs0NO45OOuX/h3f2MUxuyQAZ66jzXAmXq4cZJg5AOGSMz/GE+mLbeP+WSTBeVnK3HWloAnbQzX0rVwC/1MDbiIAIovvn2zj0IxYghg7tGUtzBaUECRPKfwd4YoDKQ/qHBUkvDfLEXxypwLxQzSJfChHLmE/Hl9Oc2SkogfJgRQMdUMMKCfQuLNdtqJIYswP3P4bPyGVjE/96GYlhvWkDKOAR6rP/jDcislWRzAQA9apARnDI6pryJUWotWhzcDkIZyhGiYzlH+EpeD25JJOesGkggyuuNd9snTy4eo1Gm7OrQ2RSC6A2ULy0HYV0aggn+1n7yID36iQuSF+HIMGGHAU0M1CWUhWZEY4KvCOikBzR+c7n4JOC57uvlU/m+2VVjlrd2+FYxF3vJmgEBE4iA3XiNxq6+Dm5KM+upmXUUWgK6g6jXMTeIxXnUAhZjnxLrKAB/CsvtRLN/E5L1wvxdLxz02mHIof0ywK3VICE//tDTzvTAUSdLVoa6SZFTjwHr3wWvd+Ul+/cKp+wc5yM+uwbC3nJs2HFxBTIuUUeAr7vwOdlBQ38Vc05ugNLKUS5nsHxZDA8oBpOm3ZhCb26s6we2bvOb1Lbw2OAKteYaL5g/384YCOzKBta0X3SPg2jVxvbmf/9UMYD33fMD2TGB/jP9+bAiwo/MB2zeBnbsNqR3ry+Jn4jowcL28vGwGrD3vbViHJ4LV8QwMv1Q9rorv09aQh4Kp76ZBYOq8O3NB7nX/qCB3RyctyIcGF83gGkkpYZbX1C2xtNclh4sA+iRLcC5R5DKDIB+Kd1aJgh9BJDgqXqTiYJTu4pYiPl/EnSrlloaW8o5rEqJjY8S9TPaRLB6ZK/jdj4YCO/y8BVxLryVcIfMFtYjfJqBbr+c/E13vi+tqetE+7dpzcKyaksv3Qmk2eH0iNGaYSkGarJAIahYCsR5lqRRghILsk2iBYq2KS0km0KsG4LAZ01rpfi/rNITqPbcqRztmyuwX83LOHEWL7p89Z3wM0hT5jyGK35k3PTNveudKG/f8gH6MhCxgamnvDCRkajRa922nCfTRUjJNtQLcy72oJAA3gSjcbpUovIHJFCeTdx1Tfbib8pqw88vyYbHij4aA33cvq/B3LUTtOAPd6+gOMF+5cgc8/T8csIf7NfjdU0W/+UZkoJqGIBGnfsbfZicU+M+CQCebEDH4kADJsBsKkirhV5E9RqDWcbJ93LbANDoCTK75gnMSmJYYJbfHg6zvnhEys87W+Rw6JRnEFEZwfrw2uwVorU3zGhN0kFgeFxnCQZuhSFTWKcTQZ2CBZZkNE141SC2mI/vveHFQ1AO8CIjXiJJYTFm6h9IVDYdzJ7CqM1NGyTOcEkw448xiEosiaMkrlZop5eEgbsWb9YrWoyCkWdvtvBA0hPt9iWUlFKIggHElejolzqO5J4+SdNUAsq3Mjq2Gd5xjhNDIwPxL1Zy6vvwPiq5Op7rmn1d0tXxj13u0piReolVG92keL0nLG9s3kK0SROTreGWMraePif98WFcQC2BlVQ7ETS8IYVmiTbxQb0gV3q59qrIps/bNYzqWPpTr5nYAHQIWZ98CJcP/zsRmyElRsStDQ1xS30VgWb+tpeExJBTLPgLtEcu6bffIU9M84jjn9Ij5qmrbymojsQdZC8kSKR/x9v5b2bGsRgT7719KAZUCZn2i0lbdxU72lSpoed9wIwKhvtf2YLoc/nkk8Gax6ztfX4vN897Vvw==&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="185" y="0" width="270" height="160" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 7px; margin-left: 320px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Application ABC<br />- top-level execution (main())<br />- initializes libraries required for app using<br />interface references from Board Data ABC</div></div></div></foreignObject><text x="320" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Application ABC...</text></switch></g><path d="M 460 460 L 460 450 Q 460 440 450 440 L 380 440 Q 370 440 370 433.85 L 370 427.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 370 420.71 L 373.5 424.21 L 370 427.71 L 366.5 424.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 490 460 L 490 300 Q 490 290 495 290 L 497.5 290 Q 500 290 500 283.85 L 500 277.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 500 270.71 L 503.5 274.21 L 500 277.71 L 496.5 274.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="280" y="460" width="360" height="70" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 467px; margin-left: 460px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Hardware Abstraction Layer (Interfaces of core hardware drivers)</div></div></div></foreignObject><text x="460" y="479" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Hardware Abstraction Layer (Interfaces of core hardware driv...</text></switch></g><rect x="280" y="490" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 497px; margin-left: 315px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">ISPI</div></div></div></foreignObject><text x="315" y="509" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">ISPI</text></switch></g><rect x="350" y="490" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 497px; margin-left: 385px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">IGPIO</div></div></div></foreignObject><text x="385" y="509" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">IGPIO</text></switch></g><rect x="420" y="490" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 497px; margin-left: 455px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">IUART</div></div></div></foreignObject><text x="455" y="509" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">IUART</text></switch></g><rect x="490" y="490" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 497px; margin-left: 525px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">II2C</div></div></div></foreignObject><text x="525" y="509" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">II2C</text></switch></g><rect x="560" y="490" width="80" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 497px; margin-left: 600px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">...</div></div></div></foreignObject><text x="600" y="509" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">...</text></switch></g><path d="M 370 320 L 370 305 Q 370 295 380 295 L 490 295 Q 500 295 500 286.35 L 500 277.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 500 270.71 L 503.5 274.21 L 500 277.71 L 496.5 274.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 370 320 L 370 300 Q 370 290 360 290 L 330 290 Q 320 290 320 280 L 320 167.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 320 160.71 L 323.5 164.21 L 320 167.71 L 316.5 164.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="280" y="320" width="180" height="100" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 327px; margin-left: 370px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Device Drivers <br />(decoupled from underlying<br /> hardware driver implementation)</div></div></div></foreignObject><text x="370" y="339" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Device Drivers...</text></switch></g><rect x="280" y="380" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 387px; margin-left: 315px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">IMU</div></div></div></foreignObject><text x="315" y="399" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">IMU</text></switch></g><rect x="350" y="380" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 387px; margin-left: 385px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">etc etc</div></div></div></foreignObject><text x="385" y="399" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">etc etc</text></switch></g><path d="M 500 210 L 500 195 Q 500 185 490 185 L 330 185 Q 320 185 320 176.35 L 320 167.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 320 160.71 L 323.5 164.21 L 320 167.71 L 316.5 164.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="355" y="210" width="290" height="60" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 217px; margin-left: 500px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Libraries<br />(Business logic that uses a combination of device and<br />hardware driver interfaces)</div></div></div></foreignObject><text x="500" y="229" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Libraries...</text></switch></g><path d="M 455 570 L 455 536.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 455 531.12 L 457.33 538.12 L 455 536.37 L 452.67 538.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 275 605 L 145 605 Q 135 605 135 595 L 135 432.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 135 425.71 L 138.5 429.21 L 135 432.71 L 131.5 429.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="275" y="570" width="360" height="70" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 577px; margin-left: 455px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Hardware-specific implementations of interfaces</div></div></div></foreignObject><text x="455" y="589" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Hardware-specific implementations of interfaces</text></switch></g><rect x="292.5" y="610" width="117.5" height="70" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 617px; margin-left: 351px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">MCU X<br />implementation</div></div></div></foreignObject><text x="351" y="629" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">MCU X...</text></switch></g><rect x="440" y="610" width="120" height="70" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 617px; margin-left: 500px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">MCU Y<br />implementation</div></div></div></foreignObject><text x="500" y="629" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">MCU Y...</text></switch></g><path d="M 260 600 L 255 600 Q 250 600 250 610 L 250 635 Q 250 645 245 645 L 242.5 645 Q 240 645 245 645 L 247.5 645 Q 250 645 250 655 L 250 680 Q 250 690 255 690 L 260 690" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 670 600 L 665 600 Q 660 600 660 610 L 660 635 Q 660 645 655 645 L 652.5 645 Q 650 645 655 645 L 657.5 645 Q 660 645 660 655 L 660 680 Q 660 690 665 690 L 670 690" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" transform="translate(660,0)scale(-1,1)translate(-660,0)" pointer-events="all"/><rect x="50" y="570" width="190" height="110" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-end; width: 182px; height: 1px; padding-top: 560px; margin-left: 53px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: right; max-height: 120px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><h1><br /></h1><div>Implementation is build-time selectable depending on your target environment</div></div></div></div></foreignObject><text x="235" y="572" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="end">Implementation is build-time s...</text></switch></g><path d="M 135 320 L 135 300 Q 135 290 145 290 L 310 290 Q 320 290 320 280 L 320 167.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 320 160.71 L 323.5 164.21 L 320 167.71 L 316.5 164.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="320" width="270" height="105" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 327px; margin-left: 135px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Board Configuration info:<br />- gpio configuration<br />- clock configuration<br />- any special bootup specifics</div></div></div></foreignObject><text x="135" y="339" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Board Configuration info:...</text></switch></g><rect x="10" y="400" width="120" height="60" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 407px; margin-left: 70px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Board A<br />Has "MCU X"</div></div></div></foreignObject><text x="70" y="419" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Board A...</text></switch></g><rect x="140" y="400" width="120" height="60" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 407px; margin-left: 200px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Board B<br />Has "MCU Y"</div></div></div></foreignObject><text x="200" y="419" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Board B...</text></switch></g><rect x="185" y="80" width="270" height="80" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 87px; margin-left: 320px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Board Data ABC<br />- Selects board<br />- initializes board-specific drivers that are<br />required by the application</div></div></div></foreignObject><text x="320" y="99" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Board Data ABC...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>