ฉันประหลาดใจที่ Google ผู้ยิ่งใหญ่ไม่มีคำตอบสำหรับคำถาม "VCHIQ คืออะไร" ฉันเป็นเคอร์เนลที่รู้จักกันมานานและไม่ใช่พนักงานของ Broadcom และฉันก็เป็นผู้เชี่ยวชาญ BCM283 * แต่นี่คือสิ่งที่ฉันพบสำหรับลูกหลาน (อาจ):
จากสาขาเคอร์เนล Raspberry Pi :
Kernel to VideoCore อินเตอร์เฟสการสื่อสารสำหรับตระกูลผลิตภัณฑ์ BCM2708
มีอะไรน่าสังเกตอยู่ที่นี่คือ VideoCore คือ (เซอร์ไพรส์เซอร์ไพรส์) คอนโทรลเลอร์วิดีโอสำหรับ SoC ที่ Pi ทำงานและจะปรากฏว่านี่เป็นวิธีที่สะดวกในการใช้IOCTL โดยตรงมากขึ้นหรือน้อยลงไปยังระบบย่อยต่างๆติดอยู่กับ GPU . นั่นรวมถึงวิดีโอไม่น่าแปลกใจ แต่ฉันคิดว่ามันสมเหตุสมผลที่อินเตอร์เฟสกล้องมีซิลิกอนภายใน VideoCoreเนื่องจากทุกสิ่งที่ตัวแปลงสัญญาณวิดีโอจำเป็นต้องทำ
เหตุใดการควบคุมเสียงจึงทำงานผ่าน VideoCore เช่นกัน ฉันสงสัยว่าด้วยความจริงที่ว่า VC มีฮาร์ดแวร์รองรับ H.264 และตัวแปลงสัญญาณอื่น ๆ (และเนื่องจากคุณสามารถกำหนดเส้นทางเสียงผ่าน HDMI) มันจึงเป็นสถานที่ที่ง่ายที่สุดในการใส่ซิลิคอน นั่นคือข้อเท็จจริงและความจริงที่ว่าชิป BCM มีสอง MMUs (หนึ่งสำหรับ VC + ARM อีกหนึ่งสำหรับการใช้งานระบบปฏิบัติการปกติ - ดูไดอะแกรมบน pg 5 ) ซึ่งทำให้ DMA เป็นศูนย์ที่เป็นไปได้ (ไม่จำเป็นต้องคัดลอกสิ่งต่าง ๆ ออดิโอซิลิกอน - แค่บอกว่าหน่วยความจำอันหนึ่งเป็นของมันไม่ใช่ซีพียู Dunno แต่ถ้าพวกเขาทำสิ่งนี้ภายใต้ฝาครอบ แต่ทำไมคุณถึงไม่ทำ?)
โปรดทราบว่า IOCTLs บน VCHIQ ไม่ได้ถ่ายโอนข้อมูลจริง ๆ - พวกเขาตั้งค่า DMA และการดำเนินการอื่น ๆ ระหว่างหน่วยความจำและส่งคำสั่งไปยังบิตต่าง ๆ สิ่งนี้อาจเป็นอันตรายอย่างยิ่งเนื่องจากคุณอาจใช้สกรูกับโครงสร้างข้อมูลเคอร์เนลภายในจาก userspace, ขัดข้อง GPU, ยกระดับข้อมูลที่เสียหายเป็นต้นดังนั้นอย่าตั้ง / dev / vhciq เป็นโหมด 777 !!!
ไม่ว่าในกรณีใดคำตอบสั้น ๆ ของ "VCHIQ คืออะไร" นี่มันคือ:
VCHIQ เป็นอินเตอร์เฟสคำสั่งระหว่างเคอร์เนล Linux ที่ใช้งานและอุปกรณ์ต่อพ่วง (เหนือสิ่งอื่นใด) ในซิลิกอน VideoCore / dev / vhciq จัดเตรียมการเข้าถึงพื้นที่ผู้ใช้ทั่วไปให้กับคำสั่งเหล่านั้นสำหรับการใช้งานโดย (อย่างน้อยที่สุด) กล้องและระบบย่อยเสียงเช่นกัน มันเป็นอินเทอร์เฟซที่อันตรายพอสมควรที่จะเปิดเผยโปรแกรมแบบสุ่มดังนั้นค่าเริ่มต้นจะ จำกัด สิทธิ์
มีคนที่ขึ้นอยู่กับดวงตาของพวกเขาในฮาร์ดแวร์ BCM ในชุมชน RPi; ฉันไม่ได้เป็นหนึ่งในพวกเขา (บางทีฉันข้อเท้าลึกหลังจากสองสามชั่วโมงของการวิจัย :-)) ที่กล่าวว่าฉันคิดว่านี่เป็นภาพรวมระดับสูงที่เหมาะสมและยินดีต้อนรับการเพิ่มเติม / การแก้ไข
เท่าที่ทำไม www-data ต้องได้รับอนุญาตนั่นอาจเป็นเพราะโปรแกรม CGI ของคุณกำลังวางไข่กระบวนการลูกในฐานะผู้ใช้นั้น ฉันไม่ทราบว่าผู้เล่นเฉพาะรายเก่ง แต่วิธีปฏิบัติที่ดีกว่าปกติคือการใช้ดีมอนพิเศษเพื่อควบคุมโปรแกรมที่เชื่อมต่อกับเสียงและควบคุมจาก CGI โดยใช้ซ็อกเก็ต UNIX หรืออินเตอร์เฟสที่คล้ายกันแทนที่จะวางไข่โดยตรงกับเด็ก
อันที่จริงผู้ขายระบบรักษาความปลอดภัยกลับมาพักหนึ่งเพื่อให้รูทเว็บเซิร์ฟเวอร์เข้าถึงเครื่องของตนได้ พวกเขาอาจทำสิ่งนี้เพื่อทำให้การจัดการกระบวนการง่ายขึ้นแทนที่จะเขียนเลเยอร์ประเภทนี้ แต่มันไม่มีความปลอดภัย การให้ apache โดยทั่วไปแล้วการเข้าถึง GPU DMA นั้นเป็นความคิดที่ไม่ดีเท่า ๆ กัน
หวังว่านี่จะตอบคำถามของคุณ
/dev/vhciq
เรียกใช้เสียงโดยทั่วไป - ในกรณีนี้เป็นเพราะ OP ใช้omxplayer
เพื่อทำซึ่งอาจไม่เหมาะ