Инструкция по прошивке камеры Сигранд с 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"