Menggunakan Adaptor Serial USB (UART) Untuk Membantu Debug Raspberry Pi - Kamplongan

Menggunakan Adaptor Serial USB (UART) untuk Membantu Debug Raspberry Pi

Konsol serial memungkinkan Kalian melihat log boot bahkan sebelum kernel linux mulai melakukan booting! Oleh karena itu, konsol serial yang terpasang pada Raspberry Pi Kalian dapat membantu Kalian menemukan penyebab masalah seperti berikut:

  • Distribusi linux baru yang Kalian instal di Raspberry Pi Kalian tidak bisa boot.
  • Raspberry Pi Kalian melakukan booting ke kernel yang lebih lama meskipun Kalian menginstal kernel yang lebih baru yang disediakan oleh pengelola distribusi Kalian melalui apt/pacman/dnf.
  • Kalian menginstal kernel baru menggunakan apt/pacman/dnf tetapi sekarang port Ethernet tidak berfungsi dan Kalian tidak dapat melakukan SSH ke dalamnya untuk menghapus instalan kernel tersebut.
  • Raspberry Pi Kalian tidak bisa boot sama sekali.
  • Kalian sedang mempelajari pengembangan kernel dan mau mengetahui mengapa perubahan yang Kalian buat mencegah kernel melakukan booting.
  • Kalian memiliki begitu banyak Raspberry Pi sehingga Kalian kehabisan tampilan untuk dihubungkan dan hanya mau melihat log boot untuk memeriksa apakah mereka melakukan booting dengan benar atau tidak.
UART yang terhubung ke Raspberry Pi
Raspberry Pi saya terhubung ke MacBook saya melalui UART

💡

Meskipun buletin di atas menyebutkan Raspberry Pi secara khusus, hal ini dapat dilakukan untuk Komputer Papan Tunggal lainnya yang menggunakan antarmuka UART/serial. Kami pribadi telah melakukan ini untuk banyak papan ARM dan bahkan RISC-V;)

Jika salah satu poin yang tercantum di atas menarik bagi Kalian (yang pada dasarnya adalah “Raspberry Pi saya tidak bisa boot dan saya tidak mengerti alasannya.”), ikuti terus!

Apa itu adaptor serial?

Sederhananya, adaptor serial seperti kabel HDMI/DP Kalian. Namun alih-alih membawa data dalam bentuk video, ia membawa data dalam bentuk teks biasa. Ini berarti bahwa driver yang diperlukan untuk inisialisasi antarmuka serial sangat sederhana dan dapat dimuat tanpa ketergantungan apa pun (misalnya, sedini mungkin pada aliran boot).

📋

Artikel tersebut berisi link afiliasi dari Amazon. Silakan baca kebijakan afiliasi kami.

Memilih dan membeli adaptor serial

Sekarang setelah Kalian mengetahui fungsi adaptor serial, Kalian mungkin mengmaukannya. Dan pilihan adaptor serial sama banyaknya dengan jumlah distribusi linux! Dan sama seperti distribusi linux, ada beberapa di antaranya SAYA lebih menyukai.

Mereka adalah adaptor serial dengan chipset berikut:

  • CP2102: Ini adalah chipset andalan saya hampir setiap saat. Kalian bisa mendapatkannya dari Amazon (tautan afiliasi).
  • Seri FT232: Beberapa papan menggunakan baud rate (kita akan membahas “baud rate” nanti di artikel ini) sebesar 1,5 juta. CP2102 mencapai maksimum 921.600 bauds. Dalam hal ini, CP2102 tidak akan berfungsi. Oleh karena itu menggunakan adaptor dengan chipset ini adalah pilihan yang sangat baik. Kalian bisa mendapatkannya dari Amazon (link afiliasi).
  • Adafruit 954: Ini adalah adaptor serial yang harus dibeli jika Kalian dapat mencernanya [comparatively] harga tinggi. Cukup bagus! (954 hanyalah ID produk Adafruit.) Berikut link Amazon (link afiliasi).
  • Probe Debug Raspberry Pi: Aksesori dari yayasan Raspberry Pi ini tidak hanya menyediakan perangkat UART (yang menjadi perhatian kami dalam cakupan artikel ini), tetapi juga berfungsi dengan OpenOCD! Jika Kalian tahu apa artinya nanti, Kalian sudah mengeluarkan air liur!

Adaptor serial yang menggunakan salah satu chipset ini akan berfungsi baik dengan Raspberry Pi. Namun jika Kalian tidak yakin, saya sarankan Kalian menggunakan adaptor yang menggunakan chipset CP2102.

Jika Kalian membeli adaptor serial dengan pin terbuka (cabang logam) di satu sisi (seperti pada gambar di bawah), itu adalah diperlukan yang Kalian beli kabel jumper betina ke betina untuk menghubungkan adaptor serial ke pin GPIO Raspberry Pi! (Kita hanya membutuhkan 3 kabel jumper tersebut.)

Adaptor USB ke serial (dengan chipset CP2102) yang memiliki pin terbuka
Adaptor USB ke serial (dengan chipset CP2102) yang memiliki pin terbuka

Kalian bisa mendapatkannya dengan mudah di toko elektronik atau situs e-commerce mana pun seperti Amazon (tautan afiliasi).

Satu set kabel jumper betina ke betina
Satu set kabel jumper betina ke betina

Pengaturan awal

Sebelum menghubungkan ini ke Raspberry Pi Kalian, Kalian perlu melakukan beberapa pengaturan awal.

Aktifkan UART

🚧

Ikuti langkah khusus ini hanya jika Kalian terhubung ke Raspberry Pi. Jika tidak, silakan lewati langkah ini, karena ini bukan sesuatu yang perlu (atau bahkan harus) Kalian lakukan untuk SBC/komputer lain. 😉

Bootloader Raspberry Pi membaca file bernama config.txt sebelum mem-boot kernel linux. Letaknya di /boot direktori sebagai /boot/config.txt. Jika Kalian menggunakan Bookworm atau versi lebih baru dari OS Raspberry Pi, config.txt file terletak di /boot/firmware/config.txt.

File ini bertanggung jawab untuk mengaktifkan atau menonaktifkan UART. Untuk beberapa alasan, nilai default untuk UART disetel ke nonaktif. Kami tidak tahu mengapa keputusan ini diambil, karena menyalakannya tidak memiliki dampak negatif (yang saya sadari)!

Sekarang saatnya untuk mengaktifkannya. Di dalam kamu /boot/config.txt file, pastikan bahwa enable_uart nilai parameter diatur ke 1 (diaktifkan) dan juga tidak dikomentari.

# before Bookworm release
$ sudo grep '^enable_uart=1' /boot/config.txt
enable_uart=1

# Bookworm and later releases
$ sudo grep '^enable_uart=1' /boot/firmware/config.txt
enable_uart=1

Jika menjalankan salah satu perintah di atas juga tidak menghasilkan output apa pun

  1. Nilai untuk enable_uart parameter disetel ke 0 alih-alih 1.
  2. Garis yang menentukan nilai untuk enable_uart parameter dikomentari.
  3. Nilai untuk enable_uart parameter bahkan tidak ditentukan.

Dalam hal ini, tambahkan baris berikut di akhir dari config.txt mengajukan:

enable_uart=1

Instal program komunikasi serial

Ada banyak pilihan untuk menggunakan program yang memungkinkan komunikasi serial. Dari sekian banyak, beberapa di antaranya adalah:

  • picocom: Ini yang saya sukai.
  • minicom: Kebanyakan panduan menggunakan ini, jadi jika Kalian baru, gunakan minicom mungkin menguntungkan. Meskipun saya akan menggunakan picocom dalam artikel ini karena sangat sederhana.
  • screen: Beberapa panduan juga menyebutkan ini tetapi saya belum pernah mencobanya.

Karena tidak satu pun dari mereka yang “baru”, bahkan distro paling stabil/LTS seperti RHEL 7.x harus memiliki ketiganya tersedia di repo pihak pertama. Cukup gunakan manajer paket Kalian untuk menginstal salah satunya. saya akan menggunakan picocom jadi tolong instal itu.

Memasang adaptor serial

Silakan ikuti langkah-langkah berikut dalam urutan:

💡

Jika Kalian menghadapi kesulitan, ada bagian pemecahan masalah di dekat bagian akhir. Kami sarankan Kalian melakukannya dalam kasus seperti itu.

  1. Colokkan ujung USB adaptor serial ke komputer/laptop Kalian.
  2. Dapatkan perangkat serial dari output sudo dmesg. (Periksa bagian pemecahan masalah untuk mengetahui tampilan entri log bagi Kalian.)
  3. Matikan Raspberry Pi dengan aman.
  4. Dengan menggunakan diagram pinout GPIO di bawah, lampirkan
    1. RX adaptor ke TX Raspberry Pi (pin 8 dalam diagram)
    2. TX adaptor ke RX dari Raspberry Pi (pin 9 dalam diagram)
    3. Dasar adaptor ke setiap pin ground pada Raspberry Pi (pin 14 dalam diagram)
    4. PASTIKAN UNTUK TIDAK MENGHUBUNGKAN PIN 5v ATAU 3.3v!
  5. Hubungkan ke antarmuka serial menggunakan perintah: picocom --quiet --baud 115200 <serial device>
Tata letak pin GPIO 40-pin Raspberry Pi (diambil dari: https://www.raspberrypi.com/documentation/computers/images/GPIO-Pinout-Diagram-2.png)
Tata letak pin GPIO 40-pin Raspberry Pi

picocom sekarang sudah mulai mendengarkan adaptor serial yang Kalian sebutkan, tapi jangan khawatir jika tidak ada output. Raspberry Pi dimatikan dan karenanya tidak berkomunikasi apa pun dengan komputer/laptop Kalian. Sekarang saatnya untuk menyalakannya sehingga kita dapat melihat log boot darinya.

💡

Jika Kalian mau berhenti `picocom`, tekan `Ctrl + a` lalu tekan `Ctrl + x`.

Berikut ini adalah capture booting Raspberry Pi OS di Raspberry Pi 4B saya:

Seperti yang Kalian lihat pada rekaman terminal saya di atas, log boot saat kernel linux melakukan booting terlihat di layar komputer saya. Pesan-pesan ini biasanya adalah apa yang mungkin Kalian lihat di keluaran dmesg memerintah.

Tapi bukan itu saja. Kalian juga dapat berinteraksi dengannya! Pada akhirnya, Kalian mungkin memperhatikan bahwa saya berada di getty (prompt masuk konsol). Kami bisa saja masuk, tetapi tidak melakukannya, agar rekamannya tetap singkat.

Terkadang saat Kalian mengutak-atik kernel linux, kernel mungkin akan panik dan memasukkan Kalian ke dalam shell initramfs sehingga Kalian dapat membatalkan/memperbaiki apa pun yang Kalian anggap berpotensi bermasalah. Kalian juga dapat berinteraksi dengannya menggunakan konsol serial ini!

Anggap saja ini sebagai keyboard Kalian yang terhubung langsung ke Raspberry Pi tetapi hasilnya ditampilkan di layar terminal Kalian 🙂

Penyelesaian masalah

T: Perangkat serial saya tidak muncul.

Ada dua alasan mengapa hal ini mungkin terjadi:

  1. Adaptor serial tidak terpasang dengan benar. Dalam hal ini, pastikan adaptor serial telah terpasang dengan benar. Menghindari tidak bertenaga Kabel ekstensi USB. Omong-omong, hub USB yang ditenagai baik-baik saja. Kalianlkan LED indikator pada adaptor untuk mengetahui apakah sudah terpasang dengan benar atau tidak.
  2. Driver untuk chipset UART tidak ditemukan/dimuat. Dalam hal ini, periksa apakah output dari sudo dmesg perintah menyebutkan chipset adaptor serial yang Kalian beli. Karena saya menggunakan adaptor dengan chipset CP2102, saya memiliki entri log berikut di log kernel saya:
$ sudo dmesg | grep 'cp210x'
[    9.485125] usbcore: registered new interface driver cp210x
[    9.486925] usbserial: USB Serial support registered for cp210x
[    9.488967] cp210x 2-1.1:1.0: cp210x converter detected
[    9.494169] usb 2-1.1: cp210x converter now attached to ttyUSB0

# yes, the chipset driver for the CP2102 chipset is called `cp210x`

T: Kami mendapatkan kesalahan izin dengan picocom memerintah.

Ini adalah masalah yang mudah untuk diselesaikan. Pengguna Kalian harus menjadi bagian dari dialout kelompok. Tambahkan pengguna Kalian ke dialout grup, keluar lalu masuk kembali. Pastikan Kalian melihatnya dialout dalam output setelah menjalankan groups memerintah. Ini seharusnya berhasil sekarang. Solusi ini hanya untuk pengguna linux.

Cara Menambahkan Pengguna ke Grup di Baris Perintah Ubuntu

Inilah cara Kalian dapat menetapkan grup baru ke pengguna yang sudah ada atau mengubah grup pengguna utamanya di Ubuntu. Pelajari juga tentang membuat pengguna baru dengan grup tertentu.

T: Masuk picocom setelah menyalakan papan, saya tidak melihat apa pun.

Ada beberapa alasan mengapa hal ini bisa terjadi:

  1. Mungkin diperlukan waktu hingga 5-10 detik agar Raspberry Pi mulai berkomunikasi melalui antarmuka serial. Harap bersabar.
  2. Kalian menghubungkan RX ke RX dan TX ke TX. Silakan merujuk ke langkah 4. Di sana saya menyebutkan bahwa ini adalah koneksi “silang” di mana RX di satu sisi menuju ke TX di sisi lain dan sebaliknya.
  3. Jika Kalian mengikuti langkah 4 sesuai instruksi saya, pastikan kabel jumper tetap tersambung di kedua ujungnya dan salah satu ujungnya tidak kendor atau terlepas saat Kalian menyambung.
  4. Pastikan bahwa enable_uart=1 ada/tidak dikomentari di /boot/config.txt file di kartu SD Raspberry Pi.
  5. Jika Kalian masih di sini, kartu SD mungkin bermasalah. Coba gambar ulang dan/atau gunakan kartu SD lain jika memungkinkan.
  6. Kalian mencoba mem-boot image yang ditujukan untuk ISA CPU yang berbeda dari yang dimiliki board Kalian. Misalnya, Kalian mencoba mem-boot ISO x86 Fedora di ARM Raspberry Pi atau di komputer RISC-V. Ini tidak akan pernah berhasil.

arm vs aarch64 vs amd64 vs x86_64: Apa Bedanya

Ada banyak istilah terkait CPU: aarch64, x86_64, amd64, arm, dan banyak lagi. Pelajari apa itu dan apa perbedaannya satu sama lain.

T: Kami melihat beberapa karakter sampah acak di dalamnya picocom.

Ada dua alasan mengapa hal ini mungkin terjadi:

  1. Baud rate tidak diatur dengan benar. Padahal baud rate banyak digunakan untuk a banyak papan ARM dan RISC-V adalah 115200 bauds, beberapa papan menggunakan baud rate 1500000 bauds. Silakan lihat dokumentasi dewan untuk baud rate yang harus Kalian gunakan.
  2. Kalian tidak mengikuti langkah 4 dengan benar.

Kesimpulan

Jadi di sini, saya membahas apa arti konsol serial, mengapa digunakan dan berguna. Kami juga menjelaskan cara mendapatkan adaptor serial dan cara menghubungkannya ke Raspberry Pi Kalian (atau Komputer Papan Tunggal lainnya!).

Kami juga menyebutkan beberapa tip pemecahan masalah tentang masalah yang saya alami sendiri. Oleh karena itu, jika Kalian masih kesulitan memahami sesuatu, jangan ragu untuk meninggalkan komentar dan saya akan menghubungi Kalian kembali!

Beri tahu saya jika Kalian mau cara serupa dengan meninggalkan komentar;)

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: