#!/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