Вступление.

В прошлой статье мы рассмотрели основные моменты начала работы с платами IC-Nova, теперь рассмотрим как работать со встроенной Flash, например, что бы заменить Uboot установленный на нашей плате на более новый.

Что же такое Uboot? Это начальный загрузчик нашей платы. Его можно сравнить с BIOS для обычного компьютера. Uboot так же тестирует память и инициализирует основные подсистемы нашей платы.

Существует два варианта обновления нашего загрузчика:

  • обновление с помощью Atmel JTAG-ICE MKII
  • обновление средствами Linux загруженного на плате

Если во время второго варианта у вас что-то пойдет не так, всегда можно прибегнуть к первому варианту, если конечно у вас есть JTAG-ICE MKII.

Обновление Flash при помощи JTAG-ICE MKII.

Для работы нам понадобится AVR32 GNU Toolchain 2.2.1 для вашей операционной системы. В моем случае это Ubuntu 8.04.

Скачиваем и устанавливаем.

The flash memory is compatible with the CFI standard and is mapped on address 0. The image for the bootloader
should be written to address 0 and the image for the filesystem on address 0×30000.
This way, one of the following commandlines should be used:
avr32program program -v -e -f cfi@0 binaries/base/u-boot.bin
or
avr32program program -v -e -f cfi@0 –F bin -O 0×00030000
binaries/base/rootfs.avr32.jffs2

Flash память совместима со стандартом CFI и отражаена (маппится) на адрес 0. Образ загрузчика должен быть записан по адресу 0, а образ файловой системы по адресу 0×30000.

Для этого вы можете использовать одну из следующих команд, в данном случае мы находимся в папке с нашим buildroot'ом:

sudo avr32program program -v -e -f cfi@0 binaries/base/u-boot.bin

или

sudo avr32program program -v -e -f cfi@0 –F bin -O 0x00030000 binaries/base/rootfs.avr32.jffs2

Обновление Flash из под Linux.

В принципе все не так сложно. Сначала необходимо настроить загрузку платы по NFS.  Или если у нас нет возможности сделать это, загружаем образ с помощью wget в /tmp

Папка /tmp размещена в оперативной памяти и доступна на запись. Теперь можем приступать к обновлению.

Далее уже из под шелла даем команду:

dd if=/путь/к/образу of=/dev/mtdblock2 bs=65535

Стоит заметить, что для платы ICnova AP7000 Base существуют следующие разделы:

  • mtdblock0 содержит загрузчик, в нашем случае Uboot
  • mtdblock1 содержит переменные для загрузчика
  • mtdblock2 содержит образ основной файловой системы

Тонкости сборки Uboot.

Перед тем как записать новый Uboot в плату убедитесь, что он был собран именно под вашу конфигурацию. К примеру плата ICnova AP7000 Base поставляется как минимум в двух вариантах:

  • без установленного USB-RS232 моста и тогда консоль необходимо выводить на uSART0 (ttyS0)
  • с установленным мостом, тогда консоль может быть и на USART1 (ttyS1)

После первой сборки Buildroot зайдите в папку /project_build_avr32/base/u-boot-2009.01/include/configs/ и отредактируйте файл icnova_base.h

если мы используем USART0 то должна быть строка

#include <configs/icnova/usart0.h>

Если USART1 то:

#include <configs/icnova/usart1.h>

удаляем из папки с uboot файл uboot.bin

после чего выходим в корень Buildroot'a и задаем

 make
Ждем, после чего можем программировать во Flash новый загрузчик.

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 
   
© 2011 ADTL Blog Suffusion theme by Sayontan Sinha