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

1 line
25 KiB
XML
Raw 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>