meta-dcm/recipes-bsp/pcm068-tools/files/pcm068-som-test.sh

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