[e52906b] | 1 | .. SPDX-License-Identifier: CC-BY-SA-4.0 |
---|
[4886d60] | 2 | |
---|
[9f24b6e] | 3 | .. Copyright (C) 2017, 2019 embedded brains GmbH |
---|
| 4 | .. Copyright (C) 2017, 2019 Sebastian Huber |
---|
[8e3de16] | 5 | |
---|
| 6 | arm (ARM) |
---|
| 7 | ********* |
---|
| 8 | |
---|
[924b9ef] | 9 | altera-cyclone-v (Intel Cyclone V) |
---|
| 10 | ================================== |
---|
[05d066a] | 11 | |
---|
[9f24b6e] | 12 | This BSP offers only one variant, the `altcycv_devkit`. This variant supports |
---|
| 13 | the Intel Cyclone V system on chip. The basic hardware initialization is not |
---|
| 14 | performed by the BSP. A boot loader with device tree support must be used to |
---|
| 15 | start the BSP, e.g. U-Boot. |
---|
| 16 | |
---|
| 17 | The BSP is known to run on these boards: |
---|
| 18 | |
---|
| 19 | * `Cyclone V SoC Development Kit <https://www.intel.com/content/www/us/en/programmable/products/boards_and_kits/dev-kits/altera/kit-cyclone-v-soc.html>`_ |
---|
| 20 | |
---|
| 21 | * `Enclustra Mars MA3 SoC Module <https://www.enclustra.com/en/products/system-on-chip-modules/mars-ma3/>`_ |
---|
| 22 | |
---|
| 23 | * `Terasic DE10-Standard Development Kit <https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=165&No=1081>`_ |
---|
| 24 | |
---|
| 25 | Boot via U-Boot |
---|
| 26 | --------------- |
---|
| 27 | |
---|
| 28 | The application executable file (ELF file) must be converted to an U-Boot |
---|
| 29 | image. Use the following commands: |
---|
| 30 | |
---|
| 31 | :: |
---|
| 32 | |
---|
| 33 | arm-rtems5-objcopy -O binary app.exe app.bin |
---|
| 34 | gzip -9 -f -c app.bin > app.bin.gz |
---|
| 35 | mkimage -A arm -O linux -T kernel -a 0x00300000 -e 0x00300000 -n RTEMS -d app.bin.gz app.img |
---|
| 36 | |
---|
| 37 | Use the following U-Boot commands to boot an application via TFTP download: |
---|
| 38 | |
---|
| 39 | :: |
---|
| 40 | |
---|
| 41 | tftpboot ${loadaddr} app.img && run loadfdt && bootm ${loadaddr} - ${fdt_addr} ; reset |
---|
| 42 | |
---|
| 43 | Clock Driver |
---|
| 44 | ------------ |
---|
| 45 | |
---|
| 46 | The clock driver uses the `Cortex-A9 MPCore Global Timer`. |
---|
| 47 | |
---|
| 48 | Console Driver |
---|
| 49 | -------------- |
---|
| 50 | |
---|
| 51 | The console driver supports up to two on-chip NS16550 UARTs. The console |
---|
| 52 | driver does not configure the pins. |
---|
| 53 | |
---|
| 54 | I2C Driver |
---|
| 55 | ---------- |
---|
| 56 | |
---|
| 57 | There is a legacy I2C driver. It should be converted to the I2C driver framework. |
---|
| 58 | |
---|
| 59 | Network Interface Driver |
---|
| 60 | ------------------------ |
---|
| 61 | |
---|
| 62 | The network interface driver is provided by the `libbsd`. It is initialized |
---|
| 63 | according to the device tree. It supports checksum offload. |
---|
| 64 | |
---|
| 65 | MMC/SDCard Driver |
---|
| 66 | ----------------- |
---|
| 67 | |
---|
| 68 | The MMC/SDCard driver is provided by the `libbsd`. It is |
---|
| 69 | initialized according to the device tree. Pin re-configuration according to |
---|
| 70 | the serial clock frequency is not supported. DMA transfers are supported. |
---|
| 71 | |
---|
| 72 | USB Host Driver |
---|
| 73 | --------------- |
---|
| 74 | |
---|
| 75 | The USB host driver is provided by the `libbsd`. It is initialized according |
---|
| 76 | to the device tree. The driver works in polled mode. |
---|
| 77 | |
---|
| 78 | Caveats |
---|
| 79 | ------- |
---|
| 80 | |
---|
| 81 | The clock and pin configuration support is quite rudimentary and mostly relies |
---|
| 82 | on the boot loader. |
---|
[05d066a] | 83 | |
---|
| 84 | atsam |
---|
| 85 | ===== |
---|
| 86 | |
---|
| 87 | TODO. |
---|
| 88 | |
---|
| 89 | beagle |
---|
| 90 | ====== |
---|
| 91 | |
---|
| 92 | TODO. |
---|
| 93 | |
---|
| 94 | csb336 |
---|
| 95 | ====== |
---|
| 96 | |
---|
| 97 | TODO. |
---|
| 98 | |
---|
| 99 | csb337 |
---|
| 100 | ====== |
---|
| 101 | |
---|
| 102 | TODO. |
---|
| 103 | |
---|
| 104 | edb7312 |
---|
| 105 | ======= |
---|
| 106 | |
---|
| 107 | TODO. |
---|
| 108 | |
---|
| 109 | gdbarmsim |
---|
| 110 | ========= |
---|
| 111 | |
---|
| 112 | TODO. |
---|
| 113 | |
---|
| 114 | gumstix |
---|
| 115 | ======= |
---|
| 116 | |
---|
| 117 | TODO. |
---|
| 118 | |
---|
| 119 | imx (NXP i.MX) |
---|
| 120 | ============== |
---|
[8e3de16] | 121 | |
---|
| 122 | This BSP offers only one variant, the `imx7`. This variant supports the i.MX |
---|
| 123 | 7Dual processor. The basic hardware initialization is not performed by the |
---|
| 124 | BSP. A boot loader with device tree support must be used to start the BSP, |
---|
| 125 | e.g. U-Boot. |
---|
| 126 | |
---|
| 127 | Build Configuration Options |
---|
| 128 | --------------------------- |
---|
| 129 | |
---|
| 130 | The following options are available at the configure command line. |
---|
| 131 | |
---|
| 132 | ``BSP_PRESS_KEY_FOR_RESET`` |
---|
| 133 | If defined to a non-zero value, then print a message and wait until pressed |
---|
| 134 | before resetting board when application terminates. |
---|
| 135 | |
---|
| 136 | ``BSP_RESET_BOARD_AT_EXIT`` |
---|
| 137 | If defined to a non-zero value, then reset the board when the application |
---|
| 138 | terminates. |
---|
| 139 | |
---|
| 140 | ``BSP_PRINT_EXCEPTION_CONTEXT`` |
---|
| 141 | If defined to a non-zero value, then print the exception context when an |
---|
| 142 | unexpected exception occurs. |
---|
| 143 | |
---|
| 144 | ``BSP_FDT_BLOB_SIZE_MAX`` |
---|
| 145 | The maximum size of the device tree blob in bytes (default is 262144). |
---|
| 146 | |
---|
| 147 | ``CONSOLE_USE_INTERRUPTS`` |
---|
| 148 | Use interrupt driven mode for console devices (enabled by default). |
---|
| 149 | |
---|
| 150 | ``IMX_CCM_IPG_HZ`` |
---|
| 151 | The IPG clock frequency in Hz (default is 67500000). |
---|
| 152 | |
---|
| 153 | ``IMX_CCM_UART_HZ`` |
---|
| 154 | The UART clock frequency in Hz (default is 24000000). |
---|
| 155 | |
---|
| 156 | ``IMX_CCM_AHB_HZ`` |
---|
| 157 | The AHB clock frequency in Hz (default is 135000000). |
---|
| 158 | |
---|
| 159 | Boot via U-Boot |
---|
| 160 | --------------- |
---|
| 161 | |
---|
| 162 | The application executable file (ELF file) must be converted to an U-Boot |
---|
| 163 | image. Use the following commands: |
---|
| 164 | |
---|
| 165 | :: |
---|
| 166 | |
---|
| 167 | arm-rtems5-objcopy -O binary app.exe app.bin |
---|
| 168 | gzip -9 -f -c app.bin > app.bin.gz |
---|
| 169 | mkimage -A arm -O linux -T kernel -a 0x80200000 -e 0x80200000 -n RTEMS -d app.bin.gz app.img |
---|
| 170 | |
---|
| 171 | Use the following U-Boot commands to boot an application via TFTP download: |
---|
| 172 | |
---|
| 173 | :: |
---|
| 174 | |
---|
| 175 | tftpboot ${loadaddr} app.img && run loadfdt && bootm ${loadaddr} - ${fdt_addr} ; reset |
---|
| 176 | |
---|
| 177 | Clock Driver |
---|
| 178 | ------------ |
---|
| 179 | |
---|
| 180 | The clock driver uses the `ARMv7-AR Generic Timer`. |
---|
| 181 | |
---|
| 182 | Console Driver |
---|
| 183 | -------------- |
---|
| 184 | |
---|
| 185 | The console driver supports up to seven on-chip UARTs. They are initialized |
---|
| 186 | according to the device tree. The console driver does not configure the pins. |
---|
| 187 | |
---|
| 188 | I2C Driver |
---|
| 189 | ---------- |
---|
| 190 | |
---|
| 191 | I2C drivers are registered by the ``i2c_bus_register_imx()`` function. The I2C |
---|
| 192 | driver does not configure the pins. |
---|
| 193 | |
---|
| 194 | .. code-block:: c |
---|
| 195 | |
---|
| 196 | #include <assert.h> |
---|
| 197 | #include <bsp.h> |
---|
| 198 | |
---|
| 199 | void i2c_init(void) |
---|
| 200 | { |
---|
| 201 | int rv; |
---|
| 202 | |
---|
| 203 | rv = i2c_bus_register_imx("/dev/i2c-0", "i2c0"); |
---|
| 204 | assert(rv == 0); |
---|
| 205 | } |
---|
| 206 | |
---|
| 207 | SPI Driver |
---|
| 208 | ---------- |
---|
| 209 | |
---|
| 210 | SPI drivers are registered by the ``spi_bus_register_imx()`` function. The SPI |
---|
| 211 | driver configures the pins according to the ``pinctrl-0`` device tree property. |
---|
| 212 | SPI transfers with a continuous chip select are limited by the FIFO size of 64 |
---|
| 213 | bytes. The driver has no DMA support. |
---|
| 214 | |
---|
| 215 | .. code-block:: c |
---|
| 216 | |
---|
| 217 | #include <assert.h> |
---|
| 218 | #include <bsp.h> |
---|
| 219 | |
---|
| 220 | void spi_init(void) |
---|
| 221 | { |
---|
| 222 | int rv; |
---|
| 223 | |
---|
| 224 | rv = spi_bus_register_imx("/dev/spi-0", "spi0"); |
---|
| 225 | assert(rv == 0); |
---|
| 226 | } |
---|
| 227 | |
---|
| 228 | Network Interface Driver |
---|
| 229 | ------------------------ |
---|
| 230 | |
---|
| 231 | The network interface driver is provided by the `libbsd`. It is initialized |
---|
| 232 | according to the device tree. It supports checksum offload and interrupt |
---|
| 233 | coalescing. IPv6 transmit checksum offload is not implemented. The interrupt |
---|
| 234 | coalescing uses the MII/GMII clocks and can be controlled by the following |
---|
| 235 | system controls: |
---|
| 236 | |
---|
| 237 | * ``dev.ffec.<unit>.int_coal.rx_time`` |
---|
| 238 | * ``dev.ffec.<unit>.int_coal.rx_count`` |
---|
| 239 | * ``dev.ffec.<unit>.int_coal.tx_time`` |
---|
| 240 | * ``dev.ffec.<unit>.int_coal.tx_count`` |
---|
| 241 | |
---|
| 242 | A value of zero for the time or count disables the interrupt coalescing in the |
---|
| 243 | corresponding direction. |
---|
| 244 | |
---|
[bd25da8] | 245 | MMC/SDCard Driver |
---|
| 246 | ----------------- |
---|
| 247 | |
---|
| 248 | The MMC/SDCard driver (uSDHC module) is provided by the `libbsd`. It is |
---|
| 249 | initialized according to the device tree. Pin re-configuration according to |
---|
| 250 | the serial clock frequency is not supported. Data transfers are extremely |
---|
| 251 | slow. This is probably due to the missing DMA support. |
---|
| 252 | |
---|
[8e3de16] | 253 | Caveats |
---|
| 254 | ------- |
---|
| 255 | |
---|
| 256 | The clock and pin configuration support is quite rudimentary and mostly relies |
---|
| 257 | on the boot loader. For a pin group configuration see |
---|
| 258 | ``imx_iomux_configure_pins()``. There is no power management support. |
---|
[05d066a] | 259 | |
---|
| 260 | lm3s69xx |
---|
| 261 | ======== |
---|
| 262 | |
---|
| 263 | TODO. |
---|
| 264 | |
---|
| 265 | lpc176x |
---|
| 266 | ======= |
---|
| 267 | |
---|
| 268 | TODO. |
---|
| 269 | |
---|
| 270 | lpc24xx |
---|
| 271 | ======= |
---|
| 272 | |
---|
| 273 | TODO. |
---|
| 274 | |
---|
| 275 | lpc32xx |
---|
| 276 | ======= |
---|
| 277 | |
---|
| 278 | TODO. |
---|
| 279 | |
---|
| 280 | raspberrypi |
---|
| 281 | =========== |
---|
| 282 | |
---|
| 283 | TODO. |
---|
| 284 | |
---|
| 285 | realview-pbx-a9 |
---|
| 286 | =============== |
---|
| 287 | |
---|
| 288 | TODO. |
---|
| 289 | |
---|
| 290 | rtl22xx |
---|
| 291 | ======= |
---|
| 292 | |
---|
| 293 | TODO. |
---|
| 294 | |
---|
| 295 | smdk2410 |
---|
| 296 | ======== |
---|
| 297 | |
---|
| 298 | TODO. |
---|
| 299 | |
---|
| 300 | stm32f4 |
---|
| 301 | ======= |
---|
| 302 | |
---|
| 303 | TODO. |
---|
| 304 | |
---|
| 305 | tms570 |
---|
| 306 | ====== |
---|
| 307 | |
---|
| 308 | TODO. |
---|
| 309 | |
---|
| 310 | xilinx-zynq |
---|
| 311 | =========== |
---|
| 312 | |
---|
| 313 | TODO. |
---|