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

1 line
18 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="621px" height="481px" viewBox="-0.5 -0.5 621 481" content="&lt;mxfile&gt;&lt;diagram id=&quot;SKV8PHPIui5c4Fc6kAOh&quot; name=&quot;Page-1&quot;&gt;5VnbcqM4EP0aV80+xMXFYPvRl1xcNalNbTI1M48ykkE1AlFC2PF+/bZAGLBIJpvYcS37YqRDC6TTraNuPHAX8fOtQGl0zzFhA8fCzwN3OXCcsePDrwL2JeBPRyUQCopLyK6BR/o30aCl0ZxikrUMJedM0rQNBjxJSCBbGBKC79pmG87ab01RSAzgMUDMRL9TLKMSnXhWjd8RGkbVm21L34lRZayBLEKY7xqQez1wF4JzWbbi5wVhiruKl3LczQt3DxMTJJFvGqBHZHJfLY5gWKvuciEjHvIEsesanUcyZnDThia8Rux/QMcaelX3Z/PeUvncOvT2hx6eKUdAF1MU8wSX4A1lTJuYS6nmynMR6Mk62vtIhERbTUpILaMxTC//lvCYwETAQBCGJN22XYp0ZIQHu5o8aGj+XuBy9FEuf8vJe+l+L5e2c2oyi6GwTLRvGKScJjJrPPlBAWCgBWPk6+2yr3TgKKqP7R3vNXtolDOo3XpYyps8rVnZIpbrFd8hgXdAL6CzdSYFCiTlCfS+oj0RcP2ySiQRGxSAbjkW3xTqVNhH9VAsgEKR/WHEUSNKEKNhAu2AqAcCACMkBW2a6RuSp4AKnieY4GrQOuMsl2QmAq2mBVr3VJBglEXFiFcjRr2OPL8aDPqu47W95lRe3NWa6VZY1NDLsfXxzegaLlo9Pqx6SuzUJHbcwevoBLyOTF5vH1Z/9oNY17kcsZ5J7LfZX089IXZ6OWJ9k9iVs+gHr8cH42fyOjZ4HQ6H/aDVc39P6+RMtNquweF/KiPX6fd5s8i3kjkxYnRJtjRQudayzLUGSvJ9BjOdryFP80PV+oJJwPOUQUxBdSh4DBcVlILtaRKa9nBFsYrdZJ2pi5HSqSnF8LwYmEMqM+xpimc75kaxu3bKoSL+iHenprLff+spsZPPE/bqK0uDVyIDtX/Vbx/YPc7zPpVds3j8StcCCaoqQ0OJ5nlGE5IpnWI8pMoNMkKq1s2zopRERSUZr2mCdMlZFJe40jkEQm48tlOgDgVqX8Wpo/z0Orzsn8LL/sVP8YChLKPBU0ST953ktmce5d6lTnLbrI+qby5XWUoCuin2RvuUPXxqoY2PL70I7VH7A5c77ojtc31asc3M/34B5671wxSatj96Qr7vDNv0jzqkxbbHldXJHWCmtaUDfv4/HHCg+zX6nXNFv5l1GqxmEUpVM8ihYpgLFPxS+jnfRVSSxxQVArsTKG1rfpvZUwTqMU+WyVMXTdMT0OSYSeRZaNowmt6djjLfuSBlZmZY7efIbpSaZvHJyuuNaYbptoJWR0pgUXU8rnPK8JWkscoFM8JIINGaFYkhSSFpKOpdq7DfQ25QpwOQBCRbKniiHtmYQ+ONhsPBCbLtzEwK/ossOOOgOMuEJyoP2kCicgRlEA5qKu7Sq3tPSpCWV471QtBw8PuGFclQRDEmSSt6rIbmidKTJ9l07QDqOpntaUcE2fa/DyHo1n8Vl/9j1f+3u9f/AA==&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><path d="M 410 250 L 410 240 Q 410 230 400 230 L 330 230 Q 320 230 320 223.85 L 320 217.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 320 210.71 L 323.5 214.21 L 320 217.71 L 316.5 214.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 440 250 L 440 100 Q 440 90 430 90 L 415 90 Q 405 90 405 80 L 405 67.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 405 60.71 L 408.5 64.21 L 405 67.71 L 401.5 64.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="230" y="250" 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: 257px; margin-left: 410px;"><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="410" y="269" 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="230" y="280" 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: 287px; margin-left: 265px;"><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="265" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">ISPI</text></switch></g><rect x="300" y="280" 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: 287px; margin-left: 335px;"><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="335" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">IGPIO</text></switch></g><rect x="370" y="280" 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: 287px; margin-left: 405px;"><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="405" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">IUART</text></switch></g><rect x="440" y="280" 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: 287px; margin-left: 475px;"><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="475" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">II2C</text></switch></g><rect x="510" y="280" 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: 287px; margin-left: 550px;"><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="550" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">...</text></switch></g><path d="M 320 110 L 320 95 Q 320 85 330 85 L 395 85 Q 405 85 405 76.35 L 405 67.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 405 60.71 L 408.5 64.21 L 405 67.71 L 401.5 64.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="230" y="110" 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: 117px; 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;">Device Drivers <br />(decoupled from underlying<br /> hardware driver implementation)</div></div></div></foreignObject><text x="320" y="129" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Device Drivers...</text></switch></g><rect x="230" y="170" 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: 177px; margin-left: 265px;"><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="265" y="189" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">IMU</text></switch></g><rect x="300" y="170" 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: 177px; margin-left: 335px;"><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="335" y="189" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">etc etc</text></switch></g><rect x="230" y="0" width="350" 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: 7px; margin-left: 405px;"><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="405" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Libraries...</text></switch></g><path d="M 405 360 L 405 326.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 405 321.12 L 407.33 328.12 L 405 326.37 L 402.67 328.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="225" y="360" 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: 367px; margin-left: 405px;"><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="405" y="379" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Hardware-specific implementations of interfaces</text></switch></g><rect x="242.5" y="400" 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: 407px; margin-left: 301px;"><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="301" y="419" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">MCU X...</text></switch></g><rect x="390" y="400" 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: 407px; margin-left: 450px;"><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="450" y="419" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">MCU Y...</text></switch></g><path d="M 210 390 L 205 390 Q 200 390 200 400 L 200 425 Q 200 435 195 435 L 192.5 435 Q 190 435 195 435 L 197.5 435 Q 200 435 200 445 L 200 470 Q 200 480 205 480 L 210 480" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 620 390 L 615 390 Q 610 390 610 400 L 610 425 Q 610 435 605 435 L 602.5 435 Q 600 435 605 435 L 607.5 435 Q 610 435 610 445 L 610 470 Q 610 480 615 480 L 620 480" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" transform="translate(610,0)scale(-1,1)translate(-610,0)" pointer-events="all"/><rect x="0" y="360" 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: 350px; margin-left: 3px;"><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="185" y="362" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="end">Implementation is build-time s...</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>