วันอังคารที่ 9 กรกฎาคม พ.ศ. 2556

โปรเจค PCI card ตอนที่ 4 PCI driver for linux

โปรเจค PCI card ตอนที่ 4 PCI driver for linux


การจะเขียน driver ต้องเข้าใจภาพรวมก่อน ภาพรวมระบบจะเป็นดังภาพด้านล่าง นั้นคือ PC จะสั่งงาน ADC , DAC, DIO ไปที่ FPGA (ผ่านทาง PCI bus) จากนั้น FPGA จะเอาค่าต่างๆ ที่ ได้รับมา ไปสั่งงาน ADC, DAC, DIO อีกทีนึง



การจะให้ PC คุยกับ PCI card ให้รู้เรื่องนั้น มีสิ่งสำคัญแค่ 2 อย่างเท่านั้นคือ
1. Vendor ID, Device ID
ตัวนี้จะเป็นตัวบอกว่า จะให้ PC ไปติดต่อสื่อสารกับ Card ตัวไหน
2. Memory map
memory map นั้นเรา(ผู้สร้างระบบ)จะเป็นคนกำหนดขึ้นมาเอง จะเป็นข้อกำหนดว่า ถ้าจะสั่งงานอะไร ต้องส่ง data ไปที่ address ไหน รูปด้านล่างเป็น memory map ของ card ตัวนี้ที่ผมกำหนดขึ้นมา



เมื่อเราสร้าง driver ได้แล้ว พอ Insmod เราจะเจอ driver ของเราดังรูปด้านล่าง


เมื่อเราสร้าง driver ขึ้นมาได้ ถ้าเรา access ตาม memory map ที่เราสร้างขึ้นก็จะสามารถ ควบคุม ADC, DAC, DIO ได้ตามที่เราต้องการแล้ว รูปด้านล่างเป้น test program ที่ทำขึ้นมาจาก QT ครับ



ไม่มีความคิดเห็น: