1

(44 odpowiedzi, napisanych Inne)

Dziękuje za uwagę ... kamera naprawiona wink

Dla potomnych możecie przypiąć w jakimś dziale ....
Dump z flash-a zainteresowanym wyśle na maila po kontakcie.

2

(44 odpowiedzi, napisanych Inne)

znalazłem w tym magic number ... który tak naprawde odpowiada za nagłówek .. wrzucam do kości ...zobaczymy .... zauważyłem też że jest to już zrobione byte-shiftem

A tak na marginesie ... to po Starting AP powinno coś pokazać .. to mi nie dawało spać wink
Zaczołem grzebac już w samym firmware bo zastanowiło mnie słowo update .... a tu masz ... skrypt na pocztątku hmm

3

(44 odpowiedzi, napisanych Inne)

Chyba trafiłem co jest nie tak ...
Oj głupi człek ... po otwaciu pliku update_DCS-5222L_1.10_2729 nie w hex edytorze a w programers notepad widze że
firmware tak naprawde nie zaczyna się na początku ...  na początku mam :

#!/bin/sh
VENDOR="Alphanetworks"
HWBOARD="dcs5211"
HWVERSION="1.0.0"
OEM="D-Link"
MODEL="DCS-5211L"
PRODUCT="Internet Camera"
VERSION="1.0.0-2729"
PACKAGE=""
MCUVERSION="0x15"
WIRELESS_MODULE="RT3070"
# the DESCRIPT must be xml encoded.
DESCRIPT="A full update image."

showBrief() {
    echo -n "\

This is a full update image.
It will update following, ...
    1. boot script.
    2. kernel.
    3. root system.
And after it is updated, the system will reboot in 1 second.

"
}

MD5SUM="27809d5d6914f0a30f961877bd56e196"

MECH_SIGN="QPAT"
MECH_VERSION="1.0"
MECH_APP="doUpdate"

showUsage() {
    echo "Usage: $0 [ info | brief | exam | update ]" 1>&2
}

extract() {
    # tarLine will be replaced with a real number by Makefile
    tail -n +546 $1
}

exam() {
#    md5sum=$(extract "$1" | md5sum - | cut -d' ' -f1)
#    [ "$MD5SUM" = "$md5sum" ] && return 0
#
#    echo "md5sum failed" 1>&2
    return 0
}

extract_ddpack() {
    head -n 544 $1 | tail -n +129 | uudecode -o /tmp/ddPack
}
extract_mcuPack() {    
    head -n 43831 $1 | tail -n +43652 | uudecode -o /tmp/mcuPack
}

dumpPibSettings() {
    echo -n "\
HWBoard=$HWBOARD
HWVersion=$HWVERSION
ModelName=$MODEL
"
}

updateWirelessRegion() {
if [ "$WIRELESS_MODULE" = "RT3070" ]; then
    iwpriv ra0 e2p 38 | grep -q 0xFFFF || iwpriv ra0 e2p 38=FFFF > /dev/null 2> /dev/null
fi
}

self="$0"
action=$1
end=$2

if [ "$action" = "" ] || [ "$end" != "" ]; then
    showUsage
    exit 1
fi

if [ "$action" = "info" ]; then
    echo -n "\
MECH_SIGN=\"$MECH_SIGN\"
MECH_VERSION=\"$MECH_VERSION\"
MECH_APP=\"$MECH_APP\"
HWBOARD=\"$HWBOARD\"
HWVERSION=\"$HWVERSION\"
MODEL=\"$MODEL\"
PRODUCT=\"$PRODUCT\"
OEM=\"$OEM\"
VENDOR=\"$VENDOR\"
VERSION=\"$VERSION\"
DESCRIPT=\"$DESCRIPT\"
PACKAGE=\"$PACKAGE\"
"
    exit 0
fi

if [ "$action" = "brief" ]; then
    showBrief
    exit 0
fi

if [ "$action" = "exam" ]; then
    exam "$self" || exit 1
    exit 0
fi

