User Tools

Site Tools


toh:olimex:rt5350f-olinuxino-evb

Olimex RT5350F-OLinuXino (EVB)

Overview

This device is an open source embedded MIPS Linux board built around a Ralink RT5350F SoC.

The board is available in two versions:

  • RT5350F-OLinuXino: bare module only
  • RT5350F-OLinuXino-EVB: the module above, fitted on evaluation board with Ethernet and USB ports, GPIO breakout, a button and two relays

There are plenty of goodies for hackers and makers, such as 24 available GPIOs, SPI, I2C, I2S, PCM, UART, JTAG and USB 2.0 HOST/Device.

Being this design open source both in hardware and software, you can find the complete schematics here: https://github.com/OLIMEX/OLINUXINO/tree/master/HARDWARE/RT5350F

Example uses of this design:

  • IoT devices: you can turn the board into an IoT node, i.e. disabling all routing and firewalling functions and using the Linux environment to run processes controlling sensors and actuating outputs
  • Design your own board around the RT5350F chip: since most of the difficult aspects are taken care of (RF design, VREG et al) you can focus on picking interface components (connectors, sensors, switches, whatever)
  • A cheap, reliable router to use in non mission critical industrial environments. The board has mounting holes and can be adapted to fit in a DIN rail enclosure, and you can for example use the relays to report network availability to a PLC, just like the bigger and more expensive Siemens/Hirschmann devices do.

Pictures

Hardware

Architecture: MIPS24KEc
System-On-Chip: Ralink RT5350F
CPU Speed: 360 MHz
Flash size: 8MiB SPI NAND
RAM: 32MiB Hynix SDRAM
Ethernet switch: Yes, 5x10/100 on-SoC
Wireless: 2.4 GHz 802.11b/g/n
USB: No
Serial: yes, 57600 8N1, no hardware flow control
Bootloader: uBoot

Measured power draw at 5VDC is ~130mA with wireless off and ~200mA with wireless enabled. Closing a relay adds ~50mA.

Please notice that Olimex has taken care of the overheating problems that affect RT5350F chips by using an external 1.2V regulator instead of the integrated one, so the chip runs cool enough.

Flashing / upgrading

As of February 2016 these boards still ship with the RC3 version of OpenWrt. There's no way to upgrade to the stable release via the LuCI interface due to a "supported format" error, so you'll have to perform the uBoot flashing using a TFTP server as described here: https://www.olimex.com/wiki/RT5350F-OLinuXino#Upload_prebuilt_OpenWRT_using_uboot (http://archive.is/Z7OmR).

Please notice that even via TFTP you need to flash the squashfs-sysupgrade.bin image instead of the initramfs-uImage.bin, otherwise it won't find the root filesystem.

GPIOs

Figure out their names this way:

root@OpenWrt:/# cat /sys/kernel/debug/gpio 
GPIOs 0-21, platform/10000600.gpio, 10000600.gpio:
 gpio-0   (button              ) in  hi    
 gpio-12  (gpio12              ) out lo    
 gpio-14  (gpio14              ) out lo    

GPIOs 22-27, platform/10000660.gpio, 10000660.gpio:

Button is active low (always pulled up), but the driver takes care of this and presents us with the correct state anyway, so an example like this works fine (triggers the relay on button press):

 while true; do cat /sys/class/gpio/button/value > /sys/class/gpio/gpio12/value ; done

Bootlog

