Инструкция по прошивке камеры Сигранд с tftp сервера
----------------------------------------------------

0. Подготовка.

0.1. Положите файлы redboot.bin, redboot.bin.cksum,
root.bin, root.bin.cksum, kernel.bin, kernel.bin.cksum в каталог,
на который настроен сервер tftp. Обычно это /tftpboot или
/var/lib/tftpboot или c:\Program Files\tftpd32.

0.2. Подключите консольный кабель камеры к порту RS-232 (COM порт) ПК,
запустите программу эмуляции терминала, настроить её на этот порт.
Параметры порта 115200n8.

0.3. Подать питание на камеру, в терминале можно заранее один или
несколько раз нажать Ctrl-C.
В терминале появятся строки:
=========================================================================
++
flash_hwr_init():  0 out of NUM_DEVICES=15, dev id=0xa12c known id=0x35ec
flash_hwr_init():  1 out of NUM_DEVICES=15, dev id=0xa12c known id=0x36ec
flash_hwr_init():  2 out of NUM_DEVICES=15, dev id=0xa12c known id=0x76ec
flash_hwr_init():  3 out of NUM_DEVICES=15, dev id=0xa12c known id=0x79ec
flash_hwr_init():  4 out of NUM_DEVICES=15, dev id=0xa12c known id=0xf1ec
flash_hwr_init():  5 out of NUM_DEVICES=15, dev id=0xa12c known id=0xa1ec
flash_hwr_init():  6 out of NUM_DEVICES=15, dev id=0xa12c known id=0xaaec
flash_hwr_init():  7 out of NUM_DEVICES=15, dev id=0xa12c known id=0xd5ec
flash_hwr_init():  8 out of NUM_DEVICES=15, dev id=0xa12c known id=0xd5ec
flash_hwr_init():  9 out of NUM_DEVICES=15, dev id=0xa12c known id=0xd7ec
flash_hwr_init(): 10 out of NUM_DEVICES=15, dev id=0xa12c known id=0xd5ad
flash_hwr_init(): 11 out of NUM_DEVICES=15, dev id=0xa12c known id=0xad
flash_hwr_init(): 12 out of NUM_DEVICES=15, dev id=0xa12c known id=0xd52c
flash_hwr_init(): 13 out of NUM_DEVICES=15, dev id=0xa12c known id=0xa120
flash_hwr_init(): 14 out of NUM_DEVICES=15, dev id=0xa12c known id=0xa12c
Searching for BBT table in the flash ...

Found version 1 Bbt0 at block 1023 (0x07fe0000)

Found 2 bad blocks

... Read from 0x03ee0000-0x03f00000 at 0xe0040000:
... Read from 0x03ed3000-0x03ed4000 at 0xe005f000:

Board Type: IP Camera
Clock input: 26 MHz
PMIC ID: 0x0000009d [Rev: 3.5]
FOUND AMD79C874 PHY: ID=225600
FEC: [ FULL_DUPLEX ] [ connected ] [ 100M bps ]:
mxc_fec_start
Ethernet mxc_fec: MAC address ac:de:48:48:bd:20
IP: 192.168.2.173/255.255.255.0, Gateway: 192.168.2.1
Default server: 192.168.2.159
mxc_fec_int_vector

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version Sigrand/i.MX27/IPCAM 20090709 - built 13:06:30, Feb 18 2011

Platform: MX27 IP Camera (Freescale i.MX27 based) PASS x.x [x32 SDR]
Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

RAM: 0x00000000-0x03f00000, [0x00022a28-0x03ed1000] available
FLASH: 0xe0000000 - 0xe8000000, 1024 blocks of 0x00020000 bytes each.
== Executing boot script in 2.000 seconds - enter ^C to abort
^C
=========================================================================

При появлении строчки

== Executing boot script in 2.000 seconds - enter ^C to abort

нажмите Ctrl-C, если не сделали этого заранее.


0.4. Введите команду "factive nand" (или скоращенно "fac nand").
Камера перезагрузится с вышепоказанным экраном.
Пока валятся эти сообщения, нажмите Ctrl-C заранее или в ответ
на приглашение
== Executing boot script in 2.000 seconds - enter ^C to abort


0.5. Введите команду

ip_address -l 192.168.2.200/24 -h 192.168.2.4

