Chciałbym zaprezentować wnętrze oscyloskopu Siglent SDS1052DL+. Niestety oscyloskop ten, jak zresztą wiele innych urządzeń tej marki zawiesił się podczas bootowania. Coś się najwyraźniej pomieszało w pamięci i jakaś część ładowana (np. obraz systemu operacyjnego) z pamięci flash została uszkodzona/skasowana. Taki problem miałem już z trzema oscyloskopami SDS1052DL+.
W przypadku takich kłopotów można napisać do producenta: info-eu(_at_)siglent.com Nawet potrafią coś odpisać. Dostałem więc instrukcję i stosowne pliki odzyskiwania. Bardzo pomocny okazał się też kolega tautech z forum EEV Blog. Teoretycznie można to naprawić przez zewnętrzne USB HOST. Jednak mimo stosowania się do instrukcji i nawet zakupu zalecanego pendrive nic to nie dało. W ten sposób udało się uruchomić tylko jeden z oscyloskopów. Próba resetowania też nie pomogła. Po rozkręceniu oscyloskopu w środku znalazłem złącze karty SD, więc poprosiłem producenta o opis jak odzyskać obraz pamięci w ten sposób. Okazuje się to "bardzo" proste. Wystarczy "tylko" rozebrać całość na części pierwsze, by dostać się do spodu płyty. Kolejno lutujemy jedną zworkę, składamy oscyloskop i wkładamy przygotowaną kartę SD. Kiedy już z niej zabootuje trzeba wyłączyć zasilanie i kartę to usunąć. Potem już zostało nam "jedynie" sprzęt uruchomić ponownie i wejść w tryb serwisowy, by podmienić plik konfiguracyjny. Ostatecznie trzeba z tego trybu wyjść i ponownie rozłożyć oscyloskop, by zlutowaną zworę usunąć. Ostatecznie całość trzeba złożyć. Zajmuje to ok. 1,5 godziny zabawy. Nie mogę dać tu dokładniejszego opisu, bo producent prosił, by nie udostępniać przesłanych mi materiałów. Ostatecznie całość zakończyła się sukcesem.
Zdjęcia z zewnątrz:
Kolejno należy usunąć klawisz załączania oscyloskopu:
Następnie na wszelki wypadek warto usunąć gałki, by się nie porysowały przy rozkręcaniu urządzenia:
Można teraz odkręcić cztery wkręty, by dostać się do wnętrza:
Po zdjęciu części blach ekranujących:
W dalszej kolejności trzeba odłączyć i zdemontować płytę zasilacza:
Jest to flyback na jakimś układzie serii TOP.
Widać już nieco bardziej płytę główną:
Teraz trzeba odkręcić izolującą przekładkę, by dostać się do taśm klawiatury i wyświetlacza:
W przypadku taśmy wyświetlacza należy wcześniej odkleić taśmę zabezpieczającą. Następnie trzeba to delikatnie rozłączyć:
Teraz kolej na odkręcenie panelu przedniego (znowu kilka wkrętów):
Widać tu trochę jakichś rejestrów.
Potem odkręcamy nakrętki ze złącz BNC i kilka wkrętów wewnątrz, by wymontować płytę główną:
Z głównych układów widać tu dwa FPGA Altery, pamięć flash i ARM cortex A8: link. Widać też wzmiankowane złącze karty SD.
Kolejno należy złożyć wstępnie na parę wkrętów oscyloskop, wstawić kartę SD i uruchomić go. W końcu będzie on wyglądał tak:
Widać podświetlenie tylko kilku klawiszy (nie wszystkich) i szary wyświetlacz. Teraz trzeba zrobić, to co zdawkowo opisałem powyżej. Łącznie jest ok. 20 wkrętów. Masa straconego czasu.
Po wszystkim oscyloskop działa:
Czy coś się zyskuje? Warto zobaczyć w menu, czy będzie ten sam model:
Obecnie jest to SDS1202DL+ (czerwona ramka). Oryginalnie jest tak:
Co to daje? Podobno SDS1202DL+ ma pasmo 200 MHz. Można to próbować oszacować z czasu narastania dla przebiegu prostokątnego, ale nie bawiłem się w coś takiego. Łatwo jednak sprawdzić, czy jest jakaś szybsza podstawa czasu:
Mamy więc minimalnie 2,5 ns/div zamiast 5 ns/div dla SDS1052DL+:
Wniosek jest niezbyt zaskakujący. Cała seria SDS1XXX ma ten sam lub bardzo podobny sprzęt. Różnice są programowe. Tak powstają różne modele.
Co można zrobić dalej, skoro już i tak sprzęt jest rozebrany? Kusząco wygląda złącze J11:
Jest to oczywiście UART o poziomach 3,3 V. Z tego, co pamiętam:
Mimo zacisku +5 V, to poziomy są 3,3 V. Łatwo to sprawdzić, mierząc napięcie na TxD i RxD.
Dołączenie konwertera USB<->UART:
Wymaganej jest oczywiście krosowanie dla TxD i RxD. Mamy tutaj typowe 115200 b/s i format ramki 8N1. Obecnie można już uruchomić terminal np. RealTerm. Podczas bootowania jest wysyłane coś takiego dla sprawnego oscyloskopu:
Spoiler:
U-Boot SPL 2013.01.01-svn29730 (Mar 27 2017 - 19:02:34)
config ddr_pll_config()++
config ddr_pll_config()--
nand_init+++++
nand_init-----
Lcd_Init()++
SetUpLCD()++
SetUpLCD()--
len=768052, height=480, width=800
Logo from nandflash: base=0x81000000; end=0x810bb81f; end-base=0xbb81f; rwsize=0xbb820; r=0x0
Lcd_Init()--
U-Boot 2013.01.01-svn29730 (Feb 03 2018 - 16:33:27)
I2C: ready
DRAM: 128 MiB
NAND: 256 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
Using default environment
set_default_env::7870
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
Net: <ethaddr> not set. Validating first E-fuse MAC
cpsw
Hit any key to stop autoboot
mmc_send_cmd : timeout: No status update
Card did not respond to voltage select!
(Re)start USB...
USB0: lowlevel init failed
USB error: all controllers failed lowlevel init
Download Linux from USB to Nandflash...
** Bad device usb 0 **
** Bad device usb 0 **
** Bad device usb 0 **
** Bad device usb 0 **
Booting from nand ...
NAND read: device 0 offset 0x3080000, size 0x300000
3145728 bytes read: OK
## Booting kernel from Legacy Image at 80200000 ...
Image Name: Linux-3.2.0+
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2157768 Bytes = 2.1 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
init started: BusyBox v1.13.2 (2012-04-08 17:28:57 CDT)
starting pid 519, tty '': '/etc/init.d/rcS'
rS in
/etc/init.d/rcS: line 15: setterm: not found
starting pid 536, tty '/dev/ttyO0': '-/bin/sh'
Processing /etc/profile... Done
/ # check_and_upgrade:starting...
mount_fs: rw,sync,ubi1_0,/usr/bin/siglent/usr
ubi1_0unattached
attach_ubi:datafs
attach_ubi:11
UBI device number 1, total 812 LEBs (103104512 bytes, 98.3 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
MOUNT_DIR_NAME = /usr/bin/siglent/usr
TEST_RESTURN =
is_fs_mounted 0 ---
is_need_upgrade
is_need_upgrade:not need upgrade
check_and_upgrade:end...
++mount_check_copy_appdata: starting
mount_fs: ro,sync,ubi2_0,/usr/bin/siglent/firmdata0
ubi2_0unattached
attach_ubi:firmdata0
attach_ubi:9
UBI device number 2, total 400 LEBs (50790400 bytes, 48.4 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
MOUNT_DIR_NAME = /usr/bin/siglent/firmdata0
TEST_RESTURN =
is_fs_mounted 0 ---
--mount_check_copy_appdata: ending
Load Fpga Success!
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00010000...
Erasing 128 Kibyte @ 0 -- 0 % complete
Erasing 128 Kibyte @ 20000 -- 50 % complete
Erasing 128 Kibyte @ 20000 -- 100 % complete
Failure to load the Help message!!
Could not create log file: File exists
COULD NOT CREATE LOGFILE '19700101-000005.534'!
I0101 00:00:05.193247 534 module.cpp:568] ---------------------------------------------------------------------------------------
I0101 00:00:05.214958 534 module.cpp:569] Creat Log
-----------------------------------------------------------------------------------------------------------------------------------
I0101 00:00:05.423487 534 module.cpp:489]
-----------------------------------------------------------------------------------------------------------------------------------
vxi11_main = 5523
init_lcd_driver()++
g_vinfo.xres = 800
g_vinfo.yres = 480
g_vinfo.bits_per_pixel = 16
U-Boot SPL 2013.01.01-svn29730 (Mar 27 2017 - 19:02:34)
config ddr_pll_config()++
config ddr_pll_config()--
nand_init+++++
nand_init-----
Lcd_Init()++
SetUpLCD()++
SetUpLCD()--
len=768052, height=480, width=800
Logo from nandflash: base=0x81000000; end=0x810bb81f; end-base=0xbb81f; rwsize=0xbb820; r=0x0
Lcd_Init()--
U-Boot 2013.01.01-svn29730 (Feb 03 2018 - 16:33:27)
I2C: ready
DRAM: 128 MiB
NAND: 256 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
Using default environment
set_default_env::7870
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
Net: <ethaddr> not set. Validating first E-fuse MAC
cpsw
Hit any key to stop autoboot
mmc_send_cmd : timeout: No status update
Card did not respond to voltage select!
(Re)start USB...
USB0: lowlevel init failed
USB error: all controllers failed lowlevel init
Download Linux from USB to Nandflash...
** Bad device usb 0 **
** Bad device usb 0 **
** Bad device usb 0 **
** Bad device usb 0 **
Booting from nand ...
NAND read: device 0 offset 0x3080000, size 0x300000
3145728 bytes read: OK
## Booting kernel from Legacy Image at 80200000 ...
Image Name: Linux-3.2.0+
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2157768 Bytes = 2.1 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
init started: BusyBox v1.13.2 (2012-04-08 17:28:57 CDT)
starting pid 519, tty '': '/etc/init.d/rcS'
rS in
/etc/init.d/rcS: line 15: setterm: not found
starting pid 536, tty '/dev/ttyO0': '-/bin/sh'
Processing /etc/profile... Done
/ # check_and_upgrade:starting...
mount_fs: rw,sync,ubi1_0,/usr/bin/siglent/usr
ubi1_0unattached
attach_ubi:datafs
attach_ubi:11
UBI device number 1, total 812 LEBs (103104512 bytes, 98.3 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
MOUNT_DIR_NAME = /usr/bin/siglent/usr
TEST_RESTURN =
is_fs_mounted 0 ---
is_need_upgrade
is_need_upgrade:not need upgrade
check_and_upgrade:end...
++mount_check_copy_appdata: starting
mount_fs: ro,sync,ubi2_0,/usr/bin/siglent/firmdata0
ubi2_0unattached
attach_ubi:firmdata0
attach_ubi:9
UBI device number 2, total 400 LEBs (50790400 bytes, 48.4 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
MOUNT_DIR_NAME = /usr/bin/siglent/firmdata0
TEST_RESTURN =
is_fs_mounted 0 ---
--mount_check_copy_appdata: ending
Load Fpga Success!
ECC failed: 0
ECC corrected: 0
Number of bad blocks: 0
Number of bbt blocks: 0
Block size 131072, page size 2048, OOB size 64
Dumping data starting at 0x00000000 and ending at 0x00010000...
Erasing 128 Kibyte @ 0 -- 0 % complete
Erasing 128 Kibyte @ 20000 -- 50 % complete
Erasing 128 Kibyte @ 20000 -- 100 % complete
Failure to load the Help message!!
Could not create log file: File exists
COULD NOT CREATE LOGFILE '19700101-000005.534'!
I0101 00:00:05.193247 534 module.cpp:568] ---------------------------------------------------------------------------------------
I0101 00:00:05.214958 534 module.cpp:569] Creat Log
-----------------------------------------------------------------------------------------------------------------------------------
I0101 00:00:05.423487 534 module.cpp:489]
-----------------------------------------------------------------------------------------------------------------------------------
vxi11_main = 5523
init_lcd_driver()++
g_vinfo.xres = 800
g_vinfo.yres = 480
g_vinfo.bits_per_pixel = 16
Mamy tu więc bootloader U-boot (podobnie, jak w wielu innych chińskich urządzeniach) i Linux. Szkoda, że nie pomyślałem, by dołączyć się przed naprawą obrazu pamięci. Konsola normalnie działa. Mamy typowe echo i dostęp do Linuxa. Wpisanie czegokolwiek i CR:
Co jakiś czas wysyłane jest coś takiego:
Dołączenie i odłączenie pendrive:
Po wysłaniu samego CR:
Wybrane polecenia Linuxa:
Można zobaczyć np. co jest w wybranych katalogach.
Pliki w BIN:
Spoiler:
cd bin
/bin # ls -a
. deluser linux64 reformime
.. df ln rm
addgroup dmesg login rmdir
adduser dumpkmap ls run-parts
ash echo lsattr sed
busybox ed makemime setarch
cat egrep mkdir sh
catv ethtool mknod sleep
changeip11.104 false mktemp startdebug
changeip13.201 fdflush more stat
changeip13.202 fgrep mount stty
changeip13.203 getopt mountpoint su
changeip13.210 grep msh sync
changeip13.212 gunzip mt tar
changeip13.213 gzip mv touch
changeip13.250 hostname netstat true
chattr hush nice umount
chgrp ip pidof uname
chmod ipaddr ping uncompress
chown ipcalc ping6 usleep
cp iplink pipe_progress vi
cpio iproute pmap_dump watch
cttyhack iprule portmap zcat
date iptunnel printenv
dd kill ps
delgroup linux32 pwd
/bin #
/bin # ls -a
. deluser linux64 reformime
.. df ln rm
addgroup dmesg login rmdir
adduser dumpkmap ls run-parts
ash echo lsattr sed
busybox ed makemime setarch
cat egrep mkdir sh
catv ethtool mknod sleep
changeip11.104 false mktemp startdebug
changeip13.201 fdflush more stat
changeip13.202 fgrep mount stty
changeip13.203 getopt mountpoint su
changeip13.210 grep msh sync
changeip13.212 gunzip mt tar
changeip13.213 gzip mv touch
changeip13.250 hostname netstat true
chattr hush nice umount
chgrp ip pidof uname
chmod ipaddr ping uncompress
chown ipcalc ping6 usleep
cp iplink pipe_progress vi
cpio iproute pmap_dump watch
cttyhack iprule portmap zcat
date iptunnel printenv
dd kill ps
delgroup linux32 pwd
/bin #
Pliki w DEV:
Spoiler:
cd dev
/dev # ls -a
. mtdblock7 tty36
.. mtdblock8 tty37
Gpmc mtdblock9 tty38
console network_latency tty39
cpu_dma_latency network_throughput tty4
device null tty40
fb0 psaux tty41
fpga_key ptmx tty42
full pts tty43
g_usbtmc ram0 tty44
i2c-1 ram1 tty45
i2c-2 ram10 tty46
keyboard.dat ram11 tty47
kmem ram12 tty48
kmsg ram13 tty49
loop-control ram14 tty5
loop0 ram15 tty50
loop1 ram2 tty51
loop2 ram3 tty52
loop3 ram4 tty53
loop4 ram5 tty54
loop5 ram6 tty55
loop6 ram7 tty56
loop7 ram8 tty57
mem ram9 tty58
mice random tty59
mtd0 spidev1.0 tty6
mtd0ro spidev1.1 tty60
mtd1 tty tty61
mtd10 tty0 tty62
mtd10ro tty1 tty63
mtd11 tty10 tty7
mtd11ro tty11 tty8
mtd1ro tty12 tty9
mtd2 tty13 ttyO0
mtd2ro tty14 ttyO1
mtd3 tty15 ttyO2
mtd3ro tty16 ttyO3
mtd4 tty17 ttyO4
mtd4ro tty18 ttyO5
mtd5 tty19 ubi0
mtd5ro tty2 ubi0_0
mtd6 tty20 ubi1
mtd6ro tty21 ubi1_0
mtd7 tty22 ubi2
mtd7ro tty23 ubi2_0
mtd8 tty24 ubi_ctrl
mtd8ro tty25 urandom
mtd9 tty26 usb1
mtd9ro tty27 usb2
mtdblock0 tty28 usbdev1.1
mtdblock1 tty29 usbdev2.1
mtdblock10 tty3 vcs
mtdblock11 tty30 vcs1
mtdblock2 tty31 vcsa
mtdblock3 tty32 vcsa1
mtdblock4 tty33 watchdog
mtdblock5 tty34 zero
mtdblock6 tty35
/dev #
/dev # ls -a
. mtdblock7 tty36
.. mtdblock8 tty37
Gpmc mtdblock9 tty38
console network_latency tty39
cpu_dma_latency network_throughput tty4
device null tty40
fb0 psaux tty41
fpga_key ptmx tty42
full pts tty43
g_usbtmc ram0 tty44
i2c-1 ram1 tty45
i2c-2 ram10 tty46
keyboard.dat ram11 tty47
kmem ram12 tty48
kmsg ram13 tty49
loop-control ram14 tty5
loop0 ram15 tty50
loop1 ram2 tty51
loop2 ram3 tty52
loop3 ram4 tty53
loop4 ram5 tty54
loop5 ram6 tty55
loop6 ram7 tty56
loop7 ram8 tty57
mem ram9 tty58
mice random tty59
mtd0 spidev1.0 tty6
mtd0ro spidev1.1 tty60
mtd1 tty tty61
mtd10 tty0 tty62
mtd10ro tty1 tty63
mtd11 tty10 tty7
mtd11ro tty11 tty8
mtd1ro tty12 tty9
mtd2 tty13 ttyO0
mtd2ro tty14 ttyO1
mtd3 tty15 ttyO2
mtd3ro tty16 ttyO3
mtd4 tty17 ttyO4
mtd4ro tty18 ttyO5
mtd5 tty19 ubi0
mtd5ro tty2 ubi0_0
mtd6 tty20 ubi1
mtd6ro tty21 ubi1_0
mtd7 tty22 ubi2
mtd7ro tty23 ubi2_0
mtd8 tty24 ubi_ctrl
mtd8ro tty25 urandom
mtd9 tty26 usb1
mtd9ro tty27 usb2
mtdblock0 tty28 usbdev1.1
mtdblock1 tty29 usbdev2.1
mtdblock10 tty3 vcs
mtdblock11 tty30 vcs1
mtdblock2 tty31 vcsa
mtdblock3 tty32 vcsa1
mtdblock4 tty33 watchdog
mtdblock5 tty34 zero
mtdblock6 tty35
/dev #
Pliki w LIB:
Spoiler:
cd lib
/lib # ls -a
. libnsl-2.12.2.so
.. libnsl.so.1
ld-2.12.2.so libnss_compat-2.12.2.so
ld-linux.so.3 libnss_compat.so.2
libBrokenLocale-2.12.2.so libnss_dns-2.12.2.so
libBrokenLocale.so.1 libnss_dns.so.2
libanl-2.12.2.so libnss_files-2.12.2.so
libanl.so.1 libnss_files.so.2
libc-2.12.2.so libpthread-2.12.2.so
libc.so.6 libpthread.so.0
libcidn-2.12.2.so libresolv-2.12.2.so
libcidn.so.1 libresolv.so.2
libcrypt-2.12.2.so librt-2.12.2.so
libcrypt.so.1 librt.so.1
libdl-2.12.2.so libthread_db-1.0.so
libdl.so.2 libutil-2.12.2.so
libgcc_s.so.1 libutil.so.1
libm-2.12.2.so modules
libm.so.6
/lib #
/lib # ls -a
. libnsl-2.12.2.so
.. libnsl.so.1
ld-2.12.2.so libnss_compat-2.12.2.so
ld-linux.so.3 libnss_compat.so.2
libBrokenLocale-2.12.2.so libnss_dns-2.12.2.so
libBrokenLocale.so.1 libnss_dns.so.2
libanl-2.12.2.so libnss_files-2.12.2.so
libanl.so.1 libnss_files.so.2
libc-2.12.2.so libpthread-2.12.2.so
libc.so.6 libpthread.so.0
libcidn-2.12.2.so libresolv-2.12.2.so
libcidn.so.1 libresolv.so.2
libcrypt-2.12.2.so librt-2.12.2.so
libcrypt.so.1 librt.so.1
libdl-2.12.2.so libthread_db-1.0.so
libdl.so.2 libutil-2.12.2.so
libgcc_s.so.1 libutil.so.1
libm-2.12.2.so modules
libm.so.6
/lib #
Pliki w MNT (pusty katalog):
Spoiler:
cd mnt
/mnt # ls -a
. ..
/mnt #
/mnt # ls -a
. ..
/mnt #
Spróbowałem też zobaczyć co się dzieje w konsoli przy wysyłaniu komend SCPI przez USB device. Zrobiłem więc prosty program w Labview na gotowym driverze ze strony NI (trochę go kiedyś poprawiałem):
Block Diagram:
Front Panel:
Ustawiany jest tu offset, czułość i tłumienie sondy.
Po uruchomieniu w trybie pojedynczym mamy coś takiego w konsoli:
Oscyloskop skonfigurował się prawidłowo. Skąd te błędy? Driver nie jest dopasowany do naszych ustawień regionalnych. Stąd jako separator dziesiętny wysyła przecinek. Brak jest więc kodów lokalizacyjnych w Format String. Powinno być na początku "%.;", jednak nigdy nie chciało mi się tego przerabiać.
Można też jak wynika z tego, co jest wysyłane przy bootowaniu wstrzymać cały proces i pominąć ładowanie Linuxa:
...
Hit any key to stop autoboot
...Uruchomiłem go więc na wciśniętym enter. Wysyłane było zatem CR. Udało się dostać tym samym do samego U-boot'a. Można już wpisać help i CR:
Spoiler:
U-Boot# help? - alias for 'help'
askenv - get environment variables from stdin
base - print or set address offset
bdinfo - print Board Info structure
bmpload - Get RGB from .bmp picture
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootm - boot application image from memory
bootp - boot image via network using BOOTP/TFTP protocol
chpart - change active partition
cmp - memory compare
coninfo - print console devices and information
cp - memory copy
crc32 - checksum calculation
dfu - Device Firmware Upgrade
dhcp - boot image via network using DHCP/TFTP protocol
echo - echo args to console
editenv - edit environment variable
eeprom - EEPROM sub-system
env - environment handling commands
exit - exit script
ext2load- load binary file from a Ext2 filesystem
ext2ls - list files in a directory (default /)
false - do nothing, unsuccessfully
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
fatwrite- write file into a dos filesystem
fdt - flattened device tree utility commands
go - start application at address 'addr'
help - print command description/usage
i2c - I2C sub-system
iminfo - print header information for application image
imxtract- extract a part of a multi-image
itest - return true/false on integer compare
loadb - load binary file over serial line (kermit mode)
loads - load S-Record file over serial line
loady - load binary file over serial line (ymodem mode)
loop - infinite loop on address range
md - memory display
mm - memory modify (auto-incrementing address)
mmc - MMC sub system
mmcinfo - display MMC info
mtdparts- define flash/nand partitions
mtest - simple RAM read/write test
mw - memory write (fill)
nand - NAND sub-system
nboot - boot from NAND device
nfs - boot image via network using NFS protocol
nm - memory modify (constant address)
ping - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
reset - Perform RESET of the CPU
run - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv - set environment variables
sf - SPI flash sub-system
showvar - print local hushshell variables
sleep - delay execution for some time
source - run script from memory
test - minimal test like /bin/sh
tftpboot- boot image via network using TFTP protocol
true - do nothing, successfully
usb - USB sub-system
usbboot - boot from USB device
version - print monitor, compiler and linker version
U-Boot#
askenv - get environment variables from stdin
base - print or set address offset
bdinfo - print Board Info structure
bmpload - Get RGB from .bmp picture
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootm - boot application image from memory
bootp - boot image via network using BOOTP/TFTP protocol
chpart - change active partition
cmp - memory compare
coninfo - print console devices and information
cp - memory copy
crc32 - checksum calculation
dfu - Device Firmware Upgrade
dhcp - boot image via network using DHCP/TFTP protocol
echo - echo args to console
editenv - edit environment variable
eeprom - EEPROM sub-system
env - environment handling commands
exit - exit script
ext2load- load binary file from a Ext2 filesystem
ext2ls - list files in a directory (default /)
false - do nothing, unsuccessfully
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
fatwrite- write file into a dos filesystem
fdt - flattened device tree utility commands
go - start application at address 'addr'
help - print command description/usage
i2c - I2C sub-system
iminfo - print header information for application image
imxtract- extract a part of a multi-image
itest - return true/false on integer compare
loadb - load binary file over serial line (kermit mode)
loads - load S-Record file over serial line
loady - load binary file over serial line (ymodem mode)
loop - infinite loop on address range
md - memory display
mm - memory modify (auto-incrementing address)
mmc - MMC sub system
mmcinfo - display MMC info
mtdparts- define flash/nand partitions
mtest - simple RAM read/write test
mw - memory write (fill)
nand - NAND sub-system
nboot - boot from NAND device
nfs - boot image via network using NFS protocol
nm - memory modify (constant address)
ping - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
reset - Perform RESET of the CPU
run - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv - set environment variables
sf - SPI flash sub-system
showvar - print local hushshell variables
sleep - delay execution for some time
source - run script from memory
test - minimal test like /bin/sh
tftpboot- boot image via network using TFTP protocol
true - do nothing, successfully
usb - USB sub-system
usbboot - boot from USB device
version - print monitor, compiler and linker version
U-Boot#
Jest całkiem sporo poleceń. Możnaby np. odczytać cały obraz pamięci FLASH do DDRAM i potem zapisać to do pliku na pendrive. Jednak wolałem się tym nie bawić. Łatwo tu coś uszkodzić. Nie jest to zupełny złom, jak np. tunery DVB-T.
Komenda bdinfo:
Widać już mapę pamięci. Stąd byłoby wiadomo gdzie np. ładować FLSH, by uzyskać jego obraz.
Komenda coninfo:
Wersja U-boot'a:
Po latach pracy z SDS1052DL+ i generatorem SDS1020 mogę śmiało powiedzieć, że nie polecam produktów Siglent. Potrafi się to czasem zawiesić, szczególnie podczas programowania przez USB, ale i bez tego również. Nie wszystkie komendy SCPI działają a opis do niektórych jest taki, że trzeba zgadywać o co chodzi. Inne problemy to jak widać wieszanie się podczas bootowania. W dwóch SDS1052DL+ padło USB device, więc teraz trzeba je programować po ethernecie. Ciekawe co będzie następne...
Fajne? Ranking DIY