From 9eb47c5f3dcb12acf4378b3b2bac5e1012869919 Mon Sep 17 00:00:00 2001 From: Paul Philippov Date: Thu, 18 Aug 2022 01:29:45 -0400 Subject: [PATCH] Replace commands with a link to constructor. --- ru/installation.md | 371 ++------------------------------------------- 1 file changed, 11 insertions(+), 360 deletions(-) diff --git a/ru/installation.md b/ru/installation.md index 6781d69..54b88b3 100644 --- a/ru/installation.md +++ b/ru/installation.md @@ -134,24 +134,15 @@ SPI Nor total size: 16MB ``` Чтобы сохранить содержимое флэш-памяти в файл, необходимо сначала загрузить это -содержимое в оперативную память. +содержимое в оперативную память. Очистите содержимое региона оперативной памяти +достаточно большое чтобы вместить содержимое флэш-памяти, затем считайте содержимое +флэш-памяти в подготовленный участок оперативной памяти, и выгрузите считанные +данные из оперативной памяти в виде файла на сервер TFTP. -``` -sf probe 0 -mw.b 0x82000000 ff 0x1000000 -sf read 0x82000000 0x0 0x1000000 -``` - -Первая из приведенных выше команд инициализирует флэш-память, вторая очищает -содержимое региона оперативной памяти с адреса 0x82000000 длиной 0x1000000 -байтов, подготавливая его для загрузки содержимого флэш-памяти, а затем третья -считывает содержимое флэш-памяти начиная с адреса 0x0 и помещает его в -подготовленный участок оперативной памяти. Остается только выгрузить данные из -оперативной памяти в виде файла на сервер TFTP. - -``` -tftp 0x82000000 firmware-full.bin 0x1000000 -``` +Разные процессоры, разные размеры микросхем памяти, разные адреса загрузки не позволяют +привести здесь универсальный набор комманд. Для получения списка комманд, подходящих для +вашей конкретной конфиругации, воспользуйтесь [автомитическим генератором инструкций](https://openipc.org/supported-hardware/) +на нашем сайте. ### Шаг 7. Установите прошивку OpenIPC. @@ -173,279 +164,9 @@ tftp 0x82000000 firmware-full.bin 0x1000000 поэтому прежде чем продолжить, определите, какой именно тип процессора, какая модель сенсора, какой объем памяти установлены на вашей камере. -Дальше мы описываем процедуру установки прошивки OpenIPC Lite на примере камеры -c 8 МБ флэш-памяти. Даже если ваша камера имеет больший объем флэш-памяти, не -перелистывайте это текст. Прочитайте его внимательно, чтобы понять принцип и -последовательность действий. Конкретные команды, подходящие для вашей камеры, -мы дадим во второй части этого раздела. - -##### Часть первая. Пример. - -Для примера мы взяли камеру на процессоре hi3518ev100 с матрицей ov9712 и -64 мегабайтами памяти. Подключитесь к камере через порт UART и получите -доступ к консоли загрузчика. Установите параметры компонентов в соответствующие -переменные окружения: - -``` -setenv soc hi3518ev100 -setenv sensor ov9712 -setenv totalmem 64M -``` - -Установите переменные окружения для загрузки ядра и корневой файловой системы -новой прошивки: - -``` -setenv osmem 32M -setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=hi_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)' -setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x82000000 0x50000 0x200000; bootm 0x82000000' -``` - -Установите переменные окружения для доступа камеры в сеть, где `ethaddr` -- -оригинальный MAC адрес вашей камеры, `ipaddr` -- IP адрес камеры в локальной -сети, `netmask` -- сетевая маска локальной сети, `gatewayip` -- IP адрес -маршрутизатора для доступа в сеть, `serverip` -- IP адрес сервера TFTP в -локальной сети. - -``` -setenv ethaddr 00:12:16:00:00:00 -setenv ipaddr 192.168.1.10 -setenv netmask 255.255.255.0 -setenv gatewayip 192.168.1.1 -setenv serverip 192.168.1.254 -``` - -Сохраните сделанные изменения во флэш-память. - -``` -saveenv -``` - -Дальше идет собственно сама процедура установки прошивки. - -Сначала очистите регион памяти с адреса 0x82000000 длиной 0x1000000 байтов, -записав в него шестнадцатеричное значение 0xff. - -``` -mw.b 0x82000000 ff 1000000 -``` - -Затем получите с сервера TFTP файл с ядром для камеры и поместите его в память -начиная с адреса 0x82000000. - -``` -tftp 0x82000000 uImage.${soc} -``` - -Значение `$soc` в имени запрашиваемого файла подставляется из переменных -окружения, созданных выше по тексту. В нашем примере с сервера должен скачаться -файл с именем `uImage.hi3518ev100`. - -Внимательно читайте сообщения на экране терминала! Если какая-то из команд -завершилась ошибкой, выясните, что именно пошло не так. Может вы допустили -опечатку? В любом случае не продолжайте процедуру, пока все предыдущие команды -не отработают безошибочно. В противном случае вы можете остаться с неработающей -камерой! - -Итак, вы убедились, что файл скачан и размещен в оперативной памяти камеры. -Теперь вам необходимо записать его во флэш-память. Для этого надо открыть доступ -к флэш-памяти: - -``` -sf probe 0 -``` - -...затем стереть содержимое раздела с адреса 0x50000 длиной 0x200000 байтов: - -``` -sf erase 0x50000 0x200000 -``` - -...и записать в раздел флэш-памяти, начинающийся с адреса 0x50000, содержимое -оперативной памяти с адреса 0x82000000 длиною в размер файла ядра: - -``` -sf write 0x82000000 0x50000 ${filesize} -``` - -Далее, надо проделать такую же манипуляцию с образом корневой файловой системы, -записав его в следующий раздел флэш-памяти, начинающийся с адреса 0x250000 и -имеющий длину 0x500000 байтов (5242880 байтов в десятеричной системе, что -соответствует 5120 килобайтов, именно столько мы отвели под раздел rootfs в -параметрах bootargs). Порядок действий прост, и его довольно легко запомнить, -если понимать, какие именно действия вы производите и зачем: очистить память, -скачать файл, открыть доступ к флэш-памяти, стереть содержимое раздела, -записать скачанный файл. - -``` -mw.b 0x82000000 ff 1000000 -tftp 0x82000000 rootfs.squashfs.${soc} -sf probe 0 -sf erase 0x250000 0x500000 -sf write 0x82000000 0x250000 ${filesize} -``` - -После того как оба раздела успешно записаны во флэш-память и сделана необходимые -изменения в загрузчике для старта новой прошивки, наступило время перезагрузить -камеру. Для этого наберите в консоли следующую команду: - -``` -reset -``` - -##### Часть вторая. - -Если вы прочитали первую часть этого раздела (если нет -- идите и прочитайте), -то вы уже знаете, какие манипуляции и почему вам необходимо сделать, чтобы -установить прошивку OpenIPC. И всё, что вам нужно -- это команды, подходящие -для вашей конкретной камеры. - -Вот примеры команд для камер на процессорах [Goke](#goke), -[HiSilicon](#hisilicon), [SigmaStar/MStar](#sigmastarmstar), [XM](#xm). - -###### Goke - -Процессоры gk7202v300, gk7205v200, gk7205v300. - -``` -setenv soc # gk7202v300, gk7205v200, or gk7205v300. -setenv sensor # -setenv totalmem # 64M for gk7202v300, gk7205v200, 128M for gk7205v300. - -setenv osmem 32M -setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)' -setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x42000000 0x50000 0x200000; bootm 0x42000000' - -setenv ethaddr 00:00:00:00:00:00 -setenv ipaddr 192.168.1.10 -setenv netmask 255.255.255.0 -setenv gatewayip 192.168.1.1 -setenv serverip 192.168.1.254 - -saveenv - -mw.b 0x42000000 ff 1000000 -tftp 0x42000000 uImage.${soc} -sf probe 0 -sf erase 0x50000 0x200000 -sf write 0x42000000 0x50000 ${filesize} - -mw.b 0x42000000 ff 1000000 -tftp 0x42000000 rootfs.squashfs.${soc} -sf probe 0 -sf erase 0x250000 0x500000 -sf write 0x42000000 0x250000 ${filesize} - -reset -``` - -###### HiSilicon - -Процессоры hi3516ev200, hi3516ev300, hi3518ev300. - -``` -setenv soc # hi3516ev200, hi3516ev300, or hi3518ev300. -setenv sensor # -setenv totalmem # 64M for hi3516ev200, hi3518ev300, 128M for hi3516ev300. - -setenv osmem 32M -setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=hi_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)' -setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x42000000 0x50000 0x200000; bootm 0x42000000' - -setenv ethaddr 00:00:00:00:00:00 -setenv ipaddr 192.168.1.10 -setenv netmask 255.255.255.0 -setenv gatewayip 192.168.1.1 -setenv serverip 192.168.1.254 - -saveenv - -mw.b 0x42000000 ff 1000000 -tftp 0x42000000 uImage.${soc} -sf probe 0 -sf erase 0x50000 0x200000 -sf write 0x42000000 0x50000 ${filesize} - -mw.b 0x42000000 ff 1000000 -tftp 0x42000000 rootfs.squashfs.${soc} -sf probe 0 -sf erase 0x250000 0x500000 -sf write 0x42000000 0x250000 ${filesize} - -reset -``` - -##### SigmaStar/MStar - -Процессоры ssc325, ssc335, ssc337. - -``` -setenv soc # ssc325, ssc335, or ssc337. -setenv sensor # gc2053, imx307, or sc3335. -setenv totalmem 64M - -setenv osmem 32M -setenv bootargs 'mem=${osmem:-32M} console=ttyS0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init LX_MEM=0x3fe0000 mma_heap=mma_heap_name0,miu=0,sz=0x1C00000 mma_memblock_remove=1 mtdparts=NOR_FLASH:256k(boot),64k(tech),2048k(kernel),5120k(rootfs),-(rootfs_data)' -setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x21000000 0x50000 0x200000; bootm 0x21000000' - -setenv ethaddr 00:00:00:00:00:00 -setenv ipaddr 192.168.1.10 -setenv netmask 255.255.255.0 -setenv gatewayip 192.168.1.1 -setenv serverip 192.168.1.254 - -saveenv - -mw.b 0x21000000 ff 1000000 -tftpboot 0x21000000 uImage.${soc} -sf probe 0 -sf erase 0x50000 0x200000 -sf write 0x21000000 0x50000 ${filesize} - -mw.b 0x21000000 ff 1000000 -tftpboot 0x21000000 rootfs.squashfs.${soc} -sf probe 0 -sf erase 0x250000 0x500000 -sf write 0x21000000 0x250000 ${filesize} - -reset -``` - -##### XM - -Процессоры xm510, xm530, xm550. - -``` -setenv soc # xm510 for xm510, xm530 for both xm530 and xm550. -setenv sensor # -setenv totalmem # 32M for xm510, 64M for xm530, 128M for xm550. - -setenv osmem # 18M for xm510, 35M for xm530, 64M for xm550. -setenv bootargs 'mem=35M console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=xm_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)' -setenv bootcmd 'sf probe 0; sf read 0x80007fc0 0x50000 0x200000; bootm 0x80007fc0' - -setenv ethaddr 00:00:00:00:00:00 -setenv ipaddr 192.168.1.10 -setenv netmask 255.255.255.0 -setenv gatewayip 192.168.1.1 -setenv serverip 192.168.1.254 - -saveenv - -mw.b 0x80007fc0 ff 1000000 -tftp 0x80007fc0 uImage.${soc} -sf probe 0 -sf erase 0x50000 0x200000 -sf write 0x80007fc0 0x50000 ${filesize} - -mw.b 0x80007fc0 ff 1000000 -tftp 0x80007fc0 rootfs.squashfs.${soc} -sf probe 0 -sf erase 0x250000 0x500000 -sf write 0x80007fc0 0x250000 ${filesize} - -reset -``` +Для получения списка комманд, подходящих для вашей конкретной конфиругации, +воспользуйтесь [автомитическим генератором инструкций](https://openipc.org/supported-hardware/) +на нашем сайте. ### Шаг 8. Первая загрузка. @@ -459,76 +180,6 @@ reset firstboot ``` -### Шаг в сторону. - -Для облегчения последующих процедур обновления прошивки из консоли загрузчика, -создайте два макро, записав в них последовательности команд, необходимых для -загрузки с сервера TFTP и записи во флэш-память ядра и корневой файловой системы -для вашей модели камеры. - -Мы будем использовать `uk` и `ur` для имен макро, что можно расшифровать как -`update kernel` и `update rootfs`. Легко запомнить. - -Вы помните, что в примере с установкой прошивки на камеру с hi3518ev100 мы -использовали следующие команды для установки ядра: - -``` -mw.b 0x42000000 ff 1000000 -tftp 0x42000000 uImage.${soc} -sf probe 0 -sf erase 0x50000 0x200000 -sf write 0x42000000 0x50000 ${filesize} -``` - -Чтобы создать макро `uk`, соберите все команды в одну строку, чередуя их -точками-с-запятой. Для дополнительной защиты от записи неверных данных во -флэш-память в том случае, когда не удалось скачать файл с сервера TFTP, -замените точку-с-запятой перед командой `sf probe 0` на оператор логической И -(`&&`). В таком случае выполнение макро прервется, если скачивании файла -завершилось с ошибкой. - -``` -fw_setenv uk 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 uImage.${soc} && sf probe 0; sf erase 0x50000 0x200000; sf write 0x42000000 0x50000 ${filesize}' -``` - -Проделайте то же с командами установки корневой файловой системы - -``` -mw.b 0x82000000 ff 1000000 -tftp 0x82000000 rootfs.squashfs.${soc} -sf probe 0 -sf erase 0x250000 0x500000 -sf write 0x82000000 0x250000 ${filesize} -``` - -..., записав результат в макро `ur`: - -``` -fw_setenv ur 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 rootfs.squashfs.${soc} && sf probe 0; sf erase 0x250000 0x500000; sf write 0x42000000 0x250000 ${filesize}' -``` - -Естественно, для создания своих собственных макро, вы должны использовать -команды для вашей конкретной камеры, не бездумно копируя вышеприведенные строки, -но используя их как пример и понимая суть совершаемых действий. - -Обратите внимание, что хоть эти команды и создают макро для запуска в консоли -загрузчика, выполнить их надо в среде линукса. Таким образом мы избегаем -ограничений на количество аргументов в команде `setenv` в некоторых старых -версиях загрузчиков. - -Теперь вы сможете запускать прошивку ядра и корневой файловой системы из -консоли загрузчика с последующей перезагрузкой камеры командой - -``` -run uk; run ur; reset -``` - -_...to be continued._ - - -** ПРОВЕРИТЬ ВСЕ КОМАНДЫ НА ЖИВОЙ СИСТЕМЕ!*** - - [logo]: ../images/logo_openipc.png [ftdi]: https://www.google.com/search?q=ftdi+usb+ttl [tllc]: https://google.com/search?q=logic+level+converter+3.3v+5v