где вместо 192.168.2.200 укажите нужный вам IP адрес камеры,
а вместо 192.168.2.4 адрес машины с tftp сервером.
Оба этих адреса должны быть в одной подсети.

Ответ:

IP: 192.168.2.200/255.255.255.0, Gateway: 192.168.2.1
Default server: 192.168.2.4


1. Прошивка нового загрузчика.

Этот этап необходим только если вы уверены, что на камере загрузчик старый.
Прошивка загрузчика - опасная и редкая операция.

1.1. Загрузите загрузчик с tftp сервера командой:
load -r -b 0x100000 redboot.bin

Введите команду "cksum" или сокращённо "ck".
Сравните результат с содержимым файла redboot.bin.cksum.
Удобный метод сравнения - копирование (cut&paste) строки из файла .cksum
сразу после результата команды cksum и сравнение глазами двух строк
по вертикали.
При несовпадении двух пар чисел от дальнейших действий откажитесь.
Для восстановления попробуйте повторить этот пункт сначала.

1.2. Введите команду
run 0x100000

и вовремя нажмите Ctrl-C на приглашение
== Executing boot script in 2.000 seconds - enter ^C to abort


1.3. Для новых камер тут должна быть процедура обхода bad blocks
в области загрузчика, инициализации каталога разделов, Bad Block Table,
сканирования на bad blocks, но она пока опущена.


1.4. Прошивка нового загрузчика из памяти во flash.
Введите команду romupdate.
Загрузчик из RAM запишется во flash.

Результат:
=========================================================================
Updating ROM in NAND flash
romupdate(): REDBOOT_2ND_BLOCK_ADDR: 0x00020000
romupdate(): Erase 1st block at 0xe0000000
... Erase from 0xe0000000-0xe0020000:
romupdate(): Erase 2nd block at 0x00020000
... Erase from 0x00020000-0x00040000:
romupdate(): Program 1st block at 0xe0000000
... Program from 0x03f00000-0x03f20000 at 0xe0000000:
romupdate(): Program 2nd block at 0x00020000
... Program from 0x03f20000-0x03f40000 at 0x00020000:
RedBoot>
=========================================================================


2. Удаление старых разделов

Примечание: удаление разделов нужно только при изменении схемы
их расположения и/или их размеров. Но сейчас как раз такой случай.

Введите команды:

fis del nand.kernel
fis del nand.rootfs
fis del nand.conf

На вопрос "Delete image 'nand.*' - continue (y/n)? "
отвечайте буквой 'y'.

Пример:

RedBoot> fis del nand.kernel
... Read from 0x03ee0000-0x03eff000 at 0xe0040000:
Delete image 'nand.kernel' - continue (y/n)? y
... Erase from 0xe0060000-0xe0660000:
... Erase from 0xe0040000-0xe0060000:
... Program from 0x03ee0000-0x03f00000 at 0xe0040000:

RedBoot> fis del nand.rootfs
... Read from 0x03ee0000-0x03eff000 at 0xe0040000:
Delete image 'nand.rootfs' - continue (y/n)? y
... Erase from 0xe0660000-0xe2660000:
... Erase from 0xe0040000-0xe0060000:
... Program from 0x03ee0000-0x03f00000 at 0xe0040000:

RedBoot> fis del nand.conf
... Read from 0x03ee0000-0x03eff000 at 0xe0040000:
No image 'nand.conf' found

RedBoot> fis li
... Read from 0x03ee0000-0x03eff000 at 0xe0040000:
Name            FLASH addr Mem addr   Flash Len  Data Len   Entry point
RedBoot         0xE0000000 0xE0000000 0x00040000 0x00000000 0x00000000
FIS directory   0xE0040000 0xE0040000 0x0001F000 0x00000000 0x00000000
RedBoot config  0xE005F000 0xE005F000 0x00001000 0x00000000 0x00000000
Linux BBT       0xE7F80000 0xE7F80000 0x00080000 0x00000000 0x00000000



3. Прошивка нового ядра.
Эта операция безопасна и, как правило, делается чаще, чем прошивка
загрузчика, но существенно реже, чем прошивка корневой файловой системы.

3.1. Загрузите ядро с tftp сервера командой:

load -r -b 0x100000 kernel.bin

