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
Category Archives: Embedded
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 2
CÁC THAO TÁC TRÊN FILE DEVICE :
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
Explore GCC Linking Process Using LDD, Readelf, and Objdump
Linking is the final stage of the gcc compilation process.
In the linking process, object files are linked together and all the references to external symbols are resolved, final addresses are assigned to function calls, etc.
In this article we will mainly focus on the following aspects of gcc linking process:
Tiếp tục đọc