Фоторамки-брелоки построены на основе полуторадюймовых дисплеев 128х128 пикселов с контроллером ST7637.
В качестве процессора в части рамок используется MCU Appotech AX203 (CFP5102) с системой команд 8051. К сожалению он однократно программируемый, и интереса не представляет.
Сейчас стали появлятся рамки на базе MCU Appotech AX206 (приобретена на Ebay), который имеет 4кб масочной ROM программ, и 3кб SRAM программ/данных. Судя по всему части программы подгружаются из внешнего SPI Flash (1Mb ES25M80A маркированного как M80A80CG). Вероятно программное обеспечение рамки может быть модифицировано.
Фоторамка видна в системе как пишуший CD привод.
В linux она определяется как:
dmesg
[551412.809178] usb 1-2: New USB device found, idVendor=1908, idProduct=0102 [551412.809190] usb 1-2: New USB device strings: Mfr=2, Product=3, SerialNumber=1 [551412.809198] usb 1-2: Product: Digital Photo Frame [551412.809203] usb 1-2: Manufacturer: BUILDWIN [551412.809208] usb 1-2: SerialNumber: 200807101900000000 [551418.439895] usb-storage: device scan complete [551418.439895] scsi 5:0:0:0: CD-ROM buildwin Photo Frame 1.01 PQ: 0 ANSI: 2 [551418.454696] sr0: scsi3-mmc drive: 40x/40x writer cd/rw xa/form2 cdda tray [551418.454696] sr 5:0:0:0: Attached scsi CD-ROM sr0 [551418.454696] sr 5:0:0:0: Attached scsi generic sg2 type 5
См. так же:
При сбросе процессора выполняется некий код из масочного ROM. После необходимых инициализаций, по SPI шине делается попытка прочитать флеш-память. Читается 32 байта начиная с нулевого адреса.
В байтах 6, 7 и вероятно 8, хранится адрес первого участка программного кода читаемого из флеш. В нашем случае это будет 0x0220. Где хранится длина участка, я к сожалению не выяснил.
Далее считывается участок флеш начиная с адреса 0x0220 по адрес 0x02FF, итого 0xE0 байт. Исполненимый код находится начиная с адреса 0x022B. Вероятно загрузка и дальнейшее исполнение кода происходит в IRAM2)) расположеную в адресном пространстве процессора начиная с адреса 0x1330 (исполненимый код идёт соответственно с адреса 0x133B)
Если в момент сброса процессора удерживать клавишу Menu код из флеша выполнятся не будет, а управление будет отдано обратно в прошивку ROM.
При этом процессор определяется по шине USB следующим образом:
dmesg
[533030.584390] hiddev96hidraw0: USB HID v2.01 Device [BUILDWIN BL206v1.0.0] on usb-0000:00:1d.7-6.3 [533030.584554] usb 1-6.3: New USB device found, idVendor=1908, idProduct=3318 [533030.584558] usb 1-6.3: New USB device strings: Mfr=2, Product=1, SerialNumber=3 [533030.584562] usb 1-6.3: Product: BL206v1.0.0 [533030.584564] usb 1-6.3: Manufacturer: BUILDWIN [533030.584567] usb 1-6.3: SerialNumber: 000001 [45057.225436] usb 3-1: configuration #1 chosen from 1 choice [45067.233308] generic-usb 0003:1908:3318.0035: timeout initializing reports [45067.233510] generic-usb 0003:1908:3318.0035: hiddev97,hidraw1: USB HID v2.01 Device [BUILDWIN BL206v1.0.0] on usb-0000:00:1 d.1-1/input0
Вероятно, при чистом или испорченном флеше этот механизм позволяет прошить его.
AX206 connection table
| Pin | Name | Connect | Pin | Name | Connect |
|---|---|---|---|---|---|
| 1 | P3.6/WR | LCD D6 | 25 | P1.5/A5/GRE | LCD CS# |
| 2 | P3.5/T1 | LCD D5 | 26 | P1.4/A4/GRD | LCD D/C# |
| 3 | P3.4/T0 | LCD D4 | 27 | VddIO | Vdd |
| 4 | P3.3/DP2/INTP1 | LCD D3 | 28 | VssIO | GND |
| 5 | P3.2/EA/INTP0 | LCD D2/DB | 29 | MCLR | Rst Btn |
| 6 | P3.1/TXD | LCD D1/UB | 30 | P1.3/A3/GTD | LCD RD# |
| 7 | P3.0/RXD/VRO | R 5K1 to GND | 31 | P1.2/A2/AD7/GTE | LCD WR# |
| 8 | VddIO | Vdd | 32 | P1.1/A1/ALE/GTC | LCD RST# |
| 9 | VssIO | GND | 33 | P1.0/A0/PSEN | LCD D0 |
| 10 | LDOE | Vdd | 34 | DVss | |
| 11 | DVdd | Vdd | 35 | DVdd | |
| 12 | Vpp | Vdd | 36 | P0.7/A7/D7/EXT2 | VUSB det |
| 13 | P2.7/A15/PWMN | 37 | P0.6/A6/D6/AD6/EXT1 | Menu Butt | |
| 14 | P2.6/A14/PWMP | Buzzer | 38 | P0.5/A5/D5/AD5/EXT0 | |
| 15 | P2.5/A13/T2EX | 39 | P0.4/A4/D4/AD4 | Bat Ctrl | |
| 16 | P2.4/A12/T2 | LCD BL(NC) | 40 | P0.3/A3/D3/AD3 | Bat In |
| 17 | P2.3/A11/PWM2 | LCD BL(2K) | 41 | P0.2/A2/D2/AD2 | |
| 18 | P2.2/A10/PWM1 | 42 | P0.1/A1/D1/AD1 | LCD BL2(2K) | |
| 19 | P2.1/A9/SDO | Flash DI | 43 | P0.0/A0/D0/AD0/ADV | |
| 20 | P2.0/A8/SDI | Flash DO | 44 | OSC1 | |
| 21 | USBDM | 45 | OSC2 | ||
| 22 | USBDP | 46 | OSC32K1 | ||
| 23 | P1.7/A7/SCK | Flash CLK | 47 | OSC32K2 | |
| 24 | P1.6/A6/GRC | Flash CS# | 48 | P3.7/DP1/RD | LCD D7 |
| Pin | Name | Description |
|---|---|---|
| 1 | Vdd | +3v |
| 2 | GND | |
| 3 | D7 | |
| 4 | D6 | |
| 5 | D5 | |
| 6 | D4 | |
| 7 | D3 | |
| 8 | D2 | |
| 9 | D1 | |
| 10 | D0 | |
| 11 | RD# | |
| 12 | WR# | |
| 13 | D/C# | |
| 14 | RST# | |
| 15 | CS# | |
| 16 | ||
| 17 | ||
| 18 | GND | |
| 19 | LED- | (2.6v) |
| 20 | LED+ | 10 j (3v) |
Дискуссия