tbs2910.rst 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. TBS2910 Matrix ARM miniPC
  2. =========================
  3. Building
  4. --------
  5. To build u-boot for the TBS2910 Matrix ARM miniPC, you can use the following
  6. procedure:
  7. First add the ARM toolchain to your PATH
  8. Then setup the ARCH and cross compilation environment variables.
  9. When this is done you can then build u-boot for the TBS2910 Matrix ARM miniPC
  10. with the following commands:
  11. .. code-block:: none
  12. make mrproper
  13. make tbs2910_defconfig
  14. make
  15. Once the build is complete, you can find the resulting image as u-boot.imx in
  16. the current directory.
  17. UART
  18. ----
  19. The UART voltage is at 3.3V and its settings are 115200bps 8N1
  20. BOOT/UPDATE boot switch:
  21. ------------------------
  22. The BOOT/UPDATE switch (SW11) is connected to the BOOT_MODE0 and
  23. BOOT_MODE1 SoC pins. It has "BOOT" and "UPDATE" markings both on
  24. the PCB and on the plastic case.
  25. When set to the "UPDATE" position, the SoC will use the "Boot From Fuses"
  26. configuration, and since BT_FUSE_SEL is 0, this makes the SOC jump to serial
  27. downloader.
  28. When set in the "BOOT" position, the SoC will use the "Internal boot"
  29. configuration, and since BT_FUSE_SEL is 0, it will then use the GPIO pins
  30. for the boot configuration.
  31. SW6 binary DIP switch array on the PCB revision 2.1:
  32. ----------------------------------------------------
  33. On that PCB revision, SW6 has 8 positions.
  34. Switching a position to ON sets the corresponding
  35. register to 1.
  36. See the following table for a correspondence between the switch positions and
  37. registers:
  38. =============== ============
  39. Switch position Register
  40. =============== ============
  41. 1 BOOT_CFG2[3]
  42. 2 BOOT_CFG2[4]
  43. 3 BOOT_CFG2[5]
  44. 4 BOOT_CFG2[6]
  45. 5 BOOT_CFG1[4]
  46. 6 BOOT_CFG1[5]
  47. 7 BOOT_CFG1[6]
  48. 8 BOOT_CFG1[7]
  49. =============== ============
  50. For example:
  51. - To boot from the eMMC: 1:ON , 2:ON, 3:ON, 4:OFF, 5:OFF, 6:ON, 7:ON, 8:OFF
  52. - To boot from the microSD slot: 1: ON, 2: OFF, 3: OFF, 4: OFF, 5:OFF, 6:OFF,
  53. 7:ON, 8:OFF
  54. - To boot from the SD slot: 1: OFF, 2: ON, 3: OFF, 4: OFF, 5:OFF, 6:OFF, 7:ON,
  55. 8:OFF
  56. - To boot from SATA: 1: OFF, 2: OFF, 3: OFF, 4: OFF, 5:OFF, 6:ON, 7:OFF, 8:OFF
  57. You can refer to the BOOT_CFG registers in the I.MX6Q reference manual for
  58. additional details.
  59. SW6 binary DIP switch array on the PCB revision 2.3:
  60. ----------------------------------------------------
  61. On that PCB revision, SW6 has only 4 positions.
  62. Switching a position to ON sets the corresponding
  63. register to 1.
  64. See the following table for a correspondence between the switch positions and
  65. registers:
  66. =============== ============
  67. Switch position Register
  68. =============== ============
  69. 1 BOOT_CFG2[3]
  70. 2 BOOT_CFG2[4]
  71. 3 BOOT_CFG2[5]
  72. 4 BOOT_CFG1[5]
  73. =============== ============
  74. For example:
  75. - To boot from the eMMC: 1:ON, 2:ON, 3:ON, 4:ON
  76. - To boot from the microSD slot: 1:ON, 2:OFF, 3:OFF, 4:OFF
  77. - To boot from the SD slot: 1:OFF, 2:ON, 3:OFF, 4:OFF
  78. You can refer to the BOOT_CFG registers in the I.MX6Q reference manual for
  79. additional details.
  80. Loading u-boot from USB:
  81. ------------------------
  82. If you need to load u-boot from USB, you can use the following instructions:
  83. First build imx_usb_loader, as we will need it to load u-boot from USB. This
  84. can be done with the following commands:
  85. .. code-block:: none
  86. git clone git://github.com/boundarydevices/imx_usb_loader.git
  87. cd imx_usb_loader
  88. make
  89. This will create the resulting imx_usb binary.
  90. When this is done, you can copy the u-boot.imx image that you built earlier
  91. in in the imx_usb_loader directory.
  92. You will then need to power off the TBS2910 Matrix ARM miniPC and make sure that
  93. the boot switch is set to "UPDATE"
  94. Once this is done you can connect an USB cable between the computer that will
  95. run imx_usb and the TBS2910 Matrix ARM miniPC.
  96. If you also need to access the u-boot console, you will also need to connect an
  97. UART cable between the computer running imx_usb and the TBS2910 Matrix ARM
  98. miniPC.
  99. Once everything is connected you can finally power on the TBS2910 Matrix ARM
  100. miniPC. The SoC will then jump to the serial download and wait for you.
  101. Finlay, you can load u-boot through USB with with the following command:
  102. .. code-block:: none
  103. sudo ./imx_usb -v u-boot.imx
  104. The u-boot boot messages will then appear in the serial console.
  105. Install u-boot on the eMMC:
  106. ---------------------------
  107. To install u-boot on the eMMC, you first need to boot the TBS2910 Matrix ARM
  108. miniPC.
  109. Once booted, you can flash u-boot.imx to mmcblk0boot0 with the
  110. following commands:
  111. .. code-block:: none
  112. sudo echo 0 >/sys/block/mmcblk0boot0/force_ro
  113. sudo dd if=u-boot.imx of=/dev/mmcblk0boot0 bs=1k seek=1; sync
  114. Note that the eMMC card node may vary, so adjust this as needed.
  115. Once the new u-boot version is installed, to boot on it you then need to power
  116. off the TBS2910 Matrix ARM miniPC.
  117. Once it is off, you need make sure that the boot switch is set to "BOOT" and
  118. that the SW6 switch is set to boot on the eMMC as described in the previous
  119. sections.
  120. If you also need to access the u-boot console, you will also need to connect an
  121. UART cable between the computer running imx_usb and the TBS2910 Matrix ARM
  122. miniPC.
  123. You can then power up the TBS2910 Matrix ARM miniPC and U-Boot messages will
  124. appear in the serial console.
  125. Booting a distribution:
  126. -----------------------
  127. When booting on the TBS2910 Matrix ARM miniPC, by default U-Boot will first try
  128. to boot from hardcoded offsets from the start of the eMMC. This is for
  129. compatibility with the stock GNU/Linux distribution.
  130. If that fails it will then try to boot from several interfaces using
  131. 'distro_bootcmd': It will first try to boot from the microSD slot, then the
  132. SD slot, then the internal eMMC, then the SATA interface and finally the USB
  133. interface. For more information on how to configure your distribution to boot,
  134. see 'README.distro'.
  135. Links:
  136. ------
  137. - https://www.tbsdtv.com/download/document/tbs2910/TBS2910-Matrix-ARM-mini-PC-SCH_rev2.1.pdf
  138. - The schematics for the revision 2.1 of the TBS2910 Matrix ARM miniPC.
  139. - https://cache.freescale.com/files/32bit/doc/ref_manual/IMX6DQRM.pdf - The
  140. SoC reference manual for additional details on the BOOT_CFG registers.