Welcome to AVR32 Linux... Users Groups


* NGW overview:

Add headers to the NGW100 board

My board from Digikey did not include the expansion headers, so make sure you order those when purchasing your board. J5 and J6 have the PS/2 connections, J6 also has the audio connections and all of J7 can be used for an LCD panel. Chapter 9, section 7 of the AP7000 datasheet details the pin multiplexing options for the processor. You can find details of the ExpansionHeaders here. Here are the schematics of the board. I also recommend soldering a jumper wire from one of the reset switch test pads (two small round pads next to the corner of the parallel flash chip, below J5) to J5 pin 32 (which is not connected) so you have reset available to your expansion.

* NGW layout:

Create a daughter board

I recommend that you do not put all of the headers onto one daughter board. They can become extremely difficult to seperate once they are connected.

Radioshack perf board part number 276-147 or similar makes a good platform for prototyping.

I also recommend Schmartboards for attaching components that are only available in SMT packages.

Here are a couple of sources of relatively inexpensive LCD panels. The Sharp 480x272 screen from the Sony PSP Hantronix 320x240 without touchscreen Hantronix 320x240 with touchscreen

I recommend keeping your display resolution at or below 640x480 with 16-bit color. The memory size, effective memory bandwidth, and clock speed of the NGW100 board are not really suitable for any higher display resolutions.

and if you want to use a touch screen, the NXP UCB1400 AC'97 audio IC is ideal. It includes a built-in 4 wire touchscreen controller and there is a already a Linux kernel driver written for it.

Re-compile your kernel

Make sure to add your new peripheral initialization call to the board setup file located at


The available peripherals are located in


The at32ap7000.c source file will also need to be modified to match the LCDC pin connections of the NGW100. This patch shows how.

Also make sure that your peripheral is enabled in the kernel .config file in the configuration section of: Build your new kernel

Overclocking the board

It is possible to overclock the NGW100 to 200MHz or possibly higher. This can be achieved by changing the clock multiplier and recompiling u-boot. If you want to run faster than 200MHz, you may have to raise the CPU core voltage from 1.8 volts to 1.95 volts. This can be done by changing feedback resistor R88 in the voltage regulator circuit from 22k to 27.4k.

First, you can test how it behaves when overclocking like this:

Halt u-boot before it loads linux; then type this command (changing some values according to what you want to test):

 mw 0xFFF00004 0x00000000; mw 0xfff00020 0x100C0111; mw 0xffe01020 0x00000047;

It has to be on one line, as they all need to execute at once. The first mw writes a new value to CKSEL, the second writes a new value to PLL0 control, and the last changes the USART speed, so that you still can get a readable output to your screen through the RS232. The mw-command takes and address and value as argument, mw [addr] [value]. This makes it possible to test settings before you make a new u-boot image.

You can get the u-boot source code here. You can get a patch to set the clock for 200MHz here. Compile u-boot by simply doing the following:

make atngw100_config
Copy the file u-boot.bin to your NGW100's file system using ftp or whatever method you like.

Now you will need to compile the kernel to remove the write lock flag from the flash memory. You can do this by removing the line

.mask_flags = MTD_WRITEABLE,

from linux-2.6.xx/arch/avr32/boards/atngw100/flash.c, inside struct mtd_partition flash_parts[]

Recompile your kernel as explained above.

Once you have booted into your new kernel, you can erase and re-write the u-boot partition. This is potentially dangerous to your NGW100, because you will need a JTAG ICE mkII to reload the bootloader if something goes wrong. Beware. Do not attempt to update u-boot using u-boot unless you are running version 1.2 or higher. Older versions of u-boot run directly from the flash and will get erased during the update. Version 1.2 and higher are copied to RAM before executing.

You can install u-boot like this:

mtd_debug erase /dev/mtd0 0x0 0x20000
mtd_debug write /dev/mtd0 0x0 0x<file length> /path/to/u-boot.bin
then reboot. If everything went as planned, you should be able to type: cat /proc/cpuinfo and see that the bogomips rating has increased. It will read 400.29 bogomips at 200MHz.

Upgrading the SDRAM

The SDRAM can be upgraded to 64MB by replacing the 32MB SDRAM chip. A suitable replacement can be purchased here. Removing the old chip is easy if you use ChipQuik eutectic solder. You simply add flux, wet all of the leads with the eutectic solder, then lift the chip off of the board. It's extremely easy to do.

After replacing the chip, all that is needed is to recompile and install u-boot with the following change(s).

In the file: board/atmel/atngw100/atngw100.c

Change the sdram struct to match the values from the chip's datasheet. In the case of the chip mentioned above, all that needed to be changed was the .col_bits from 9 to 10.

  File Size Date By Actions
pdf AT32NGW100_schematics.pdf
NGW100 schematics
192.6 K 2007-08-22 - 11:36 JohnVoltz props, move
gif ngw100mechanicaldimensions.gif
NGW mechanical dimensions
14.1 K 2007-08-22 - 12:07 JohnVoltz props, move
png ngw_overview.png
NGW overview
147.0 K 2007-08-22 - 11:50 JohnVoltz props, move
else uboot-1.2.0.atmel.1-speed.patch.tar.gz
Patch to clock NGW100 at 200MHz
2.7 K 2007-10-17 - 23:24 JohnVoltz props, move
r11 - 2008-01-25 - 20:11:47 - JohnVoltz
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.
Atmel®, AVR® and others are registered trademarks or trademarks of Atmel Corporation or its subsidiaries.
All other trademarks are the property of their respective owners.
Syndicate this site RSSATOM