Как стать автором
Обновить
2123.08
Timeweb Cloud
То самое облако

Полигон для творчества за 1500 р. Часть 3. Экран, Малина, OpenOCD и бусики

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров3.2K


Приветствую вас, друзья!

Когда под рукой хороший тренажёр, так и тянет опробовать на нём новые для себя технологии и инструменты, сделать какой-то интересный проект. Или получше познакомиться с ним, чтобы в дальнейшем использовать как платформу для обкатывания новых идей.

Сегодня поиграемся с экраном и векторным анализатором цепей ОСА 103, подружим OpenOCD с Малиной и немного покопаемся в прошивке.

Вперёд к экспериментам!


Подключаем к ПЛИС экран с RGB интерфейсом


Теперь можно спокойно подключить что-нибудь к ПЛИС. Под рукой оказался экран c RGB интерфейсом от навигатора, обратную разработку которого описывал ранее.

При работе с такими экранами нужно правильно настроить ширину импульсов H_SYNC, V_SYNC и задержки: horizontal/vertical front porch, horizontal/vertical back porch. Если они будут настроены ошибочно, то изображение всё равно будет, только сдвинутое. В этом экраны без памяти проще, чем с памятью, где из-за ошибок в последовательности команд инициализации экран может не включиться.


Параметры нашего экрана следующие:
//По вертикали
parameter V_SYNC = 4, //Ширина импульса 
                 V_BKPORCH = 12,//Пауза до
                 V_DISPLAY = 272,//Активная высота (из разрешения) кадра
                 V_FTPORCH = 8,//Пауза после
                 V_ALL = V_SYNC + V_BKPORCH + V_DISPLAY + V_FTPORCH; //Полный период
//По горизонтали 
parameter   H_SYNC      = 4    ,//Ширина импульса 
                   H_BKPORCH   = 43    ,//Пауза до
                   H_DISPLAY   = 480   ,//Активная ширина (из разрешения) кадра
                   H_FTPORCH   = 8    ,//Пауза после
                   H_ALL       = H_SYNC + H_BKPORCH + H_DISPLAY + H_FTPORCH;//Полный период

Количество тактов для отображения кадра:

Nclk = V_ALL * H_ALL = 296*535 = 158360.

Если мы хотим 60 кадров в секунду, то частота сигнала pixel clock должна быть
Pclk = Nclk*60= 9501600 Гц.

Нужную частоту получим с помощью ФАПЧ (PLL). Про принцип действия, реализацию в ПЛИС ALTERA и порядок настройки можно почитать в статье на замечательном сайте «Марсоход».

Быстродействие (speed grade) микросхемы можно посмотреть в документации на неё. У нас EP4CE15F23C8N:



Обычно в даташитах на похожие экраны с таким разрешением рекомендуется частота 9 МГц, поэтому ориентируемся на неё.


C такой частотой получим примерно 9375000/158360 = 59,2 кадров/с.

Экран запустился и это очень радует. На макете измеряем частоту Vsync – 58,8 Гц (кадров/с). Малое расхождение, вероятно, из-за не очень точного измерения частоты. Нужно было растянуть осциллограмму по оси времени.





Файлы проекта.


Код для подключения экрана к ПЛИС взял отсюда. Немного подправил и добавил комментарии.
top_LCD.v
//Модуль для вывода трёх цветных полос на RGB экран.
module top_LCD(
    input				Clk		,
    input				Rst_n	,
    output  [7:0]       Lcd_r   ,
    output  [7:0]       Lcd_g   ,
    output  [7:0]       Lcd_b   ,
    output              Lcd_vsync,
    output              Lcd_hsync,
    output              Lcd_dclk,
    output              Lcd_disp,
    output              Lcd_de      
);

wire                clk_25m;
wire    [10:0]      pixel_x;
wire    [9:0]       pixel_y;
wire    [23:0]      rgb_data;            


/*pll	pll_inst (
	.areset ( ~rst_n ),
	.inclk0 ( clk ),
	.c0     ( clk_25m ),
	.locked ( locked_sig )
	);
*/
	
pll_for_LCD	pll_for_LCD_inst (
	.inclk0 ( Clk ),
	.c0 ( clk_25m  )
);

lcd_driver u_lcd_driver( 
    /* input				*/.clk		(clk_25m ),
    /* input				*/.rst_n    (Rst_n   ),
    /* input   [23:0]       */.rgb_data (rgb_data),
    /* output  [7:0]        */.lcd_r    (Lcd_r   ),
    /* output  [7:0]        */.lcd_g    (Lcd_g   ),
    /* output  [7:0]        */.lcd_b    (Lcd_b   ),
    /* output               */.lcd_vsync(Lcd_vsync),
    /* output               */.lcd_hsync(Lcd_hsync),
    /* output               */.lcd_dclk (Lcd_dclk),
    /* output               */.lcd_disp (Lcd_disp),
    /* output               */.lcd_de   (Lcd_de  ),
    /* output  [10:0]       */.pixel_x  (pixel_x ),
    /* output  [9:0]        */.pixel_y  (pixel_y )

);


lcd_show u_lcd_show(
    /* input                */.clk       (clk     ),
    /* input                */.rst_n     (rst_n   ),
    /* input   [10:0]       */.pixel_x   (pixel_x ),
    /* input   [9:0]        */.pixel_y   (pixel_y ), 
    /* output  [23:0]       */.rgb_data  (rgb_data)    
);
endmodule

lcd_driver.v
module lcd_driver( 
    input clk,//Входной синхросигнал
    input rst_n,//Сброс
    input [23:0] rgb_data,//Входные данные цвета
	 
	 //Интерфейс экрана
    output [7:0] lcd_r,
    output [7:0] lcd_g,
    output [7:0] lcd_b,
    output lcd_vsync,
    output lcd_hsync,
    output lcd_dclk,
    output lcd_disp,
    output lcd_de,
	 //Текущие координаты точки (для рисовалок)
    output [10:0] pixel_x,
    output [9:0] pixel_y 
);								 

//По вертикали
parameter   V_SYNC      = 4, //Ширина импульса 
            V_BKPORCH   = 12    ,//Пауза до
            V_DISPLAY   = 272   ,//Активная высота (из разрешения) кадра
            V_FTPORCH   = 8    ,//Пауза после
            V_ALL       = V_SYNC + V_BKPORCH + V_DISPLAY + V_FTPORCH;//Полный период
//По горизонтали
parameter   H_SYNC      = 4    ,//Ширина импульса 
            H_BKPORCH   = 43    ,//Пауза до
            H_DISPLAY   = 480   ,//Активная ширина (из разрешения) кадра
            H_FTPORCH   = 8    ,//Пауза после
            H_ALL       = H_SYNC + H_BKPORCH + H_DISPLAY + H_FTPORCH;//Полный период  

 // Field frame length counter Счётчик для импульсов по вертикали
reg [10:0] cnt_v;
wire add_cnt_v;
wire end_cnt_v;

 // row frame length counter Счётчик для импульсов по горизонтали
reg [10:0] cnt_h;//Для моего разрешения хватит и 9 бит, а не 11
wire       add_cnt_h;//Зачем эта переменная, если она всегда=1? Видимо, для одинаковости кода для v и h и лёгкого понимания
wire       end_cnt_h;//Если досчитали до конца

