* NGW overview:
* NGW layout:
Radioshack 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.
Make sure to add your new peripheral initialization call to the board setup file located at
linux-2.6.xx/arch/avr32/boards/atngw/setup.c
The available peripherals are located in
linux-2.6.xx/arch/avr32/mach-at32ap/at32ap7000.c
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
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 makeCopy 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 0xthen reboot. If everything went as planned, you should be able to type:/path/to/u-boot.bin
cat /proc/cpuinfo
and see that the bogomips rating has increased. It will read 400.29 bogomips at 200MHz.
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.