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ệnh | Ví 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ệnh | Mô 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ệnh | Mô 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ệnh | Mô 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ệnh | Mô 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ệnh | Mô 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ệnh | Mô 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ệnh | Mô 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