Lập trình điều khiển GPIO trên Raspberry pi bằng C++ _ phần 2

Có một lỗ hổng cơ bản trong chương GPIO ở bài trước.Thông thường khi chương trình đang chạy mà ta muốn thoát chương trình thì hay dùng thao tác đó là sử dụng tổ hợp phím Ctrl-C.Như zậy nếu với đoạn code trên thì chương trình sẽ thoát trực tiếp mà chưa hề được giải phóng bộ nhớ đã cấp cho 2 đối tượng gpio4 và gpio7. Có một cách để giải quyết vấn đề trến là viết hàm xử lý khi có tín hiệu đến (xử lý ngắt mềm) và gán nó đến sự kiện SIGINT (ctrl-C). Điều này cho phép chương trình sẽ nhảy đến signal handler này bất cứ khi nào ctrl-C được nhấn, thay vì thoát trực tiếp chương trình. Hàm xử lý ngắt sau đó có thể khởi tạo một phương pháp thoát chương trình tối ưu hơn ví dụ như giải phóng bộ nhớ và unexport các chân trước khi exit. Bắt đầu vào phân tích code, đầu tiên ta phải include :
Tiếp tục đọc

Lập trình điều khiển GPIO trên Raspberry pi bằng C++ _ phần 1

Bài viết này giới thiệu cách làm thế nào để truy xuất GPIO bằng C++ trên kit RPI . Có 2 cách để thực hiện điều này :

– Cách thứ nhất là tác động trực tiếp tới các thanh ghi GPIO trên RPI giống như phương pháp lập trình vi điều khiển thông thường mà không có hệ điều hành (OS) . Ưu điểm của phương pháp này là hoàn toàn bỏ qua hệ điều hành, các chân GPIO sẽ được truy xuất rất nhanh. Tuy nhiên cách này không an toàn và có thể gây ra xung đột bởi sự truy xuất cùng lúc của nhiều quá trình đến các thanh ghi vật lý trên RPI.
Tiếp tục đọc

Lập trình device driver cơ bản _ phần 1

Tong bài viết này mình sẽ giới thiệu về cách viết 1 character device driver điều khiển gpio trên mini2440. Chúng ta sử dụng để điều khiển 4 led portB từ GPB5 đến GPB8. Ta tạo 4 device file : /dev/led1 , /dev/led2, /dev/led3, /dev/led4 để quản lý trạng thái của các led. echo “1” > /dev/led1 để bật led1 và ngược lại echo “0” > /dev/led1 để tắt led1.
Tiếp tục đọc