Difference between revisions of "Flameman/fonera"

From eLinux.org
Jump to: navigation, search
m (Reverted edits by VivibOcdel (Talk) to last revision by Flameman)
(LCD)
Line 340: Line 340:
  
 
.
 
.
 +
 +
=== CAMERA ===
 +
 +
OV9650 i2c
 +
 +
http://www.techtoys.com.hk/Components/OV9650_MOD/OV9650%20CMOS%20Camera%20Module.htm
 +
  
 
=== LCD ===
 
=== LCD ===
Line 392: Line 399:
  
 
http://www.optrex.com/products/groupdetail.asp?tag=touch
 
http://www.optrex.com/products/groupdetail.asp?tag=touch
 +
 +
==== 240x320*RGB ====
 +
 +
http://www.techtoys.com.hk/Displays/LVC75Z779%20Eval/LVC75Z779%20Eval%20Board.htm
  
 
==== tiny 48x48 LCD_i2c_over_gpio driver for the LaFonera.2100 ====
 
==== tiny 48x48 LCD_i2c_over_gpio driver for the LaFonera.2100 ====

Revision as of 01:43, 18 September 2009

Contents

fonera.2100-Flameman

Note

Apologize for the poor status of this ewiki, I am developing for this board, so the wiki page will be improved and completed as soon as it it will be possible

feel free to contact me (see the contact below) in case you need support.

Introduction

Tiny computers are gradually becoming better and more useful. I think this trend is positively correlated with the manufacturers' decision to use *nix (when that's true). Fonera2100 uses kerenl2.4, a carefully designed, lightweight FON, which is derived from openWRT distribution, that tries to squeeze as much performance as possible into the smallest storage footprint. In this project will be used gentoo disto running on a full 2.6 kernel


The Target-goal of this page is

  • install uc-gentoo into mmc-sd
  • develop devices
  • make the board able to boot it
  • optimize uc-gentoo for embedded
  • produce a uc-gentoo-uclibc
  • add framebuffer and touch screen support
  • re-target all the project into "tiny PDA"


status @ 15-02-2009 ucgentoo boots from the mmc with root=/dev/mmc3

status @ 05-05-2009 spi display and spi touchscreen are working progress. the mmc_over_gpio is pretty running better performance bugs less.


People you could contact if you need help

  • flameman, i'm currently use this board for a project, email
    • msn daredevil-coder@hotmail.it
    • email flamemaniii@gmail.com
    • irc.nick flameman (channel #edev, #gentoo-mips, #openwrt)
  • you ... if you want ;-)

About this project

embedded target

About the board

Overview

The board consists of:

  • CPU : Atheros AR531X_COBRA - MIPS 4KEc V6.4 @ 183.50 mhz, that means Atheros 5312/2312+, that is mips32 core, mips32-core.pdf
  • RAM soldered 16MB, Hynix hy57v281620etp-h fonera2100-dram.pdf
  • LAN Altima AC101 Auto-MDI(X) 10/100Mbit/sec
  • CWIFI RP-SMA (Reverse SMA), 2dBi areal
  • UART RS232
  • FLASH ST M25P64T-H-25P64V6P-MYS636 spi 8MB fonera2100-flash.pdf
  • POWER system=3.3V, feeder={5V DC, 2.0A}, 4 Watt
  • System PCB 93.5 mm x 25.5 mm x 70 mm
  • RTC the real time clock is provided by the cpu


  • CPU_TYPE MIPS32 Release 1
  • SYSTEM_TYPE Atheros 5312/2312+
  • Defined at arch/mips/atheros: ATHEROS

Memory Locations

memory map of the board will be added as soon as possible


addr begin addr end area
... ?? ram, userspace
.... ?? ram, userspace

Open questions


...


other good hw

miniPCI:

Problems

The heat problem

Heat in electronics mostly comes from dropping voltage by converting current into it, in our case, the voltage regulator in the Fonera drops 5V to 3.3V at 500mA, resulting in the dissipation of 850mW. That’s right, we are dumping 850mW right into the atmosphere in the form of heat.


Fon2100-temp.jpgFon2100-temp-measure.jpg

You can have an idea of the temperature by a very cool thermographs - much nicer than my rather rudimentary method. You can also measure the temperature of the Fonera using a thermocouple connected to a Fluke 123 Scopemeter via an 80TK thermocouple module. The thermocouple was placed in between the heatsink and RF shield, the case closed, and the Fonera powered, as can be seen in the up picture

Fon2100-temp-ir-shot1.jpgFon2100-temp-ir-shot2.jpg

Images of the board

Fon2100-mobo.jpg

Fon2100.jpg

hardware

Uart

fonera-2100-uart


3.3V<--->5V, http://www.robot-italy.com/product_info.php?products_id=917

MMC/SD

about MMC/SD http://www.sandisk.com/oem/manuals.asp

It would be nice to be able to attach a MMC/SD Card to the LaFonera.2100 for bootstrap & storage.

MMC_spi_over_gpio driver for the LaFonera.2100

