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