//Счётчик для импульсов по горизонтали 
always @(posedge clk or negedge rst_n)begin 
   if(!rst_n)begin
        cnt_h <= 0;//Сброс
    end 
    else if(add_cnt_h)begin 
            if(end_cnt_h)begin//Если досчитали до конца
                cnt_h <= 0;//Сброс
            end
            else begin 
                cnt_h <= cnt_h + 1;//Иначе считаем дальше
            end 
    end
   else  begin
       cnt_h <= cnt_h;
    end
end 

assign add_cnt_h = 1'b1;
assign end_cnt_h = add_cnt_h && cnt_h == H_ALL - 1;//Достигли конца строки?  

// Счётчик для импульсов по вертикали
always @(posedge clk or negedge rst_n)begin 
   if(!rst_n)begin
        cnt_v <= 0;//Сброс
    end 
    else if(add_cnt_v)begin//Прибавляем 1, если отсчитали целую строку. Т е считаем целые строки 
            if(end_cnt_v)begin //Если досчитали до конца
                cnt_v <= 0;//Сброс
            end
            else begin 
                cnt_v <= cnt_v + 1;//Иначе считаем дальше
            end 
    end
   else  begin
       cnt_v <= cnt_v;
    end
end 

assign add_cnt_v = end_cnt_h;//Прибавляем 1, если отсчитали целую строку. Т е считаем целые строки
assign end_cnt_v = add_cnt_v && cnt_v == V_ALL - 1;//Достигли конца кадра?

 // Формируем Vsync нужной длительности (меньше или равно), (активный низкий уровень)
assign lcd_vsync = (cnt_v <= V_SYNC - 1)?1'b0:1'b1;

 //  Формируем Hsync нужной длительности (меньше или равно), (активный низкий уровень)
assign lcd_hsync = (cnt_h <= H_SYNC - 1)?1'b0:1'b1;

 // LCD_DE display valid
assign lcd_de = (((cnt_v >= V_SYNC + V_BKPORCH - 1) && (cnt_v <= V_SYNC + V_BKPORCH + V_DISPLAY - 1)) && ((cnt_h >= H_SYNC + H_BKPORCH - 1) && (cnt_h <= H_SYNC + H_BKPORCH + H_DISPLAY - 1)))?1'b1:1'b0;

//Если de активен, передаём данные цветов
assign lcd_r = (lcd_de)?rgb_data[7:0]:0;
assign lcd_g = (lcd_de)?rgb_data[15:8]:0;
assign lcd_b = (lcd_de)?rgb_data[23:16]:0;

 // Если de активен, передаём текущие координаты точек
 
assign pixel_y = (lcd_de)?(cnt_v - (V_SYNC + V_BKPORCH)):0;
assign pixel_x = (lcd_de)?(cnt_h - (H_SYNC + H_BKPORCH)):0;

 // Тактовый сигнал
assign lcd_dclk = clk;

 // Normal display high level Похоже на сигнал Disp_ON.
assign lcd_disp = 1'b1;

endmodule

lcd_show.v
module lcd_show(
    input               clk,
    input               rst_n,
    input   [10:0]      pixel_x,
    input   [9:0]       pixel_y, 
    output  [23:0]      rgb_data    
);      

 // разрешение LCD
parameter   H_DISPLAY = 480,
            V_DISPLAY = 272;

//Коды цветов
parameter   RED     = 24'b11111111_00000000_00000000,
            GREEN   = 24'b00000000_11111111_00000000,
            BLUE    = 24'b00000000_00000000_11111111,
            BLACK   = 24'b00000000_00000000_00000000;

 // хранилище RGB данных
reg     [23:0]      rgb_data_r;
//Рисуем 3 полоски R-G-B
always @(posedge clk or negedge rst_n)begin 
    if(!rst_n)begin
        rgb_data_r <= BLACK;
    end 
    else if((pixel_x >= 0) && (pixel_x < H_DISPLAY/3))begin 
        rgb_data_r <= RED;
    end 
    else if((pixel_x >= H_DISPLAY/3) && (pixel_x < H_DISPLAY/3*2))begin 
        rgb_data_r <= GREEN;
    end 
    else begin
        rgb_data_r <= BLUE;
    end
end

assign rgb_data = rgb_data_r;

endmodule

Что за детальки стоят после 74HC245?




С микросхем 74HC245 на них идёт сигнал, затем на выходной разъём. На плате подписаны как «AR№». Может показаться, что это наборные резисторы (из-за буквы R в шелкографии), которые могли поставить для согласования логических уровней. Выглядят как счетверённые фильтры помех (бусины).

Наши детальки чем-то похожи на ICMF062P900MFR (COMMON MODE FILTER). Такие фильтры хорошо подавляют синфазный шум и почти не влияют на полезный высокоскоростной дифференциальный сигнал. Применяют в интерфейсах LVDS, USB2.0, HDMI, MIPI и др. Но у нас сигнал не дифференциальный, поэтому фильтры другого типа.
RLC-метр в режиме «авто» определяет это как сопротивление (а не L или C) 0.15 Ом. Но частота тест сигнала 1…10 кГц. Нужно посмотреть на более высоких частотах. Измерим комплексное сопротивление Z(f) с помощью векторного анализатора цепей (ОСА-103).

Сначала сделаем OSL (Open, Short, Load) калибровку с помощью самодельного набора из разъёмов SMA 3401:



Аккуратненько припаиваем наш образец к разъёму:



Подключаем к ОСА-103.



Измеряем комплексное сопротивление в диапазоне 10 кГц … 100 МГц. На 100 МГц модуль импеданса около 300 Ом.



Посмотрим раздел Bead/Filter/EMI Optimization в каком-нибудь магазине с удобными фильтрами. Мне кажется, что у нас именно бусина с 4-мя каналами, вроде таких:


По внешнему виду и размерам (ДхШ 2х1 мм) бусина похожа на такие, но в этой серии нет компонентов с сопротивлением 300 Ом на 100 МГц. Самое важное мы выяснили: данная деталь – не матрица резисторов, а счетверённая бусина. Поэтому при работе следует учитывать её частотные свойства.

Малина+OpenOCD. Считываем прошивку микроконтроллеров Nuvoton и STM32


C STM32 всё понятно: какие программные инструменты использовать, чем прошивать и т. д. Это популярные микроконтроллеры. А вот Nuvoton – менее известная вещь.

Посмотрим, что есть на сайте производителя для нашего микроконтроллера с забавным названием внук NUC123…


Судя по табличке, в качестве программатора подойдут Nu-Link / J-Link / U-Link, а код писать можно в Keil.



Вообще, по Нувотонам находит достаточно много информации.
  1. https://yandex.ru/search/?text=nuvoton+mcu+ide&lr=213
  2. Официальный сайт.
  3. Nuvoton_Tools.
  4. Даже есть видео на Ютубе. И у Владимира Мединцева.
  5. И др.

Под рукой программаторов Nu-Link / J-Link / U-Link не оказалось. Какие ещё есть варианты для Nuvoton?
  1. Делаем из BluePill программатор/отладчик JLink OB-STM32F103
  2. ST-LinkV2.
  3. ST-LinkV2 + Customized OpenOCD for Nuvoton devices.
  4. Малина + OpenOCD.