I develop a specific kernel module for kernel-2.6.26. It handles the card at 300Kbyte/sec.

mmc_spi_over_gpio
                tristate "mmc_spi_over_gpio MMC/SD card over SPI over GPIO support"
                Support for driving an MMC/SD card over GPIO pins via SPI.

A beta MMC Driver for kernel 2.6 is now available: It uses gpio bitbanging, the code is currently being reworked a bit to make it look nicer.

  • Known issues: (version 0.1 for fonera.2100)
   * seg fault on hotplug 
   * limit to 512Mb of 2Gb -- quite fixed
   * issue detecting the total amount of bytes of the MMC -- under fixage

Actually (15-02-2009) the driver runs stable, as long as you do not insert or remove the card while the driver is loaded. I am testing a sandisk-2Gb mmc

 * [*] BUGS
 * --------
 * it seems there are limit in order to map all the device addresses
 * encounter a problem with my 2GB SD card:
 * mmc : MMC/SC
 * mmc : Card Found
 * mmc : card in op mode
 * mmc : SIZE : 231, nMUL : 6, COUNT : 3900, NAME : SD
 * mmc : Card Initialised
 * mmc : The inserted card has a capacity of 511.180.800 Bytes
 * mmc : adding disk
 * mmc: mmc1 mmc2
 * mmc : Card was Found
 *
 * 487,5MB and not ~2GB as expected.
 * concerning large SD card suppport (>= approx. 1GB )
 * registers differ a bit on cards with higher capacity.
 *
 * fixed to read/write 2Gb with a brute force patch
 *


fonera2100 GPIO mapping

Detailed: sw* means the connector on the fonera.2100 near the RJ45

GPIO	        Pin on LaFonera.2100
0		TP3 (test point on the back of the board)	
1		pin 5 of SW1
2		WLAN LED
3		pin 1 of SW1
4		pin 2 of SW1
5		RESET (!)
6		RESET button
7		pin 6 of SW1


Hack: Solder the sd-card

SD Card      -----   Fonera
 DO  (pin 7)          SW1
 CLK (pin 5)          SW2
 DI  (pin 2)          SW5
 CS  (pin 1)          SW6
 Gnd (pin 3)          Gnd
 Vcc (pin 4)          Vcc


 *      MMC/SD
 *      ------
 *
 *         9  1  2  3  4  5  6  7  8
 *         --------------------------  SD card pin view
 *        /   [] [] [] [] [] [] []|| |
 *       | []                        |
 *       |                           |
 *       |                           |
 *       |                           |
 *       |                           |
 *       |                           |
 *
 *       Pin 8 and 9 stay not connected.
 *
 *         |  1  |  |  |  |  |  | |      CS      Chip select
 *         |     2  |  |  |  |  | |      DI      Data in
 *         |        3  |  |  |  | |      GND     Ground
 *         |           4  |  |  | |      VDD     Power
 *         |              5  |  | |      CLK     Clock
 *         |                 6  | |      GND     Ground
 *         |                    7 |      DO      Data out
 *         |                      8              Unused
 *         9                                     Unused
 *


 *  MMC-SD          fonera
 *   --------------------------
 *    9 nc
 *    1 CS           GPIO.7
 *    2 DI           GPIO.1
 *    3 GND
 *    4 VDD          +3,3v
 *    5 CLK          GPIO.4
 *    6 GND
 *    7 DO           GPIO.3
 *    8 nc
 *
 *
 *      ____________
 *     |
 *     |  port RJ45
 *     |____________
 *     |
 *     | **.
 *     | .  1 <--------- GPIO.3 --------> MMC/SD.DO
 *     | .  2 <--------- GPIO.4 --------> MMC/SD.CLK
 *     | .  3
 *     | .  4
 *     | .  5 <--------- GPIO.1 --------> MMC/SD.DI
 *     | .  6 <--------- GPIO.7 --------> MMC/SD.CS
 *     | **
 *     |
 *     |
 *
 *


MMC/SD pinouts @ http://pinouts.ru/Memory/sdcard_pinout.shtml


mmc-spi adapter

This is a simple SD or MMC adapter card. It allows you to interface with any microcontrollers. It is perfect for mass storage, WAV/MP3 player and data logging. The adapter breaks out the SD/MMC socket to a standard 0.1" 11-pin header. It can be plug directly onto the boardboards. This adapter features innovations that set it apart from other SD card adapter. Innovations feature like on-board card detect LED, Push-Push socket, and 3.3V regulator. Which mean either 3.3V or 5.0V microcontroller can be connected directly with the board. You can even use this 3.3V to power external circuits up to 250mA.

fonera-2100-mmc-sd-adapter

Pinout:

VIN: Input power to the SD card (3.3V to 6.0V)
GND: Common (Connects to the housing of the SD socket)
3V3: Output voltage from the on-board 3.3V regulator (250mA)
NC: Connect to pin 9 on the SD card (not used in SPI mode)
CS: Chip select
DI: Serial input data
SCK: Serial clock
DO: Serial output data
IRQ: Interrupt request, connect to pin 8 on the SD card (not used in SPI mode)
CD: Card detect (active low)
WP: Write protect