U-Boot 1.1.3 (Apr 20 2015 - 13:25:55) Board: RT5350F-OLinuXino DRAM: 32 MB relocate_code Pointer at: 81fb4000 ****************************** Software System Reset Occurred ****************************** spi_wait_nsec: 42 spi device id: 1c 30 17 1c 30 (30171c30) find flash: EN25Q64 raspi_read: from:30000 len:1000 .*** Warning - bad CRC, using default environment ============================================================= RT5350F-OLinuXino UBoot Version: 4.0.0.0 -------------------------------------------------------------- ASIC 5350_MP (Port5<->None) DRAM_CONF_FROM: Boot-Strapping DRAM_TYPE: SDRAM DRAM_SIZE: 256 Mbits DRAM_WIDTH: 16 bits DRAM_TOTAL_WIDTH: 16 bits TOTAL_MEMORY_SIZE: 32 MBytes Flash component: SPI Flash Date:Apr 20 2015 Time:13:25:55 ============================================ icache: sets:256, ways:4, linesz:32 ,total:32768 dcache: sets:128, ways:4, linesz:32 ,total:16384 ##### The CPU freq = 360 MHZ #### estimate memory size =32 Mbytes Please choose the operation: 1: Load system code to SDRAM via TFTP. 2: Load system code then write to Flash via TFTP. 3: Boot system code via Flash (default). 4: Entr boot command line interface. 7: Load Boot Loader code then write to Flash via Serial. 9: Load Boot Loader code then write to Flash via TFTP. 0 3: System Boot system code via Flash. ## Booting image at bc050000 ... raspi_read: from:50000 len:40 . Image Name: MIPS OpenWrt Linux-3.18.20 Created: 2015-09-04 17:37:26 UTC Image Type: MIPS Linux Kernel Image (lzma compressed) Data Size: 3154511 Bytes = 3 MB Load Address: 80000000 Entry Point: 80000000 raspi_read: from:50040 len:30224f ................................................. Verifying Checksum ... OK Uncompressing Kernel Image ... OK No initrd ## Transferring control to Linux (at address 80000000) ... ## Giving linux memsize in MB, 32 Starting kernel ... [ 0.000000] Linux version 3.18.20 (buildbot@builder1) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r46450) ) #2 Fri Sep 4 19:34:39 CEST 2015 [ 0.000000] SoC Type: Ralink RT5350 id:1 rev:3 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU0 revision is: 0001964c (MIPS 24KEc) [ 0.000000] MIPS: machine is RT5350F-OLINUXINO [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 02000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x00000000-0x01ffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x00000000-0x01ffffff] [ 0.000000] Initmem setup node 0 [mem 0x00000000-0x01ffffff] [ 0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 [ 0.000000] Kernel command line: console=ttyS0,57600 rootfstype=squashfs,jffs2 [ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes) [ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Writing ErrCtl register=00043020 [ 0.000000] Readback ErrCtl register=00043020 [ 0.000000] Memory: 27028K/32768K available (2543K kernel code, 120K rwdata, 312K rodata, 2200K init, 186K bss, 5740K reserved) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS:256 [ 0.000000] CPU Clock: 360MHz [ 0.000000] systick: running - mult: 214748, shift: 32 [ 0.010000] Calibrating delay loop... 239.61 BogoMIPS (lpj=1198080) [ 0.080000] pid_max: default: 32768 minimum: 301 [ 0.090000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.100000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.110000] pinctrl core: initialized pinctrl subsystem [ 0.120000] NET: Registered protocol family 16 [ 0.130000] rt2880-pinmux pinctrl: invalid group "rgmii" for function "gpio" [ 0.140000] rt2880-pinmux pinctrl: invalid group "mdio" for function "gpio" [ 0.150000] rt2880_gpio 10000600.gpio: registering 22 gpios [ 0.160000] rt2880_gpio 10000600.gpio: registering 22 irq handlers [ 0.170000] rt2880_gpio 10000660.gpio: registering 6 gpios [ 0.180000] rt2880_gpio 10000660.gpio: registering 6 irq handlers [ 0.190000] Switched to clocksource systick [ 0.200000] NET: Registered protocol family 2 [ 0.210000] TCP established hash table entries: 1024 (order: 0, 4096 bytes) [ 0.220000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 0.230000] TCP: Hash tables configured (established 1024 bind 1024) [ 0.250000] TCP: reno registered [ 0.250000] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.260000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.280000] NET: Registered protocol family 1 [ 4.930000] rt-timer 10000100.timer: maximum frequency is 7324Hz [ 4.950000] futex hash table entries: 256 (order: -1, 3072 bytes) [ 4.970000] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 4.980000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 5.010000] msgmni has been set to 52 [ 5.010000] io scheduler noop registered [ 5.020000] io scheduler deadline registered (default) [ 5.030000] drivers/phy/phy-ralink-usb.c:ralink_usb_phy_probe[147] [ 5.050000] drivers/phy/phy-ralink-usb.c:ralink_usb_phy_probe[161] [ 5.060000] gpio-export gpio_export: 3 gpio(s) exported [ 5.070000] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled [ 5.090000] console [ttyS0] disabled [ 5.100000] 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 20, base_baud = 2500000) is a 16550A [ 5.110000] console [ttyS0] enabled [ 5.110000] console [ttyS0] enabled [ 5.130000] bootconsole [early0] disabled [ 5.130000] bootconsole [early0] disabled [ 5.190000] m25p80 spi32766.0: found en25q64, expected s25fl064k [ 5.200000] m25p80 spi32766.0: en25q64 (8192 Kbytes) [ 5.210000] 4 ofpart partitions found on MTD device spi32766.0 [ 5.230000] Creating 4 MTD partitions on "spi32766.0": [ 5.240000] 0x000000000000-0x000000030000 : "u-boot" [ 5.250000] 0x000000030000-0x000000040000 : "u-boot-env" [ 5.260000] 0x000000040000-0x000000050000 : "factory" [ 5.270000] 0x000000050000-0x000000400000 : "firmware" [ 5.330000] ralink_soc_eth 10100000.ethernet: generated random MAC address d6:24:4b:b7:38:b1 [ 5.350000] ralink_soc_eth 10100000.ethernet eth0: ralink at 0xb0100000, irq 5 [ 5.370000] rt2880_wdt 10000120.watchdog: Initialized [ 5.380000] TCP: cubic registered [ 5.380000] NET: Registered protocol family 17 [ 5.390000] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this. [ 5.420000] Bridge firewalling registered [ 5.430000] 8021q: 802.1Q VLAN Support v1.8 [ 5.460000] Freeing unused kernel memory: 2200K (802ea000 - 80510000) [ 5.500000] init: Console is alive [ 5.510000] init: - watchdog - [ 5.560000] usbcore: registered new interface driver usbfs [ 5.580000] usbcore: registered new interface driver hub [ 5.590000] usbcore: registered new device driver usb [ 6.520000] init: - preinit - [ 6.700000] rt305x-esw 10110000.esw: link changed 0x00 [ 6.790000] random: procd urandom read with 10 bits of entropy available Press the [f] key and hit [enter] to enter failsafe mode Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level [ 8.280000] rt305x-esw 10110000.esw: link changed 0x10 [ 10.150000] procd: - early - [ 10.150000] procd: - watchdog - [ 10.800000] procd: - ubus - [ 11.810000] procd: - init - Please press Enter to activate this console. [ 13.060000] NET: Registered protocol family 10 [ 13.080000] ip6_tables: (C) 2000-2006 Netfilter Core Team [ 13.120000] Loading modules backported from Linux version master-2015-03-09-0-g141f155 [ 13.140000] Backport generated by backports.git backports-20150129-0-gdd4a670 [ 13.160000] ip_tables: (C) 2000-2006 Netfilter Core Team [ 13.180000] nf_conntrack version 0.5.0 (456 buckets, 1824 max) [ 13.260000] xt_time: kernel timezone is -0000 [ 13.300000] cfg80211: Calling CRDA to update world regulatory domain [ 13.330000] cfg80211: World regulatory domain updated: [ 13.340000] cfg80211: DFS Master region: unset [ 13.350000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time) [ 13.370000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [ 13.380000] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [ 13.400000] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A) [ 13.410000] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A) [ 13.430000] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s) [ 13.450000] cfg80211: (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s) [ 13.460000] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A) [ 13.480000] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A) [ 13.590000] PPP generic driver version 2.4.2 [ 13.600000] NET: Registered protocol family 24 [ 13.670000] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 5350, rev 0500 detected [ 13.690000] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 5350 detected [ 18.010000] rt305x-esw 10110000.esw: link changed 0x00 [ 19.620000] rt305x-esw 10110000.esw: link changed 0x10 [ 24.610000] device eth0.1 entered promiscuous mode [ 24.620000] device eth0 entered promiscuous mode [ 24.670000] br-lan: port 1(eth0.1) entered forwarding state [ 24.680000] br-lan: port 1(eth0.1) entered forwarding state [ 26.680000] br-lan: port 1(eth0.1) entered forwarding state [ 80.270000] random: nonblocking pool is initialized BusyBox v1.23.2 (2015-07-25 04:17:43 CEST) built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- CHAOS CALMER (15.05, r46767) ----------------------------------------------------- * 1 1/2 oz Gin Shake with a glassful * 1/4 oz Triple Sec of broken ice and pour * 3/4 oz Lime Juice unstrained into a goblet. * 1 1/2 oz Orange Juice * 1 tsp. Grenadine Syrup ----------------------------------------------------- root@OpenWrt:/#


Tags

toh/olimex/rt5350f-olinuxino-evb.txt · Last modified: 2016/05/15 11:34 by lorenzo