Меня заинтересовал вариант с Малиной, хотя ST-LinkV2 у меня тоже есть.
OpenOCD (Open On-Chip Debugger) – это ПО для взаимодействия с микроконтроллерами, flash-памятью или ПЛИС для отладки и программирования. Поддерживается большое число устройств и программаторов. Вещь интересная.

Общая схема взаимодействия ПО и микроконтроллера при работе с OpenOCD:



Пример работы с OpenOCD для STM32.

OpenOCD utils for Nuvoton NUC123, NUC126 and others.

Если подключается конкретный адаптер к какой-либо конкретной микросхеме (target), необходимо указать исходный код как интерфейса JTAG, так и целевых конфигураций, например:

openocd -f ../scripts/interface/nulink.cfg -f ../scripts/target/numicroM0.cfg     (for NuMicro M0)

Для Малины (у меня 3B+) вместо nulink.cfg выбираем raspberrypi2-native.cfg.
В этом же файле можно посмотреть, на какие контакты GPIO выводятся сигналы нужного интерфейса (JTAG или SWD).

Файл raspberrypi2-native.cfg
#
# Config for using Raspberry Pi's expansion header
#
# This is best used with a fast enough buffer but also
# is suitable for direct connection if the target voltage
# matches RPi's 3.3V and the cable is short enough.
#
# Do not forget the GND connection, pin 6 of the expansion header.
#

interface bcm2835gpio

bcm2835gpio_peripheral_base 0x3F000000

# Transition delay calculation: SPEED_COEFF/khz — SPEED_OFFSET
# These depend on system clock, calibrated for stock 700MHz
# bcm2835gpio_speed SPEED_COEFF SPEED_OFFSET
bcm2835gpio_speed_coeffs 146203 36

# Each of the JTAG lines need a gpio number set: tck tms tdi tdo
# Header pin numbers: 23 22 19 21
# bcm2835gpio_jtag_nums 11 25 10 9

# or if you have both connected,
# reset_config trst_and_srst srst_push_pull

# Each of the SWD lines need a gpio number set: swclk swdio
# Header pin numbers: 22 18
bcm2835gpio_swd_nums 25 24

# If you define trst or srst, use appropriate reset_config
# Header pin numbers: TRST — 26, SRST — 18

# bcm2835gpio_trst_num 7
# reset_config trst_only

bcm2835gpio_srst_num 18
reset_config srst_only srst_push_pull

# or if you have both connected,
# reset_config trst_and_srst srst_push_pull

Выводы для программирования микроконтроллера Нувотон и памяти.



С помощью мультиметра и документации на контроллер STM32F207VET6 определяем расположение выводов JTAG. Здесь же оказались и выводы SWD (сюрприз!):



Несколько граблей
Перед считыванием прошивки не забываем подключиться с другой консоли к OpenOCD через telnet (или gdb). Другая консоль — это другой экземпляр командной строки. Если локально, то другое окно. Если удаленно, то второе подключение по ssh.

Если на Малине Телнета нет, то устанавливаем его (sudo apt-get install telnet), иначе будет ошибка:

pi@raspberrypi:~ $ telnet 127.0.0.1 4444
-bash: telnet: command not found

Если OpenOCD на другой машине (Малине) то вместо 127.0.0.1 (localhost) надо указать ip адресс этой другой машины. Либо залогиниться туда через ssh и уже из под ssh сессии локально запускать telnet.

Пробовал запускать телнет через Putty. Ошибка «Network Error: ConnectionRefused».

Проблема была в том, что OpenOCD слушал только локальное подключение. Добавил в конфиг файл строчку bindto 0.0.0.0 и всё заработало: стало принимать подключения удалённо через Putty (если ваша сетевая среда безопасна, bindto 0.0.0.0 можно использовать для охвата всех доступных интерфейсов).

Получилось и считать, и записать прошивку (тренировался на bluepill –stm32f103c8t6):

halt
flash erase_sector 0 0 last
reset
flash write_bank 0 flashingLED13.bin

Пробовал такой openocd.cfg:

source [find interface/raspberrypi2-native.cfg]
transport select swd
adapter speed 1000
set WORKAREASIZE 0x2000
source [find target/stm32f1x.cfg]
reset_config srst_only srst_nogate

adapter_nsrst_delay 100

adapter_nsrst_assert_width 100

init
targets
reset halt
flash read_bank 0 firmwareF1.bin 0 0x10000
reset
shutdown

Можно запускать не openocd.cfg, а просто перечислять все опции в командной строке. Например, «openocd -f interface/stlink.cfg -f target/stm32f4x.cfg».

Подключаем Малину, считываем прошивку с помощью OpenOCD:



Так же считываем и прошивку Нувотона (вывод через telnet).
Open On-Chip Debugger
NuMicro.cpu: external reset detected

NuMicro.cpu: external reset detected
> flash banks
#0: NuMicro.flash_aprom (numicro) at 0x00000000, size 0x00000000, buswidth 0, chipwidth 0
#1: NuMicro.flash_data (numicro) at 0x0001f000, size 0x00000000, buswidth 0, chipwidth 0
#2: NuMicro.flash_ldrom (numicro) at 0x00100000, size 0x00000000, buswidth 0, chipwidth 0
#3: NuMicro.flash_config (numicro) at 0x00300000, size 0x00000000, buswidth 0,chipwidth 0

NuMicro.cpu: external reset detected

NuMicro.cpu: external reset detected
> flash read_bank 0 NUVOTON_bank0.bin
Device ID: 0x00012335
Device Name: NUC123LD4AN
bank base = 0x00000000, size = 0x00011000
wrote 69632 bytes to file NUVOTON_bank0.bin from flash bank 0 at offset 0x00000000 in 0.525390s (129.428 KiB/s)

NuMicro.cpu: external reset detected

> flash read_bank 1 NUVOTON_bank1.bin
Device ID: 0x00012335
Device Name: NUC123LD4AN
bank base = 0x0001f000, size = 0x00001000
wrote 4096 bytes to file NUVOTON_bank1.bin from flash bank 1 at offset 0x00000000 in 0.057828s (69.171 KiB/s)

NuMicro.cpu: external reset detected

> flash read_bank 2 NUVOTON_bank2.bin
Device ID: 0x00012335
Device Name: NUC123LD4AN
bank base = 0x00100000, size = 0x00001000
wrote 4096 bytes to file NUVOTON_bank2.bin from flash bank 2 at offset 0x00000000 in 0.051641s (77.458 KiB/s)

NuMicro.cpu: external reset detected

> flash read_bank 3 NUVOTON_bank3.bin
Device ID: 0x00012335
Device Name: NUC123LD4AN
bank base = 0x00300000, size = 0x00000400
SWD DPIDR 0x0bb11477
Failed to read memory at 0x00300000
error reading to flash at address 0x00300000 at offset 0x00000000
Read error


Часть памяти bank 3 считаться почему-то не захотела. Зато считались bank 0…2.

Зачем мы считывали прошивку?
  1. Создание резервной копии.
  2. Чтобы наладить процесс, если захочется прошить свою программу.
  3. Освоить новые инструменты – OpenOCD, программатор из Малины.
  4. В прошивке могут быть полезные подсказки (строки). Например, что это за устройство и прочие.
  5. При необходимости, покопать прошивку в IDA pro.

