|  | 1 | [[PageOutline]] | 
          
            |  | 2 |  | 
          
            |  | 3 | [=#bootloader] | 
          
            |  | 4 | = Newport U-Boot Bootloader = | 
          
            |  | 5 | Gateworks supports the U-Boot Bootloader for the Newport product family. We provide pre-built firmware images (see [wiki:newport#firmware here]) as well as source for building and/or modifying it yourself. | 
          
            |  | 6 |  | 
          
            |  | 7 | One of the primary features of the Bootloader is to provide access to the {{{hwconfig}}} environment variable that the firmware uses for initial board configuration on power-up. | 
          
            |  | 8 |  | 
          
            |  | 9 | [=#hwconfig] | 
          
            |  | 10 | == hwconfig == | 
          
            |  | 11 | The U-Boot Bootloader by convention provides a {{{hwconfig}}} environment variable which is used by the boot firmware (before U-Boot is loaded and executed) to configure board options at power-up. These options can include things such as: | 
          
            |  | 12 | * miniPCIe socket functions (ie PCIe vs mSATA vs USB3.0) | 
          
            |  | 13 | * serial configuration (ie RS232 vs RS485) | 
          
            |  | 14 |  | 
          
            |  | 15 | [=#socketconfig] | 
          
            |  | 16 | === hwconfig: miniPCIe Socket Configuration === | 
          
            |  | 17 | Newport board model socket options: | 
          
            |  | 18 | * GW630x: | 
          
            |  | 19 | - J9: PCIe | 
          
            |  | 20 | - J10: PCIe or SATA | 
          
            |  | 21 | - J11: PCIe or USB3.0 | 
          
            |  | 22 |  | 
          
            |  | 23 | Note that USB2.0 is routed to all three miniPCIe sockets always but as USB3.0 shares signals with PCIe you must choose between PCIe and USB3 on sockets that support USB3. | 
          
            |  | 24 |  | 
          
            |  | 25 | You can get/set the {{{hwconfig}}} variable within the U-Boot bootloader but you must reboot the board for it to take effect as the variable is acted upon in the Secondary Program Loader (SPL). | 
          
            |  | 26 |  | 
          
            |  | 27 | Examples: | 
          
            |  | 28 | * GW630x: | 
          
            |  | 29 | - J10 PCIe, J11 PCIe (default) | 
          
            |  | 30 | {{{#!bash | 
          
            |  | 31 | setenv hwconfig 'j10:pcie;j11:pcie'; saveenv | 
          
            |  | 32 | }}} | 
          
            |  | 33 | - J10 mSATA, J11 USB3.0 | 
          
            |  | 34 | {{{#!bash | 
          
            |  | 35 | setenv hwconfig 'j10:sata;j11:usb3'; saveenv | 
          
            |  | 36 | }}} | 
          
            |  | 37 | - J9/J10 disabled, J11 PCIe | 
          
            |  | 38 | {{{#!bash | 
          
            |  | 39 | setenv hwconfig 'j9:disabled;j10:disabled;j11:pcie'; saveenv | 
          
            |  | 40 | }}} | 
          
            |  | 41 |  | 
          
            |  | 42 | '''Note that {{{hwconfig}}} is also used for serial configuration so care should be taken to preserve that configuration if used''' | 
          
            |  | 43 |  | 
          
            |  | 44 | [=#serialconfig] | 
          
            |  | 45 | === hwconfig: serial Configuration === | 
          
            |  | 46 | Many boards in the Newport product family provide a 5-pin off-board serial connector that provides the following options: | 
          
            |  | 47 | - 1x RS485 FD (UART2) | 
          
            |  | 48 | - 1x RS485 HD (UART2) | 
          
            |  | 49 | - 1x RS232 w/ hardware flow control (UART2) | 
          
            |  | 50 | - 2x RS232 w/o hardware flow control (UART2/UART3) | 
          
            |  | 51 |  | 
          
            |  | 52 | By default 2x RS232 with no flow control is enabled. To configure a different option use the {{{hwconfig}}} U-Boot env variable. The {{{mode}}} property of the {{{serial}}} option defines the initial configuration of the serial port(s). If RS485 is selected by the {{{mode}}} property the {{{term}}} property will select whether or not on-board termination is enabled. | 
          
            |  | 53 |  | 
          
            |  | 54 | The {{{mode}}} property can have the following values: | 
          
            |  | 55 | * rs232 - 2x RS232 (UART2/UART3) without hardware flow control (default if not specified) | 
          
            |  | 56 | * rs232_dtr - RS232 (UART2) with hardware flow control | 
          
            |  | 57 | * rs485_hd - RS485 half-duplex | 
          
            |  | 58 | * rs485_fd - RS485 full-duplex | 
          
            |  | 59 |  | 
          
            |  | 60 | Examples: | 
          
            |  | 61 | * enable RS485 half duplex no on-board termination | 
          
            |  | 62 | {{{#!bash | 
          
            |  | 63 | setenv hwconfig "serial:mode=rs485_hd,term=no"; saveenv | 
          
            |  | 64 | }}} | 
          
            |  | 65 | * enable RS485 full duplex with on-board termination | 
          
            |  | 66 | {{{#!bash | 
          
            |  | 67 | setenv hwconfig "serial:mode=rs485_fd,term=yes"; saveenv | 
          
            |  | 68 | }}} | 
          
            |  | 69 | * enable RS232 with hardware flow-control: | 
          
            |  | 70 | {{{#!bash | 
          
            |  | 71 | setenv hwconfig "serial:mode=rs232_dtr"; saveenv | 
          
            |  | 72 | }}} | 
          
            |  | 73 |  | 
          
            |  | 74 |  | 
          
            |  | 75 | '''Note that {{{hwconfig}}} is also used for serial configuration so care should be taken to preserve that configuration if used''' |