wiki:ventana/openwrt

Version 4 (modified by Tim Harvey, 3 months ago) (diff)

fairly large re-write and cleanup

OpenWrt on Ventana

Gateworks Provides an OpenWrt BSP supporting the Ventana product family.

For more info on OpenWrt see:

Building

Please refer to the OpenWrt/building page for instructions on building OpenWrt for the Gateworks products.

Prebuilt binaries

You can find pre-built binaries for Ventana OpenWrt here:

Installing

As Ventana boards have a variety of storage and boot devices there are several options to choose from.

Installing via JTAG - Easiest Option

If you have a Gateworks USB JTAG programmer you can install firmware images using the jtag_usbv4 software running on a Linux host. Note that the serial/ethernet method (below) is much faster if you have serial console access and network access to a TFTP server.

This method does not require anything other than a Gateworks USB JTAG programmer, a Linux PC, and the jtag_usbv4 application.

NOTE: Ventana JTAG only works on Linux and with jtag_usbv4 found here. Please see JTAG instructions for more details.

The jtag_usbv4 application requires a binary firmware image of the entire FLASH storage device. By convention we put a .bin file extension on this. These images are created with the mkimage_jtag script which can be found here. For details on creating JTAGable FLASH images see here.

Note that you need to choose the firmware image appropriate for your board's FLASH storage:

  • u-boot_spl.bin - Binary JTAG image of 'just' the boot firmware (works for all FLASH types and sizes)
  • ventana-owrt-*-large.bin - for 2GB NAND FLASH devices
  • ventana-owrt-*-normal.bin - for 256MB NAND FLASH devices

Example usage of jtag_usbv4 to program a 256MB NAND FLASH running on a Linux PC:

sudo rmmod ftdi_sio # make sure the ftdi_sio kernel module is not using the JTAG device
sudo jtag_usbv4 –p ventana_owrt_normal.bin # program

Gateworks JTAG Programmer v4.0 r311
Copyright (C) 2004-2014, Gateworks Corporation, All Rights Reserved
Built 12:32:04, Jul 10 2014
Using USB Port

Channel #      S01                                                             
--------------------------------------------------------------------------------
USB Open Rev    r0                                                             
JTAG_ID #00    V7A                                                             
JTAG_ID #01    DMA                                                             
JTAG_ID #02    MXD                                                             
JTAG_ID #03    MSP                                                             
Boot Sane       OK                                                             
Load Debugger   OK                                                             
Flash Size     256                                                             
BAD Blocks       0                                                             
Flash Erase     OK                                                             
Flash Boot      OK                                                             
Flash Prog      OK              

See also:

Installing Firmware via Serial / Ethernet(TFTP) using the bootloader

The procedure for updating the OS (kernel+rootfs) via Serial/ENET and a tftp server depends on what type of FLASH the Ventana product has.

NAND flash

The fastest way to update the OS firmware on a board is to use the Bootloader with a serial console connection and a network connection to a TFTP server. Note that this does not allow updating the entire boot firmware.

Before doing this, make sure you have a TFTP server on the same network as the board and have placed the required firmware images there. The firmware images in this case are not JTAG'able binary files used in the JTAG programming method above but instead are UBI filesystem images (.ubi files).

