quocbao gửi vào
- 28735 lượt xem
Trên đây là một số mẹo nhỏ giúp bạn có thể làm việc hiệu quả hơn với hệ điều hành Linux Yocto (iot-devkit) trên Galileo mà mình đã tìm hiểu được. Bài viết này cũng tổng hợp lại các bài viết trước đó đã được đăng tại Arduino.vn
Bạn có thể xem hướng dẫn cài bản Linux Yocto (iot-devkit) của mình tại bài viết Cài đặt Linux Yocto (iot-devkit) lên Intel Galileo
Bài viết sẽ tiếp tục được cập nhật trong thời gian tới. Chúc các bạn dự thi Young Makers Challenge 2015 hên xui, à ý mình là may mắn :v
Cũng chúc các bạn dự thi Tin học trẻ toàn quốc 2015 bảng E3 - Lập trình trên Intel Galileo thắng lợi :v
1. Truy cập vào Linux console
Cách 1: Sử dụng Serial Monitor trên IDE để làm việc trực tiếp
Cách này có thể dùng được cho cả 2 board Galileo Gen 1 và Gen 2
Đầu tiên, bạn cần upload sketch có tên là Poor Man's Telnet lên board sử dụng IntelGalileo IDE có sẵn.
Sau đó mở Serial Monitor lên và làm việc với console.
Chú ý
Một số lệnh đòi hỏi phải sử dụng giao diện đồ hoạ trên console như: top, htop, nano, vim,... sẽ không làm việc được. Nếu bạn lỡ chạy một lệnh như htop (giống Task Manager trong Windows), bạn sẽ phải khởi động lại board Galileo nếu không muốn Serial Monitor của mình tràn ngập output của nó :D
Cách 2: Sử dụng cổng Serial /dev/ttyS1 trên board (nằm cạnh cổng Ethernet)
- Với board Galileo Gen1, các bạn có thể tham khảo bài viết "Độ hoàn toàn" một cổng Terminal RS-232 mà không sử dụng jack 3.5mm, chất lượng đồ hoạ hơi thấp :D
- Với board Galileo Gen2, các bạn có thể sử dụng các loại mạch chuyển USB to TTL Serial để kết nối máy tính của mình với board Galileo. Bằng cách này, bạn có thể theo dõi các thông báo trạng thái của Galileo từ lúc nó mới khởi chạy bootloader, các dịch vụ cơ bản,... đến khi xuất hiện màn hình đăng nhập, rất tuyệt vời cho việc debug.
Mạch PL2303HXD USB to Serial Breakout
Mạch PL2303HXD
PL2303HXD Galileo Gen 2 GND GND RTS RTS CTS CTS TXD RXI RXD TXO Sơ đồ nối dây
Khi kết nối với máy tính, các bạn có thể dùng những phần mềm telnet client như PuTTY để mở kết nối. Chú ý chọn đúng cổng kết nối.
Dây USB PL2303HX
Dây USB PL2303HX
PL2303HX Galileo Gen2 TXD RXI RXD TXO GND GND Sơ đồ nối dây
Các bạn cũng sử dụng PuTTY để kết nối như ở trên.
Cách 3: Truy cập qua cổng Ethernet bằng SSH
Cách này có thể sử dụng được cho cả 2 board Galileo Gen 1 và Gen 2.
Đầu tiên, bạn cần kết nối Galieo vào một mạng LAN (kết nối với Router, Switch,...) bằng cổng Ethernet. Máy tính của bạn cũng phải nằm trong mạng này. Cách truy cập này thường chậm và hay bị lag hơn cách dùng cổng Serial trên board.
Sau đó, bạn phải xác định được địa chỉ IP của board Galileo trong mạng LAN. Bạn có thể vào thẳng Router trong mạng để xem IP của board. Board Galileo có hostname mặc định là galileo
Hoặc sử dụng một sketch đơn giản được upload thông qua ArduinoIntel IDE sau.
void setup() { Serial.begin(115200); system("ifconfig > /dev/ttyGS0"); } void loop() { }
Mở Serial Monitor, sau đó bấm nút RESET trên board Galileo để xem địa chỉ IP.
Sau khi đã lấy được IP, sử dụng PuTTY để kết nối với board Galileo qua SSH. Cổng SSH mặc định là 22, tên đăng nhập vào Linux console mặc định là root. Không yêu cầu password.
Chia sẻ
Mình thường hay sử dụng một Portable Router là TP-Link MR3040 để truy cập vào Linux console của Galileo bằng cổng Ethernet. Máy tính (dùng PuTTY) hoặc điện thoại Android của mình (dùng JuiceSSH) với kết nối wifi với Router có thể truy cập rất dễ dàng (hoàn toàn không dây, tiết kiệm không gian nhé), không bị lag.
2. Chuyển dữ liệu giữa máy tính và Galileo
Mình sử dụng File Zilla để chuyển file (hoặc nguyên một thư mục) qua lại giữa máy tính. Cài đặt tương tự như khi vào console của Galileo qua SSH.
Bạn có thể chuyển các file qua lại giữa máy tính và Galileo bằng cách kéo thả chúng qua lại giữa 2 cửa sổ Local site và Remote Site. Bạn cũng có thể sửa file trực tiếp trên Remote site (thực ra thì file này được tải về máy bạn và lưu trong một thư mục tạm, sau khi thay đổi hoàn tất, nó sẽ được upload trở lên lại).
3. Cập nhật software cho bản Linux Yocto
Trên bản Linux Yocto này chỉ có duy nhất một package manager mặc định là opkg. Cách sử dụng nó tương tự như các package manager khác như apt-get, apptitute, yum,...
Dĩ nhiên là để cập nhật được, bạn phải gắn dây mạng cho Galileo :D
Cập nhật repository list.
opkg update
Cập nhật toàn bộ software. Lệnh này có thể mất đến 30 phút tuỳ đường truyền mạng và tốc độ đọc ghi của thẻ nhớ.
opkg upgrade
Cài đặt một số software phổ biến
opkg install htop nano
Trong đó
- htop - Được xem như là Task Manager trên Linux
- nano - Trình soạn thảo văn bản trên command-line (dễ xài).
Bạn có thể tự cài thêm các package khác như opencv, alsa,... nếu cần.
4. Cài đặt các software không được package manager hỗ trợ
Ở đây mình sẽ tiến hành cài đặt pyserial-2.7 - một thư viện cho Python giúp nó sử dụng giao tiếp UART.
Đầu tiên là download gói pyserial-2.7
curl -O https://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz
Bạn có thể dùng lệnh wget để tải một file như trên, tuy nhiên wget lại không hỗ trợ giao thức HTTPS tốt bằng curl
Giải nén file vừa tải về
tar -xvzf pyserial-2.7.tar.gz
Chạy lệnh cài đặt
python pyserial-2.7/setup.py install
Đối với một số package yêu cầu phải compile mã nguồn C, bạn chạy các lệnh sau
./configure make make install
5. Xem nhiệt độ CPU
Nhiệt độ CPU Quark X1000 của Galileo được lưu tại file /sys/class/thermal/thermal_zone0/temp. Để xem nhanh nội dung file này, bạn có thể dùng lệnh cat
cat /sys/class/thermal/thermal_zone0/temp
CPU đang ở 67oC
Nhiệt độ ở đây được tính theo độ C (về mặt hình thức thì là milioC). Do vậy bạn sẽ không bao giờ thấy những output kiểu như 67001 :D
6. Dịch và chạy một file viết bằng C/C++
Trên bản Linux Yocto này có hỗ trợ sẵn compiler cho C/C++ là gcc. Để compile một file C/C++, bạn chạy lệnh sau
gcc hello.cpp -o hello
Chạy file
./hello
7. Quản lí các kết nối Internet
Bạn sẽ không tìm thấy file /etc/network/interfaces trên bản Linux Yocto này :D Thay vào đó, Intel cho bạn một package là connman để để quản lí các kết nối
Xem các kết nối hiện tại
connmanctl technologies
Xem hướng dẫn sử dụng
connmanctl --help
8. Xem thông tin về hệ thống
Chạy lệnh sau để xem toàn bộ thông tin
uname -a
Bạn có thể xem thông tin về từng phần riêng rẽ như:
- Xem phiên bản kernel:
uname -r
- Xem phiên bản hệ điều hành:
uname -o
-
Xem hostname
uname -n
9. Xem danh sách các thiết bị USB đang kết nối
Chạy lệnh
lsusb
10. Xem danh sách PCI BUS
Chạy lệnh
lspci
11. Liệt kê các partition
Chạy lệnh
lsblk
12. Xem dung lượng partition và dung lượng còn trống
Chạy lệnh
df
13. Kiểm tra tình trạng sử dụng RAM, swap
Chạy lệnh
free -m
Chạy lệnh sau để xem thông tin đầy đủ hơn
cat /proc/meminfo
14. Xem CPU Load
Chạy lệnh
cat /proc/loadavg
14. Xem thời gian hệ thống đã chạy
Chạy lệnh
cat /proc/uptime
- Số đầu tiên cho thấy thời gian (tính bằng giây) hệ thống được khởi chạy
- Số thứ hai là thời gian (tính bằng giây) CPU ở trạng thái rãnh rỗi. Trên các hệ thống có nhiều CPU, con số này là tổng thời gian rãnh của từng CPU
16. Xem thông tin về CPU
Chạy lệnh
cat /proc/cpuinfo
Thông tin này bao gồm những nội dung như nhà sản xuất, xung nhịp CPU, bộ nhớ đệm, kích thước địa chỉ (32bit/64bit), BogoMips,...
17. Chạy server NodeJS
Đầu tiên, các bạn cần tạo một file app.js (tên tuỳ ý) có nội dung như sau
var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World\n"); response.end(); }).listen(8080); console.log('Server started');
Bạn có thể sử dụng lệnh nano mình đã hướng dẫn cài đặt ở mục 3 để tạo
nano app.js
Khởi chạy server
node app.js &
Mở trình duyệt và xem kết quả. Nhập IP của Galileo trong mạng như lúc vào Linux console qua cổng Ethernet kèm theo cổng 8080.
Chúc mừng, bạn vừa chạy được chương trình Hello World cho ứng dụng NodeJS của mình :D