20
Mục lục
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 [email protected] | 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);
}