Поищем в считанных прошивках строки с помощью Strings.
Тренажёр для пальца уровень 1.
Строки из NUVOTON_bank0.bin (выдала srtings) (В NUVOTON_bank1.bin и NUVOTON_bank2.bin строки не нашлись)
======================================================
Самое интересное на мой взгляд:
2017.08.24 SX100_MCU_Data_V1.0.0.0.S3.T2
!!""##$$$%%&&''(())**++,,--..//0112234455677899:;;<=>>?@AABCDEFGHIJKLMNOPQSTUVXYZ
NOVASTARM3
NOVA HD CARD
======================================================
pGpG
F!I«H
h(C `
a i
C!a i
a i
C a!i8
C!a!i
CJ`*M
!(h
C(`(L
! F
&0C ` h
'8C `
h8C ` h0C `
h7J
!`F
h!J
<!hF
p-!Ap
»iFP
x!hF
pi!ApZ!
THBx
NHY!
sFcDI
sFcDI
PxiZK
!A`
xiZK
MHiF
«KI0F
ILax x
»!FCH
ax x
ax x
ay y
"!F1H
ax x
:F#I
iF \
jFa\
xiZK (-
-IHi
CHa hI
C ` h
C ` h
Ca` h
%(C ` h
C ` h
c hI
H 0
" !(F
«I#J»L
2L1M
%%b%hm
F@67h
HgFG`
`«hR
F@5/h
!Ab h
,L*M
b%H
`%Mi`
`$I»h
Nd6.`
FFbhj
#I$J#L
YCPC
`!iI
I(`J
@ IIhHC IHa
apG
2017.08.24 SX100_MCU_Data_V1.0.0.0.S3.T2
8F1F
*F#F
8F1F
QA*F#F
$H@
F,I$
#C&CaF
FP@q@
@pGJ
!F(F
F9F
C,C7C
h «0#
`/KC`/K
C&M#C
`$N5h
=C5`!M,`
,CLa
,CLa
bAjCj
5L y
%q?!
fqA!z
rB!z
sA!z
q i@
a`y
y»l!
p`x@
% !z
*F1F8F
Lax x
xG(
`xc(
`y((K
x`x
y`y
%,F
!A^2
!A^1
!A^0
!A^/
!A^.
!A^-
!A^,
"!A^+
!A^*
!A^)
!A^(
$!A^'
!A^&
!A^%
&!A^
FQC8
!FqC-
FqC+
Fq`*
!FqC)
FqC'
ZCsFXC
P,T#
iFHp
rgr`z
&5F$!hF
%'JYw
`q
`q`I
xR`q(
$oF`
x' $
FEqLy
z& $
DrLzDs
uL{Dt
{AudF
F!I«H
Ai „
CAa I
F hpi
Cpaah
])j
& j6
“! F
» !@8
&!x
«ax x
`\iF
iF \
7:F2I
:F2I
!\8\
<!hF
p-!Ap
hFAq
x!hF
pi!ApZ!
CB`pG
5I 1
3H x
A{1H
2FaCzC
c»e!
«A!z
»V!z
"@!z
«I!z
»U!z
«W!z
»s!z
«v!z
0»!
@«3!
»l!D
">!D
"@!D
">!D
:!D
;!D
=!D
"@!d
«t!d
D»L!h
«o!h
»W!h
«X!h
»u!h
«l!h
»w!d
«p!d
»t!d
0"!
«t!d
»t!d
y«n!
»UIhF
PNQH`6
!\@
F!\@
iFC
"~!l
"~!l
S!h
$M(h
`z!z
gr&r
N,xpx
)I)J
b)J(L
c&L@<'b
$@>4b7b
4b}
b8L6N
c4N@>1b
&&b&hv
F@5-h
'=C(O@7=`%O
%@?=b9b
b HaFA`
`!hI
N@62`
!Ab h
*>F[
b/K.M
c,M@=,b
`(Mi`
8F9F
Nd6.`
Ffblj
nb:`
(I(J
b(J'L
c%L@<'b
$@>4b7b '
%I&J
&&b'b
Ax
(pA hp
M@ )x
(p0F
/phF
/phF
~Lax x
sH "
xG(
`xc(
F F@6
«eIfH
»GIT
«BIU
»<IV
«7IW
»1IX
",IY
"&IZ
"!I[
(x p
h(C `
a i
C!a i
a i
C a!i8
C!a!i
«J`XH
ULh$
exLhtC$
pLh$
xLhtC$
%qLh$
x% LhtC$
pLh$
epLh$
%yLhtC$
eqLh$
eyLhtC$
qLh$
yLhtC$
%rLh$
yLhtC$
rLh$
$z% LhtC$
erLh$
qLh$
ezLhtC$
rLh$
zLhtC$
%sLh$
zLhtC$
sLh$
%{LhtC$
%tLh$
e{LhtC$
esLh$
{LhtC$
sLh$
\tKh[
K`Lh
pc Hp
q( Hq
pc Hp
q( Hq
L „'x!F
“x`x
xI I
xG(
FAxc)
2ZI0F
62F>I
2F;I
9KXj
aHj@
HbHj
#CC^
I j
Oax x
»jI
xG(
`xc(
ax x
Lax x
A !F
ax x
xax
!F8F
pep
"!F8F
"!F8F
%pep
"!F8F
aAa!
Axc)
xm(9
2tI F
«fI F
2M3H,p
(p/H
(p+H
CJ`*M
!(h
C(`(L
! F
&0C ` h
'8C `
h8C ` h0C `
L xG(
`xc(
x (
x}CEC
5F3F
vItOtL
@»eI
%@«YI
4»FPI
«FEI
INJO
»3I(F
#q "
#s "
#9 "
5FsO
HMVO
«5x1F
1F»
}CEC
F F@6
Az 0
)Az&
%FFC
!F"
,php)F
DC,p
~!l
«t!d
»w!d
«p!d
»t!d
2>A7FPP#&),F/PPPPPPPPPPPPDP
4'F$
'F $]
«9F0F
*F!I
{'F&F
*7X_
VM-m
9C1p
WN7x
qx0F
x9Ud
GI0@
4H7I
)»2I
*M.x
@x0Ud
z@z1]
@[x9]
pa
XIWH
`OH-
.H5I
«9F(F
24hw
yU(
9RhF
9ZhF
qhF
xRiF
tiF
!|QH
'MN?
hFKI
-IhF
»O(N
1ThF
1\hF
(-
-IHi
CHa hI
C ` h
C ` h
Ca` h
%(C ` h
C ` h
c hI
H 0
" !(F
CJ`pG
`pG0
$I x
#;;&;
*M*O(`8
C$L8
ax
ax
ax
-0@
r z(M
zhq {
iz*z
Ix"|
x"|
_M(p
RI8F
0"!
«t!d
»w!d
«p!d
»t!d
PTiF
FjFPx
«F+F
iFHpQ!h
hF@x
,pP»A!z
L@<!b!b
b b
«I#J»L
2L1M
%%b%hm
F@67h
HgFG`
`«hR
F@5/h
!Ab h
,L*M
b%H
`%Mi`
`$I»h
Nd6.`
FFbhj
«I#J»L
#I$J#L
"%x!F
!F"
&uC
«0I1H
xG(
`xc(
`y((
YCPC
`!iI
I(`J
hnF3
LiF F
&1CAc
MiF(F
!AspG`
!AspG`
!AspG`
!AspG`
!AspG`
rAspG
!AspG`
!AspG`
rAspG
!AspG`
»HBx
Fc][
pGpG
@ IIhHC IHa
apG0
iF8F
«iF8F
hF.M
hF@x
!hFB\
blb@
2iFE
,M(p
)x*H
*M*N
iFHq
%%b+LC%%b
b)H
`(Mi`
!O#N@7
F>`»J
"«b!J
` Jd2*`»h
F2F>`
FFbhj
nb:` h
LE''b
HA`R
«Bb h
!!»"##$$$%%&&''(())**++,,--..//0112234455677899:;;<=>>?@AABCDEFGHIJKLMNOPQSTUVXYZ
p8#@0 6
NOVASTARM3
NOVA HD CARD

xiZK

Тренажёр для пальца уровень 2.
Это выдала утилита strings при анализе прошивки SX100_STM32F207VET6.bin
======================================================
Самое интересное на мой взгляд:
/page/default/NovaAjax.html
20180528 SX100_STM32_MCU_V1.0.3.0_Release support revise mac addr by lct
/page/default/NovaAjax.html
Update failed…

MSC Config
MSC Interface
STMicroelectronics
Nova3D HD
Mass Storage in HS Mode
***UNKNOWN TAG
***

Can not bind pcb
Can not create new pcb
Nova ProHD 1.00
rpProMI:App,0161
!--#
/index.ssi
.ssi
/index.html
/index.shtml
.shtml
.xml
/index.htm
/index.shtm
.shtm
sand
/leds.cgi
FIN_WAIT_1
FIN_WAIT_2
ESTABLISHED
CLOSED
SYN_RCVD
CLOSING
LAST_ACK
LISTEN
TIME_WAIT
CLOSE_WAIT
SYN_SENT
<-V1.0
q8-@X,E$
LG FULL HD
======================================================
"! F
"@! F
"! F
«1F F
»1F F
"!F(F
«1F(F
»1F(F
"!F(F
"! F
"@! F
"@! F
"! F
9F0F
«9F0F
»@!0F
" !0F
9F0F
«9F0F
%ONO
»AF0F
«AF0F
»9F0F
«9F0F
%&N
» !0F
" !0F
"@!0F
"@!0F
«9F0F
»9F0F
!F8F
1F8F
)F8F
CF`Eh
5CE`
pGA
*F3F
:FCF
:FCF
*F3F
FYF(F
0F9F
0F9F
(J)K
!F8F
)x8F
AFHF
:FiF0F
iFHF
(D D@
IFPF
D0D@
d @
)F0F
)F0F
")F0F
")F0F
)F0F
")F0F
«1F8F
»1F8F
1F8F
x+MA
qAxiq
x(q|
xBx
}hq ~(q|
qAxiq
x(q|
FIFcH
+J+K
*F3F
+F2F
+FRF
+FZF
$@lxz?
OH78h
xh:F
sVH88
xTHH0
pAh x
(JRj
##K*
«oI
jJPl
J :9
$*07@GNW^ckqx
F L
I xI
p@»!
L! F
! F
! F
IH`pG
/page/default/NovaAjax.html
ReadWrite
SORT
NAME
aaac
aaad
aaas
abaa
acaa
acab
acac
acad
acae
acaf
acag
adaa
adab
aeaa
aeab
aeac
adad
afal
afam
LANG
ajad
ajae
ajaf
ajag
ajah
ajai
ajaj
ajak
akaa
akab
akac
akad
akae
akaf
alaa
alab
alac
alad
alae
alaf
alag
alah
alai
alaj
alak
alal
d BC
alat
alam
alan
alao
alap
alau
amab
amac
amad
amae
asaa
d BC
DevidIndex
afaa
afab
afad
afae
afaf
afag
afah
afai
afaj
afak
ahaa
ahab
ahac
ahad
ahae
ahaf
ahag
agad
agae
agaf
agag
agah
PI h
KI h
FI h
@I h
:I h
5I h
0I h
+I h
anaa
anab
anac
aoaa
araa
C h@
C h@
KMKN
5I h
4I h
ERRC
OIHh`a
aMNNO
1h }
`a%p
p&H
`p8h
)L`p)H
q&H
`q%H
r`x
`p#H
q H
r`x
XL<#
!n2
jK#;
k##
#Oi;
j(#;
s%ses%qeq
WIUH
##p`p
pHH
xGIEH
.I,H
##p`p
USBS
3F)F F
(qM=
(pnp
eHjF
`HjF
$4`z
&bE9
0xqx
(xix
(yiy
PP8~
)yjy
)zjz
!X#2F
!X#2F
pG@
pG@
`+NH6
$HL0
`#HT0
(`0h@
`(h
(`0h
0`8F
pGpG|
IFXF
IFXF
«IFXF
»IFXF
IFXF
IFXF
«IFXF
»IFXF
#IFXF
#IFXF
FIFXF
FIFXF
#IFXF
#IFXF
FIFXF
FIFXF
!#%'
ht.rnr
Update failed…

x@xA
`p`x
`p`x
`p`x
`p`x
`p`x
`p`x
`p`x
`p`x
p8<t
`p`x
p8<i
`p`x
p:<s
`p`x
p:<h
`p`x
p<<r
`p`x
p<<g
`p`x
p><q
`p`x
p><f
`p`x
p@<r
`p`x
p@<h
`p`x
pB<r
`p`x
pB<i
`p`x
`p`x
IhFA
VIWL"\
!!T@
APax
«1F8F
s |X
»1F8F
e'Hhf
(g(o
e(o@
e(o
`*K+I
`(NH6
«IL1
` IT1
(`0h@
`(h
(`0h
0`8F
$L h
MH5(h
`(h@
` h
`(h
(`0F
.F0x
I2FI
)F0F
!F0F
!9pU!yp
8\ D
D0\ D
8\ D
8\ D
QDHt
8\ D
8\ D
8\ D
@qaN
0\ D
PA(»
PC(!
8\ D
8\ D
8\ D
8\ D
8\ D
8\ D
8\ D
8\ D
8\ D
DP(,
8\ D
8\ D
8\ D
8\ D
D9D
D9D
UP D
!9pU!yp
y\!D
!D:D
L%pep
aq%r
L%pep
eq%r
qfr0
~D(F
pGpG-
!58\r
i`fp
`pU(
pR
`pHE
pD
pA
p>
p;
axU)
n` pl
pi
;M$5
!x F )I
n`#M$5
$8](D
(pU hp8N0x
xhq0y
s/totO
!k\STI
!c`k@
`c xap
IU h
.MiF(
7 +OO
9`x`
9`x`
pG4,
h«CDh,C»C
.u.`n`
.u.`n`
#CsdF
Aui
AaQh
DEiE
$Ei%CEa
HX8
`/a(F
h`@
(` h`
iF(F
!(F
iF(F
!(F
" !0F
@iF0F
iF8F
PiF0F
%YHv!
67`w`
p`O
7`7 p`
7`7 p`
7`7 p`
H(C0`) p`
F.HO
&O=`
x`O
`nCF`
H`@
!A`@!
(` Fp
«B`@»
8L%`
``O
`7 ``
4 `oCg`
`a F
LiFH4 F
iF8F
iF@F
iF8F
iF8F
,C«C
$/Ix
KF:FAF
CK:F!F
AK:FAI
s:FIF
P$!F
@V1F
$,MO
!&K:F
0D!F
!;F2F
K:F!F
!;FO
K:FO
<I9K;
20180528 SX100_STM32_MCU_V1.0.3.0_Release support revise mac addr by lct
20180528 SX100_STM32_MCU_V1.0.3.0_Release support revise mac addr by lct
pGB
pGO
P(D0
PpG-
@F!F
FPFYF
2F+F
@F!F
QA2F+F
pGD
BpG *
@pG *
!pG!
FpG *
FpG-
JF9F F
SFZF
FPFYFBF
F9F
v,C7C
}»v:
0pGp
«9F@F
»9F@F
!F(F
1F(F
"!F(F
1F(F
"!F(F
«1F(F
»1F(F
"!F(F
1F(F
«1F(F
»AF0F
«AF0F
»9F0F
«9F0F
$:F1F(F
:F1F(F
p\ D
2\»D
!;FJF
!#FRF
;FJF
#FRF
!AwY|
/Aq
0Bq
BF!FHF
>N0x
!P&H
!HF
er%r
$M(x
nxjF
C\cE
x(F
!h\xTI
)xhx
#%H
p$81x
x#PC
x#PC
x#PC
x#PC
x#PC
x#PC
x#PC
x#PC
R?Sp
R?Qp
R?Sp
R?Qp
R?Sp
k@F1
)I h x
1F F
iF0F
iF0F
/HMF
#2F&H
NF9F
#RF1F
q@
P!iHa
hiCk
hBh(F
!F(F
F'OG
``iAh!
@!iHa
2F(F
I F h
! iAa
hAi F
«iQa!{
`iAh!
aiHaE
P!iHa
`HaR
^qHp
`HaR
I F h
iAa
I F h j
iAa
@pG-
@xiBk
!8#@
!+FO
`pG-
a!!Aa>I>J
tgH2
-K-J`3
)L+Kx4
I`5
`pG0
E,C»C
j«CLj»C
j«CLk»C
`Bi"
iB`Jh
AcAk
Ox`O
L `O
@+NiF0F
'OiF8F
iF0F
NiF0F
@iF0F
~N0i
{I|J
yIzJ
1hEH
C0`T
Cp` j
CboT
CbhA
yKyB
CBdpG
#(M)h
h(`!
,h'hG
W'`N`T
HAiI
##CO
d «Bd
$,CO
@iF H
C!`#
pfp0<
ppG`
»xfx
"«T!
pA `p
q!sas
sCsAu
Pd»F
pGRn
2F;F
«F+F
K»F)F
h`O
(`7 h`
/`3 h`
`0`(F
2F9F
!(#«F
!8#»F
@(OiF8F
PiF8F
OiF8F
PiF8F
@iF8F
PiF8F
@2 @
3FAF8F
3FAF8F
@d @
iF0F
P5MiF(F
"!F0F
*OiF8F
PiF8F
"!F8F
«1F8F
iF0F
PiF0F
LiF F
PiF F
»@! F
"! F
«9F@F
»9F@F
" !0F
"@!0F
"@!0F
«AF8F
»AF8F
!F(F
1F(F
1F F
1F F
«2MT
!F(F
1F(F
»!F(F
1F(F
"! F
"@! F
"! F
«1F F
»1F F
"!F(F
«1F(F
»1F(F
"!F(F
"! F
"@! F
"@! F
"! F
9F0F
«9F0F
»@!0F
" !0F
9F0F
«9F0F
%ONO
»AF0F
«AF0F
»9F0F
«9F0F
%&N
» !0F
" !0F
"@!0F
"@!0F
«9F0F
»9F0F
!F8F
1F8F
)F8F
CF`Eh
5CE`
pGA
*F3F
:FCF
:FCF
*F3F
FYF(F
0F9F
0F9F
(J)K
!F8F
)x8F
AFHF
:FiF0F
iFHF
(D D@
IFPF
D0D@
d @
)F0F
)F0F
")F0F
")F0F
)F0F
")F0F
«1F8F
»1F8F
1F8F
qhx`q
x q&
hx`p
p(y qhy`qp
FIFcH
+J+K
*F3F
+F2F
+FRF
+FZF
$@lxz?
OH78h
xh:F
sWH88
xUHH0
pAh x
K'K*
«nI
iJPl
J :9
$*07@GNW^ckqx
F L
I xI
p@»!
L! F
! F
! F
IH`pG
/page/default/NovaAjax.html
ReadWrite
SORT
NAME
aaac
aaad
aaas
abaa
acaa
acab
acac
acad
acae
acaf
acag
adaa
adab
aeaa
aeab
aeac
adad
afal
afam
LANG
ajad
ajae
ajaf
ajag
ajah
ajai
ajaj
ajak
akaa
akab
akac
akad
akae
akaf
alaa
alab
alac
alad
alae
alaf
alag
alah
alai
alaj
alak
alal
d BC
alat
alam
alan
alao
alap
alau
amab
amac
amad
amae
asaa
d BC
DevidIndex
afaa
afab
afad
afae
afaf
afag
afah
afai
afaj
afak
ahaa
ahab
ahac
ahad
ahae
ahaf
ahag
agad
agae
agaf
agag
agah
PI h
KI h
FI h
@I h
:I h
5I h
0I h
+I h
anaa
anab
anac
aoaa
araa
C h@
C h@
KMKN
5I h
4I h
ERRC
OIHh`a
aMNNO
1h }
`a%p
p&H
`p8h
)L`p)H
q&H
`q%H
r`x
`p#H
q H
r`x
XL<#
!n2
jK#;
k##
#Oi;
j(#;
s%ses%qeq
WIUH
##p`p
pHH
xGIEH
.I,H
##p`p
USBS
IN1j
1j(
1k
3F)F F
0qM>
aHjF
]HjF
$5hz
&bE9
0xqx
(xix
(yiy
QP9}
)yjy
)zjz
!X#2F
!X#2F
!0?N
pG@
pG@
`+NH6
$HL0
`#HT0
(`0h@
`(h
(`0h
0`8F
pGpG|
IFXF
IFXF
«IFXF
»IFXF
IFXF
IFXF
«IFXF
»IFXF
#IFXF
#IFXF
FIFXF
FIFXF
#IFXF
#IFXF
FIFXF
FIFXF
!#%'
ht.rnr
Update failed…

x@xA
`p`x
`p`x
`p`x
`p`x
`p`x
`p`x
`p`x
`p`x
p8<t
`p`x
p8<i
`p`x
p:<s
`p`x
p:<h
`p`x
p<<r
`p`x
p<<g
`p`x
p><q
`p`x
p><f
`p`x
p@<r
`p`x
p@<h
`p`x
pB<r
`p`x
pB<i
`p`x
`p`x
IhFA
VIWL"\
!!T@
APax
«1F8F
s |X
»1F8F
e'Hhf
(g(o
!0F
e(o@
e(o
`*K+I
`(NH6
«IL1
` IT1
!@F
(`0h@
`(h
(`0h
0`8F
$L h
MH5(h
!8F
`(h@
` h
`(h
(`0F
.F0x
I2FI
)F0F
!F0F
!9pU!yp
xyq1y
8\ D
8\ D
8\ D
YDHt
8\ D
8\ D
8\ D
8\ D
q 9(
8\ D
8\ D
8\ D
$ [I
8\ D
8\ D
8\ D
:D
8\ D
8\ D
8\ D
DP(.
8\ D
8\ D
8\ D
8\ D
D9D
D9D
UP D
8pU xp
xxq0y
8\ D
D9D
rPus
L%pep
aq%r
L%pep
eq%r
qfr0
~D(F
pGpG-
!58\r
o`fp
`pU(
pR
`pHE
pD
pA
p>
p;
axU)
t` pl
pi
;M$5
!x F )I
t`»M$5
$8](D
(pU hp8N0x
xhq0y
s/totO
!k\STI
!c`k@
`c xap
IU h
.MiF(
7 +OO
9`x`
9`x`
pG4,
h«CDh,C»C
.u.`n`
.u.`n`
#CsdF
Aui
AaQh
DEiE
$Ei%CEa
HX8
`/a(F
h`@
(` h`
iF(F
!(F
iF(F
!(F
" !0F
@iF0F
iF8F
PiF0F
%YHv!
67`w`
p`O
7`7 p`
7`7 p`
7`7 p`
H(C0`) p`
F.HO
&O=`
x`O
`nCF`
H`@
!A`@!
(` Fp
«B`@»
8L%`
``O
`7 ``
4 `oCg`
`a F
LiFH4 F
iF8F
iF@F
iF8F
iF8F
,C«C
$/Ix
KF:FAF
CK:F!F
AK:FAI
s:FIF
P$!F
@V1F
$,MO
!&K:F
0D!F
!;F2F
K:F!F
!;FO
K:FO
<I9K;
0I-K@; „
-I.K
K@; “
sLsLq
NjFv
#*F1F
pMp*
xrx
1xpx
J)FHF
RxBE
@]@E
WM(x
xjx
(xix
J1FPF
BL%pBH
p%qeq
r!sas
K >6
HIHJ
zRFO
!SF»F
SF«F
GPP»O
!P#RF
P#RF
!SFBF
!SFJF
!SF2F
BFSF
JFSF
2FSF
;FRF
+F:F
)F F
BpG
@iF(F
@iF(F
p r`r
p8
C+C$
C1C%
b«CB
» !(F
iF F
/Q F
iF F
/Q F
iF F
/Q F
iF F
/Q F
pGp
AcpG
pU `p
pU!Ap
" !(F
%T!F(F
"!F(F
ppGf
A'L@
%U)F F
)F F
'w&F9F0F
A\0F
9F0F
A-L@
%U)F F
)F F
$J«K
'w&F9F0F
A\0F
9F0F
A'L@
%U)F F
)F F
'w&F9F0F
A\0F
9F0F
pGp
$ Fp
)F F
yJhiF
yJiiF
)F F
kT»x
F%p F
)F F
HpGJ
F9N!x
!F(F
"(I(F
!F(F
!F(F
!F(F
!y(F
!y(F
#@"(F
#@"(F
!y(F
1iHa
C F|
yIh
I h@iA`
Q)F F
aiIh
FiF F
iF F
iF F
iF F
&)yhx
)F F
)F F
)F F
)F F
)F F
MSC Config
ppG2
ppG2
pGpGpGpG
MSC Interface
STMicroelectronics
Nova3D HD
Mass Storage in HS Mode
00000000001B
00000000001A
4`AH
FIxXF
sxXF
sxXF
hp5
IxXF
«1FXF
8@yhp
pGp
%(Fp
1F F
%` h@
P*LiF F
OiF8F
zqHC
`(F>
``{@&
a`iEaaiO
`@iAhA
qA` F
KxJi
ibaE
`By*
@@iBk
mZaD
`0F~
a(F|
a F<
Kx x
xJiO
h:DR
BzCb
h:DR
BiSkC
a!io
@Ha F
a(F8
FpG8
@pG@i
pG@i
h@i@i
i@ipG
#JCs
!(Fp
!iHa
!F(F
!F(F
!x8@
Aa i
hAh F
hAh F
!iHa
pU»Jp
rPzHr
sP{Hs
tP|Ht
o.H.J
oAHAJ
DCx:L$h#
x9L$h#
\0L$h#
DCx/L$h#
x.L$h#
DBxJp
q@yHq
pG-
!#x*F
#x*F
KFBF
@b#x
#x*F
RFYF
LRF!F
9\Qp@
%F)F
9F0F
9F0F
h`.s
h`.s
h`.s8x
h`.s
h`.s
h`.s
;x«F
h`.s
h`.s
h`.s>J
h`.s
xyx8x
h`.syx8x
h`.s
h`.s:x
h`.s
xzx9x
h`.s
xyx8x
h`.s
h`.s
xzx
h`.s
;x»F
h`.s
h`.s
h`.s
h`.s
8yzy
yHCO
h`.s
xH+Y
h`.s
xzx
$ 1F
$ 1F
h`.s
PB(^
xzx
PD(`
xzx
h`.s
h`.s
xzx
D e9y*H
pyyAp
xzx
D e9y
pyyAp
h`.s
D e9y
pyyAp
h`.s
Q$!F
R&1F
h`.s
kXE,
9xVH
PHO
eYFO
D!m@
5np.p
p.qnr.rnq
r.sns
r.s.rnr
r.s.rnr
D!m@
hwh
h`.sO
T&P«1F
HB\jTI
DP((
KP»1F
h`.s
V%)F
!KF:F
!KFBF
!KF2F
:FKF
BFKF
2FKF
h`.s
h`.s
1F(F
1F(F
h`.s
h`.s
1O1I
*L&p*H
!qfq
\hT
*L&p*H
p'qfq
pGpG
z!{@
!hIz
ajd
fq&`&r!F(F
`r(F
&`f`&
{DzB
`HC%
`HC%
`HC%
iF(F
|7IJ
` h!`@h
«5! F
»2! F
Jai`h
F,j1H
«5! F
»9! F
«7! F
Jai`h
CpGp
h,2@$
b c`c3! F
`d:! F
d;! F
F%j F
F,j6! F
»5! F
«9! F
Jai`h
zqHC
»5! F
«9! F
»2! F
Jai`h
zqHC
F,jshp
1F F
5! F
b`c c
«5! F
ai`h
zqHC
»5! F
«9! F
ai`h
»5! F
«9! F
»2! F
«6! F
»7! F
Jai`h
P!(F
b0Fp
n`(F
!F0F
\+T;\
iAF0F
)F F
1F(F
h!hjh
2F!F(F
9QF F
!FPF
ZF1FPF
1F(F
5F(F
`M`X
i1F8F
](U)
9F0F
!F(F
)F F
*i)F F
F&! F
!HF
$=!HF
%h[h
%hGh
#hEh
!hA`
%F$hhh
vpGI
vpG,
(p-H
ia'`)i
D``hi
u F
F)h«F
` Fp
»9F F
«FAF
***UNKNOWN TAG
***

@O8i
5p8F
)F0F
!FGh
BF!F0F
/404.html
/404.htm
/404.shtml
h`b!`
h``Jhba
a#w }
#`c`
#2F'I
:F(F
GET
!F0F
2F!F
!F0F
!F0F
!F8F
!F8F
!F8F
ah j
#jF8F
#jF8Fah
b j@
j`bah
#jF8F
ah`j
#jF8F
#jF8F
ah j
#jF8F
!F8F
apGh
`Z`pG
@u(F
)F F
CF»F9F(F
P"!F(F
F!F F
Flh
"!(F
9F(F
)F0F
thIF0F
9F(F
plh&p
pGJh
`CH
«Ah(F
SFBF
IF0F
uh(
uh$Lg`
`9F0F
9F0F
9F0F
9F0F
KF2FAF
8h a
:F)F0F
:F1F(Fki
1F(F
'F$h
1F(F
YF F
`hFh5h
nhQF(F
)FHF
9F F
@B
xh@h
)F0F
! F
HAh!`D`
%th`h
`h'F
AF0F
h)hbh
L h
)F0F
F)F0F
FAF(F
BIyDQ
F>I(F
F8F:I
:IyDQ
~Q0F
F)I(F
F%I(F
2>;=
&fgO
q`o@
p`7I
3K4J
» !@F
" !@F
z\aE
p9DR
!0pGDs
b`b
(p'a F
hh `l` F
!F0F
)F0F
Fih h
hh`p
FpG-
`hBF
hh0D
&-h`
'$h<
5F`h*F
{Dh:
`p
QF(F
HxDP
9FPF
9F0F
9FXF
9F(F
QF8F
cIyDQ
aIyDQ
YF8F
|PE
JF!F
*F9F F
QFHF
apGo
d d`c e
< Fp
AapG-
!-9BUUK
t
L h8
!hHh
" I(F
Can not bind pcb
Can not create new pcb
;IXF
p1IXF
Da`b
ah@D
#8Fah
AF8F
`hJF
@hPD
`h@h
`h@h a(
!iH` i
0i@h
8i@h
yhph
8h0`
4F9F
HDi#
#!F`i
AB(F
AB(F
FphA
FphA`
«mO8h
`}`ph8a
#!F`i
G!F:H
!F4H
!F`i
#!F`i
F!F`i
»)F F
!F(F
F7N0x
i!`)
h``qh
«fhi`a
`iha
(t
h(`
`(Fp
DZiX
DH`pGD
i@h
hhg(|
)F F
i@h
i@h
F8i@h
6h0hX
F i@h
0h `4`
<`'F
i@h
i@h
@h `
c(i@h
dih(
ih(iH`(i
!Fhh
FLh(
g`hj
Nth F
5 pG
h cO
t
»!F`i
"!F`i
RP F
(`(h
't0h
ts
tg
(`(h
't0h
`4`:
(`(h
't0h
O.F8x
!f9iaf
anaD
"<44
D9i@
(h`ghh
p<`o
(Deo
D8iA
!l:i
Dab!
$h hP
F0i@h
h0`&`<5
lhPF
``0F
#BF9F(F
F2F)F F
!F(F
pGAtpG
&|iO
«Faj
pax4<
!F`i
L!xJ
I h
»1FCh(F
)F0F
!F F
(h``
I hA`
can not bind pcb
can not create pcb
#iF F
Hp`1F(F
rqProMI:
AB@F
BF!F
! F
;F«F1F(F
!F F
=Fnh`
zRFAF(F
)F F
AF F
3FBFIF(F
Nova ProHD 1.00
rpProMI:App,0161
?
0($»!0
$$?$
"!!"
@@@@@@@
?
?
? #
?
? 0
$$8PO
8 !!"

8&!
$"""?
""""
?
?
?

?!
3$$$$
!0,"!0
0 0
??
@@@@
84210000>
0_
0
!!??!!!
8
0
@@@@
X00``
0
@@@@
8
`@`?
tTTUVTTTt
DDD_
DDD_D
BBBB~
%$$$%
?@@@@@x
' 0.!
(,
BEURJ)$$
BB*.
@D$$
$$D@
IJLH
HLJI
~""""~
DDDDDDD
PLC@@OPP\@
$$@?

@@@
?@@@@@x
?BBC@DGp
?BBBCBBBC@x
'"&:
IIII
s"@DDD
DDD@
d$$?$$
$$$?
t_TT
@@DDDDD
DDDDDD@
BBBBB@@
JLHH
@@?
!!!!!?!!!!!1
T_TT_
DDGDD
DDGDDD
JJJJJJJ
`_I)$
@@_HHHHH_@@
?@@@@x
@@@
`
zJJJJJz
@@OHHOHHO@@
|@@@@
@@@@
|@@@@@
@@@@@
HFAAAA
AAAA@@
AAAAAAA
@@@@@@
@@@@@@
@@@@@@@@
DTTT
TTTD@
,? (
I
#"&*"
$#"&*
i I
}
DDDDDDD
DDDDE
DDDDD
DDDDD@@
$$$t%&$t$$$
zJJJJJz
@@HHHH
HHHHH@@
«r*&
B»?"
@@@
`
R"«R
JJJ~JJJ
@@@@@@
DDDDDD@
8
@@ 0($
$((0 `
'%$$
%&4,$
@@!
XGPHEBEHP@
'$$$'
@DTTT
TTTTTD@
HHHINJHHHx
~»""""""~
""""
""""
~BBB~
IIIIIII
JIHJ
$%&$$$<
@@@@@@@
HHHH
RZVRR
BbRJFBBBRb
@@DDDDD
DDDDD@@
@@BBB~BBB@
",
?
DTTT
IIIH@
IIIIIII
"«BB
DDDEDDD
?I
@PNHH
HHH@
>»*2"
«2*»>
h )
BBBBB
TTTTTTT
IMW%%%UME
BDX@
@PHF@
@@BBBBB
BBBBB@@
>""""">
@III
IIIA
LT$4ODD
@DTe
?@@@x
?@@@@p
?@@@@@@@@@@x
$$$%&$$$$
'DEE_EED
DDDE
DDD@
$$$$$
"""#"
@~BB~B~BB~@
@@@@
@@@@
@@}DD}DED|DE|@@
@@AN@@cPLC@@
IIIII
IIII
IIII
@@
T$_D
?
tAb
9}<89
9+Be9
@@@@@@@@@AAAAA@@@@@@@@@@@@@@@@@@

!--#
/index.ssi
.ssi
/index.html
/index.shtml
.shtml
.xml
/index.htm
/index.shtm
.shtm
sand
/leds.cgi
FIN_WAIT_1
FIN_WAIT_2
ESTABLISHED
CLOSED
SYN_RCVD
CLOSING
LAST_ACK
LISTEN
TIME_WAIT
CLOSE_WAIT
SYN_SENT
<-V1.0
q8-@X,E$
LG FULL HD
#n(3

Если не халтурить, то будет так:



Можно посмотреть и в HEX редакторе (в данном случае смотрим через hex расширение в Notepad++):



Если искать строки в интернете, то попадается что-то любопытное. А может удастся найти, что это за плата и где купить. Сам пока особо не искал, может кому пригодится. Например, запрос «NOVASTARM3» привёл на такую страничку.



Продолжение следует… Если ЭТОТ изволит подвинуться.





Возможно, захочется почитать и это:


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале

Теги:
Хабы:
Всего голосов 29: ↑29 и ↓0+37
Комментарии0

Публикации

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud

Истории