Welcome to AVR32 Linux... Users Groups

U-Boot on UC3 Processors

Current status

Three students at NTNU have been working on this as a student project during the fall of 2008 and spring of 2009. A patchset was submitted to the official u-boot mailinglist (10. oct 2008) which made it possible to start U-Boot. A second revision of the patchset was posted on 23. January 2009:

The early revisions of the microcontroller (up to revision J) has a bug in the SDRAM-controller, which makes code execution from SDRAM unreliable. We therefore currently relocate only data to SDRAM, and no code. This bug makes U-Boot mostly useless on this revision of the evk1100 platform unless other external memory is used. We are also going to add support for SRAM and running U-Boot and loaded images from SRAM.

There are still some unaddressed comments on the patch series that need to be fixed before the patches can be merged into mainline.

UC3 CPU family support

Since the AVR32 UC3 chips are very similar to the AP7 chips already supported by U-Boot, getting u-boot to run on UC3 processors is mostly a matter of handling the following differences:

  • UC3 implements the AVR32A architecture. AP7 implements the AVR32B architecture. This means that the exception- and interrupt-handling entrypoints must be rewritten. Fortunately, the exception- and interrupt-handling code is much simpler in u-boot than it is in the Linux kernel.
  • UC3 doesn't have any caches. This simplifies DMA buffer handling, but most drivers should be written to work on both families.

Support for the UC3 CPU family should be added to a new directory, cpu/at32uc, matching the existing cpu/at32ap directory with AP7 CPU family support.

UC3A SoC Support

The UC3A series of chips features an External Bus Interface, ethernet MAC, SPI controllers and more, making it an excellent choice for running U-Boot and Linux. The specifics about the UC3A chips (memory map, port mux setup, etc.) should be added to the cpu/at32uc/at32uc3a and include/asm-avr32/arch-at32uc3a directories.

The SDRAM and Static Memory controllers are the same as on AP7000, so preferably the code for initializing those should be shared.

ATEVK1100 Board Support

After support for the CPU architecture and chip has been added, it's time to tie everything together in the board support code. The ATEVK1100 features 32MB on-board SDRAM and 8MB on-board flash as well as ethernet, USB and MMC/SD connectors, which should be more than adequate for running U-Boot and Linux.

Support for the ATEVK1100 board should be added to the board/atmel/atevk1100 directory.

UC3 Internal Flash Driver

All currenly available UC3 chips have internal flash on the chip. This may be used to store U-Boot itself, but also for storing the environment. For the latter to be possible, a driver for the internal flash controller must be implemented for U-Boot.

r4 - 2011-09-09 - 11:28:36 - HansChristianEgtvedt
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