2012-10-07 19 views
5

Tôi có vài năm kinh nghiệm lập trình c. Bây giờ tôi quyết định làm việc hướng tới phát triển mô-đun hạt nhân Linux. Tuy nhiên, tôi thậm chí không thể bắt đầu. Tôi đã biên dịch mã này trong ubuntu.Làm cách nào để mã hóa mô-đun hạt nhân Linux?

#include <linux/module.h> 
int init_module(void){ printk("<1> hellp"); return 0;} 
void cleanup_module(void){ printk("<1> bye");} 

tuy nhiên, thông báo lỗi không hoạt động là "Định dạng mô-đun không hợp lệ". sau khi googling tôi figured nó có thể là một số vấn đề với khả năng tương thích phiên bản. Và không có cách nào tốt để giải quyết nó. Vì vậy, có thể một số nhà phát triển mô-đun hạt nhân thực sự cho tôi một số lời khuyên? Tôi nên chuẩn bị môi trường nào trước khi bắt đầu học?

Cảm ơn!

Trả lời

10

Bạn thiếu các macro module_init()module_exit() và một số yếu tố quan trọng #defines. Chúng tôi cần thêm thông tin cũng như các tùy chọn thực hiện/gcc của bạn. Nó có thể báo cáo "định dạng mô-đun không hợp lệ" vì bạn đang biên dịch trong 32 bit khi hạt nhân của bạn là 64bit, vì vậy hãy đảm bảo bạn đang sử dụng cờ biên dịch -64 và cờ liên kết.

Hướng dẫn xin chào thế giới tuyệt vời cho Mô-đun hạt nhân được đặt tại đây: http://archive.is/KNkEE (số original link cho bài viết bị hỏng).

Chào mừng bạn viết mô-đun hạt nhân. Họ có rất nhiều niềm vui so với viết trình điều khiển Windows (tôi đã thực hiện cả hai). Giao diện mô-đun hạt nhân Linux đơn giản hơn nhiều để sử dụng và có rất nhiều trình điều khiển cơ bản mà bạn có thể ủy nhiệm và hoàn thành công việc nhanh hơn.

+0

* "Bạn đang thiếu __init và __exit macro, ..." * - Việc sử dụng của '__init' và '__exit' không yêu cầu; họ chỉ xác định (các) phần văn bản có thể được giải phóng sau khi khởi động xong. Những gì được yêu cầu cho một mô-đun trình điều khiển là khai báo cho hai điểm vào bằng cách sử dụng 'module_init()' và 'module_exit()'. – sawdust

1

Blog đầy đủ và đơn giản về hạt nhân Linux, Lập trình mô-đun và viết trình điều khiển thiết bị đơn giản cho thiết bị được nhúng.

xploredevicedrivers.blogspot.in

Các vấn đề liên quan