Bài 9 : Cross Platform cho Raspberry Pi

Chắc hẳn các bạn khi làm việc với Raspberry đã quen với việc kết nối thêm màn hình, bàn phím và chuột tới Pi để biến nó thành chiếc máy tính thực thụ. Hoặc đơn giản hơn chỉ cần thực hiện Remote Desktop thông qua Internet với Pi. Tuy nhiên đôi lúc những phương thức trên thật bất tiện nếu bạn không có nhiều màn hình hay chuột, bàn phím, Remote Desktop thường chạy rất đơ và trở nên chậm chạp.  Nếu mục đích của bạn là xây dựng úng dụng trên Pi thì có một cách khác hay hơn để làm việc, đó là Cross Platform (hoặc cross development). Nói đơn giản thì bạn hoàn toàn chỉ cần làm việc trên máy tính của bạn và copy kết quả là ứng dụng sang Pi và chạy.
 
Khi bạn biên dịch một ứng dụng trên máy tính, các trình biên dịch sẽ biên dịch để chương trình đó có thể chạy được trên CPU của bạn. Giả sử CPU của bạn là dòng của Intel, trình biên dịch sẽ biên dịch file thực thi có thể chạy trên các máy có CPU là Intel. Muốn ứng dụng có thể chạy được trên Pi thì cần phải có trình biên dịch cho dòng vi xử lý ARM. Trong bài này mình sẽ hướng dẫn các bạn thực hiện viết ứng dụng trêm một chiếc máy tính cá nhân thông thường nhưng biên dich cho vi xử lý ARM (cross platform).
 
Điểm tiện ích nhất của Cross Platform là tốc độ viết ứng dụng và biên dịch ứng dụng. Tuy tốc độ xử lý trên Pi cũng rất nhanh so với các dòng vi xử lỷ khác. Tuy nhiên so với máy tính cá nhân thông thường vẫn thua kém về tốc độ và dung lượng RAM.
 
Bài viết hướng dẫn trên hai hệ điều hành là Linux và window. Mình luôn khuyến khích sử dụng Linux nếu các bạn muốn là việc với Pi vì đơn giản Pi cũng dùng hệ điều hành Linux. Các thư viện lập trình, trình biên dịch đều tương đồng (tất nhiên lõi dành cho vi xử lý là khác nhau). Chú ý rằng các bạn không cần quan tâm tới phần cứng CPU là Intel hay AMD vì hệ điều hành đã thay bạn quan tâm điều đó.
 

1. Cross Platform sử dụng Linux


Mình giả thiết rằng các bạn đang sử dụng hệ điều hành Linux, có thể là Ubuntu hoặc Debian v.v… . Những hướng dẫn dưới đây đa phần đều có thể chạy trên các OS của linux phiên bản khác nhau. Raspberry chạy hệ điều hành  Raspbian Wheezy.

Trình biên dịch cần sử dụng bộ thư viện cơ bản là C và C++ đã được cài đặt sẵn trong OS. Ngoài ra các bạn cần cài đặt thêm công cụ biên dịch cần thiết “build-essential”.

sudo apt-get install build-essential # câu lệnh này chạy trên ubuntu.

Download trình biên dịch cross platform dành cho ARM chạy trên Pi. Trình biên dịch do Raspberry cung cấp. Download tại đây . Dung lượng download khá lớn khoảng 1Gb nên các bạn có thể thong thả làm chén trà trong lúc chờ đợi.

Khi download hoàn tất, hãy mở thư mục “/tools/arm-bcm2708” lên. Trong đó có 4 files chứa 4 toolchain khác nhau.

-      arm-bcm2708-linux-gnueabi

-      arm-bcm2708hardfp-linux-gnueabi

-      gcc-linaro-arm-linux-gnueabihf-raspbian

-      gcc-linaro-arm-linux-gnueabihf-raspbian-x64

Nếu máy chạy hệ điều hành 32bit thì các bạn sẽ sử dụng “gcc-linaro-arm-linux-gnueabihf-raspbian” làm trình biên dịch, còn nếu là máy 64bit thì sẽ dùng “gcc-linaro-arm-linux-gnueabihf-raspbian-x64”.

