Dziękuje za uwagę ... kamera naprawiona ![]()
Dla potomnych możecie przypiąć w jakimś dziale ....
Dump z flash-a zainteresowanym wyśle na maila po kontakcie.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Posty przez komprez
Dziękuje za uwagę ... kamera naprawiona ![]()
Dla potomnych możecie przypiąć w jakimś dziale ....
Dump z flash-a zainteresowanym wyśle na maila po kontakcie.
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ć ![]()
Zaczołem grzebac już w samym firmware bo zastanowiło mnie słowo update .... a tu masz ... skrypt na pocztątku ![]()
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
ACgAHQAcAAEAAHAUNgAAFLYAABS2AAAgAQAAIAEAAAQAAAAEAAAABgAAADQAi 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ć ???
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 ?
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ć ?
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 ....
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 ...
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ć ?
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)
OK błąd ze zmiennymi udało się zrobić ... saveenv pomogło ![]()
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
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.
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 ?
Uboot też już funguje
Halogeny w tunelu ![]()
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
I kolejne sprawozdanie z napraw ![]()
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>>
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 ![]()
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 ? ![]()
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..
Wgrany wsad i odczytany jest zawsze taki sam ... jak pisałem wyżej sprawdziłem to aby wykluczyć uwalony programator ![]()
Czyli tak ... aby skonwertować sobie swojego bin-a do BE to co byś mi polecił ? ew. jakiś soft który ma taką opcję
Procek to GM8126 architektura ARM...
Co do plików bin wyprodukowanych prze ze mnie to są ok ... tzn stringi są czytelne normalnie.
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
Programator mam ten "ryżowy"
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ć ?
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ć ?
Ś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 ? ![]()
Dzieki za naprowadzenie - do tej pory nie zagłębiałem się tak bardzo w tematyke grzebania we flash-u ![]()
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
eko.one.pl → Posty przez komprez
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc