Tổng hợp một số Tập Lệnh cơ bản BeagleBone Black

Tài liệu tham khảo chi tiết cho người dùng từ cơ bản đến nâng cao.

1. Hệ Thống Cơ Bản & Kết Nối

Tác vụ Lệnh Mô tả
Kết nối SSH (qua USB) ssh debian@192.168.7.2 Kết nối mặc định khi cắm BBB vào máy tính qua USB. Mật khẩu: temppwd
Kết nối SSH (qua Mạng) ssh debian@<ip_address> Kết nối qua mạng LAN/WiFi.
Cập nhật hệ thống sudo apt update && sudo apt full-upgrade Đồng bộ danh sách gói và nâng cấp toàn bộ hệ thống.
Tắt máy an toàn sudo shutdown -h now Tắt hệ thống ngay lập tức.
Khởi động lại sudo reboot Khởi động lại hệ thống.
Xem thông tin Kernel uname -a Hiển thị tất cả thông tin về phiên bản Linux kernel đang chạy.
Kiểm tra phiên bản HĐH cat /etc/os-release Hiển thị thông tin chi tiết về bản phân phối Debian.

2. Quản Lý Phần Cứng

Cấu hình Chân (Pin Muxing)

Tác vụLệnhVí dụ & Ghi chú
Cấu hình chế độ chân config-pin <pin> <mode> config-pin P9_14 pwm. Các chế độ: gpio, pwm, spi, i2c, uart, v.v.
Kiểm tra cấu hình chân config-pin -q <pin> config-pin -q P9_12

GPIO (General Purpose Input/Output)

Lưu ý quan trọng: Giao diện /sys/class/gpio (sysfs) đã cũ và không được khuyến khích cho các dự án mới. Nên sử dụng bộ công cụ libgpiod mạnh mẽ và hiện đại hơn. Cài đặt: sudo apt install gpiod libgpiod-dev.
Tác vụLệnh (libgpiod)Mô tả
Liệt kê các chip GPIO gpiodetect Hiển thị các bộ điều khiển GPIO có sẵn trên hệ thống.
Xem thông tin chi tiết các chân gpioinfo <chip> gpioinfo gpiochip0. Hiển thị tất cả các chân, tên, trạng thái (input/output, active-low, etc.).
Đọc giá trị một chân gpioget <chip> <line> gpioget gpiochip1 28 (Đọc chân GPIO 60 - P9_12).
Ghi giá trị một chân gpioset <chip> <line>=<val> gpioset gpiochip1 28=1 (Đặt chân GPIO 60 lên mức HIGH).

I2C (Inter-Integrated Circuit)

Cài đặt công cụ: sudo apt install i2c-tools

Tác vụLệnhMô tả
Quét các thiết bị I2C i2cdetect -y -r <bus> Ví dụ: i2cdetect -y -r 2 để quét bus I2C-2 (thường ở P9).
Đọc từ thanh ghi i2cget -y <bus> <addr> <reg> Đọc một byte từ thanh ghi của thiết bị.
Ghi vào thanh ghi i2cset -y <bus> <addr> <reg> <val> Ghi một byte vào thanh ghi của thiết bị.
Xem toàn bộ thanh ghi i2cdump -y <bus> <addr> Hiển thị nội dung của tất cả các thanh ghi từ một thiết bị.

SPI (Serial Peripheral Interface)

Cài đặt công cụ: sudo apt install spidev-test. Cần kích hoạt overlay SPI trước.

Tác vụLệnhMô tả
Kiểm tra giao tiếp SPI spidev_test -D /dev/spidev<bus>.<cs> Gửi dữ liệu mặc định và kiểm tra loopback trên bus SPI được chỉ định.

3. Gỡ lỗi và Giám sát Hệ thống

Tác vụLệnhMô tả
Xem log của Kernel dmesg -Hw Hiển thị thông báo từ kernel theo thời gian thực, hữu ích để gỡ lỗi driver/phần cứng.
Xem log hệ thống (systemd) journalctl -fu <service> Theo dõi log của một dịch vụ cụ thể. Ví dụ: journalctl -f để xem tất cả log.
Giám sát tiến trình htop Giao diện giám sát tiến trình, CPU, RAM thân thiện và mạnh mẽ hơn top.
Giám sát hiệu năng I/O iostat -d -x 2 Hiển thị thống kê I/O của các thiết bị đĩa mỗi 2 giây.
Giám sát bộ nhớ ảo vmstat 2 Báo cáo về tiến trình, bộ nhớ, paging, block IO, traps, và hoạt động CPU mỗi 2 giây.
Liệt kê các module kernel lsmod Hiển thị các module (trình điều khiển) đang được tải vào kernel.
Liệt kê thiết bị USB lsusb Hiển thị các thiết bị đang kết nối qua bus USB.

4. Lệnh Mạng Nâng Cao

Tác vụLệnhMô tả
Xem cấu hình IP ip a Cách hiện đại để xem địa chỉ IP và thông tin các giao diện mạng.
Kiểm tra các cổng đang mở ss -tuln Hiệu quả hơn netstat. Hiển thị các cổng TCP/UDP đang lắng nghe.
Kiểm tra bảng định tuyến ip route Hiển thị bảng định tuyến của kernel.
Gỡ lỗi DNS dig <domain> Truy vấn thông tin DNS. Cần cài đặt dnsutils.

5. Quản lý Đĩa và eMMC

Tác vụLệnhMô tả
Liệt kê thiết bị khối lsblk Hiển thị các thiết bị đĩa (eMMC, SD card) và các phân vùng của chúng.
Kiểm tra dung lượng df -h Hiển thị dung lượng đã sử dụng và còn trống của các hệ thống tệp.
Sao chép dữ liệu cấp thấp sudo dd if=<nguồn> of=<đích> bs=4M status=progress CỰC KỲ CẨN THẬN! Dùng để flash image vào thẻ nhớ hoặc eMMC. Sai sót có thể xóa toàn bộ dữ liệu.
Quản lý phân vùng sudo fdisk /dev/<device> Công cụ mạnh mẽ để tạo, xóa, sửa đổi bảng phân vùng.

6. Công cụ Lập trình & Quản lý Gói

Tác vụLệnhMô tả
Tìm kiếm gói apt-cache search <keyword> Tìm kiếm các gói có sẵn để cài đặt.
Gỡ bỏ gói & dọn dẹp sudo apt autoremove --purge <package> Gỡ bỏ gói, các gói phụ thuộc không cần thiết và các tệp cấu hình.
Biên dịch code C/C++ gcc / g++ gcc my_program.c -o my_program.
Tự động hóa build make Thực thi các quy tắc trong một Makefile để biên dịch dự án.
Quản lý phiên bản git Hệ thống quản lý phiên bản phân tán. git clone, git pull, etc.

7. Đơn vị Thời gian thực (PRU)

PRU là các vi điều khiển phụ cho các tác vụ thời gian thực. Giao tiếp qua giao diện remoteproc.

Tác vụLệnhMô tả
Kiểm tra trạng thái PRU cat /sys/class/remoteproc/remoteproc<1-2>/state Kiểm tra PRU0 (remoteproc1) hoặc PRU1 (remoteproc2). Trạng thái: running, offline.
Tải và chạy firmware echo 'start' > /sys/class/remoteproc/remoteproc<X>/state Firmware phải nằm trong /lib/firmware/.
Dừng PRU echo 'stop' > /sys/class/remoteproc/remoteproc<X>/state Dừng thực thi firmware trên PRU.
Xem log của PRU cat /sys/kernel/debug/remoteproc/remoteproc<X>/trace0 Đọc bộ đệm trace mà firmware PRU đã ghi.

8. Ghi chú Lập trình Python & C/C++

Python

Thư viện được đề xuất là Adafruit-BBIO.

import Adafruit_BBIO.GPIO as GPIO
import Adafruit_BBIO.PWM as PWM
import Adafruit_BBIO.ADC as ADC

# GPIO
GPIO.setup("P9_12", GPIO.OUT)
GPIO.output("P9_12", GPIO.HIGH)

# PWM
PWM.start("P9_14", 50, 1000) # (pin, duty_cycle, freq)

# ADC
ADC.setup()
value = ADC.read("P9_39") # Đọc giá trị 0.0-1.0

C/C++

Để có hiệu năng cao và cách làm hiện đại, hãy sử dụng thư viện libgpiod.

// Cần link với thư viện: g++ my_app.cpp -o my_app -lgpiod
#include <gpiod.h>
#include <stdio.h>
#include <unistd.h>

const char *chipname = "gpiochip1";
unsigned int line_offset = 28; // GPIO 60 (P9_12)

struct gpiod_chip *chip;
struct gpiod_line *line;

chip = gpiod_chip_open_by_name(chipname);
line = gpiod_chip_get_line(chip, line_offset);

gpiod_line_request_output(line, "example", 0);

while (1) {
    gpiod_line_set_value(line, 1);
    sleep(1);
    gpiod_line_set_value(line, 0);
    sleep(1);
}

Nhận xét

Mới hơn Cũ hơn