Skip to main content

4 posts tagged with "linux"

View All Tags

Настройка параметров последовательного порта в Linux

· One min read
dmn
maintainer

Настройка последовательного порта

Установка параметров последовательного порта в Linux на примере ttyS1

Просмотр текущих параметров

stty -F /dev/ttyS1 -a

Пример вывода:

speed 115200 baud; line = 0;
-brkint -icrnl -imaxbel
opost -onlcr
cs8 -parenb -cstopb

Расшифровка параметров

  • speed 115200 baud — текущая скорость
  • cs8 — 8 бит данных
  • -parenb — без бита четности (N)
  • -cstopb — 1 стоп-бит (если было cstopb → 2 стоп-бита)

Установка параметров порта

stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb -ixon -ixoff -crtscts

Тестирование порта

Дальше можно прямо из командной строки:

echo "test" > /dev/ttyS1

Просмотр опций компиляции ядра Linux

· One min read
dmn
maintainer

Как посмотреть с какими опциями скомпилировано ядро Linux ?

zcat /proc/config.gz

Так же можно поставить фильтр - например, посмотрим все что касается последовательных портов

zcat /proc/config.gz | grep -E 'CONFIG_SERIAL_8250_NR_UARTS|CONFIG_SERIAL_8250|CONFIG_SERIAL_'

#linuxkernel #kernel #napikernel #uart

Диагностика SD-NAND карт в Linux - получение регистров

· 2 min read
dmn
maintainer

Пришлось глубоко копнуть в часть SD-NAND, так как некоторые карты Zetta не инициализировались в ядрах 6.х Linux.

Полезные факты и приемы

Получаем данные регистров SD (SD-NAND) карт

Карта 1.

root@napi-rk3308b-s:~# cat /sys/bus/mmc/devices/mmc0\:1388/cid
ba2345534134474206071c06fe016945
root@napi-rk3308b-s:~# cat /sys/bus/mmc/devices/mmc0\:1388/csd
400e00325b5900001cdf7f800a4000d7
root@napi-rk3308b-s:~# cat /sys/bus/mmc/devices/mmc0\:1388/ocr
0x00300000
root@napi-rk3308b-s:~# cat /sys/bus/mmc/devices/mmc0\:1388/rca
0x1388
root@napi-rk3308b-s:~# cat /sys/bus/mmc/devices/mmc0\:1388/scr
0235000e00000000
root@napi-rk3308b-s:~#

Карта 2

root@napi-nightstarfish:~# cat /sys/bus/mmc/devices/mmc0\:1388/cid
e700115a6574746101b135ee4a719523
root@napi-nightstarfish:~# cat /sys/bus/mmc/devices/mmc0\:1388/csd
400e00325b5900001d177f800a40008d
root@napi-nightstarfish:~# cat /sys/bus/mmc/devices/mmc0\:1388/ocr
0x00300000
root@napi-nightstarfish:~# cat /sys/bus/mmc/devices/mmc0\:1388/rca
0x1388
root@napi-nightstarfish:~# cat /sys/bus/mmc/devices/mmc0\:1388/scr
0205848f33333039
root@napi-nightstarfish:~#

В uboot

=> mmc info
Device: mmc@ff500000
Manufacturer ID: 3
OEM: 5344
Name: SA04G
Bus Speed: 50000000
Mode : SD High Speed (50MHz)

Расшифровка SCR (чатгпт)

1) SCR contents (from Linux):

SCR = 02 05 84 8F 33 33 30 39

Decoded:

SCR Structure = 0 (v1.0)

SD Spec = 2.0 + Spec3 → SD 3.0 (UHS-I)

Bus widths = 1-bit and 4-bit supported

Security = CPRM supported

Byte 3 = 0x8F → according to the SD spec, bits indicate:

bit0 = CMD20 supported

bit1 = CMD23 supported

bit2 = CMD48 supported

bit3 = CMD49 supported

Расшифровка CID (чатгпт)

CID #1

ba2345534134474206071c06fe016945

MID: 0xBA

OID: 0x23 0x45 → «#E» (непечатный/нестандартный OID, трактую как hex)

PNM: SA4GB

PRV: 0.6

PSN: 119277310 (0x071C06FE)

MDT: 2022-09 (разбор по формуле: ((cid[13]&0x0F)<<8)|cid[14]) → год=2000+((mdt>>4)&0xFF), месяц=mdt&0xF)
CID #2

e700115a6574746101b135ee4a719523

MID: 0xE7 (похоже на Zetta)

