182 lines
5.6 KiB
Bash
Executable File
182 lines
5.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# PCM-068-024113I Komplett-Test für DCM-Board
|
|
|
|
echo "======================================================="
|
|
echo " PCM-068-024113I SOM Hardware-Test für DCM-Board"
|
|
echo "======================================================="
|
|
|
|
TEST_PASSED=0
|
|
TEST_FAILED=0
|
|
|
|
test_result() {
|
|
if [ $1 -eq 0 ]; then
|
|
echo "✅ PASS: $2"
|
|
TEST_PASSED=$((TEST_PASSED + 1))
|
|
else
|
|
echo "❌ FAIL: $2"
|
|
TEST_FAILED=$((TEST_FAILED + 1))
|
|
fi
|
|
}
|
|
|
|
# 1. RAM-Test (1GB)
|
|
echo ""
|
|
echo "1. === RAM-Test (1GB) ==="
|
|
RAM_TOTAL=$(cat /proc/meminfo | grep MemTotal | awk '{print $2}')
|
|
RAM_GB=$((RAM_TOTAL / 1024 / 1024))
|
|
echo "Verfügbarer RAM: ${RAM_GB}GB (${RAM_TOTAL}kB)"
|
|
if [ $RAM_TOTAL -gt 900000 ]; then
|
|
test_result 0 "RAM-Größe (≥1GB)"
|
|
else
|
|
test_result 1 "RAM-Größe (zu wenig: ${RAM_GB}GB)"
|
|
fi
|
|
free -h
|
|
|
|
# 2. eMMC-Test (4GB auf SDMMC2)
|
|
echo ""
|
|
echo "2. === eMMC-Test (4GB auf SDMMC2) ==="
|
|
if [ -b /dev/mmcblk1 ]; then
|
|
EMMC_SIZE=$(cat /sys/block/mmcblk1/size)
|
|
EMMC_GB=$((EMMC_SIZE * 512 / 1024 / 1024 / 1024))
|
|
echo "eMMC gefunden: ${EMMC_GB}GB (${EMMC_SIZE} Sektoren)"
|
|
if [ $EMMC_GB -ge 3 ]; then
|
|
test_result 0 "eMMC-Größe (≥4GB)"
|
|
else
|
|
test_result 1 "eMMC-Größe (zu klein: ${EMMC_GB}GB)"
|
|
fi
|
|
echo "eMMC-Partitionen:"
|
|
fdisk -l /dev/mmcblk1 2>/dev/null | grep "mmcblk1" || echo "Keine Partitionen"
|
|
else
|
|
test_result 1 "eMMC nicht gefunden auf /dev/mmcblk1"
|
|
fi
|
|
|
|
# 3. NOR Flash-Test (16MB auf QSPI)
|
|
echo ""
|
|
echo "3. === NOR Flash-Test (16MB auf QSPI) ==="
|
|
if [ -e /dev/mtd0 ]; then
|
|
echo "MTD-Geräte:"
|
|
cat /proc/mtd
|
|
MTD_SIZE=$(cat /proc/mtd | grep "mtd0" | awk '{print $2}' | sed 's/0x//' | sed 's/[^0-9a-f]//g')
|
|
if [ -n "$MTD_SIZE" ]; then
|
|
MTD_MB=$((0x$MTD_SIZE / 1024 / 1024))
|
|
echo "NOR Flash-Größe: ${MTD_MB}MB"
|
|
if [ $MTD_MB -ge 15 ]; then
|
|
test_result 0 "NOR Flash-Größe (≥16MB)"
|
|
else
|
|
test_result 1 "NOR Flash-Größe (zu klein: ${MTD_MB}MB)"
|
|
fi
|
|
else
|
|
test_result 1 "NOR Flash-Größe konnte nicht ermittelt werden"
|
|
fi
|
|
else
|
|
test_result 1 "NOR Flash nicht gefunden auf /dev/mtd0"
|
|
fi
|
|
|
|
# 4. EEPROM-Test (4KB auf I2C4)
|
|
echo ""
|
|
echo "4. === EEPROM-Test (4KB auf I2C4) ==="
|
|
if command -v i2cdetect >/dev/null 2>&1; then
|
|
if i2cdetect -y 4 2>/dev/null | grep -q "50"; then
|
|
test_result 0 "EEPROM auf I2C4 Adresse 0x50 erkannt"
|
|
echo "EEPROM-Inhalt (erste 64 Bytes):"
|
|
if [ -e /sys/bus/i2c/devices/4-0050/eeprom ]; then
|
|
hexdump -C /sys/bus/i2c/devices/4-0050/eeprom | head -5 2>/dev/null || echo "EEPROM-Lesefehler"
|
|
else
|
|
echo "EEPROM-Device nicht verfügbar"
|
|
fi
|
|
else
|
|
test_result 1 "EEPROM nicht auf I2C4 Adresse 0x50 erkannt"
|
|
fi
|
|
else
|
|
test_result 1 "i2c-tools nicht verfügbar"
|
|
fi
|
|
|
|
# 5. Ethernet PHY-Test (DP83867)
|
|
echo ""
|
|
echo "5. === Ethernet PHY-Test (DP83867) ==="
|
|
if [ -e /sys/class/net/eth0 ]; then
|
|
echo "Ethernet-Interface eth0 gefunden"
|
|
if command -v ethtool >/dev/null 2>&1; then
|
|
LINK_STATUS=$(ethtool eth0 2>/dev/null | grep "Link detected" | awk '{print $3}')
|
|
SPEED=$(ethtool eth0 2>/dev/null | grep "Speed" | awk '{print $2}')
|
|
echo "Link-Status: ${LINK_STATUS}"
|
|
echo "Geschwindigkeit: ${SPEED}"
|
|
if [ "$LINK_STATUS" = "yes" ]; then
|
|
test_result 0 "Ethernet-Link aktiv"
|
|
else
|
|
test_result 0 "Ethernet-Interface verfügbar (Link inaktiv)"
|
|
fi
|
|
else
|
|
test_result 0 "Ethernet-Interface verfügbar (ethtool nicht verfügbar)"
|
|
fi
|
|
ip addr show eth0 | grep -E "(inet|ether)"
|
|
else
|
|
test_result 1 "Ethernet-Interface eth0 nicht gefunden"
|
|
fi
|
|
|
|
# 6. TFP410 Display-Test
|
|
echo ""
|
|
echo "6. === TFP410 Display-Test ==="
|
|
if ls /dev/dri/card* >/dev/null 2>&1; then
|
|
test_result 0 "DRM-Geräte verfügbar"
|
|
echo "DRM-Geräte:"
|
|
ls -la /dev/dri/
|
|
else
|
|
test_result 1 "Keine DRM-Geräte gefunden"
|
|
fi
|
|
|
|
# 7. Audio-Test (TLV320 auf I2C1)
|
|
echo ""
|
|
echo "7. === Audio-Test (TLV320 auf I2C1) ==="
|
|
if [ -e /dev/i2c-1 ] && command -v i2cdetect >/dev/null 2>&1; then
|
|
if i2cdetect -y 1 2>/dev/null | grep -q "18"; then
|
|
test_result 0 "TLV320 Audio-Codec auf I2C1 erkannt"
|
|
else
|
|
test_result 1 "TLV320 Audio-Codec nicht auf I2C1 erkannt"
|
|
fi
|
|
else
|
|
test_result 1 "I2C1-Bus nicht verfügbar"
|
|
fi
|
|
|
|
# 8. WLAN-Test (Maya-W2 auf SDMMC3)
|
|
echo ""
|
|
echo "8. === WLAN-Test (Maya-W2 auf SDMMC3) ==="
|
|
if ip link show wlan0 >/dev/null 2>&1; then
|
|
test_result 0 "WLAN-Interface wlan0 verfügbar"
|
|
echo "WLAN-Interface-Info:"
|
|
ip link show wlan0
|
|
else
|
|
test_result 1 "WLAN-Interface wlan0 nicht gefunden"
|
|
fi
|
|
|
|
# 9. Bluetooth-Test (Maya-W2 auf USART3)
|
|
echo ""
|
|
echo "9. === Bluetooth-Test (Maya-W2 auf USART3) ==="
|
|
if command -v hciconfig >/dev/null 2>&1; then
|
|
if hciconfig hci0 >/dev/null 2>&1; then
|
|
test_result 0 "Bluetooth-Interface hci0 verfügbar"
|
|
echo "Bluetooth-Interface-Info:"
|
|
hciconfig hci0
|
|
else
|
|
test_result 1 "Bluetooth-Interface hci0 nicht gefunden"
|
|
fi
|
|
else
|
|
test_result 1 "Bluetooth-Tools nicht verfügbar"
|
|
fi
|
|
|
|
# Zusammenfassung
|
|
echo ""
|
|
echo "======================================================="
|
|
echo " Test-Zusammenfassung für PCM-068-024113I"
|
|
echo "======================================================="
|
|
echo "✅ Tests bestanden: $TEST_PASSED"
|
|
echo "❌ Tests fehlgeschlagen: $TEST_FAILED"
|
|
echo "📊 Gesamt-Tests: $((TEST_PASSED + TEST_FAILED))"
|
|
|
|
if [ $TEST_FAILED -eq 0 ]; then
|
|
echo "🎉 Alle Tests erfolgreich! PCM-068 SOM funktioniert korrekt."
|
|
exit 0
|
|
else
|
|
echo "⚠️ Einige Tests fehlgeschlagen. Überprüfe die Hardware."
|
|
exit 1
|
|
fi
|