The following steps are used to install firmware to a Ventana board using Serial and Ethernet.

  1. Connect your target board to your network, power the device, and break into the Bootloader when prompted:
    U-Boot SPL 2015.04-ge511908 (Jan 12 2018 - 08:46:10)
    Booting from NAND
    PMIC:  PFUZE100 ID=0x10
    NAND : 2048 MiB
    
    
    U-Boot 2015.04-ge511908 (Jan 12 2018 - 08:46:10)
    
    CPU:   Freescale i.MX6Q rev1.5 996 MHz (running at 792 MHz)
    CPU:   Automotive temperature grade (-40C to 125C) at 45C
    Reset cause: POR
    I2C:   ready
    DRAM:  2 GiB
    PMIC:  PFUZE100 ID=0x10
    NAND:  2048 MiB
    MMC:   FSL_SDHC: 0
    auto-detected panel HDMI
    Display: HDMI (1024x768)
    In:    serial
    Out:   serial
    Err:   serial
    
    Gateworks Corporation Copyright 2014
    Model: GW5404-D
    MFGDate: 10-23-2015
    Serial:662039
    GSC:   v50 0xd60e WDT:disabled board temp at 48C
    RTC:   0
    DIO0:  GPIO1_IO09 (gpio-9)
    DIO1:  GPIO1_IO19 (gpio-19)
    DIO2:  GPIO2_IO09 (gpio-41)
    DIO3:  GPIO2_IO10 (gpio-42)
    MSATA: enabled
    RS232: enabled
    Net:   FEC [PRIME], usb_ether
    Hit any key to stop autoboot:  0 
    Ventana > 
    
  2. Set your the env variables used by tftpboot appropriate for your network. For example:
    Ventana > setenv ipaddr 192.168.1.1
    Ventana > setenv netmask 255.255.255.0
    Ventana > setenv serverip 192.168.1.146
    
  3. run the image_rootfs variable to the filename on your TFTP server and run the nand_update script (present in the default Ventana NAND bootloader) which will TFTP the file, erase and program NAND:
    Ventana > setenv image_rootfs ventana-owrt-16.02-large.ubi
    Ventana > run nand_update 
    Updating NAND from 192.168.1.146:ventana-owrt-16.02-large.ubi...
    Using FEC device
    TFTP from server 192.168.1.146; our IP address is 192.168.1.1
    Filename 'ventana-owrt-16.02-large.ubi'.
    Load address: 0x12000000
    Loading: #################################################################
             #################################################################
             #################################################################
             #################################################################
    ...
             #################################################################
             #################################################################
             #################################################################
             #############
             8.8 MiB/s
    done
    Bytes transferred = 25952256 (18c0000 hex)
    
    NAND erase.part: device 0 offset 0x1100000, size 0x7ef00000
    Skipping bad block at  0x50580000                                          
    Erasing at 0x7ffc0000 -- 100% complete.
    OK
    
    NAND write: device 0 offset 0x1100000, size 0x18c0000
     25952256 bytes written: OK
    Ventana > 
    
  4. reset or power cycle the board

If no changes have been made to the default environment variables, your board will boot to a OpenWrt prompt on your newly built kernel/filesystem.

If the bootloader environment was modified you may want to erase the u-boot env flash section to set the board back to factory defaults. This can be done by the following:

env default -f -a
saveenv

Notes:

  • NAND flash devices can contain bad blocks (to allow for a lower price/size) and also have ECC for error correction. The flash devices have a certian amount of 'out of band' (OOB) storage available for every block that can be used for things such as ECC and/or filesystems. The i.MX6 NAND controller has hardware ECC support but uses the entire OOB area for the flash devices we use. The JFFS2 filesystem requires OOB for NAND and thus will not work on i.MX6 NAND solutions therefore we use the UBIFS filesystem.
  • Standard Ventana product currently has 256MB NAND FLASH, however some custom boards have 1GB or 2GB NAND. For boards with 1GB/2GB FLASH use openwrt-imx6-ventana-rootfs_large.ubi

Installing OpenWrt on a removable block storage device: MicroSD card / USB drive / mSATA device

Installing OpenWrt on a removable block storage device: MicroSD card / USB drive / mSATA device The latest OpenWrt package and kernel configuration in the trunk BSP supports the necessary configuration for booting to a USB/micro-SD/mSATA based root filesystem (static kernel support for chipidea USB host controller, EHCI, and MXS phy) therefore all you need to do is create the storage device using the tarball of the root filesystem.

Starting with the OpenWrt 16.02 branch, we have decided to include a script (mkimage_blkdev) to make creating bootable block storage devices with various tarballs's easier. The usage is as follows:

# The system has 2x block devices currently connected
> ./gateworks/scripts/mkimage_blkdev
usage: mkimage_blkdev file1.tar[.gz|.bz2] [file2.tar[.gz|.bz2] ...] /dev/sdX

The following block devices were found:
 /dev/sdc: JetFlash Transcend 32GB 29.4219GB
 /dev/sdd: Kingston DataTraveler SE9 7.26727GB

An example execution of this may look as follows:

sudo ./gateworks/scripts/mkimage_blkdev bin/imx6/gateworks-imx6-ventana-*.tar.gz /dev/sdc

In the above example, we pass in several tarballs that match the gateworks-imx6-ventana-*.tar.gz expansion and flash it onto /dev/sdc. In the process, we re-partition /dev/sdc with a single ext4 partition where the contents of the tarballs are placed.

To flash an msata device, you may have to do the following:

sudo FORCE=1 ./gateworks/scripts/mkimage_blkdev bin/imx6/gateworks-imx6-ventana-*.tar.gz /dev/sde
The reason for this is that msata devices often don't look like a 'block storage device' to linux, but instead as a hard drive. There are protections built into the mkimage_blkdev script in order to avoid user error and accidentally wipe out their own hard disks, which is the reason for the FORCE=1 override. Please use this flag only while exercising extreme caution.

To see information on the manual steps for creating a bootable tarball, please visit the linux/blockdev page.