Chỉ con trỏ terminal tới thư mục home và gõ lệnh

gedit .bashrc

File .bashrc bao gồm những đoạn lệnh mà mỗi khi bạn mở terminal lên sẽ được thực thi. Nó có thể bao gồm những thiết lập, config, hay lịch sử của shell.

Bạn hãy add thêm dòng này vào cuối file nếu là OS 32bit:

export PATH=$PATH:$HOME/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin

Ở đây mình download tools về ở trong thư mục home, bạn hãy điều chỉnh lại đúng vị trí với thư mục của bạn.

Nếu là OS 64bit thì thêm dòng này :

export PATH=$PATH:$HOME/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

Sau đó thực hiện update lại .bashrc.

source .bashrc

Lý do phải thực hiện export PATH là để các bạn có thể chạy chương trình biên dịch ở bất cứ đâu trên hệ thống. Hệ thống sẽ tự tìm chương trình biên dịch thông qua PATH. Để kiểm tra lại các bạn có thể gõ lệnh.

arm-linux-gnueabihf-gcc -v

Nó sẽ hiển thị thông tin về trinh biên dịch. Nếu không thì chắc hẳn đã lỗi đường dẫn ở đâu đó, hãy kiểm tra lại việc export PATH.

Như vậy việc cài đặt trình biên dịch cross plaform đã hoàn tất. Các bạn hãy thử nghiệm cross platform với chương trình đơn giản dưới đây :

// tea.c
 
#include <stdio.h>
#include <unistd.h>
 
int main(int argc, char const *argv[]){
    while(1){
        printf("Give me a cup of tea \n");
        sleep(1);
    }
    return 0;
}

Thực hiên biên dịch với “arm-linux-gnueabihf-gcc”:

arm-linux-gnueabihf-gcc tea.c –o tea

Copy file thực thi sang Pi để chạy thử và hóng kết quả nhé.

 

2. Cross Platform trên window


Trên window có rất nhiều IDE có thể lập trình cho C như Visual, Dev C, hay eclipse. Các công cụ này cũng có thể sử dụng một trình biên dịch ngoài để biên dịch. Tức là có thể dùng trình biên dịch cho ARM để build. Ở đây minh sẽ hướng dẫn dùng eclipse để thực hiện Cross Platform.

Download :

-      GCC Cross compiler . Các bạn hãy chọn đúng bản phù hợp với phiên bản Raspbian.

-      Eclipse : phiên bản mới nhất hiện nay là 4.5

2.1 Thực hiên cài đặt GCC cross compiler

Các bạn thực hiện cài đặt chương trình

gnu tool chain

Thực hiện config. Mở thư mục C:\SysGCC\Raspberry\TOOLS\UpdateSysroot

Chọn select và lựa chọn setup new connection, sau đó điền thông tin địa chỉ của Raspberry của bạn vào. 

Các bạn bật raspberry lên và chọn connect. Thực hiện connect thành công thì thực hiện Synchronize để copy thư viên của Pi vào máy tính. Sau này nếu các bạn update hệ thống raspbian thì nên thực hiện lại synchronize.

2.2     Thiết lập eclipse

Mở eclipse lên và tạo một project mới.

Lựa chọn Toolchains là “Cross GCC”. Sau đó ấn next

Tiếp tục next

Điền cross compiler prefix là : “arm-linux-gnueabihf- ”

Cross compiler path : là địa chỉ của chương trình GCC cross compiler

Sau đó nhấn finish để hoàn tất.

Các bạn viết chương trình tea.c như phần 1 và thực hiện build. Lưu ý rằng không thể run được file thực thì này trêm máy tính, vì file này chỉ chạy trên ARM - ở đây là Pi. Các bạn copy sang Pi.

Chuyển file đó thành file thực thi trên Pi :

chmod +x tea

Và thực hiện chạy : ./tea . Kết quả giống với phần 1.

Ngoài ra các bạn có thể hoàn toàn sử dụng các IDE khác như Visual studio để cross platform.

Link tham khảo :

 

Viết đánh giá

Họ và tên:


Đánh giá của bạn: Lưu ý: Không hỗ trợ HTML!

Bình chọn: Dở            Hay

Nhập mã bảo vệ: