Difference between revisions of "Beagleboard:BeagleBone cape interface spec"
(Add I2C clock vs data) |
(→CAN) |
||
(17 intermediate revisions by 4 users not shown) | |||
Line 2: | Line 2: | ||
This is a list of symlink interfaces based on BeagleBone Cape header pins.<ref>[https://docs.google.com/spreadsheets/d/1fE-AsDZvJ-bBwzNBj1_sPDrutvEvsmARqFwvbw_HkrE/edit?usp=sharing Google drive with summary of expansion signals on various BeagleBoard.org designs]</ref><ref>[https://dev.ti.com/pinmux TI Pinmux Helper]</ref><ref>[[Beagleboard:Cape Expansion Headers]]</ref> | This is a list of symlink interfaces based on BeagleBone Cape header pins.<ref>[https://docs.google.com/spreadsheets/d/1fE-AsDZvJ-bBwzNBj1_sPDrutvEvsmARqFwvbw_HkrE/edit?usp=sharing Google drive with summary of expansion signals on various BeagleBoard.org designs]</ref><ref>[https://dev.ti.com/pinmux TI Pinmux Helper]</ref><ref>[[Beagleboard:Cape Expansion Headers]]</ref> | ||
+ | |||
+ | Below, when mentioning "Black", this is true for all AM3358-based BeagleBone boards. "AI" is AM5729-based. "AI-64" is TDA4VM-based. | ||
= Overall = | = Overall = | ||
Line 13: | Line 15: | ||
! Functions !! odd !! even !! Functions !! !! Functions !! odd !! even !! Functions | ! Functions !! odd !! even !! Functions !! !! Functions !! odd !! even !! Functions | ||
|- | |- | ||
− | | USB D+ | + | | USB D+ || E1 || E2 || USB D- || || - || - || - || - |
|- | |- | ||
− | | 5V OUT | + | | 5V OUT || E3 || E4 || GND || || - || - || - || - |
|- | |- | ||
− | | GND | + | | GND || 1 || 2 || GND || || GND || 1 || 2 || GND |
|- | |- | ||
− | | 3V3 OUT | + | | 3V3 OUT || 3 || 4 || 3V3 OUT || || D M || 3 || 4 || D M |
|- | |- | ||
− | | 5V IN | + | | 5V IN || 5 || 6 || 5V IN || || D M || 5 || 6 || D M |
|- | |- | ||
− | | 5V OUT | + | | 5V OUT || 7 || 8 || 5V OUT || || C2r D || 7 || 8 || C2t D |
|- | |- | ||
− | | PWR BUT | + | | PWR BUT || 9 || 10 || RESET || || D || 9 || 10 || D |
|- | |- | ||
− | | D | + | | D U4r || 11 || 12 || D || || D P0o || 11 || 12 || D Q2a P0o |
|- | |- | ||
− | | D | + | | D U4t || 13 || 14 || D E1a || || D E2b || 13 || 14 || D |
|- | |- | ||
− | | D | + | | D || 15 || 16 || D E1b || || D P0i || 15 || 16 || D P0i |
|- | |- | ||
− | | D I1c | + | | D I1c S00 || 17 || 18 || D I1d S0o || || D || 17 || 18 || D |
|- | |- | ||
− | | | + | | C0r D I2c || 19 || 20 || C0t D I2d || || D E2a || 19 || 20 || D M P1 |
|- | |- | ||
− | | D E0b | + | | D E0b S0i U2t || 21 || 22 || D E0a S0c U2r || || D M P1 || 21 || 22 || D M Q2b |
|- | |- | ||
− | | D || 23 | + | | D S01 || 23 || 24 || C1r D I3c U1t || || D M || 23 || 24 || D M |
|- | |- | ||
− | | D P0 | + | | D P0 || 25 || 26 || C1t D I3d U1r || || D M || 25 || 26 || D |
|- | |- | ||
− | | D P0 Q0b | + | | D P0 Q0b || 27 || 28 || D P0 S10 || || D L P1 || 27 || 28 || D L P1 |
|- | |- | ||
− | | D E | + | | D E S1i P0 || 29 || 30 || D P0 S1o || || D L P1 || 29 || 30 || D L P1 |
|- | |- | ||
− | | D E | + | | D E S1c P0 || 31 || 32 || ADC VDD || || D L || 31 || 32 || D L |
|- | |- | ||
− | | A4 | + | | A4 || 33 || 34 || ADC GND || || D L Q1b || 33 || 34 || D E L |
− | |- | + | |- |
− | | A6 | + | | A6 || 35 || 36 || A5 || || D L Q1a || 35 || 36 || D E L |
|- | |- | ||
− | | A2 | + | | A2 || 37 || 38 || A3 || || D L U5t || 37 || 38 || D L U5r |
|- | |- | ||
− | | A0 | + | | A0 || 39 || 40 || A1 || || D L P1 || 39 || 40 || D L P1 |
|- | |- | ||
− | | D | + | | D P0 || 41 || 42 || D Q0a S11 U3t P0 || || D L P1 || 41 || 42 || D L P1 |
|- | |- | ||
− | | GND | + | | GND || 43 || 44 || GND || || D L P1 || 43 || 44 || D L P1 |
|- | |- | ||
− | | GND | + | | GND || 45 || 46 || GND || || D E L P1 || 45 || 46 || D E L P1 |
|} | |} | ||
Line 78: | Line 80: | ||
= LEDs = | = LEDs = | ||
− | The compatibility layer comes with simple reference nodes for attaching LEDs to any gpio pin. The format followed for these nodes is '''led_P8_## / led_P9_##'''. The '''gpio-leds''' driver is used by these reference nodes internally and allows users to easily create compatible led nodes in overlays for | + | The compatibility layer comes with simple reference nodes for attaching LEDs to any gpio pin. The format followed for these nodes is '''led_P8_## / led_P9_##'''. The '''gpio-leds''' driver is used by these reference nodes internally and allows users to easily create compatible led nodes in overlays for Black, AI and AI-64. For the definitions, you can see [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L16 bbai-bone-buses.dtsi#L16] & [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L16 bbb-bone-buses.dtsi#L16]. |
== Example overlays == | == Example overlays == | ||
Line 102: | Line 104: | ||
|+ Bone LEDs | |+ Bone LEDs | ||
|- | |- | ||
− | ! LED !! Header pin !! | + | ! LED !! Header pin !! Black !! AI !! AI-64 |
|- | |- | ||
! /sys/class/leds/led_P8_03 | ! /sys/class/leds/led_P8_03 | ||
Line 341: | Line 343: | ||
= I2C = | = I2C = | ||
− | Compatibility layer provides simple I2C bone bus nodes for creating compatible overlays for | + | Compatibility layer provides simple I2C bone bus nodes for creating compatible overlays for Black, AI and AI-64. The format followed for these nodes is '''bone_i2c_#'''. For the definitions, you can see [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L388 bbai-bone-buses.dtsi#L388] & [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L403 bbb-bone-buses.dtsi#L403]. |
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
|+ Bone bus I2C | |+ Bone bus I2C | ||
|- | |- | ||
− | ! SYSFS !! DT symbol !! | + | ! SYSFS !! DT symbol !! Black !! AI !! AI-64 !! SCL !! SDA !! Overlay |
|- | |- | ||
! /dev/bone/i2c/0 !! bone_i2c_0 | ! /dev/bone/i2c/0 !! bone_i2c_0 | ||
Line 359: | Line 361: | ||
|- | |- | ||
!/dev/bone/i2c/2 !! bone_i2c_2 | !/dev/bone/i2c/2 !! bone_i2c_2 | ||
− | | I2C2 || I2C4 || | + | | I2C2 || I2C4 || MAIN_I2C2 || P9.19 || P9.20 |
| [https://github.com/lorforlinux/bb.org-overlays/blob/bone_i2c/src/arm/BONE-I2C2.dts BONE-I2C2.dts] | | [https://github.com/lorforlinux/bb.org-overlays/blob/bone_i2c/src/arm/BONE-I2C2.dts BONE-I2C2.dts] | ||
|- | |- | ||
Line 376: | Line 378: | ||
= SPI = | = SPI = | ||
− | SPI bone bus nodes allow creating compatible overlays for | + | SPI bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L406 bbai-bone-buses.dtsi#L406] & [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L423 bbb-bone-buses.dtsi#L423]. |
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
|+ Bone bus SPI | |+ Bone bus SPI | ||
|- | |- | ||
− | ! Bone bus !! DT symbol !! | + | ! Bone bus !! DT symbol !! Black !! AI !! AI-64 !! SDO !! SDI !! CLK !! CS !! Overlay |
|- | |- | ||
!/dev/bone/spi/0.''x'' | !/dev/bone/spi/0.''x'' | ||
Line 396: | Line 398: | ||
!/dev/bone/spi/1.''x'' | !/dev/bone/spi/1.''x'' | ||
!bone_spi_1 | !bone_spi_1 | ||
− | | SPI1 || SPI3 || | + | | SPI1 || SPI3 || MAIN_SPI7 || P9.30 || P9.29 || P9.31 |
| | | | ||
* P9.28 (CS0) | * P9.28 (CS0) | ||
Line 405: | Line 407: | ||
|- | |- | ||
|} | |} | ||
− | |||
= UART = | = UART = | ||
− | UART bone bus nodes allow creating compatible overlays for | + | UART bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L367 bbai-bone-buses.dtsi#L367] & [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L382 bbb-bone-buses.dtsi#L382]. |
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
|+ Bone bus UART | |+ Bone bus UART | ||
|- | |- | ||
− | ! Bone bus !! | + | ! Bone bus !! Black !! AI !! AI-64 !! TX !! RX !! RTSn !! CTSn !! Overlays |
|- | |- | ||
! /dev/bone/uart/0 | ! /dev/bone/uart/0 | ||
Line 431: | Line 432: | ||
|- | |- | ||
! /dev/bone/uart/2 | ! /dev/bone/uart/2 | ||
− | | UART2 || UART3 || | + | | UART2 || UART3 || - || P9.21 || P9.22 |
| | | | ||
* P8.38 (N/A on AM5729) | * P8.38 (N/A on AM5729) | ||
Line 441: | Line 442: | ||
|- | |- | ||
! /dev/bone/uart/3 | ! /dev/bone/uart/3 | ||
− | | UART3 || | + | | UART3 || - || - || P9.42 || ⌠|
− | | | + | | - |
− | | | + | | - |
| [https://github.com/lorforlinux/bb.org-overlays/blob/bone_uart/src/arm/BONE-UART3.dts BONE-UART3.dts] | | [https://github.com/lorforlinux/bb.org-overlays/blob/bone_uart/src/arm/BONE-UART3.dts BONE-UART3.dts] | ||
|- | |- | ||
Line 449: | Line 450: | ||
|- | |- | ||
! /dev/bone/uart/4 | ! /dev/bone/uart/4 | ||
− | | UART4 || UART5 || | + | | UART4 || UART5 || MAIN_UART0 (console) || P9.13 || P9.11 |
| | | | ||
* P8.33 (N/A on AM5729) | * P8.33 (N/A on AM5729) | ||
Line 469: | Line 470: | ||
= CAN = | = CAN = | ||
− | CAN bone bus nodes allow creating compatible overlays for | + | CAN bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L440 bbai-bone-buses.dtsi#L440] & [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L457 bbb-bone-buses.dtsi#L457]. |
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
Line 475: | Line 476: | ||
|- | |- | ||
<!-- ! Bone bus! --> | <!-- ! Bone bus! --> | ||
− | ! | + | ! Bone bus !! Black !! AI !! AI-64 !! TX !! RX !! Overlays |
|- | |- | ||
− | + | | /dev/bone/can/0 | |
− | | CAN0 || | + | | CAN0 || - || MAIN_MCAN0 || P9.20 || P9.19 |
| [https://github.com/lorforlinux/bb.org-overlays/blob/bone_can/src/arm/BONE-CAN0.dts BONE-CAN0.dts] | | [https://github.com/lorforlinux/bb.org-overlays/blob/bone_can/src/arm/BONE-CAN0.dts BONE-CAN0.dts] | ||
|- | |- | ||
− | + | | /dev/bone/can/1 | |
− | | | + | | CAN1 || CAN2 || TBD || P9.26 || P9.24 |
− | |||
− | | CAN1 || CAN2 || | ||
| [https://github.com/lorforlinux/bb.org-overlays/blob/bone_can/src/arm/BONE-CAN1.dts BONE-CAN1.dts] | | [https://github.com/lorforlinux/bb.org-overlays/blob/bone_can/src/arm/BONE-CAN1.dts BONE-CAN1.dts] | ||
|- | |- | ||
− | + | | /dev/bone/can/2 | |
− | | | + | | - || CAN1 (rev A2 and later) || TBD || P8.8 || P8.7 |
− | |||
− | | | ||
− | |||
− | |||
− | |||
|} | |} | ||
Line 527: | Line 521: | ||
|+ Bone ADC | |+ Bone ADC | ||
|- | |- | ||
− | ! | + | ! Black !! AI !! AI-64 !! overlay |
|- | |- | ||
− | | Internal || External (STMPE811) | + | | Internal || External (STMPE811) || TBD |
| [https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BONE-ADC.dts BONE-ADC.dts] | | [https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BONE-ADC.dts BONE-ADC.dts] | ||
|} | |} | ||
Line 535: | Line 529: | ||
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
|- | |- | ||
− | ! Index !! Header pin !! | + | ! Index !! Header pin !! Black/AI-64 !! AI |
|- | |- | ||
! 0 | ! 0 | ||
Line 575: | Line 569: | ||
= PWM = | = PWM = | ||
− | PWM bone bus nodes allow creating compatible overlays for | + | PWM bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L415 bbai-bone-buses.dtsi#L415] & [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L432 bbb-bone-buses.dtsi#L432] |
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
|+ Bone bus PWM | |+ Bone bus PWM | ||
|- | |- | ||
− | ! Bone bus !! | + | ! Bone bus !! Black !! AI !! AI-64 !! A !! B !! Overlay |
|- | |- | ||
!/dev/bone/pwm/0 | !/dev/bone/pwm/0 | ||
− | | PWM0 || | + | | PWM0 || - || PWM1 || P9.22 || P9.21 |
| [https://github.com/lorforlinux/bb.org-overlays/blob/bone_pwm/src/arm/BONE-PWM0.dts BONE-PWM0.dts] | | [https://github.com/lorforlinux/bb.org-overlays/blob/bone_pwm/src/arm/BONE-PWM0.dts BONE-PWM0.dts] | ||
|- | |- | ||
Line 588: | Line 582: | ||
|- | |- | ||
!/dev/bone/pwm/1 | !/dev/bone/pwm/1 | ||
− | | PWM1 || PWM3 || P9.14 || P9.16 | + | | PWM1 || PWM3 || PWM2 || P9.14 || P9.16 |
| [https://github.com/lorforlinux/bb.org-overlays/blob/bone_pwm/src/arm/BONE-PWM1.dts BONE-PWM1.dts] | | [https://github.com/lorforlinux/bb.org-overlays/blob/bone_pwm/src/arm/BONE-PWM1.dts BONE-PWM1.dts] | ||
|- | |- | ||
Line 594: | Line 588: | ||
|- | |- | ||
!/dev/bone/pwm/2 | !/dev/bone/pwm/2 | ||
− | | PWM2 || PWM2 || P8.19 || P8.13 | + | | PWM2 || PWM2 || PWM0 || P8.19 || P8.13 |
| [https://github.com/lorforlinux/bb.org-overlays/blob/bone_pwm/src/arm/BONE-PWM2.dts BONE-PWM2.dts] | | [https://github.com/lorforlinux/bb.org-overlays/blob/bone_pwm/src/arm/BONE-PWM2.dts BONE-PWM2.dts] | ||
|- | |- | ||
Line 601: | Line 595: | ||
= TIMER PWM= | = TIMER PWM= | ||
− | TIMER PWM bone bus uses ti,omap-dmtimer-pwm driver, and timer nodes that allow creating compatible overlays for | + | TIMER PWM bone bus uses ti,omap-dmtimer-pwm driver, and timer nodes that allow creating compatible overlays for Black, AI and AI-64. For the timer node definitions, you can see [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L449 bbai-bone-buses.dtsi#L449] & [https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L466 bbb-bone-buses.dtsi#L466]. |
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
|+ Bone TIMER PWMs | |+ Bone TIMER PWMs | ||
|- | |- | ||
− | ! Bone bus !! Header pin !! | + | ! Bone bus !! Header pin !! Black !! AI !! overlay |
|- | |- | ||
! /sys/bus/platform/devices/bone_timer_pwm_0/ | ! /sys/bus/platform/devices/bone_timer_pwm_0/ | ||
Line 621: | Line 615: | ||
|- | |- | ||
! /sys/bus/platform/devices/bone_timer_pwm_3/ | ! /sys/bus/platform/devices/bone_timer_pwm_3/ | ||
− | | P9.21 || | + | | P9.21 || - || timer13 |
| [https://github.com/lorforlinux/bb.org-overlays/blob/bone_timer/src/arm/BONE-TIMER_PWM_3.dts BONE-TIMER_PWM_3.dts] | | [https://github.com/lorforlinux/bb.org-overlays/blob/bone_timer/src/arm/BONE-TIMER_PWM_3.dts BONE-TIMER_PWM_3.dts] | ||
|- | |- | ||
Line 629: | Line 623: | ||
|- | |- | ||
! /sys/bus/platform/devices/bone_timer_pwm_5/ | ! /sys/bus/platform/devices/bone_timer_pwm_5/ | ||
− | | P9.22 || | + | | P9.22 || - || timer15 |
| [https://github.com/lorforlinux/bb.org-overlays/blob/bone_timer/src/arm/BONE-TIMER_PWM_5.dts BONE-TIMER_PWM_5.dts] | | [https://github.com/lorforlinux/bb.org-overlays/blob/bone_timer/src/arm/BONE-TIMER_PWM_5.dts BONE-TIMER_PWM_5.dts] | ||
|- | |- | ||
Line 635: | Line 629: | ||
= eCAP = | = eCAP = | ||
+ | |||
+ | #TODO: This doesn't include any abstraction yet. | ||
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
− | |+ | + | |+ Black eCAP PWMs |
|- | |- | ||
! Bone bus !! Header pin !! peripheral !! overlay | ! Bone bus !! Header pin !! peripheral !! overlay | ||
Line 652: | Line 648: | ||
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
− | |+ | + | |+ AI eCAP PWMs |
|- | |- | ||
! Bone bus !! Header pin !! peripheral !! overlay | ! Bone bus !! Header pin !! peripheral !! overlay | ||
Line 750: | Line 746: | ||
|+ Bone eMMC | |+ Bone eMMC | ||
|- | |- | ||
− | ! | + | ! Black !! AI !! overlay |
|- | |- | ||
| MMC2 || MMC3 || [https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BONE-eMMC.dts BONE-eMMC.dts] | | MMC2 || MMC3 || [https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BONE-eMMC.dts BONE-eMMC.dts] | ||
Line 802: | Line 798: | ||
|+ 16bit LCD interface | |+ 16bit LCD interface | ||
|- | |- | ||
− | ! | + | ! Black !! AI !! overlay |
|- | |- | ||
| lcdc || dss || | | lcdc || dss || | ||
Line 861: | Line 857: | ||
|+ Bone eQEP | |+ Bone eQEP | ||
|- | |- | ||
− | ! Bone bus !! | + | ! Bone bus !! Black !! AI !! AI-64 !! A !! B !! strobe !! index !! overlay |
|- | |- | ||
− | ! /dev/bone/ | + | ! /dev/bone/counter/0 |
| eQEP0 || eQEP2 || eQEP0 || P9.42 || P9.27 | | eQEP0 || eQEP2 || eQEP0 || P9.42 || P9.27 | ||
|| | || | ||
− | * | + | * Black/AI-64: P9.25 |
− | * | + | * AI: P8.06 |
|| | || | ||
− | * | + | * Black/AI-64: P9.41 |
− | * | + | * AI: P8.05 |
| | | | ||
|- | |- | ||
|- | |- | ||
− | ! /dev/bone/ | + | ! /dev/bone/counter/1 |
| eQEP1 || eQEP0 || eQEP1 || P8.35 || P8.33 | | eQEP1 || eQEP0 || eQEP1 || P8.35 || P8.33 | ||
|| | || | ||
− | * | + | * Black/AI-64: P8.32 |
− | * | + | * AI: P9.21 |
|| | || | ||
− | * | + | * Black/AI-64: P8.31 |
− | * | + | * AI: ‒ |
| | | | ||
|- | |- | ||
|- | |- | ||
− | ! /dev/bone/ | + | ! /dev/bone/counter/2 |
| eQEP2 || eQEP1 || ‒ || P8.12 || P8.22 | | eQEP2 || eQEP1 || ‒ || P8.12 || P8.22 | ||
|| | || | ||
− | * | + | * Black: P8.15 |
− | * | + | * AI: P8.18 |
|| | || | ||
− | * | + | * Black: P8.16 |
− | * | + | * AI: P9.15 |
|} | |} | ||
Line 952: | Line 948: | ||
|+ Bone McASP0 | |+ Bone McASP0 | ||
|- | |- | ||
− | ! | + | ! Black !! AI !! overlay |
|- | |- | ||
| McASP0 || McASP1 || | | McASP0 || McASP1 || | ||
Line 969: | Line 965: | ||
|- | |- | ||
| P9.28 || | | P9.28 || | ||
− | * | + | * Black: axr2 |
− | * | + | * AI: axr9 |
|- | |- | ||
| P9.29 || fsx | | P9.29 || fsx | ||
|- | |- | ||
| P9.30 || | | P9.30 || | ||
− | * | + | * Black: axr0 |
− | * | + | * AI: axr10 |
|- | |- | ||
| P9.31 || aclkx | | P9.31 || aclkx | ||
Line 991: | Line 987: | ||
|+ Bone PRU eCAP | |+ Bone PRU eCAP | ||
|- | |- | ||
− | ! Header Pin !! | + | ! Header Pin !! Black !! AI |
|- | |- | ||
| P8.15 || pr1_ecap0 || pr1_ecap0 | | P8.15 || pr1_ecap0 || pr1_ecap0 | ||
|- | |- | ||
− | | P8.32 || | + | | P8.32 || - || pr2_ecap0 |
|- | |- | ||
− | | P9.42 || pr1_ecap0 || | + | | P9.42 || pr1_ecap0 || - |
|- | |- | ||
|} | |} | ||
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
− | |+ | + | |+ AI PRU UART |
|- | |- | ||
! UART || TX !! RX !! RTSn !! CTSn !! Overlays | ! UART || TX !! RX !! RTSn !! CTSn !! Overlays | ||
Line 1,021: | Line 1,017: | ||
|+ Bone PRU | |+ Bone PRU | ||
|- | |- | ||
− | ! Header Pin !! | + | ! Header Pin !! Black !! AI |
|- | |- | ||
− | | P8.03 || | + | | P8.03 || - || pr2_pru0 10 |
|- | |- | ||
− | | P8.04 || | + | | P8.04 || - || pr2_pru0 11 |
|- | |- | ||
− | | P8.05 || | + | | P8.05 || - || pr2_pru0 06 |
|- | |- | ||
− | | P8.06 || | + | | P8.06 || - || pr2_pru0 07 |
|- | |- | ||
− | | P8.07 || | + | | P8.07 || - || pr2_pru1 16 |
|- | |- | ||
− | | P8.08 || | + | | P8.08 || - || pr2_pru0 20 |
|- | |- | ||
− | | P8.09 || | + | | P8.09 || - || pr2_pru1 06 |
|- | |- | ||
− | | P8.10 || | + | | P8.10 || - || pr2_pru1 15 |
|- | |- | ||
| P8.11 || pr1_pru0 15 (Out) || pr1_pru0 04 | | P8.11 || pr1_pru0 15 (Out) || pr1_pru0 04 | ||
Line 1,043: | Line 1,039: | ||
| P8.12 || pr1_pru0 14 (Out) || pr1_pru0 03 | | P8.12 || pr1_pru0 14 (Out) || pr1_pru0 03 | ||
|- | |- | ||
− | | P8.13 || | + | | P8.13 || - || pr1_pru1 07 |
|- | |- | ||
− | | P8.14 || | + | | P8.14 || - || pr1_pru1 09 |
|- | |- | ||
| P8.15 || pr1_pru0 15 (In) || pr1_pru1 16 | | P8.15 || pr1_pru0 15 (In) || pr1_pru1 16 | ||
Line 1,051: | Line 1,047: | ||
| P8.16 || pr1_pru0 14 (In) || pr1_pru1 18 | | P8.16 || pr1_pru0 14 (In) || pr1_pru1 18 | ||
|- | |- | ||
− | | P8.17 || | + | | P8.17 || - || pr2_pru0 15 |
|- | |- | ||
− | | P8.18 || | + | | P8.18 || - || pr1_pru1 05 |
|- | |- | ||
− | | P8.19 || | + | | P8.19 || - || pr1_pru1 06 |
|- | |- | ||
− | | P8.20 || | + | | P8.20 || - || pr2_pru0 03 |
|- | |- | ||
− | | P8.21 || | + | | P8.21 || - || pr2_pru0 02 |
|- | |- | ||
− | | P8.22 || | + | | P8.22 || - || pr2_pru0 09 |
|- | |- | ||
− | | P8.23 || | + | | P8.23 || - || pr2_pru0 08 |
|- | |- | ||
− | | P8.24 || | + | | P8.24 || - || pr2_pru0 05 |
|- | |- | ||
− | | P8.25 || | + | | P8.25 || - || pr2_pru0 04 |
|- | |- | ||
− | | P8.26 || | + | | P8.26 || - || pr1_pru1 17 |
|- | |- | ||
− | | P8.27 || | + | | P8.27 || - || pr2_pru1 17 |
|- | |- | ||
− | | P8.28 || | + | | P8.28 || - || pr2_pru0 17 |
|- | |- | ||
− | | P8.29 || | + | | P8.29 || - || pr2_pru0 18 |
|- | |- | ||
− | | P8.30 || | + | | P8.30 || - || pr2_pru0 19 |
|- | |- | ||
− | | P8.31 || | + | | P8.31 || - || pr2_pru0 11 |
|- | |- | ||
− | | P8.32 || | + | | P8.32 || - || pr2_pru1 00 |
|- | |- | ||
− | | P8.33 || | + | | P8.33 || - || pr2_pru0 10 |
|- | |- | ||
− | | P8.34 || | + | | P8.34 || - || pr2_pru0 08 |
|- | |- | ||
− | | P8.35 || | + | | P8.35 || - || pr2_pru0 09 |
|- | |- | ||
− | | P8.36 || | + | | P8.36 || - || pr2_pru0 07 |
|- | |- | ||
− | | P8.37 || | + | | P8.37 || - || pr2_pru0 05 |
|- | |- | ||
− | | P8.38 || | + | | P8.38 || - || pr2_pru0 06 |
|- | |- | ||
− | | P8.39 || | + | | P8.39 || - || pr2_pru0 03 |
|- | |- | ||
− | | P8.40 || | + | | P8.40 || - || pr2_pru0 04 |
|- | |- | ||
− | | P8.41 || | + | | P8.41 || - || pr2_pru0 01 |
|- | |- | ||
− | | P8.42 || | + | | P8.42 || - || pr2_pru0 02 |
|- | |- | ||
− | | P8.43 || | + | | P8.43 || - || pr2_pru1 20 |
|- | |- | ||
− | | P8.44 || | + | | P8.44 || - || pr2_pru0 00 |
|- | |- | ||
− | | P8.45 || | + | | P8.45 || - || pr2_pru1 18 |
|- | |- | ||
− | | P8.46 || | + | | P8.46 || - || pr2_pru1 19 |
|- | |- | ||
− | | P9.11 || | + | | P9.11 || - || pr2_pru0 14 |
|- | |- | ||
− | | P9.13 || | + | | P9.13 || - || pr2_pru0 15 |
|- | |- | ||
− | | P9.14 || | + | | P9.14 || - || pr1_pru1 14 |
|- | |- | ||
− | | P9.15 || | + | | P9.15 || - || pr1_pru0 5 |
|- | |- | ||
− | | P9.16 || | + | | P9.16 || - || pr1_pru1 15 |
|- | |- | ||
− | | P9.17 || | + | | P9.17 || - || pr2_pru1 09 |
|- | |- | ||
− | | P9.18 || | + | | P9.18 || - || pr2_pru1 08 |
|- | |- | ||
− | | P9.19 || | + | | P9.19 || - || pr1_pru1 02 |
|- | |- | ||
− | | P9.20 || | + | | P9.20 || - || pr1_pru1 01 |
|- | |- | ||
− | | P9.24 || pr1_pru0 16 (In) || | + | | P9.24 || pr1_pru0 16 (In) || - |
|- | |- | ||
| P9.25 || pr1_pru0 07 || pr2_pru1 05 | | P9.25 || pr1_pru0 07 || pr2_pru1 05 |
Revision as of 11:32, 29 July 2022
See the blog post on BeagleBoard.org for an introduction.[1]
This is a list of symlink interfaces based on BeagleBone Cape header pins.[2][3][4]
Below, when mentioning "Black", this is true for all AM3358-based BeagleBone boards. "AI" is AM5729-based. "AI-64" is TDA4VM-based.
Contents
Overall
P9 | P8 | |||||||
---|---|---|---|---|---|---|---|---|
Functions | odd | even | Functions | Functions | odd | even | Functions | |
USB D+ | E1 | E2 | USB D- | - | - | - | - | |
5V OUT | E3 | E4 | GND | - | - | - | - | |
GND | 1 | 2 | GND | GND | 1 | 2 | GND | |
3V3 OUT | 3 | 4 | 3V3 OUT | D M | 3 | 4 | D M | |
5V IN | 5 | 6 | 5V IN | D M | 5 | 6 | D M | |
5V OUT | 7 | 8 | 5V OUT | C2r D | 7 | 8 | C2t D | |
PWR BUT | 9 | 10 | RESET | D | 9 | 10 | D | |
D U4r | 11 | 12 | D | D P0o | 11 | 12 | D Q2a P0o | |
D U4t | 13 | 14 | D E1a | D E2b | 13 | 14 | D | |
D | 15 | 16 | D E1b | D P0i | 15 | 16 | D P0i | |
D I1c S00 | 17 | 18 | D I1d S0o | D | 17 | 18 | D | |
C0r D I2c | 19 | 20 | C0t D I2d | D E2a | 19 | 20 | D M P1 | |
D E0b S0i U2t | 21 | 22 | D E0a S0c U2r | D M P1 | 21 | 22 | D M Q2b | |
D S01 | 23 | 24 | C1r D I3c U1t | D M | 23 | 24 | D M | |
D P0 | 25 | 26 | C1t D I3d U1r | D M | 25 | 26 | D | |
D P0 Q0b | 27 | 28 | D P0 S10 | D L P1 | 27 | 28 | D L P1 | |
D E S1i P0 | 29 | 30 | D P0 S1o | D L P1 | 29 | 30 | D L P1 | |
D E S1c P0 | 31 | 32 | ADC VDD | D L | 31 | 32 | D L | |
A4 | 33 | 34 | ADC GND | D L Q1b | 33 | 34 | D E L | |
A6 | 35 | 36 | A5 | D L Q1a | 35 | 36 | D E L | |
A2 | 37 | 38 | A3 | D L U5t | 37 | 38 | D L U5r | |
A0 | 39 | 40 | A1 | D L P1 | 39 | 40 | D L P1 | |
D P0 | 41 | 42 | D Q0a S11 U3t P0 | D L P1 | 41 | 42 | D L P1 | |
GND | 43 | 44 | GND | D L P1 | 43 | 44 | D L P1 | |
GND | 45 | 46 | GND | D E L P1 | 45 | 46 | D E L P1 |
- A: ADC
- C: CAN
- D: Digital GPIO
- E: EHRPWM
- I: I2C
- L: LCD
- M: MMC/SDIO
- P: PRU
- Q: eQEP
- S: SPI
- U: UART
LEDs
The compatibility layer comes with simple reference nodes for attaching LEDs to any gpio pin. The format followed for these nodes is led_P8_## / led_P9_##. The gpio-leds driver is used by these reference nodes internally and allows users to easily create compatible led nodes in overlays for Black, AI and AI-64. For the definitions, you can see bbai-bone-buses.dtsi#L16 & bbb-bone-buses.dtsi#L16.
Example overlays
Header | Pin | Overlay |
---|---|---|
P8 | 03 | BONE-LED_P8_03.dts |
P9 | 11 | BONE-LED_P9_11.dts |
Definitions
LED | Header pin | Black | AI | AI-64 |
---|---|---|---|---|
/sys/class/leds/led_P8_03 | P8_03 | gpio1_6 | gpio1_24 | gpio0_20 |
/sys/class/leds/led_P8_04 | P8_04 | gpio1_7 | gpio1_25 | gpio0_48 |
/sys/class/leds/led_P8_05 | P8_05 | gpio1_2 | gpio7_1 | gpio0_33 |
/sys/class/leds/led_P8_06 | P8_06 | gpio1_3 | gpio7_2 | gpio0_34 |
/sys/class/leds/led_P8_07 | P8_07 | gpio2_2 | gpio6_5 | gpio0_15 |
/sys/class/leds/led_P8_08 | P8_08 | gpio2_3 | gpio6_6 | gpio0_14 |
/sys/class/leds/led_P8_09 | P8_09 | gpio2_5 | gpio6_18 | gpio0_17 |
/sys/class/leds/led_P8_10 | P8_10 | gpio2_4 | gpio6_4 | gpio0_16 |
/sys/class/leds/led_P8_11 | P8_11 | gpio1_13 | gpio3_11 | gpio0_60 |
/sys/class/leds/led_P8_12 | P8_12 | gpio1_12 | gpio3_10 | gpio0_59 |
/sys/class/leds/led_P8_13 | P8_13 | gpio0_23 | gpio4_11 | gpio0_89 |
/sys/class/leds/led_P8_14 | P8_14 | gpio0_26 | gpio4_13 | gpio0_75 |
/sys/class/leds/led_P8_15 | P8_15 | gpio1_15 | gpio4_3 | gpio0_61 |
/sys/class/leds/led_P8_16 | P8_16 | gpio1_14 | gpio4_29 | gpio0_62 |
/sys/class/leds/led_P8_17 | P8_17 | gpio0_27 | gpio8_18 | gpio0_3 |
/sys/class/leds/led_P8_18 | P8_18 | gpio2_1 | gpio4_9 | gpio0_4 |
/sys/class/leds/led_P8_19 | P8_19 | gpio0_22 | gpio4_10 | gpio0_88 |
/sys/class/leds/led_P8_20 | P8_20 | gpio1_31 | gpio6_30 | gpio0_76 |
/sys/class/leds/led_P8_21 | P8_21 | gpio1_30 | gpio6_29 | gpio0_30 |
/sys/class/leds/led_P8_22 | P8_22 | gpio1_5 | gpio1_23 | gpio0_5 |
/sys/class/leds/led_P8_23 | P8_23 | gpio1_4 | gpio1_22 | gpio0_31 |
/sys/class/leds/led_P8_24 | P8_24 | gpio1_1 | gpio7_0 | gpio0_6 |
/sys/class/leds/led_P8_25 | P8_25 | gpio1_0 | gpio6_31 | gpio0_35 |
/sys/class/leds/led_P8_26 | P8_26 | gpio1_29 | gpio4_28 | gpio0_51 |
/sys/class/leds/led_P8_27 | P8_27 | gpio2_22 | gpio4_23 | gpio0_71 |
/sys/class/leds/led_P8_28 | P8_28 | gpio2_24 | gpio4_19 | gpio0_72 |
/sys/class/leds/led_P8_29 | P8_29 | gpio2_23 | gpio4_22 | gpio0_73 |
/sys/class/leds/led_P8_30 | P8_30 | gpio2_25 | gpio4_20 | gpio0_74 |
/sys/class/leds/led_P8_31 | P8_31 | gpio0_10 | gpio8_14 | gpio0_32 |
/sys/class/leds/led_P8_32 | P8_32 | gpio0_11 | gpio8_15 | gpio0_26 |
/sys/class/leds/led_P8_33 | P8_33 | gpio0_9 | gpio8_13 | gpio0_25 |
/sys/class/leds/led_P8_34 | P8_34 | gpio2_17 | gpio8_11 | gpio0_7 |
/sys/class/leds/led_P8_35 | P8_35 | gpio0_8 | gpio8_12 | gpio0_24 |
/sys/class/leds/led_P8_36 | P8_36 | gpio2_16 | gpio8_10 | gpio0_8 |
/sys/class/leds/led_P8_37 | P8_37 | gpio2_14 | gpio8_8 | gpio0_106 |
/sys/class/leds/led_P8_38 | P8_38 | gpio2_15 | gpio8_9 | gpio0_105 |
/sys/class/leds/led_P8_39 | P8_39 | gpio2_12 | gpio8_6 | gpio0_69 |
/sys/class/leds/led_P8_40 | P8_40 | gpio2_13 | gpio8_7 | gpio0_70 |
/sys/class/leds/led_P8_41 | P8_41 | gpio2_10 | gpio8_4 | gpio0_67 |
/sys/class/leds/led_P8_42 | P8_42 | gpio2_11 | gpio8_5 | gpio0_68 |
/sys/class/leds/led_P8_43 | P8_43 | gpio2_8 | gpio8_2 | gpio0_65 |
/sys/class/leds/led_P8_44 | P8_44 | gpio2_9 | gpio8_3 | gpio0_66 |
/sys/class/leds/led_P8_45 | P8_45 | gpio2_6 | gpio8_0 | gpio0_79 |
/sys/class/leds/led_P8_46 | P8_46 | gpio2_7 | gpio8_1 | gpio0_80 |
/sys/class/leds/led_P9_11 | P9_11 | gpio0_30 | gpio8_17 | gpio0_1 |
/sys/class/leds/led_P9_12 | P9_12 | gpio1_28 | gpio5_0 | gpio0_45 |
/sys/class/leds/led_P9_13 | P9_13 | gpio0_31 | gpio6_12 | gpio0_2 |
/sys/class/leds/led_P9_14 | P9_14 | gpio1_18 | gpio4_25 | gpio0_93 |
/sys/class/leds/led_P9_15 | P9_15 | gpio1_16 | gpio3_12 | gpio0_47 |
/sys/class/leds/led_P9_16 | P9_16 | gpio1_19 | gpio4_26 | gpio0_94 |
/sys/class/leds/led_P9_17 | P9_17 | gpio0_5 | gpio7_17 | gpio0_28 |
/sys/class/leds/led_P9_18 | P9_18 | gpio0_4 | gpio7_16 | gpio0_40 |
/sys/class/leds/led_P9_19 | P9_19 | gpio0_13 | gpio7_3 | gpio0_78 |
/sys/class/leds/led_P9_20 | P9_20 | gpio0_12 | gpio7_4 | gpio0_77 |
/sys/class/leds/led_P9_21 | P9_21 | gpio0_3 | gpio3_3 | gpio0_39 |
/sys/class/leds/led_P9_22 | P9_22 | gpio0_2 | gpio6_19 | gpio0_38 |
/sys/class/leds/led_P9_23 | P9_23 | gpio1_17 | gpio7_11 | gpio0_10 |
/sys/class/leds/led_P9_24 | P9_24 | gpio0_15 | gpio6_15 | gpio0_13 |
/sys/class/leds/led_P9_25 | P9_25 | gpio3_21 | gpio6_17 | gpio0_127 |
/sys/class/leds/led_P9_26 | P9_26 | gpio0_14 | gpio6_14 | gpio0_12 |
/sys/class/leds/led_P9_27 | P9_27 | gpio3_19 | gpio4_15 | gpio0_46 |
/sys/class/leds/led_P9_28 | P9_28 | gpio3_17 | gpio4_17 | gpio1_11 |
/sys/class/leds/led_P9_29 | P9_29 | gpio3_15 | gpio5_11 | gpio0_53 |
/sys/class/leds/led_P9_30 | P9_30 | gpio3_16 | gpio5_12 | gpio0_44 |
/sys/class/leds/led_P9_31 | P9_31 | gpio3_14 | gpio5_10 | gpio0_52 |
/sys/class/leds/led_P9_33 | P9_33 | ⌠| ⌠| gpio0_50 |
/sys/class/leds/led_P9_35 | P9_35 | ⌠| ⌠| gpio0_55 |
/sys/class/leds/led_P9_36 | P9_36 | ⌠| ⌠| gpio0_56 |
/sys/class/leds/led_P9_37 | P9_37 | ⌠| ⌠| gpio0_57 |
/sys/class/leds/led_P9_38 | P9_38 | ⌠| ⌠| gpio0_58 |
/sys/class/leds/led_P9_39 | P9_39 | ⌠| ⌠| gpio0_54 |
/sys/class/leds/led_P9_40 | P9_40 | ⌠| ⌠| gpio0_81 |
/sys/class/leds/led_P9_41 | P9_41 | gpio0_20 | gpio6_20 | gpio1_0 |
/sys/class/leds/led_P9_91 | P9_91 | gpio3_20 | ⌠| ⌠|
/sys/class/leds/led_P9_42 | P9_42 | gpio0_7 | gpio4_18 | gpio0_123 |
/sys/class/leds/led_P9_92 | P9_92 | gpio3_18 | ⌠| ⌠|
/sys/class/leds/led_A15 | A15 | gpio0_19 | ⌠| ⌠|
I2C
Compatibility layer provides simple I2C bone bus nodes for creating compatible overlays for Black, AI and AI-64. The format followed for these nodes is bone_i2c_#. For the definitions, you can see bbai-bone-buses.dtsi#L388 & bbb-bone-buses.dtsi#L403.
SYSFS | DT symbol | Black | AI | AI-64 | SCL | SDA | Overlay |
---|---|---|---|---|---|---|---|
/dev/bone/i2c/0 | bone_i2c_0 | I2C0 | I2C1 | TBD | ⌠(On-board) | ||
/dev/bone/i2c/1 | bone_i2c_1 | I2C1 | I2C5 | MAIN_I2C6 | P9.17 | P9.18 | BONE-I2C1.dts |
/dev/bone/i2c/2 | bone_i2c_2 | I2C2 | I2C4 | MAIN_I2C2 | P9.19 | P9.20 | BONE-I2C2.dts |
/dev/bone/i2c/2a | bone_i2c_2a | I2C2 | N/A | TBD | P9.21 | P9.22 | BONE-I2C2A.dts |
/dev/bone/i2c/3 | bone_i2c_3 | I2C1 | I2C3 | MAIN_I2C4 | P9.24 | P9.26 | BONE-I2C3.dts |
SPI
SPI bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see bbai-bone-buses.dtsi#L406 & bbb-bone-buses.dtsi#L423.
Bone bus | DT symbol | Black | AI | AI-64 | SDO | SDI | CLK | CS | Overlay |
---|---|---|---|---|---|---|---|---|---|
/dev/bone/spi/0.x | bone_spi_0 | SPI0 | SPI2 | MAIN_SPI6 | P9.18 | P9.21 | P9.22 |
|
|
/dev/bone/spi/1.x | bone_spi_1 | SPI1 | SPI3 | MAIN_SPI7 | P9.30 | P9.29 | P9.31 |
|
UART
UART bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see bbai-bone-buses.dtsi#L367 & bbb-bone-buses.dtsi#L382.
Bone bus | Black | AI | AI-64 | TX | RX | RTSn | CTSn | Overlays |
---|---|---|---|---|---|---|---|---|
/dev/bone/uart/0 | UART0 | UART1 | MAIN_UART0 | ⌠(console debug header pins) | ||||
/dev/bone/uart/1 | UART1 | UART10 | MAIN_UART2 | P9.24 | P9.26 |
|
|
BONE-UART1.dts |
/dev/bone/uart/2 | UART2 | UART3 | - | P9.21 | P9.22 |
|
|
BONE-UART2.dts |
/dev/bone/uart/3 | UART3 | - | - | P9.42 | ⌠| - | - | BONE-UART3.dts |
/dev/bone/uart/4 | UART4 | UART5 | MAIN_UART0 (console) | P9.13 | P9.11 |
|
|
BONE-UART4.dts |
/dev/bone/uart/5 | UART5 | UART8 | MAIN_UART5 | P8.37 | P8.38 | P8.32 | P8.31 | BONE-UART5.dts |
CAN
CAN bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see bbai-bone-buses.dtsi#L440 & bbb-bone-buses.dtsi#L457.
Bone bus | Black | AI | AI-64 | TX | RX | Overlays |
---|---|---|---|---|---|---|
/dev/bone/can/0 | CAN0 | - | MAIN_MCAN0 | P9.20 | P9.19 | BONE-CAN0.dts |
/dev/bone/can/1 | CAN1 | CAN2 | TBD | P9.26 | P9.24 | BONE-CAN1.dts |
/dev/bone/can/2 | - | CAN1 (rev A2 and later) | TBD | P8.8 | P8.7 |
ADC
- TODO: We need a udev rule to make sure the ADC shows up at /dev/bone/adc! There's nothing for sure that IIO devices will show up in the same place.
- TODO: I think we can also create symlinks for each channel based on which device is there, such that we can do /dev/bone/adc/Px_y
Black | AI | AI-64 | overlay |
---|---|---|---|
Internal | External (STMPE811) | TBD | BONE-ADC.dts |
Index | Header pin | Black/AI-64 | AI |
---|---|---|---|
0 | P9_39 | in_voltage0_raw | in_voltage0_raw |
1 | P9_40 | in_voltage1_raw | in_voltage1_raw |
2 | P9_37 | in_voltage2_raw | in_voltage3_raw |
3 | P9_38 | in_voltage3_raw | in_voltage2_raw |
4 | P9_33 | in_voltage4_raw | in_voltage7_raw |
5 | P9_36 | in_voltage5_raw | in_voltage6_raw |
6 | P9_35 | in_voltage6_raw | in_voltage4_raw |
PWM
PWM bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see bbai-bone-buses.dtsi#L415 & bbb-bone-buses.dtsi#L432
Bone bus | Black | AI | AI-64 | A | B | Overlay |
---|---|---|---|---|---|---|
/dev/bone/pwm/0 | PWM0 | - | PWM1 | P9.22 | P9.21 | BONE-PWM0.dts |
/dev/bone/pwm/1 | PWM1 | PWM3 | PWM2 | P9.14 | P9.16 | BONE-PWM1.dts |
/dev/bone/pwm/2 | PWM2 | PWM2 | PWM0 | P8.19 | P8.13 | BONE-PWM2.dts |
TIMER PWM
TIMER PWM bone bus uses ti,omap-dmtimer-pwm driver, and timer nodes that allow creating compatible overlays for Black, AI and AI-64. For the timer node definitions, you can see bbai-bone-buses.dtsi#L449 & bbb-bone-buses.dtsi#L466.
Bone bus | Header pin | Black | AI | overlay |
---|---|---|---|---|
/sys/bus/platform/devices/bone_timer_pwm_0/ | P8.10 | timer6 | timer10 | BONE-TIMER_PWM_0.dts |
/sys/bus/platform/devices/bone_timer_pwm_1/ | P8.07 | timer4 | timer11 | BONE-TIMER_PWM_1.dts |
/sys/bus/platform/devices/bone_timer_pwm_2/ | P8.08 | timer7 | timer12 | BONE-TIMER_PWM_2.dts |
/sys/bus/platform/devices/bone_timer_pwm_3/ | P9.21 | - | timer13 | BONE-TIMER_PWM_3.dts |
/sys/bus/platform/devices/bone_timer_pwm_4/ | P8.09 | timer5 | timer14 | BONE-TIMER_PWM_4.dts |
/sys/bus/platform/devices/bone_timer_pwm_5/ | P9.22 | - | timer15 | BONE-TIMER_PWM_5.dts |
eCAP
- TODO: This doesn't include any abstraction yet.
Bone bus | Header pin | peripheral | overlay |
---|---|---|---|
/sys/bus/platform/drivers/ecap/48302100.ecap | P9.42 | eCAP0_in_PWM0_out | BBB-ECAP0.dts |
/sys/bus/platform/drivers/ecap/48304100.ecap | P9.28 | eCAP2_in_PWM2_out | BBB-ECAP2.dts |
Bone bus | Header pin | peripheral | overlay |
---|---|---|---|
/sys/bus/platform/drivers/ecap/4843e100.ecap | P8.15 | eCAP1_in_PWM1_out | BBAI-ECAP1.dts |
/sys/bus/platform/drivers/ecap/48440100.ecap | P8.14 | eCAP2_in_PWM2_out | BBAI-ECAP2.dts |
/sys/bus/platform/drivers/ecap/48440100.ecap | P8.20 | eCAP2_in_PWM2_out | BBAI-ECAP2A.dts |
/sys/bus/platform/drivers/ecap/48442100.ecap | P8.04 | eCAP3_in_PWM3_out | BBAI-ECAP3.dts |
/sys/bus/platform/drivers/ecap/48442100.ecap | P8.26 | eCAP3_in_PWM3_out | BBAI-ECAP3A.dts |
eMMC
Black | AI | overlay |
---|---|---|
MMC2 | MMC3 | BONE-eMMC.dts |
Header pin | Description |
---|---|
P8.3 | DAT6 |
P8.4 | DAT7 |
P8.5 | DAT2 |
P8.6 | DAT3 |
P8.20 | CMD |
P8.21 | CLK |
P8.22 | DAT5 |
P8.23 | DAT4 |
P8.24 | DAT1 |
P8.25 | DAT0 |
LCD
Black | AI | overlay |
---|---|---|
lcdc | dss |
Header pin | Description |
---|---|
P8_45 | lcd_data0 |
P8_46 | lcd_data1 |
P8_43 | lcd_data2 |
P8_44 | lcd_data3 |
P8_41 | lcd_data4 |
P8_42 | lcd_data5 |
P8_39 | lcd_data6 |
P8_40 | lcd_data7 |
P8_37 | lcd_data8 |
P8_38 | lcd_data9 |
P8_36 | lcd_data10 |
P8_34 | lcd_data11 |
P8_35 | lcd_data12 |
P8_33 | lcd_data13 |
P8_31 | lcd_data14 |
P8_32 | lcd_data15 |
P8_27 | lcd_vsync |
P8_29 | lcd_hsync |
P8_28 | lcd_pclk |
P8_30 | lcd_ac_bias_en |
eQEP
On BeagleBone's without an eQEP on specific pins, consider using the PRU to perform a software counter function.
Bone bus | Black | AI | AI-64 | A | B | strobe | index | overlay |
---|---|---|---|---|---|---|---|---|
/dev/bone/counter/0 | eQEP0 | eQEP2 | eQEP0 | P9.42 | P9.27 |
|
|
|
/dev/bone/counter/1 | eQEP1 | eQEP0 | eQEP1 | P8.35 | P8.33 |
|
|
|
/dev/bone/counter/2 | eQEP2 | eQEP1 | ‒ | P8.12 | P8.22 |
|
|
McASP
Black | AI | overlay |
---|---|---|
McASP0 | McASP1 |
Header pin | Description |
---|---|
P9.12 | aclkr |
P9.25 | ahclkx |
P9.27 | fsr |
P9.28 |
|
P9.29 | fsx |
P9.30 |
|
P9.31 | aclkx |
PRU
The overlay situation for PRUs is a bit more complex than with other peripherals. The mechanism for loading, starting and stopping the PRUs can go through either UIO or RemoteProc.
- /dev/remoteproc/prussX-coreY (AM3358 X = "", other x = "1|2")
Header Pin | Black | AI |
---|---|---|
P8.15 | pr1_ecap0 | pr1_ecap0 |
P8.32 | - | pr2_ecap0 |
P9.42 | pr1_ecap0 | - |
UART | TX | RX | RTSn | CTSn | Overlays |
---|---|---|---|---|---|
PRU1 UART0 | P8_31 | P8_33 | P8_34 | P8_35 | |
PRU2 UART0 | P8_43 | P8_44 | P8_45 | P8_46 |
Header Pin | Black | AI |
---|---|---|
P8.03 | - | pr2_pru0 10 |
P8.04 | - | pr2_pru0 11 |
P8.05 | - | pr2_pru0 06 |
P8.06 | - | pr2_pru0 07 |
P8.07 | - | pr2_pru1 16 |
P8.08 | - | pr2_pru0 20 |
P8.09 | - | pr2_pru1 06 |
P8.10 | - | pr2_pru1 15 |
P8.11 | pr1_pru0 15 (Out) | pr1_pru0 04 |
P8.12 | pr1_pru0 14 (Out) | pr1_pru0 03 |
P8.13 | - | pr1_pru1 07 |
P8.14 | - | pr1_pru1 09 |
P8.15 | pr1_pru0 15 (In) | pr1_pru1 16 |
P8.16 | pr1_pru0 14 (In) | pr1_pru1 18 |
P8.17 | - | pr2_pru0 15 |
P8.18 | - | pr1_pru1 05 |
P8.19 | - | pr1_pru1 06 |
P8.20 | - | pr2_pru0 03 |
P8.21 | - | pr2_pru0 02 |
P8.22 | - | pr2_pru0 09 |
P8.23 | - | pr2_pru0 08 |
P8.24 | - | pr2_pru0 05 |
P8.25 | - | pr2_pru0 04 |
P8.26 | - | pr1_pru1 17 |
P8.27 | - | pr2_pru1 17 |
P8.28 | - | pr2_pru0 17 |
P8.29 | - | pr2_pru0 18 |
P8.30 | - | pr2_pru0 19 |
P8.31 | - | pr2_pru0 11 |
P8.32 | - | pr2_pru1 00 |
P8.33 | - | pr2_pru0 10 |
P8.34 | - | pr2_pru0 08 |
P8.35 | - | pr2_pru0 09 |
P8.36 | - | pr2_pru0 07 |
P8.37 | - | pr2_pru0 05 |
P8.38 | - | pr2_pru0 06 |
P8.39 | - | pr2_pru0 03 |
P8.40 | - | pr2_pru0 04 |
P8.41 | - | pr2_pru0 01 |
P8.42 | - | pr2_pru0 02 |
P8.43 | - | pr2_pru1 20 |
P8.44 | - | pr2_pru0 00 |
P8.45 | - | pr2_pru1 18 |
P8.46 | - | pr2_pru1 19 |
P9.11 | - | pr2_pru0 14 |
P9.13 | - | pr2_pru0 15 |
P9.14 | - | pr1_pru1 14 |
P9.15 | - | pr1_pru0 5 |
P9.16 | - | pr1_pru1 15 |
P9.17 | - | pr2_pru1 09 |
P9.18 | - | pr2_pru1 08 |
P9.19 | - | pr1_pru1 02 |
P9.20 | - | pr1_pru1 01 |
P9.24 | pr1_pru0 16 (In) | - |
P9.25 | pr1_pru0 07 | pr2_pru1 05 |
P9.26 | pr1_pru1 16 (In) | pr1_pru0 17 |
P9.27 | pr1_pru0 05 | pr1_pru1 11 |
P9.28 | pr1_pru0 03 | pr2_pru1 13 |
P9.29 | pr1_pru0 01 | pr2_pru1 11 |
P9.30 | pr1_pru0 02 | pr2_pru1 12 |
P9.31 | pr1_pru0 00 | pr2_pru1 10 |
P9.41 | pr1_pru0 06 | pr1_pru1 03 |
P9.42 | pr1_pru0 04 | pr1_pru1 10 |
GPIO
TODO
For each of the pins with a GPIO, there should be a symlink that comes from the names
Methodology
The methodology for applied in the kernel and software images to expose the software interfaces is to be documented here. The most fundamental elements are the device tree entries, including overlays, and udev rules.
Device Trees
udev rules [5]
10-of-symlink.rules[6]
#From: https://github.com/mvduin/py-uio/blob/master/etc/udev/rules.d/10-of-symlink.rules # allow declaring a symlink for a device in DT ATTR{device/of_node/symlink}!="", \ ENV{OF_SYMLINK}="%s{device/of_node/symlink}" ENV{OF_SYMLINK}!="", ENV{DEVNAME}!="", \ SYMLINK+="%E{OF_SYMLINK}", \ TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/dev/%E{OF_SYMLINK}"
TBD
#Also courtesy of mvduin # create symlinks for gpios exported to sysfs by DT SUBSYSTEM=="gpio", ACTION=="add", TEST=="value", ATTR{label}!="sysfs", \ RUN+="/bin/mkdir -p /dev/bone/gpio", \ RUN+="/bin/ln -sT '/sys/class/gpio/%k' /dev/bone/gpio/%s{label}"
Verification
TODO: The steps used to verify all of these configurations is to be documented here. It will serve to document what has been tested, how to reproduce the configurations, and how to verify each major triannual release. All faults will be documented in the issue tracker.