![画像](https://habrastorage.org/web/30f/4cf/a4d/30f4cfa4d8964b89baa14c726eec8794.jpg)
すべてが良かったと言うことではない...すべてが平均だった。 そして、カメラソフトウェアを更新すると何かが改善されるように思えました。 Falcon Eye、Tenvis、Foscam、および場合によっては他のいくつかの会社のモデルがほぼ一致することが判明しました。 どこかでボタンがより快適になり、どこかでロシアのインターフェースになります。 そして、私たちは決めました!
Tenvis TR3818の類似モデルのカメラソフトウェアを更新しました。 その後、彼らはさらに読み、別のカメラからより急なファームウェアにアップグレードすることが可能であると決定しました。
更新後、カメラは長い寿命を命じました。 電源をオンにしたときにモーターがチェックしなかった、スピーカーがカサカサ音を立てなかった、LEDが点滅しなかった。 LANインターフェイスのLEDのみが点灯し、点灯すると、1つのブロードキャストパケットが送信されていました。
そのような事件の後、残りのカメラはその場所に吊され、「レンガ」は私たちと一緒に暮らすようになりました。 時々彼を蘇生する試みがありました。 カメラが分解され、コンソールを介してアクセスするためにはんだ付けできるプラットフォームが見つかりました。
![画像](https://habrastorage.org/web/fe8/355/918/fe8355918b7c4186a8e813738201e961.jpg)
(3.3V、GND、TX、RXを示すワイヤの下にあります)
![画像](https://habrastorage.org/web/fd0/fdc/741/fd0fdc74176f43c6868b929b8d3b81c6.jpg)
(カメラボードアセンブリ)
USB-TTLコンバーターを使用する必要がありました。
![画像](https://habrastorage.org/web/1a9/c5d/827/1a9c5d82701146fd8ab379ca17fb431e.jpg)
(連絡先がある)
パテまたはハイパーターミナルを介してコンソールに接続され、次のように表示されます。
U-Boot 1.1.3 (Aug 26 2014 - 17:15:00)
Board: Ralink APSoC DRAM: 16 MB
relocate_code Pointer at: 80fb0000
spi_wait_nsec: 42
spi device id: c2 20 17 c2 20 (2017c220)
find flash: MX25L6405D
raspi_read: from:2b000 len:1000
.raspi_read: from:2b000 len:1000
.============================================
Ralink UBoot Version: 3.6.0.0
--------------------------------------------
ASIC 5350_MP (Port5<->None)
DRAM_CONF_FROM: Boot-Strapping
DRAM_TYPE: SDRAM
DRAM_SIZE: 128 Mbits
DRAM_WIDTH: 16 bits
DRAM_TOTAL_WIDTH: 16 bits
TOTAL_MEMORY_SIZE: 16 MBytes
Flash component: 8 MBytes NOR Flash
Date:Aug 26 2014 Time:17:15:00
============================================
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384
##### The CPU freq = 360 MHZ ####
estimate memory size =16 Mbytes
raspi_read: from:80028 len:6
.
start time:31742632l
File: cmd_net.c, Func: do_my_tftpb, Line: 69
netboot_common, argc= 3
NetTxPacket = 0x80FE3C80
KSEG1ADDR(NetTxPacket) = 0xA0FE3C80
NetLoop,call eth_halt !
NetLoop,call eth_init !
Trying Eth0 (10/100-M)
Waitting for RX_DMA_BUSY status Start... done
Header Payload scatter function is Disable !!
ETH_STATE_ACTIVE!!
Using Eth0 (10/100-M) device
TFTP from server 51.204.51.204; our IP address is 192.168.1.5
Filename 'xx.img'.
TIMEOUT_COUNT=10,Load address: 0x80100000
Loading: ====================broadcast get file
T ====================broadcast get file
could not get file, cancel update
ret = 1
Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
7: Load Boot Loader code then write to Flash via Serial.
9: Load Boot Loader code then write to Flash via TFTP.
You choosed 3
0
3: System Boot system code via Flash.
## Booting image at bc0e0000 ...
raspi_read: from:e0000 len:40
.Magic Number,85190320
Bad Magic Number,85190320
悪い、彼は言う、あなたは魔法の数字を持っている。 そして、彼は私の選択した他のメニュー項目に反応したくありません。 これでカメラへの最初のアプローチが完了し、彼女は部門の棚に戻りました。
強度を獲得して、別のアプローチを取りました。 私たちの場合、RXコンバーターをRXカメラに、TXをTXに接続する必要があることを理解するために神経を使う必要がありました。 マーキングが誤って適用されたか、2つのうちのいずれかです。 カメラはメニュー項目の選択に応答し始めましたが、これはマジックナンバーの性質を説明しませんでした。
次に、Tenvis TR3818のファームウェアと同様のカメラのいくつかのファームウェアがダウンロードされ、tftpサーバーが構成され、コマンドインターフェイスの入り口であるアイテム番号4が選択されました。 実際に? 可能なコマンドのリストを取得します。tftpboot( tftpを使用してファイルをメモリとbootmにロードします)-メモリからアプリケーションをロードします。
手順は次のとおりです。
- tftpbootを介してカメラにファームウェアをダウンロードします
- bootmコマンドを実行します
- 結果を見て、検討します。
結果は次のとおりです。
- 同様のカメラのファームウェアで-マジックナンバーが一致しません
- Tenvis TR3818のファームウェア
RT5350 # bootm
## Booting image at 80100000 ...
Magic Number,27051956
Image Name: SPI Flash Image
Created: 2014-11-26 6:26:49 UTC
Image Type: MIPS Linux Standalone Program (uncompressed)
Data Size: 112920 Bytes = 110.3 kB
Load Address: 80200000
Entry Point: 80200000
Verifying Checksum ... OK
OK
(マジックナンバーを認識しましたが、ここでは110 KBであり、これはブートローダーファームウェアであり、ファームウェアファイルは7 MBです) - ブートローダー(メニューの項目9)を更新するなど、ファームウェアファイル全体をフィードしようとしています-大きすぎるファイルを誓います。 Frhedでファイルを見ると、マジックナンバーがファイルの先頭にあることがわかります。 そして、ブートローダーのサイズは112920バイト+ヘッダーのサイズの64バイトであることがわかっているため、112984バイトを別のファイルにコピーし、9つのメニュー項目からカメラにフィードして、更新されたブートローダーをお楽しみください。
- 成功に触発されて、ファームウェアファイルでマジックナンバーの繰り返しを探し、0xE0000のファームウェアファイルで同じヘッダーを見つけますが、 Linux Kernel Imageのみです。ファイルからファイルの最後まですべてを別のファイルにコピーして、 tftpbootおよびbootmを確認します 。
RT5350 # bootm
## Booting image at 80100000 ...
Magic Number,27051956
Image Name: Linux Kernel Image
Created: 2014-11-26 6:26:54 UTC
Image Type: MIPS Linux Kernel Image (lzma compressed)
Data Size: 1065116 Bytes = 1 MB
Load Address: 80000000
Entry Point: 80347000
Verifying Checksum ... OK
Uncompressing Kernel Image ... LZMA ERROR 1 - must RESET board to recover
(番号が一緒になって、サイズがわかっているので、2番目のメニュー項目からそのままロードし、0x30000のオフセットでメモリに書き込まれていることを確認します。カメラが起動すると、0xE0000にアクセスします。 - したがって、マジックナンバーの前にTenvisのファームウェアを使用して、ファイルからさらに0xB0000バイトのデータを取得します。 2番目のメニュー項目を入力すると、カメラが生き返ります!
これは、配線を切り替えたり、インターネットをシャベルで動かしたり、オフセットを計算したり、中国の天才の作品の論理を復元したりするよりも、はるかに興味深く読みにくいです。 おそらくこれは、次回にファームウェアテクノロジーを急いで使用することを控えるために私たちに教えてくれるはずです。
そしてありがとうございます! Habrを喜ばせたいという欲求がなければ、おそらくこのカメラは私たちの部門に長い間立っていたでしょう。