Features:

• On-board 3.3V regulator
• Connect directly to 3.3V or 5.0V microcontroller
• Card detect LED
• Include 11-pin male header
• Board dimension: 2.0”x1.3”

Hack: Unsolder the caps

In first tests, It's discovered the MMC/SD card is detected, but clk isn't really clear.. So you need to remove the capacitor on the SPI bus (C142, C143, C144, C145) to have clean signals.

MMC/SD card adapter

ebay, search for MMC/SD-USB adapter ... it should cost less than Euro 5, and you could unsolder the card adapter connecor


Hack: MMC/SD card adapter, do it Cheap

you can realize it Cheap from a 5.1/4 floppy cable

http://uanr.com/sdfloppy/ describes how to build a SD card reader from an old 5.25 floppy drive connector.

Bastard Sons of Dial-Up Episode 8 (http://BSoDtv.org/episodes.php) explains how to make an SD Card PCB.

touchscreen

under evaluation about these two driver chip

the package is smd, in ssop ... ssop to dil adaptor is required

  • ADS7846E SSOP-16 -> Surface Mount SMT SMD DIL adaptor TSSOP SSOP 16 PINS
  • ADS7846N TSSOP-16 -> Surface Mount SMT SMD DIL adaptor TSSOP SSOP 16 PINS


TSSOP-SSOP-to-DIL-adaptor.jpg




.

CAMERA

OV9650 i2c

http://www.techtoys.com.hk/Components/OV9650_MOD/OV9650%20CMOS%20Camera%20Module.htm


LCD

It’s Time to Test (and improve) the Knowledge about I2C/SPI LCD Interface!

Have you ever tried to deal with the I2C or SPI LCD interface before? If you haven’t, then you might want to test this out by your own!

It’s a lucky day to you, as today you’re going to develop an I2C LD interface, which it’s allow you to connect an LCD to the fonera with only two simple wires!

You will think it’s a useful tool, if you like more pins to be available for another use, which a normal LCD interface requires a minimum of six pins or you would like to make a control panel!

Basically, with this I2C or SPI LCD interface you can only use two wires from your microcontroller and use up to seven I2C LCD interfaces on the same I2C bus. Furthermore, you also can be easily wire a five button input pad, example like a control panel and free up your serial port for other use with this I2C/SPI LCD Interface.

The great thing about the I2C/SPI LCD interface is it can be used with the Basic Stamp, any Arduino, Microchip PIC or any other microcontroller, which has been built in or a bit banged I2C interface.

Anyway, the fonera will enjoyed by these pretty things, here


.

proof about 320x240 without serial interface

they are so pretty as no serial ! that mean more hw to control them


320x240 Graphic LCD, Backlight, STN Negative, Transmissive -20°C - +70°C 6:00, Negative Voltage Generator, Temperature Compensation

http://www.crystalfontz.com/products/index-grph.html

  • RAiO RA8835 Controller
    • CFAG320240C0-YMI-TZ -> 139.98mm x 120.24mm x 15.6mm
    • CFAG320240C0-YMI-TZ -> 154.79mm x 120.24mm x 15.6mm
  • Epson S1D13700 Controller
    • CFAG320240CX-FMI-T -> 148.02mm x 120.24mm x 15.6mm
    • CFAG320240CX-TFH-TTS -> 148.02mm x 120.24mm x 15.6mm
    • CFAG320240CX-YYH-T --> 148.02mm x 120.24mm x 15.6mm

the CFAG320240CX-TFH-TTS seems to be the One: 320x240 Graphic LCD, White Edge LED Backlight, FSTN Positive, Transflective -20°C - +70°C 6:00, Negative Voltage Generator, Temperature Compensation, 4-wire Analog Touch Screen (it costs $122)

Epson S1D13XXX framebuffer support
CONFIG_FB_S1D13XXX:                                                                                                                   Support for S1D13XXX framebuffer device family 
(currently only working with S1D13806) 
Product specs @ http://www.erd.epson.com/vdc/html/legacy_13xxx.htm
Symbol: FB_S1D13XXX 


wonder if also consider or not the optrex touch screen

http://www.optrex.com/products/groupdetail.asp?tag=touch

240x320*RGB

http://www.techtoys.com.hk/Displays/LVC75Z779%20Eval/LVC75Z779%20Eval%20Board.htm

tiny 48x48 LCD_i2c_over_gpio driver for the LaFonera.2100

This is a gorgeous 48x48 pixel serial color graphic LCD display. It is a small carrier board with Nokia 3210/3310 LCD (be sure it has metallic contacts !!! a lot of newer display has glass contacts )

fonera-2100-lcd

The driver is under development: actually there is a not a kernel driver but all the stuff is running in user space attached to a minimal gpio kernel support. I mean the user space uses /dev/gpio to handle the display ... anyway it has to be tested and ported in the kernel space with a robust support. Also a text gen is under development and it will be able to generate fonts: so it will be possible to used the lcd this way

echo "hAllo world" > /dev/lcd

less tiny 132x132 color LCD_spi_over_gpio driver for the LaFonera.2100

This is a gorgeous 132x132 pixel serial color graphic LCD display. It is a small carrier board with Nokia 6610 LCD. This inexpensive LCD comes with a powerful software adjustable LED backlight. It uses a simple 3 wires serial SPI 9-bit interface. This is a nice compact color LCD board (1.7" x 2.2"). The very important and unique feature it can interface with 5V or 3.3V logic directly. Since the LCD takes 3.3V logic, there is an on-board logic converter so you can interface 5V microcontroller directly. There is also an on-board boost voltage circuit to drive the LED backlight at approximately 7.0V. You can even vampire a small current to from the boost circuit to power other circuitries. It is breadboard friendly so you can plug directly onto the breadboard. Only 6 connections are needed:

fonera-2100-lcd-spi


  • VCC (3.3V to 5.5V)
  • GND (supply ground)
  • RESET (LCD reset, active low)
  • SDATA (serial data)
  • SCLK (serial clock)
  • CS (chip select, active low)

Features:

  • LCD Logic: 3.3V or 5.0V
  • LED Backlight : 7V (On-board DC/DC converter)
  • 132x132 pixel
  • 0.1” spacing (breadboard ready)
  • 4,096 Color Display
  • 9-bit SPI
  • Uses the Epson S1D15G00 Controller
  • Connect directly to 3.3V or 5.0V


The driver is under development: actually there is a not a kernel driver but all the stuff is running in user space attached to a minimal gpio kernel support. I mean the user space uses /dev/gpio to handle the display ... anyway it has to be tested and ported in the kernel space with a robust support. Also a text gen is under development and it will be able to generate fonts: so it will be possible to used the lcd this way

echo "hAllo world" > /dev/lcd


framebuffer, tiny proof of concept

The frame buffer device provides an abstraction for the graphics
   hardware. It represents the frame buffer of some video hardware and
   allows application software to access the graphics hardware through
   a well-defined interface, so the software doesn't need to know
   anything about the low-level (hardware register) stuff.
   Frame buffer devices work identically across the different
   architectures supported by Linux and make the implementation of
   application programs easier and more portable; at this point, an X
   server exists which uses the frame buffer device exclusively.
   On several non-X86 architectures, the frame buffer device is the
   only way to use the graphics hardware.
   The device is accessed through special device nodes, usually located
   in the /dev directory, i.e. /dev/fb*.
   You need an utility program called fbset to make full use of frame
   buffer devices.


more information:

  • kernel/Documentation/fb/framebuffer.txt

framebuffer_spi_over_gpio driver for the LaFonera.2100

nokia 6100 lcd (pcf8833 chip)

LCD Logic - 3.3V @ 2-3mA
·  LED Backlight - 6V-7V @ 40-50mA 
·  Full 4,096 Color Display
·  132 x 132 pixels

More information can be found at: Color LCD 128x128 Nokia Knock-Off

                     ----------- Y ---------->
                                      ___
                    _ _ _ _ _ _ _ _ _|_ _|_ _
                   |                         |
             (0,0) |-------------------------| (131,0)
        |          |                         |
        |          |                         |
        |          |                         |
        |          |                         |
        |          |   Nokia 6610 display    |
        X          |                         |
        |          |                         |
        |          |                         |
        |          |                         |
        |          |                         |
       \|/         |                         |
           (0,131)  -------------------------  (131,131)

     LCD Back pads PINOUT       

   1. VCC-Digital (3.3V)
   2. RESET
   3. SDATA
   4. SCK
   5. CS
   6. VCC-Display (3.3V)
   7. N/C
   8. GND
   9. LED GND
  10. LED V+ (6-7V) 


Pcf8833-fbdev.jpg Pcf8833-nanox.jpg


kernel example drivers/video/skeletonfb.c and set of examples of open drivers

pretty 320x240 Touch_LCD_over_uart driver for the LaFonera.2100

Touch Away! Our Serial LCD 320 x 240 Graphic LCD Display Terminal with touchscreen is designed to provide a cost effective RS-232 or RS-485 operator interface. A high contrast, extended temperature range 320 x 240 pixel LED backlight transflective LCD provides excellent viewing in direct light, as well as indoors. It has a 12:00 to 6:00pm viewing angle, which means it can be viewed from straight on to about 80 degress downward. The backlight automatically turns on when characters are received or inputs are activated, and shuts off after a programmable amount of no use.

fonera-2100-lcd-uart

  • Product name: ACS 320 x 240 LCD Display Terminal with Touchscreen and PS2
  • Number of Dots: 320 x 240
  • Module Dimension: 94.7(W) x 83.3(H) x 11.6Max(T)
  • Viewing Area: 81.4(W) x 61.0(H)
  • Active Area: 76.78(W) x 57.58(H)
  • Dot Size: 0.225(W) x 0.225(H)
  • Dot Pitch: 0.24(W) x 0.24(H)
  • BackLight: LED(White)
  • Viewing Angle: +-40 degress H & V
  • Viewing Direction: 12 O'CLOCK Superwide
  • LCD Type: FSTN-WHITE(Transflective)
  • Contrast Ratio: 5-1
  • Operating Temperature: -20 to +70 degrees C
  • Price: $199.00 (you can but it @ http://vt100lcd.com/index_LCDTerminal.asp)
  • Power: it comes in on two of the unused DB-9 RS-232/RS-485 connector. 10 - 15VDC is required.

Current draw is 32mA when LED backlight is off, 190mA when on.



writing a framebuffer driver for an embedded spi interface

if you have a small Nokia knock-off LCD board that is currently connected to our embedded system using the spi protocol

  • you have a kernel module that correctly opens up the pins for data transfer, and accepts ioctl commands on /dev/ssplcd
  • you have the ability to set pixels, lines, and send bitmap images to the LCD screen from user land. The LCD has its own controller on board, so we do things like 'set row x, set col y, send RGB' etc.

supposing you also have X server (KDrive or fbdev) installed on the root filesystem (but it is incorrectly configured).

the next should be

  • Figure out how to get a framebuffer device up and running using the LCD board
  • Understand what exactly I need to be looking at - /dev/fb0, vesa, X server, ...?

Any suggestions or pointers would be so helpful. I'm not sure if I'm looking to be writing a new kernel module, or a new framebuffer device, or ...?

From my understanding, as long as I can correctly implement /dev/fb0 (kernel module or other) - then X can talk to this device and be none the wiser

usb lcd + touch screen

http://shop.wallbraun-electronics.de/product_info.php?info=p6_LCD-USB-Interface-V3-0-1-Set-inkl--LCD---Touch-Screen.html&XTCsid=mvdogvofvdhr8qdougc4o5edi7



.

microdrive_over_gpio

 * gpio_CF : shifter Found
 * gpio_CF : card in op mode, no IRQ support
 * gpio_CF : resetting..
 * gpio_CF : identify drive..
 * gpio_CF : CF card detected, C/H/S=3968/16/63 sectors=3999744 (1953MB) 
 * gpio_CF : detecting block size
 * gpio_CF : multiple sectors = 32
 * init done: cfa: cfa1 cfa2 cfa3

it's under development and valuation (what is the best ? it's better to have a MMC of 300-500Kbyte/sec without any add of specific electronic ... or it's better to have a microdrive of 400Kyte/sec that requires a an electronic add on ??? still dunno =P ): actually there is a hardware shifter attached to the gpio that transplate serial stream into a parallel data. It's so slow and requires a level translator (3V<-->5V)

the kernel drive export his support to the "pATA/CF" level in a polled way: no IRQ support!

power switch

This piece of electronic is good if you want to switch ON/OFF an electric LOAD such bulb lamp or a remote workstation or such a stuff: 96 load lines are possible

the kernel module is an early and easy use of the gpio

bootloader

redboot http://ecos.sourceware.org/ecos/docs-latest/redboot/redboot-guide.html

varia http://www.rigacci.org/wiki/doku.php/doc/appunti/hardware/la_fonera_openwrt


kernel

framebuffer

http://www.elinux.org/Flameman/framebuffer

download

kernel 2.6.26 proof version with mmc-over-spi-over-gpio kernel-gentoo-fonera.gz (not suggested for production cause it's experimental)

note you can tftp this kernel and make your fonera able to boot having the mmc-sd as rootfs (root=/dev/mmc3). You can also flash this kernel on your fonera to make it able to boot directly: this is the target of the final project!


DO NOT MOUNT,RW ROOTFS !!! THE MMC DRIVER IS STILL NOT SO PRETTY !!!


kernel 2.6.26 proof version with microdrive-over-gpio: extremely experimental, coming soon

issue

issue with mmc_spi_over_gpio

info @ http://www.hjreggel.net/cardspeed/index.html#special-sd.html

mmc : MMC/SC for Fonera-2100
mmc_drv.ko : response : 0
mmc_drv.ko : response : 63
mmc_drv.ko : response : 1
mmc : Card Found
mmc : card in op mode
[*] mmc_get_csd_debug 
    data.00: 0x0
    data.01: 0x26
    data.02: 0x0
    data.03: 0x32
    data.04: 0x5f
    data.05: 0x5a
    data.06: 0x83
    data.07: 0xae
    data.08: 0xfe
    data.09: 0xfb
    data.10: 0x1d
mmc : SIZE : 1885, nMUL : 6, COUNT : 15084, NAME : SD02G
mmc : Card Initialised
[*] mmc_get_csd_debug 
    data.00: 0x0
    data.01: 0x26
    data.02: 0x0
    data.03: 0x32
    data.04: 0x5f
    data.05: 0x5a
    data.06: 0x83
    data.07: 0xae
    data.08: 0xfe
    data.09: 0xfb
    data.10: 0x0
mmc : The inserted card has a capacity of 1977090048 Bytes
mmc : adding disk
 mmc: mmc1 mmc2
mmc : Card was Found


right values are:


Command (m for help): 
Disk /dev/sda: 1977 MB, 1977614336 bytes
64 heads, 63 sectors/track, 957 cylinders
Units = cylinders of 4032 * 512 = 2064384 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       32224+   b  W95 FAT32
/dev/sda2              17         957     1897056   83  Linux

Command (m for help): 
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] 3862528 512-byte hardware sectors (1978 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00
sd 0:0:0:0: [sda] Assuming drive cache: write through
 sda: sda1 sda2
sd 0:0:0:0: [sda] Attached SCSI removable disk
sd 0:0:0:0: Attached scsi generic sg0 type 0

host developing machine

JFFS2

These modules need to be loaded / compiled them right in.

    * "Device Drivers"
          o "Block Devices"
                + "Loopback Device Support" (loop)
          o "Memory Technology Device (MTD) support"
                + "Caching block device access to MTD devices" (mtdblock module) (required for block2mtd)
                + "Self-contained MTD device drivers..."
                      # "MTD emulation using block device" (block2mtd),
    * "File Systems"
          o "Miscellaneous Filesystems"
                + "Journalling Flash File System v2 (JFFS2) support"
                      # "Advanced compression options for JFFS2"
                            * "JFFS2 ZLIB compression support"


Emerge proper tools: emerge sys-fs/mtd-utils

Make the device node block device: mknod /dev/mtdblock0 b 31 0

Reboot the system now and ensure the modules are loaded



expanding ram: 16Mb to 32Mb

good & tested chip number

  • k4s56162e-TL75
  • HY57V561620CLT-HI

check out the the sodmm here : http://www.alldata.com/

idea of how to unsolder and solder http://homepage.ntlworld.com/tenerifeworld/Fonera/Replacing%20the%20memory/


Is it possible to replace the m25p64 flash chip with the m25p128 to double the flash space? Daemondust 04:53, 23 Apr 2007 (CEST) Which type of SDRAM

Hi to all. The original SDRAM chip on the Fonera is a hynix HY57V281620ETP-H which features: 128 Mbit organized as 4 banks x 2 Mbit x 16, 133 MHz An ideal chip needed for the 32MB upgrade may be the hynix HY57V561620ETP-H which is: 256 Mbit organized as 4 banks x 4 Mbit x 16, 133 MHz. Unfortunately is difficult to buy single chips (or small amounts), so we prefer to use PC133 SDRAM modules (like a 512MB PC133 DIMM module - double sided, 8 chips per side - or 256MB PC133 SODIMM module - double sided, 4 chips per side - ). The question is that not all chips from these modules are organized as 4 banks x 4 Mbit x 16. For example, I saw a 512MB PC133 DIMM module with 16 Micron Technology MT48LC32M8A2BB-75 which is organized as 4 banks x 8 Mbit x 8, 133 MHz. Is it possible to do a Fonera RAM upgrade with this chip? (in other words: does the different organization of the same memory size make the difference?)

-> My understanding is that the 4 banks and the x16 is the physical interface to the CPU, so I guess the RAM will need to be of this organization. The "n Mbit" could possibly be increased further, as long as RedBoot is updated to use the additional memory. Kintel 00:54, 19 February 2008 (CET) [edit] Piggy packing 32MB

Hi,

I too thought about extending the Fonera's RAM. However, I would have gone a different route. Since it is quite hard to desolder SMD and you can potentially damage the PCB, I would have tried something like:

- Desoldering or cutting CS# on the original module (in such a way that a wire can still be attached to it) - Piggy packing the 32MB module on top of it, i.e. solder each pin except CS# to the lower chip. - pull high the lower chip's CS# - connect the upper chip's CS# to the PCB

Only thing is I'm not sure that pulling CS# high will actually tri-state the chip's outputs. Maybe you also / instead have to pull CKE low.

just my $0.02 [edit] List of working memory chips

Although I doubt many people have or will complete this modification, I think we should compile a list of working replacements for the original memory chip.

I can hereby confirm that the Micron MT48LC16M16A2-75 (:D) works flawlessly. But, for some reason the modified OpenWRT distribution that the Fonera is shipped with only shows 16 MB. DD-WRT on the other hand shows it all.

- Pinkevin

I can confirm A2V56S40BTP by PSC is workin. Found on a TwinMOS 128MB stick with 4 chips. If someone need one, I have some spares.PM me in the forum.

- Whitewiz Retrieved from "http://www.dd-wrt.com/wiki/index.php/Talk:LaFonera_Hardware_32MB_SDRAM_MOD"

ideas

compcache: have more (compressed) ram or faster (compressed) tmp disk

You require kernel 2.6.x to compile these modules.
http://code.google.com/p/compcache/wiki/CompilingAndUsing
http://code.google.com/p/compcache/downloads/list

   1. Checkout the source or download tarball from here.
   2. Compile:
          * run 'make' in directory where you checked-out or untar'ed sources. 
   3. Usage:
          * Loading: run 'use_compcache.sh <size of swap device (KB)>' to load all required modules and setup swap device. If size is not specified, default size of 25% of RAM is used.
          * Unloading: run 'unuse_compcache.sh' to unload all modules and turn-off compcache swap device. 

If you get any problem using (un)use_compcache scripts, you can do these steps manually as:

    * Load kernel modules:
          o 4 kernel modules are created on compiling. You need to load all three of them (compcache.ko at last)
                + insmod lzo1x_compress.ko
                + insmod lzo1x_decompress.ko
                + insmod tlsf.ko
                + insmod compcache.ko compcache_size_kbytes=5120 (compcache_size_kbytes param sets maximum size allocated for compressed pages) 
          o device node /dev/ramzswap0 should be automatically created after loading compcache module. If not, then manually create it as:
                + mknod /dev/ramzswap0 b 253 0 (replace 253 with whatever major no. is assigned to this device: cat /proc/device | grep ramzswap) 
          o Add ramzswap as swap device
                + swapon /dev/ramzswap0 -p 1 (give this swap device the highest priority). 
          o Verify that ramzswap is active using: cat /proc/swaps. Its should show entry of /dev/ramzswap0. 

Now, when system starts swapping, compcache will compress and store these pages in RAM itself! :)

uc-gentoo

stage3-mips3 big endian is currently running updated to 2008

A shot

@17-02-2009 removed /dev/mmc3, changed root=/dev/mmc2

reboot+dmesg: bootloader & kernel startup

RedBoot> +PHY ID is 0022:5521
Ethernet eth0: MAC address 00:18:84:14:86:74
IP: 192.168.1.11/255.255.255.0, Gateway: 192.168.1.1
Default server: 192.168.1.14

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 - built 16:57:58, Aug  7 2006

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Board: ap51 
RAM: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
== Executing boot script in 10.000 seconds - enter ^C to abort
RedBoot> ip_addr -l 192.168.1.11 -h 192.168.1.14
IP: 192.168.1.11/255.255.255.0, Gateway: 192.168.1.1
Default server: 192.168.1.14
RedBoot> load gentoo-fonera
Using default protocol (TFTP)
Entry point: 0x802e7ba0, address range: 0x80041000-0x80376264
RedBoot> exec
Now booting linux kernel:
 Base address 0x80030000 Entry 0x802e7ba0
 Cmdline : 
Linux version 2.6.26-rotary-wombat-mips32be-fonera-svn14268-dirty3 (root@queen-vittoria) (gcc version 3.4.5) #77 Thu Feb 12 19:50:42 CET 2009
CPU revision is: 00019064 (MIPS 4KEc)
Determined physical RAM map:
 memory: 01000000 @ 00000000 (usable)
Zone PFN ranges:
  Normal          0 ->     4096
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
    0:        0 ->     4096
Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 4064
Kernel command line: console=ttyS0,9600 root=/dev/mmc2 init=/sbin/init
Primary instruction cache 16kB, VIPT, 4-way, linesize 16 bytes.
Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 16 bytes
PID hash table entries: 64 (order: 6, 256 bytes)
console [ttyS0] enabled
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 12568k/16384k available (2731k kernel code, 3816k reserved, 433k data, 120k init, 0k highmem)
Mount-cache hash table entries: 512
net_namespace: 484 bytes
NET: Registered protocol family 16
Radio config found at offset 0xf8(0x1f8)
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
NET: Registered protocol family 1
ar531x: Registering GPIODEV device
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
ev/ptmx driver
msgmni has been set to 24
io scheduler noop registered
io scheduler deadline registered (default)
mmc : MMC/SC for Fonera-2100 (flameman)
mmc_drv.ko : response : 0
mmc_drv.ko : response : 63
mmc_drv.ko : response : 1
mmc : Card Found
mmc : card in op mode
mmc : SIZE : 1885, nMUL : 6, COUNT : 15084, NAME : SD02G
mmc : Card Initialised
mmc : The inserted card has a capacity of 1977090048 Bytes
mmc : adding disk
 mmc: mmc1 mmc2
mmc : Card was Found
Serial: 8250/16550 driver $Revision: 1.90 $ 1 ports, IRQ sharing disabled
serial8250: ttyS0 at MMIO 0xb1100003 (irq = 37) is a 16550A
eth0: Atheros AR231x: 00:18:84:14:86:74, irq 4
ar2313_eth_mii: probed
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:00)
nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP vegas registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 120k freed
eth0: Configuring MAC for full duplex
Algorithmics/MIPS FPU Emulator v1.5
mips1-hosted-by-(none) / # ls
bin   dev      etc   lib  opt	root  sys  toor  var
boot  dev.tgz  home  mnt  proc	sbin  tmp  usr
mips1-hosted-by-(none) / # cd root
mips1-hosted-by-(none) root # ls
mount.nfs	     nano-2.1.7-mips1	   nfs-utils-1.1.3	   test-mips
myNET-host-lan-scan  nano-2.1.7-mips1.tgz  nfs-utils-1.1.3.tar.gz
mips1-hosted-by-(none) root # dmesg 
Linux version 2.6.26-rotary-wombat-mips32be-fonera-svn14268-dirty3 (root@queen-vittoria) (gcc version 3.4.5) #77 Thu Feb 12 19:50:42 CET 2009
CPU revision is: 00019064 (MIPS 4KEc)
Determined physical RAM map:
 memory: 01000000 @ 00000000 (usable)
Entering add_active_range(0, 0, 4096) 0 entries of 256 used
Zone PFN ranges:
  Normal          0 ->     4096
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
    0:        0 ->     4096
On node 0 totalpages: 4096
  Normal zone: 32 pages used for memmap
  Normal zone: 0 pages reserved
  Normal zone: 4064 pages, LIFO batch:0
  Movable zone: 0 pages used for memmap
Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 4064
Kernel command line: console=ttyS0,9600 root=/dev/mmc2 init=/sbin/init
Primary instruction cache 16kB, VIPT, 4-way, linesize 16 bytes.
Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 16 bytes
PID hash table entries: 64 (order: 6, 256 bytes)
console [ttyS0] enabled
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 12568k/16384k available (2731k kernel code, 3816k reserved, 433k data, 120k init, 0k highmem)
Calibrating delay loop... 183.50 BogoMIPS (lpj=917504)
Mount-cache hash table entries: 512
net_namespace: 484 bytes
NET: Registered protocol family 16
Radio config found at offset 0xf8(0x1f8)
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
NET: Registered protocol family 1
ar531x: Registering GPIODEV device
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
ev/ptmx driver
msgmni has been set to 24
io scheduler noop registered
io scheduler deadline registered (default)
mmc : MMC/SC for Fonera-2100
mmc_drv.ko : response : 0
mmc_drv.ko : response : 63
mmc_drv.ko : response : 1
mmc : Card Found
mmc : card in op mode
mmc : SIZE : 1885, nMUL : 6, COUNT : 15084, NAME : SD02G
mmc : Card Initialised
mmc : The inserted card has a capacity of 1977090048 Bytes
mmc : adding disk
 mmc: mmc1 mmc2
mmc : Card was Found
Serial: 8250/16550 driver $Revision: 1.90 $ 1 ports, IRQ sharing disabled
serial8250: ttyS0 at MMIO 0xb1100003 (irq = 37) is a 16550A
eth0: Atheros AR231x: 00:18:84:14:86:74, irq 4
ar2313_eth_mii: probed
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:00)
nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP vegas registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 120k freed
eth0: Configuring MAC for full duplex
Algorithmics/MIPS FPU Emulator v1.5


