MỞ ĐẦU
Bài viết này giới thiệu tổng quát cấu trúc 1 thiết bị router wifi cơ bản nhất dạng bo mạch nhúng thường thấy trên thị trường (embedded system). Gồm 2 phần : phần cứng (hardware) và phần sụn (firmware).
A. PHẦN CỨNG:
- Cấu trúc phần cứng của router wifi thực chất là 1 máy tính tích hợp sẵn các giao diện mạng có dây (ethernet) và mạng không dây (wireless).
- Để 1 router wifi có thể hoạt động nó cần các thành phần bao gồm khối nguồn, cpu, ram, khối bộ nhớ lưu trữ, khối giao tiếp nối tiếp, khối gpio, khối mạng không dây và mạng có dây.
Sơ đồ khối
Bo mạch thực tế
1. KHỐI NGUỒN :
Khối nguồn đi xuyên suốt các linh kiện trong router, cung cấp điện năng cho các thành phần với cường độ và hiệu điện thế khác nhau. Ví dụ 1.8V cho RAM và 3V cho NOR Flash.
2. CPU :
Bộ xử lí trung tâm, thực ra trong 1 số router CPU có vẻ không hoàn toàn là CPU vì tên gọi CPU chỉ để chỉ vi xử lí trung tâm nhưng thực tế nhà sản xuất có thể tích hợp thêm nhiều thành phần như RAM, iPA-iLNA, iWireless Controller…, khi đó nó được gọi là SoC (System On Chip). 1 CPU đơn giản bao gồm CU (control unit- đơn vị điều khiển), ALU (Arithmetic Logic Unit- Xử lí logic) Register(thanh ghi, liên quan đến bộ nhớ) và hệ thống I/O.
3. RAM :
Tương tự CPU, RAM là 1 thành phần cực kì quan trọng, nhiệm vụ của nó là lưu dữ liệu tạm thời để hệ thống hoạt động. Hệ điều hành được lưu trên bộ nhớ lưu trữ nhưng khi hoạt động nó cần được đưa vào RAM để chạy hầu hết các tiến trình.
4. KHỐI BỘ NHỚ LƯU TRỮ :
Với 1 thiết bị router bo mạch nhúng, chúng thường có bộ nhớ rất nhỏ so với các máy tính cá nhân, mục đích là để lưu trữ firmware, cấu hình hệ thống và các thành phần cần thiết cho thiết bị. Thường dùng 2 loại bộ nhớ là NOR Flash và NAND Flash. Với các ưu nhược điểm riêng nhà sản xuất sẽ cân nhắc lựa chọn, nhưng thông thường các router dung lượng lưu trữ lớn sẽ sử dụng bộ nhớ NAND còn nhỏ sẽ dùng NOR. Có 2 dạng giao thức chính để giao tiếp với Flash là Serial Flash và Parallel Flash.
5. KHỐI MẠNG KHÔNG DÂY
Khối mạng không dây tương đối phức tạp, trong đó wireless controller làm nhiệm vụ xử lí tín hiệu số sang dạng tín hiệu sóng điện từ, quản lí băng tần – baseband, vi mạch ADC – DAC… Tín hiệu số từ CPU qua giao tiếp PCIe (trường hợp sử dụng giao tiếp PCIe) đến wireless controller biến đổi tín hiệu sóng điện từ, tín hiệu sóng điện từ đi qua khuếch đại công suất đến anten. Ngược lại tín hiệu sóng điện từ nhận được sẽ đi qua khuếch đại nhiễu thấp (LNA) đến wireless controller và giải điều chế thành tín hiệu số đưa về CPU xử lí.
Một IC nằm ngoài Wireless Controller tích hợp PA-LNA-SPDT (chuyển mạch anten) gọi là FEM.
6. KHỐI MẠNG HỮU TUYẾN – ETHERNET
+ CPU tích hợp bộ điều khiển MAC, bộ điều khiển MAC xử lí các logic nằm ở layer2 trong mô hình OSI liên quan đến địa chỉ MAC với các frame dữ liệu.
Các PHY chip hoặc Switch Chip chức năng ở layer1, biến đổi xung điện sang dạng tín hiệu số đưa đến bộ điều khiển MAC. Giao tiếp giữa PHY / Switch với MAC phổ biến là SGMII/RGMII. Với PHY chip cung cấp 1 cổng mạng, với Switch chip cung cấp nhiều cổng mạng.
+ Magnetics
Thành phần nằm giữa cổng RJ45 với PHY/Switch chip là Magnetics, hay còn gọi là biến áp ethernet (ethernet transformer).
Nhiệm vụ của nó là cách ly giúp giảm thiệt hại khi có điện áp cao tác động từ thiết bị này đến thiết bị khác, giảm nhiễu, cải thiện tín hiệu.
7. KHỐI GIAO TIẾP NỐI TIẾP (UART, I2C...)
UART hay I2C là các giao tiếp phổ biến thường thấy trên router, sự khác biệt chủ yếu giữa I2C và UART là I2C có thêm đường clock để đồng bộ. Thông thường nó được sử dụng để truyền các dữ liệu tốc độ thấp trong khoảng cách ngắn tùy theo mục đích của nhà sản xuất. Ví dụ có thể dùng UART kết nối với PC để thực hiện các lệnh debug hoặc nạp lại chương trình vào flash thông qua CLI.
8. KHỐI ĐIỀU KHIỂN NGOẠI VI (GPIO)
General-Purpose Input/Output, là một loại chân (pin) có thể được lập trình để thực hiện chức năng nhập (input) hoặc xuất (output) dữ liệu. Ví dụ cpu có các chân gpio1, gpio2, gpio3, ta gán gpio1 cho đèn led – gpio2 cho nút reset và gpio3 cho nút wps, khi cho tín hiệu đến các chân theo các điều kiện cho trước nó sẽ hoạt động.
B. PHẦN SỤN (FIRMWARE)
Gọi là firmware vì nó không linh hoạt như phần mềm cũng không cố định như phần cứng, chính xác thì nó là phần mềm nhưng thường đi theo 1 hoặc 1 vài phần cứng cố định, dữ liệu của firmware ít thay đổi (đọc – ghi) phần lớn ở dạng chỉ đọc (read-only) khi hoạt động, người dùng chỉ có thể thao tác thay đổi 1 phần nhỏ dữ liệu để lưu cấu hình.
Nền tảng phổ biến của các router bo mạch nhúng là linux. Tương tự linux trên máy tính cá nhân, nó bao gồm hạt nhân hệ điều hành – Kernel, hệ thống tập tin gốc – RootFS, Bộ tải khởi động – Bootloader (Uboot, CFE, Breed…), trong firmware lớn có thể bao gồm thêm các firmware cho từng thành phần như firmware cho Wireless Controller.
- Hệ thống tập tin router : Nó chủ yếu sử dụng dạng squashfs kết hợp jjfs2. Squashfs là định dạng tập tin nén chỉ đọc (read-only), trong khi jjfs2 cho phép đọc và ghi. Kernel và các chương trình cài đặt sẵn nằm ở phân vùng squashfs trong khi các cài đặt người dùng nằm ở phân vùng jjfs2. Quá trình reset factory thực ra chỉ là xóa sạch dữ liệu ở phân vùng jjfs2, khi khởi động lại các chương trình sẽ kiểm tra đã có tập tin cấu hình chưa, chưa nó sẽ tạo mới theo các cấu hình mặc định.
Khi hoạt động dữ liệu trong phân vùng định dạng squashfs sẽ được nạp 1 phần hoặc toàn bộ đến RAM.
+ ENV : environment – biến môi trường, đây là các thông số cấu hình và giá trị mà hệ điều hành hoặc chương trình sử dụng để quyết định cách thức hoạt động.
Ví dụ đơn giản như 1 số nên tảng cho phép thay đổi địa chỉ mac bằng các thay đổi giá trị mac trong env, kernel hoạt động thông số địa chỉ mac sẽ được truyền vào kernel.
Ví dụ trong hình, firmware dành cho wireless controller nằm trong phân vùng firmware, phân vùng kernel-rootfs là squashfs, rootfs_data phân vùng jjfs2 để lưu cấu hình người dùng.
Các biến môi trường env lưu tại phân vùng u-boot-env.
+Quá trình khởi động :
Tập lệnh trong CPU kiểm tra các thành phần và tìm kiếm Bootloader , Bootloader khởi chạy I/O theo lập trình và nạp kernel vào RAM. Tiếp tục khi kernel hoạt động nó gắn kết hệ thống tập tin Rootfs, Driver, chạy các tiến trình chức năng như DHCP, Firewall, Wireless…
Uboot khởi chạy kernel
Uboot - Bootloader phổ biến nhất trong nền tảng linux nhúng. Nó cung cấp nhiều tùy chọn để cấu hình hệ thống.
ENV cung cấp các thiết lập biến môi trường.
Hệ thống tập tin trong firmware
Danh sách thư mục trong hệ thống file system của router.
Router thường sử dụng thư mục etc/ config nằm trên phân vùng jjfs2 để lưu các cấu hình người dùng.
Thư mục proc thông tin về các tiến trình (process) đang hoạt động.
Thư mục lib chứa các thư viện cần thiết.
Thư mục bin chứa các chương trình hệ thống.
dev nơi chứa danh sách thiết bị của hệ thống.
var nơi chứa các tập tin mà có thể biến đổi trong suốt qua trình hoạt động như tập tin log (nhật kí), tập tin tạm thời (tmp).
sys - Thư mục này chứa các tệp và thư mục dùng để quản lý các thông tin hệ thống, chẳng hạn như thông tin về phần cứng và thiết bị.