Введите команду "cksum" или сокращённо "ck".
Сравните результат с содержимым файла kernel.bin.cksum.
Удобный метод сравнения - копирование (cut&paste) строки из файла .cksum
сразу после результата команды cksum и сравнение глазами двух строк
по вертикали.
При несовпадении двух чисел от дальнейших действий откажитесь.
Для восстановления попробуйте повторить этот пункт сначала.

3.2. Прошивка нового ядра из памяти во flash.

fis create -b 0x00100000 -s 1071548 -l 0x00600000 nand.kernel

!!! Внимание! параметр у '-s' берётся из длины файла kernel.bin
и она разная для разных прошивок.

На вопрос отвечайте буквой 'y'.

Ответ:
=========================================================================
... Read from 0x03ee0000-0x03eff000 at 0xe0040000:
... Read from 0x03ee0000-0x03eff000 at 0xe0040000:
An image named 'nand.kernel' exists - continue (y/n)? y
... Erase from 0xe0060000-0xe0660000:
... Program from 0x00100000-0x002059bc at 0xe0060000:
... Erase from 0xe0040000-0xe0060000:
... Program from 0x03ee0000-0x03f00000 at 0xe0040000:
RedBoot>
=========================================================================


4. Прошивка новой корневой файловой системы.

4.1. Загрузите образ файловой системы с tftp сервера командой:
load -r -b 0x100000 root.bin

Введите команду "cksum" или сокращённо "ck".
Сравните результат с содержимым файла root.bin.cksum.
Удобный метод сравнения - копирование (cut&paste) строки из файла .cksum
сразу после результата команды cksum и сравнение глазами двух строк
по вертикали.
При несовпадении двух чисел от дальнейших действий откажитесь.
Для восстановления попробуйте повторить этот пункт сначала.


4.2. Прошивка новой корневой файловой системы из памяти во flash.

fis create -b 0x00100000 -s 7602176 -l 0x02000000 nand.rootfs

!!! Внимание! параметр у '-s' берётся из длины файла root.bin
и она разная для разных прошивок.

На вопрос отвечайте буквой 'y'.

Ответ:
=========================================================================
... Read from 0x03ee0000-0x03eff000 at 0xe0040000:
... Read from 0x03ee0000-0x03eff000 at 0xe0040000:
An image named 'nand.rootfs' exists - continue (y/n)? y
... Erase from 0xe0660000-0xe2660000:
... Program from 0x00100000-0x00840000 at 0xe0660000:
... Erase from 0xe0040000-0xe0060000:
... Program from 0x03ee0000-0x03f00000 at 0xe0040000:
RedBoot>
=========================================================================


5. Прошивка образа пустого раздела конфигурации

Примечание: удаление раздела конфигурации и прошивка нового
приведёт с сбросу настроек.

Команды:

load -r -b 0x100000 conf.bin
fis create -b 0x00100000 -s 131072 -l 0x02000000 nand.conf


6. Установка параметров.

На вопрос "Update RedBoot non-volatile configuration - continue (y/n)?",
задаваемый после ввода нижеописанных команд, отвечайте буквой 'y'.

fc bootp false
fc bootp_my_gateway_ip 192.168.2.1
fc bootp_my_ip 192.168.2.200
fc bootp_my_ip_mask 255.255.255.0
fc bootp_server_ip 192.168.2.4
fc brd_specs 0
fc console_baud_rate 115200
fc gdb_port 9000
fc info_console_force false
fc net_debug false
fc boot_script true
fc boot_script_timeout 2
fc boot_script_data

На запрос "Enter script, terminate with empty line"
скопипастьте нижеприведённые строки как целый абзац, не забыв пустую строку
внизу:
=========================================================================
setcorevol 1.45
setcorevol 1.45
clock 400
fis load nand.kernel
exec -b 0x100000 -l 0x200000 -c "console=ttymxc0,115200 root=/dev/mtdblock4 rootfstype=jffs2 rootflags=noatime dyntick=enable"

=========================================================================

Заметьте, что длинная строка внизу не должна заворачиваться в вашей копии,
она может завернуться только терминалом при вставке.

И на запрос "Update RedBoot non-volatile configuration - continue (y/n)?"
отвечайте буквой 'y'.

Если вы не умеете копипастить в условиях вашей системы и программы
эмулятора терминала, горе вам! Тогда вам придется вводить всё это руками.


7. Перезагрузка камыеры

Введите команду "reset" или сокращённо "re"