if [ "$action" = "update" ]; then
    updateWirelessRegion
    /etc/rc.d/init.d/services.sh stop > /dev/null 2> /dev/null
    exam "$self" || { /etc/rc.d/init.d/services.sh start > /dev/null 2> /dev/null && exit 1; }
    extract_ddpack $self
    /tmp/ddPack $self 1> /dev/null 2> /dev/null || exit 1
    [ "$SCENARIO" = "forceUpdate" ] && dumpPibSettings | pibinfo set
    current_mcu_ver=$(pt_firmware -v)
    let current_mcu_ver=$current_mcu_ver
    let fw_mcu_version=$MCUVERSION
    if [ "$current_mcu_ver" -ne "$fw_mcu_version" ]; then
    extract_mcuPack $self
    pt_firmware -f /tmp/mcuPack 
    fi
    exit 0
fi

# unknown action
showUsage && exit 1
=== ddPack Boundary ===
begin-base64 755 /dev/stdout
f0VMRgEBAQAAAAAAAAAAAAIAKAABAAAAYJEAADQAAAAERAAAAgAABTQAIAAJ
ACgAHQAcAAEAAHAUNgAAFLYAABS2AAAgAQAAIAEAAAQAAAAEAAAABgAAADQA

i tam dalej ten ciąg leci aż do :

AAEAAAAwAAAAAAAAANFCAAA1AAAAAAAAAAAAAAABAAAAAQAAAAEAAAADAAAA
AAAAAAAAAAAGQwAA/AAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAI8AAAAAAAAA
AAsABAAAABCPAAAAAAAAAAALAAEAAAAUjwAAAAAAAAAACwAAJGEAJGQA
====
=== Firmware Boundary ===
ýg&ÇŻ˘g%,»ŽÉ6                update-generic_1.0.0_3625.bin      ˙    `
 <ý»     źMź˙     ř  Ŕ     âÚ'p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    €ZGM     »ü<    amIz  eg                                                                                                                                                                                                                                        á   á   á   á   á   á   á   á   ę  o(     »ü<á pá €á  ă   ă  ď4Vá  ă‚ Ŕá!đĺp  ö⏠Đč0~ŕP 
  
ŕ…P ŕ†` ŕŚŔ ŕ‚  ŕƒ0 ŕŤĐ ĺ– ŕ ä†

Jak to obrobić ???

4

(44 odpowiedzi, napisanych Inne)

Ulala .... od NOR-a mówisz ...

Dziwna sprawa bo jak dam sf probe 0 to wykrywa go bez problemów

System można załadować jednym i drugim - w obu przypadkach stoi w tym samym miejscu czyli na Starting AP
Nie spotkałeś się z takim przypadkiem kiedy zaraz po skopiowaniu do pamięci nic sie nie dzieje ?

5

(44 odpowiedzi, napisanych Inne)

No dobra ...

Pepe ... wiem że jesteś obeznany w Uboot-cie więc poproszę Cię o wsparcie ..

Już prawie na pewno wiem że to w nim jest problem..

Burnin (pierwszy bootloader) bez problemów czyta SPI Flasz (W25W128) jak i pamięć NAND (DDR 128MB)

Natomiast uboot czyta SPI ... ale ma problemy z NAND-em

Oto co mi wypluwa :

=> flinfo

Bank # 1: missing or unknown FLASH type
=>


Jak to można okiełznać ?

6

(44 odpowiedzi, napisanych Inne)

Testowałem sf read ... pozniej md.b i adres poczatkowy wypluwa ładnie na ekran dane

Bardziej zastanawiające jest to ze ten pierwszy bootloader zwany burnin ma mozliwosc programowania z karty sd tak wiec sprobowalem wladować uboota na nowo dla testów (tego samego co za pomoca programatora) i efekt programowania jest taki :

Command>>73
File Name must be <u-boot.bin>
>>> Please select the storage :
1. SD card
2. USB OTG Mass Storage
1

