
Release notes for FRV uClinux 2.4.24-uc0 release frv-040820-3.
--------------------------------------------------------------

==================
Supported Hardware
==================

This release of the kernel supports the following boards:

 (*) uClinux:

     (*) MB93093-PDK (FR403).

     (*) MB93091-VDK:

	 (*) With MB93090-MB00 motherboard: CB10 (FR401), CB30 (FR403),
	     CB41 (FR555), CB60 (FR405), CB70 (FR405), and CB451 (FR451).

	 (*) Standalone: CB70 (FR405).

 (*) MMU linux:

     (*) MB93091-VDK with MB93090-MB00 motherboard CB451 (FR451).


=============
Documentation
=============

There is general documentation on the kernel in the Documentation/
directory.

Documentation specific to the FR-V architecture port can be found in
the Documentation/fujitsu/frv/ directory.

Documentation specific to the MB93493 companion chip can be found in
the Documentation/fujitsu/mb93493/ directory.


=========================================
Configuring and building the Linux kernel
=========================================

This is the Linux 2.4.24-uc0 based release of uClinux for MB93091-VDK and
MB93091-PDK. It is assumed that your toolchain is functional, and is
installed to the path /opt/redhat/frv-040820-3.

After extracting the kernel sources, run the command 'make dep' to generate
dependency information.

 [~/linux-2.4.24-uc0] $ make dep

To configure the Linux kernel, first copy the default configuration file
from the arch/frvnommu/kernel directory to '.config' in the top-level
kernel directory, and run 'make oldconfig' to process the configuration:

 [~/linux-2.4.24-uc0] $ cp arch/frv/defconfig-mb93091 .config
 [~/linux-2.4.24-uc0] $ make oldconfig

In this example, the kernel will be configured to run uClinux on any VDK CPU
card plus motherboard, and requiring no DAV board or DM9000 NIC. There are
several alternative defconfig files in arch/frv/. See
Documentation/fujitsu/frv/configuring.txt for information as to what each is
meant for.

New drivers and other configuration options can now be added to or removed
from this configuration by use of the 'xconfig' tool.

The next thing to do is to generate dependencies for the kernel build. This can
be done with the 'make dep' command:

 [~/linux-2.4.24-uc0] $ make dep

And then the kernel can be built by issuing the command 'make':

 [~/linux-2.4.24-uc0] $ make

This should result in a full build of the Linux kernel, resulting in a
bootable kernel named 'Image' in the arch/frvnommu/boot directory. Copy
this image, if necessary, to a location from which it can be accessed by
TFTP:

 [~/linux-2.4.24-uc0] $ cp arch/frvnommu/boot/Image /tftpboot/Image



==========================
Booting Linux from RedBoot
==========================

First, load the Linux 'Image' file into a suitable location in RAM:

	RedBoot> load -r -b 0x100000 /tftpboot/Image

On the MB93091-CB70 in standalone mode, you may need to perform this over
the serial port instead of by TFTP:

	RedBoot> load -m y -r -b 0x100000

You can also store the kernel in a flash partition, or in a JFFS2 file
system on the flash. Consult RedBoot documentation for further details.

Once the kernel is loaded, it can be executed with the 'exec' command,
and must be given a suitable command line. For example, to use a root
NFS file system you could issue the following, all on one line:

	RedBoot> exec -c "root=/dev/nfs nfsroot=172.16.18.64:/export/frv-rootfs ip=bootp console=ttyS0,115200"

The JFFS2 flash file system is also supported in this release.


=============================
 MB93493 Framebuffer Driver
=============================

The MB93493 frame buffer driver support is enabled as follows, see "Configuring and
building the Linux kernel" above.  Supported display types include LCD, VGA and
NTSC TV.

[~/linux-2.4.24-uc0] $ cp arch/frv/defconfig-mb93091-fb .config

The user-specified command line options for the framebuffer driver are parsed as follows:
    video=<display_type><xres>x<yres>[-<bits_per_pixel>]