OID: 0x00 0x11 → непечатный (оставляем в hex)

PNM: Zetta

PRV: 0.1

PSN: 2973101642 (0xB135EE4A)

MDT: 2025-05

Что по факту отличается

Производитель/бренд:

— #1: MID=0xBA, имя продукта SA4GB (выглядит как «4GB» линейка). — #2: MID=0xE7, имя продукта Zetta (бренд Zetta виден прямо в PNM).

Версия продукта (PRV):

— #1: 0.6 (более поздняя ревизия конкретной линейки), — #2: 0.1 (самая ранняя ревизия).

Серийный номер (PSN): разные (ожидаемо), у #2 — существенно большее значение.

Дата производства (MDT): — #1: 2022-09, — #2: 2025-05 (свежее).

OID: у обеих — непечатные/нестандартные коды (это нормально: поле OEM/Application ID не обязано быть ASCII).

Место в ядре где идёт чтение регистров карты

https://github.com/torvalds/linux/blob/07d9df80082b8d1f37e05658371b087cb6738770/drivers/mmc/core/sd.c#L1279

#sdnand #kernel #linuxkernel #sys #uboot

Чтение и программирование EEPROM преобразователя FT232

· 2 min read
dmn
maintainer

Читаем внутреннюю прошивку преобразователя rtu-usb ft232 под Linux (armbian na Napi-C)

Ставим софт

sudo apt install libftdi1-2 libftdi1-dev ftdi-eeprom

Читаем

touch c.txt #создаем пустой файл

#vendor/product смотрим в lsusb
echo 'vendor_id=0x0403
product_id=0x6001' > c.txt
ftdi_eeprom --read-eeprom c.txt  --verbose

Получаем результат

FTDI eeprom generator v0.17
(c) Intra2net AG and the libftdi developers <opensource@intra2net.com>
Unable to find FTDI device with description: i:0403:6001
Error code: -3 (device not found)
root@rockpi-s:~# ftdi_eeprom --read-eeprom c.txt --verbose

FTDI eeprom generator v0.17
(c) Intra2net AG and the libftdi developers <opensource@intra2net.com>
Unable to find FTDI devices under given vendor/product id: 0x0/0x0
Error code: -3 (device not found)
Retrying with default FTDI pid=0x6001.
FTDI read eeprom: 0
EEPROM size: 128
VID: 0x0403
PID: 0x6001
Release: 0x0000
Bus Powered: 90 mA USB Remote Wake Up
Manufacturer: FTDI
Product: FT232R USB UART
Serial: A10M5ZU3
Checksum : 17cb
Internal EEPROM
Oscillator: Internal
Enable Remote Wake Up
PNP: 1
Channel A has Mode UART VCP
C0 Function: TXLED
C1 Function: RXLED
C2 Function: TXDEN
C3 Function: PWREN
C4 Function: SLEEP
Warning: Not writing eeprom, you must supply a valid filename
FTDI close: 0

Этой же программой можно писать параметры в еепром ft232, создав конфигурационный файлик.

🙋‍♀️Зачем это надо ?

  • Проверить жив ли ft232
  • Проверить назначение линий CBUS (C0-C4), которые могут быть переопределены.

👍 Полезные факты

  • lsusb -v — должно быть состояние bConfigurationValue = 1

  • PWREN # после того как модуль инициализирован драйвером должен быть в НУЛЕ (0)

  • SLEEP #у FTDI — это сигнал, который показывает, что чип перешёл в режим сна (USB suspend).

Когда USB-шина в нормальном рабочем состоянии → SLEEP# = 1 (логическая единица).

Когда хост перевёл устройство в режим suspend (спящий режим по USB, обычно при бездействии или энергосбережении) → SLEEP# = 0.

😂 Несколько подсказок от чатГПТ (я не проверял)

  1. Сохранить сырой еепром
sudo ftdi_eeprom --read-eeprom текущий.conf --device ft232 --small-eeprom --eeprom-filename дамп.bin
  1. Файл, если нужно прошить свои кастом параметры (ftdi.conf)
vendor_id=0x0403
product_id=0x6001
manufacturer="MyCompany"
product="My FT232R"
serial="FT123456"

# CBUS configuration:
cbus0=1 # Можно оставить как есть или назначить PWREN
cbus1=1 # PWREN, к примеру
cbus2=0 # TXDEN
cbus3=2 # RXLED (имитация RXDEN через LED#)
cbus4=4 # TXRXLED

Как писать

sudo ftdi_eeprom --flash-eeprom ftdi.conf

#sys #ft232 #linux