header address = a6000
Load image from SPI-NOR offset 0xa6000 to sdram 0x2800000
magic = 805a474d, img_hdr_nor.size = 111132
chksum = 0
Card Size = 972MB,max data block length = 0x200
Drive 'C' Have No Find Partation Table

...SD Card on Drive C: !!!
Command initial
Copy to address 0x2800000
Wait............................
Total copy 111132 bytes.
image file(u-boot.bin) size == 111132
start to erasing old image...
start_sector = 166, sector_cnt = 1d
.............................start to program new image to flash...

Now i:464


Po czyn próba odpalenia  :


(79) BootFromUSB          (80) UBOOT, Linux

Command>>80
Can not find out boot block[0] or check sram fail[0].


Nic z tego już nie wiem ....

7

(44 odpowiedzi, napisanych Inne)

Po dumaniu nad tym doszedłem chyba do tego że problemem jest zła konfiguracja pamięci SPI ...
Jeśli dobrze myślę to w U-boot jest problem ..

po wydaniu komendy sf read wywala
sf read 0x1000 0x300 0x100
No SPI flash selected. Please run `sf probe'

po czym daję :

sf probe 0
#SF: Got idcode ef 40 18
16384 KiB W25Q128BV at 0:0 is now current device


i to sie zgadza i wtedy czyta pamięc

Na ten moment wygląda to tak :

*********************************************
Please input ESC to run UBOOT
Please input . to run burn-in
Please push factoryReset Button for rescue mode from SD card while the starting of bootup
Otherwise, system will run Linux after 1 sec
*********************************************
Load image from SPI-NOR offset 0xa6000 to sdram 0x2800000
Jump 0x2800000


U-Boot 2008.10 (Oct 24 2015 - 22:35:26)

I2C:   ready
DRAM:  128 MB
Manufacturer ID : 0018
Device ID       : 009F
Device Code 2   : 0018
Flash:  0 kB
#SF: Got idcode ef 40 18
##In:    serial
Out:   serial
Err:   serial
Net:   FTMAC110#0
Hit any key to stop autoboot:  0
#SF: Got idcode ef 40 18
16384 KiB W25Q128BV at 0:0 is now current device
################################################################### Starting application at 0x04000000 ...


po czym zawias ...

8

(44 odpowiedzi, napisanych Inne)

W dalszym ciągu nie udało mi się poprawnie uruchomić softu ...
Coś jest nie tak ale nie mam pojęcia co ... soft wgrany w odpowiednie miejsce
i jak pisałem wyżej uruchomienie zatrzymuje się po skopiowaniu go do nand
Ktoś doradzi o co może chodzić ?

9

(44 odpowiedzi, napisanych Inne)

I jeszcze to bo zapewne będzie pomocne :

=> printenv
bootargs=
bootcmd=sf probe 0:0;sf read 0x4000000 0xd6100 0x800000;go 0x4000000
bootdelay=3
baudrate=38400
ethaddr=00:42:70:00:30:22
ipaddr=10.0.1.52
serverip=10.0.1.51
gatewayip=10.0.1.51
netmask=255.0.0.0
ethact=FTMAC110#0
ver=U-Boot 2008.10 (Oct 20 2015 - 22:15:40)

10

(44 odpowiedzi, napisanych Inne)

OK błąd ze zmiennymi udało się zrobić ... saveenv pomogło wink

Natomiast mam problem z samym bootowaniem linuxa ... nie rusza.
Oto log :
MP SPI-NOR Bootstrap v0.2.1
Boot image offset: 0x6000. Booting Image .....
0567Will set the following freq...
PLL1: 800 MHz, PLL2: 540 MHz, CPU freq: 540 MHz, AHB freq: 270 MHz, DDR freq: 800 MHz
go...
BG: 0x94314000
error 0: , pass 3072

*********************************************
Please input ESC to run UBOOT
Please input . to run burn-in
Please push factoryReset Button for rescue mode from SD card while the starting of bootup
Otherwise, system will run Linux after 1 sec
*********************************************
  ----------------------------------------------------------------------------
   GM Technology Corporation CPE Burnin Program (v0.2.5)
   Platform: GM81262210  Cache: Disabled
   PLL1: 800 MHz       PLL2: 540 MHz       DDR: 800 MHz
   CPU : 540 MHz       HCLK: 270 MHz       PCLK: 135 MHz
   UART:   1 MHz       H.264: 270 MHz      MPEG4: 200 MHz
   STXWAMODE: RAO=1, STMWA=x
  ----------------------------------------------------------------------------
( 1) DDR Test             ( 7) Watchdog Rest Test   (10) I2S Module1 Test
(13) LCD Test             (14) Query RTC            (18) SAR ADC
(19) MCP100 SRAM Test     (22) Enable Cache         (35) OTG 210 Test
(50) MCP Clock Setting    (51) FCS Test             (61) I2C Read/Write
(62) Change Cache WA_Mode (71) Address Read         (72) Address Write
(73) Burn UBOOT image     (74) Burn Burn-In image   (75) Burn Linux image
(76) Burn Loader image    (77) Burn fresh spi flash (78) BootFromSD
(79) BootFromUSB          (80) UBOOT, Linux
Command>>


I to na tyle ...

Obraz również zmodyfikowany poprzez BYTEFLIP pod adresem 0xD6000


Komenda 78 (start z SD) daje taki wynik :

Command>>78
File Name must be <linux>
Card Size = 972MB,max data block length = 0x200
Drive 'C' Have No Find Partation Table

...SD Card on Drive C: !!!
Command initial
Copy to address 0x2800000
Wait.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Total copy 12479877 bytes.
## Starting AP at 0x02800000 ...


Po czym zawias

11

(44 odpowiedzi, napisanych Inne)

OK Cezary ... mam nadzieję że uda mi się dziś to odpalić bo na chwilę obecną musze tam wrzucić obraz fw...
Wczoraj coś próbowałem to zauważyłem że chce go zaczytać z adresu 0xd00000 tak więc będę dziś próbować...

Jeszcze jedno ... jest tam taka opcja jak widzieliście powyżej boot fom sd ... i oczywiście próbowałem ...
nazwałem firmware jako liniux (pisało że tak ma być) i przeleciał pasek że niby kopiuje do nand-a
a póżniej Starting AP czy coś takiego i koniec ... tyle ...

O czym to może świadczyć ? zły firmware czy coś nie tak z podstawową konfiguracją  ?

Teoretrycznie jeśli chodzi o pamięc to testowałem ( 1) DDR Test i było ok.

12

(44 odpowiedzi, napisanych Inne)

pepe ... a od nośnie tego błędu :
##crc data not match, calc = 24b9ebd6, env field = 74db4325
*** Warning - bad CRC, using default environment

to jak mam to rozumieć ? skopane coś przy kompilacji czy jak ?

13

(44 odpowiedzi, napisanych Inne)

Uboot też już funguje wink
Halogeny w tunelu wink

Load image from SPI-NOR offset 0xa6000 to sdram 0x2800000
Jump 0x2800000


U-Boot 2008.10 (Oct 20 2015 - 22:15:40)

I2C:   ready
DRAM:  128 MB
Manufacturer ID : 0018
Device ID       : 009F
Device Code 2   : 0018
Flash:  0 kB
#SF: Got idcode ef 40 18
##crc data not match, calc = 24b9ebd6, env field = 74db4325
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   FTMAC110#0

14

(44 odpowiedzi, napisanych Inne)

I kolejne sprawozdanie z napraw wink

Po obrobieniu obrazu :
- skopiowaniu dumpa do pustego pliku
- otwarcie burnin.bin
- konwersja byte-swap 32bit
- wklejenie go do nowego dumpa na adres 0x6100 (0X6000-to naglowek)
- zmiana nagłówka (size oraz nazwa pliku)

I światełko w tunelu !

                                                                               
                                                                               
MP SPI-NOR Bootstrap v0.2.1                                       
Boot image offset: 0x6000. Booting Image .....
                               
0567Will set the following freq...
                         
PLL1: 800 MHz, PLL2: 540 MHz, CPU freq: 540 MHz, AHB freq: 270 MHz, DDR freq: 80
0 MHz
                                                               
go...

                                                                         
BG: 0x94314000
                                                               
error 0: , pass 3072

Can not find out boot block[0] or check sram fail[0].

                         
  ----------------------------------------------------------------------------


   GM Technology Corporation CPE Burnin Program (v0.2.5)

                     
   Platform: GM81262210  Cache: Disabled 

                                   
   PLL1: 800 MHz       PLL2: 540 MHz       DDR: 800 MHz

                       
   CPU : 540 MHz       HCLK: 270 MHz       PCLK: 135 MHz

                     
   UART:   1 MHz       H.264: 270 MHz      MPEG4: 200 MHz

                     
   STXWAMODE: RAO=1, STMWA=x

                                                 
  ----------------------------------------------------------------------------


( 1) DDR Test             ( 7) Watchdog Rest Test   (10) I2S Module1 Test     


(13) LCD Test             (14) Query RTC            (18) SAR ADC             


(19) MCP100 SRAM Test     (22) Enable Cache         (35) OTG 210 Test         


(50) MCP Clock Setting    (51) FCS Test             (61) I2C Read/Write       


(62) Change Cache WA_Mode (71) Address Read         (72) Address Write       


(73) Burn UBOOT image     (74) Burn Burn-In image   (75) Burn Linux image     


(76) Burn Loader image    (77) Burn fresh spi flash (78) BootFromSD           


(79) BootFromUSB          (80) UBOOT, Linux         

                         
Command>>

15

(44 odpowiedzi, napisanych Inne)

Znaczy się powiem CI tak ... to że obraz bin np. openwrt masz bez konwersji to nie znaczy że po uploadzie go do routera
u-boot nie umieści go w SPI już z w BE ... i dlatego szczytując go bezpośrednio programatorem z kostki wszystko jest przestawione ... podobnie z dumpem za pomocą u-boot-a ... zapewnie sam to przestawia i ma się gotowca że tak powiem ..

No nic ... jak pisałeś pozostało mi metoda prób i błędów ... załaduje najpierw burnin-a i uboot-a ... jak to mi ruszy to
firmware już bez problemu ...

będę pisać jak sprawa się ma bo jak się to mówi ? sytacja jest dynamiczna wink

16

(44 odpowiedzi, napisanych Inne)

Pepe jeszcze tylko pytanie ... oto image header z nsboot.bin który naszczęście się ostał w spi i wygląda on tak :

FF  4D475A80   00000000E829000000000000  6E73626F6F742E62696E   0000
     img header                                                    nazwa pliku

.MGZ......)......nsboot.bin..

teraz tak ... to co jest wyżej jest po konwersji ... i nazwa pliku jest czytelna  natomiast zgodnie z dokumentem Flash System od tego procka podaje on że każdy imgage header jest złożony z tzw Magic Number ( 0x805A474D)  co wyżej widać że jest przestawione ....


TO jak to mam rozumieć ? Nagłówek czyta z byte-swap-em a reszta nie ? wink

17

(44 odpowiedzi, napisanych Inne)

Znalazłem fajny soft HexWorkshop i za jego pomocą zrobiłem konwersję byte swap dump-a którego zrobiłem i elegancko
są teraz do odczytania wszystkie stringi...

No to teraz już mogę zacząć zabawe z produkcją obrazu..

18

(44 odpowiedzi, napisanych Inne)

Wgrany wsad i odczytany jest zawsze taki sam ... jak pisałem wyżej sprawdziłem to aby wykluczyć uwalony programator wink

Czyli tak ... aby skonwertować sobie swojego bin-a do BE to co byś mi polecił ? ew. jakiś soft który ma taką opcję

19

(44 odpowiedzi, napisanych Inne)

Procek to GM8126 architektura ARM...

Co do plików bin wyprodukowanych prze ze mnie to są ok ... tzn stringi są czytelne normalnie.

20

(44 odpowiedzi, napisanych Inne)

Tzn tak ... używałem już HxD oraz 010 Editor-a i w obu przypadkach dump jest wyświetlany tak samo jak w programie od programatora ... podejrzewam że on sam w sobie przestawia bajty podczas wgrywania i odczytu...

Znalazłem w necie bibliotekę pod linuxa do tego CH341A i jest tam coś takiego :

/* ch341 requres LSB first, swap the bit order before send and after receive  */


Czyli wynika chyba z tego że pliki bin będę musiał przerobić na big endian-a przed wgraniem

21

(44 odpowiedzi, napisanych Inne)

Programator mam ten "ryżowy" wink CH341A i takie samo oprogramowanie do niego.

Ale ciekawostką jest to że jak wrzuce plik dump spowrotem na kość (poprzestawiany) po wcześniejszm wymazaniu całej kości to kamerka odżywa z tym samym błędem- czyli jak mam to rozumieć ?

22

(44 odpowiedzi, napisanych Inne)

Pepe2k miałeś rację ... pomalutku dochodzę do setna ...

Wg PDF każdy image w spi ma swój nagłówek w którym m.in jest nazwa..
tak więc znalazłem winowajcę rom.bin który poszedł z karty SD wygląda to tak :

€ZGM.....ľm….....mor.nib.......

znajduje się on dokładnie na adresie 0x6000 gdzie powinien być burnin.bin

gdzie na końcu widać nazwę oczywiście przestawioną.

Teraz mam pytanie ... skoro dump jest poprzestawiany to muszę swoje skompilowane pliki bin również poprzestawiać ?

23

(44 odpowiedzi, napisanych Inne)

Ściągłem sobie SDK do tego Dlinka .. ale niesiety jest puste w sensie nic nie ma skompilowanego ...

Udało mi się uruchomić to środowisko i z powodzeniem skompilowalem sobie UBOOT-a ..

Niestety w katalogu BURNIN jest jakiś inny projekt kompilowany chyba programem od codewarrior (wyczytałem w PDF-ie z pierwszego posta)

Ktoś coś dopomoże ? wink

24

(44 odpowiedzi, napisanych Inne)

Dzieki za naprowadzenie - do tej pory nie zagłębiałem się tak bardzo w tematyke grzebania we flash-u wink

Co do Dlinka to nie wiedziałem że mają swoje GPL ... właśnie ściągam co tam mają i będę patrzeć ..

Hej !

Po nieudanej aktualizacji z karty SD uwaliło mi pamięć spi nagrywając domyślnie obraz firmware w komórkach
wcześniej niż powinien być tym sposobem uwalając u-boot-a i cała resztę później ...

Z tego co udało mi się wygrzebać w internecie pamięć posiada następującą mapę :

http://www.openipcam.com/files/ARM9/GM8 … e_V1.1.pdf

strona 4 i 5 to opisuje...



Udało mi się dostać się do kostki Winbonda i zgrać ją.
Oczywiście zgrana kostka nie ma się nijak do tego co powinno w niej być - dane są bynajmniej dziwne
z tego względu że szukając tekstu np " SPI BOOTSTRAP" nie znajduje go choć znalazłem podobne znaki ale jakby
przestawione i pogubione ....

Co bardziej ciekawe próbowałem sprawdzić czy aby dump się dobrze zgrał tak więc ... zgrany dump  => wyczyszczona kostka => wgrany spowrotem ... i kamera zachowuje się tak samo (w sensie kamera sie inicjuje i wali błędem o

MP SPI-NOR Bootstrap v0.2.1
SPI: Fail to read code in 0x6000

)

Próbowałem w na adres 0x6000 dorzucić u-boot-a i wtedy dostałem bład Check image header i jakiś adres...

Pomógłby mi ktoś postawić te kamerke na nogi ? fajny sprzęt a szkoda...
Mile widziany dump z kamery jeśli ktoś taką posiada !!!!
Załatwiło by to sprawę od razu ...
Moja kamera to Revision A