inside the mmc-rootfs, meet the the ucinit-proof (read only first mount)

mips1-hosted-by-(fonera.2100) root # myinit
[*] ucinit
    init stuff
    mount -t proc none /proc/
    mount stuff, rootfs.ro, nodevpts
    hostname: fonera.2100
    config net: {eth0 192.168.1.6/24 gateway 192.168.1.1}
    login

login : root
Password: *************
  M  e  s  s  a  g  e      O  f      T  h  e      D  a  y
  i  n  s  e  r  t     c  o  i  n  s     p  l  e  a  s  e       
  
Unable to change tty /dev/console: Read-only file system

mips1-hosted-by-(fonera.2100) ~ # hostname
fonera.2100

mips1-hosted-by-(fonera.2100) ~ # ls
mount.nfs	     nano-2.1.7-mips1	   nfs-utils-1.1.3	   test-mips
myNET-host-lan-scan  nano-2.1.7-mips1.tgz  nfs-utils-1.1.3.tar.gz

mips1-hosted-by-(fonera.2100) ~ # gcc -v
Using built-in specs.
Target: mips-unknown-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/mips-unknown-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/mips-unknown-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/mips-unknown-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/mips-unknown-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/mips-unknown-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/mips-unknown-linux-gnu/4.1.2/include/g++-v4 --host=mips-unknown-linux-gnu --build=mips-unknown-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.2 (Gentoo 4.1.2 p1.0.2)

mips1-hosted-by-(fonera.2100) ~ # as --version
GNU assembler (GNU Binutils) 2.18, 2007, configured for a target of `mips-unknown-linux-gnu'.

mips1-hosted-by-(fonera.2100) ~ # mybasta basta

system shutdown 

About devtools

crossbuilder script made to build up what is needed

About the status of this project

Actually (15-02-2009) i am able to boot the board with uc-gentoo (-glibc) from the mmc-sd the uc-libc stages are still under development =P and the MMC_over_gpio is still not able to correctly identify the byte amount of a MMC card: it's working with a brutal patch


02-03-2009: the mmc_over_gpio has been debugged and i understand exactly what is the problem, a rewrite in running, also ... that diver needs a prettier make up ... and finally it need a mutex just cause mmc and lcd will share the physically spi lines