For more information on options, see drivers/video/mb93493fb.c

For example:
    RedBoot> exec -c "root=/dev/nfs video=ntsc nfsroot=172.16.18.64:/export/frv-rootfs ip=bootp console=ttyS0,115200"


==============
Suspend to RAM
==============

In order to make use of the suspend to RAM feature, the RAMBOOT# signal
must be accessible. To enter sleep mode, issue the command

	# echo 1 > /proc/sys/pm/suspend

The board will shut down its device drivers and place the CPU into
'PLL stop mode'. To return from sleep, press the RAMBOOT# button on
the CB70, or toggle the RAMBOOT switch twice on other VDK boards. The
kernel should return to life.

RedBoot version 2.0F or later is required for correct resume operation.

Suspend-to-RAM (or, more correctly, _resume_) has not been tested on the
MB93093-PDK due to lack of access to the RAMBOOT# signal.



==============================
Known problems in this release
==============================

1. Userspace debugging.

Hardware watchpoints are not supported in userland debugging. The
debugger will emulate watchpoints by single-stepping, which may be
slow.

In order to prevent breakpoints in one process from affecting other
processes sharing the same executable or libraries, sharing of mapped
objects is disabled for processes which are being traced. This technique
cannot work for objects which were running before a debugger is attached,
and may adversely affect MAP_SHARED semantics. Alternative solutions to
the original problem will be explored.

2. MB93091-CB70 standalone mode.

Automatic detection of the presence of a motherboard is not implemented.
In order to use RedBoot or Linux on the MB93091-CB70 without a VDK
motherboard present, set the lowest bit of SW_GPH on the CPU board to 'OFF'.
With SW_GPH[1] set to 'ON', both RedBoot and Linux will crash upon
attempting to access motherboard resources.

3. DM9000 Ethernet NIC fails after collision.

It appears that late-detected collisions cause the DM9000 to enter a
state where its TX SRAM Read Pointer (TMPAL) is misaligned, and all packets
transmitted are corrupted. The driver will detect this, and will reset
the NIC. However, performance may be adversely affected.

The DM9000 driver must not be enabled on a kernel for a board without
the DM9000 NIC, and hence is not included in the default
configuration. Please note that it is useful to enable the DM9000
driver when using the MB93091-CB70 without the motherboard.

4. Kernel debugging.

Support for debugging kernel modules is untested and may require extra
functionality from the 'insmod' userspace tool, in order to record a
symbol table for loaded modules.




====================
Debugging the kernel
====================

Full documentation on debugging the kernel with its built-in GDB stub
is included in the file Documentation/fujitsu/frv/gdbstub.txt in the
Linux source tree. Due to the lack of a second serial port, in-kernel
GDB functionality is not easily available on the MB93093-PDK board.


As with userspace, debugging of optimised code is suboptimal; and the
configuration option CONFIG_FULLDEBUG may be selected in order to
improve the reliability of line number information within the kernel
image.

When changing the value of the CONFIG_FULLDEBUG option, the
generated file arch/frv/vmlinux.ldi is NOT regenerated.  This file
must be manually removed prior to rebuilding the kernel in order
for the CONFIG_FULLDEBUG option change to fully take effect.  If
this is not done, and CONFIG_FULLDEBUG is enabled after building
the kernel with this option disabled, GDB will not be able to
correctly determine line numbers associated with assembly source
code.  (This is actually a bug in GDB.  The vmlinux.ldi file
generated with CONFIG_FULLDEBUG enabled contains a workaround to
avoid this GDB bug.)


================================
Changes for the 040820-3 release
================================


Issue 43758
fix panic in VDC driver
fix resume logic in VDC driver

Issue 47581
Add logic to process VDC underrun errors

Issue 42992
Fix framebuffer mmap

Issue 43833
Change default register settings to image is not shifted to the left
Fix problem with framebuffer on interleaved displays.

