Драйвер на устройство, създаден с Xcode, не се зарежда

Внедрих приложение за драйвер на устройство въз основа на тази връзка http://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptIOKit/iokit_tutorial.html

Ако се опитам да заредя устройство на терминал ($ sudo cp -R MyDriver.kext /tmp), получавам грешката:

No kernel file specified; using running kernel for linking.
MyDriver.kext is invalid; can't resolve dependencies.
MyDriver.kext is invalid; can't resolve dependencies.
MyDriver.kext is invalid; can't resolve dependencies.
MyDriver.kext has problems:
Validation Failures: 
    Info dictionary property value is of illegal type: 
        IOKitPersonalities->MyDriver->IOKitDebug

Authentication Failures:             File owner/permissions are incorrect (must be root:wheel, nonwritable by group/other): 
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Info.plist
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/MacOS
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/MacOS/MyDriver
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Resources
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Resources/en.lproj
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Resources/en.lproj/InfoPlist.strings        
Warnings: 
    Personality has no CFBundleIdentifier; the kext's identifier will be inserted when sending to the IOCatalogue: 
        MyDriver    

Моите съмнения са: 1) Какво представлява грешката No Kernel file specified (какво съм пропуснал в приложението си)? 2) Какво е MyDriver.kext е невалиден; не можете да разрешите зависимости? 3) Моят идентификатор на пакета е:
CFBundleIdentifier com.MyCompany.driver.${PRODUCT_NAME:maanu}

          what is Info dictionary property value is of illegal type: 

          IOKitPersonalities->MyDriver->IOKitDebug?

          (MyDriver My application Name.)

Благодаря ви много за отговорите.

                Muhammed Musthafa

person Musthafa P P    schedule 17.10.2011    source източник


Отговори (1)


Първи зависимости на ядрото.
Това е посочено в info.plist на вашия драйвер. Тук пътят до info.plist изглежда е /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Info.plist

По-долу са зависимостите на ядрото на AppleHIDKeyboard.kext в info.plist
(key)OSBundleLibraries‹(/key)
(dict)
(key)com.apple.iokit.IOHIDFamily( /ключ)
(низ)1.4(/низ)
(ключ)com.apple.kpi.iokit(/ключ)
(низ)10.0.0d2(/низ)
(ключ)com.apple.kpi.libkern(/ключ)
(низ)10.0.0d2(/низ)
(/dict )

Втори грешки при удостоверяване:
Можете да разрешите този проблем чрез следната процедура за внедряване на вашия драйвер.
1. Поставете MyDriver.kext на вашия работен плот.
2.отворете приложението Терминал и въведете списъка с команди по-долу.
3.sudo chown -R root:wheel ~/Desktop/MyDriver.kext
4.sudo chmod -R 755 ~/Desktop/MyDriver.kext
5.mv -f ~/Desktop/MyDriver.kext /System/Library/Extensions /
6.докоснете /System/Library/Extensions/

Трето предупреждение за CFBundleIdentifier.
Не съм сигурен какъв тип проблем е тук, това предупреждение може да направи драйвера ви неизпълним.
Трябва обаче да проверите info.plist на вашия драйвер , потвърдете дали вашият драйвер има ключа CFBundleIdentifier и асоциираната стойност.
Освен това трябва да проверите и настройките на проекта на драйвера.

Надяваме се, че това е полезно за вас, добър ден!

person Ivan    schedule 19.10.2011
comment
ако нямате нищо против, мога ли да попитам едно Съмнения. Моето USB е HID устройство. Според забележката, направих всичко. АКО проверих на терминал Newtok:Desktop Rasheed$ kextutil -n -t SampleKextDriver.kext Не е посочен файл на ядрото; използване на работещо ядро ​​за свързване. SampleKextDriver.kext изглежда може да се зареди (включително връзка за библиотеки на диск). Получих тази грешка. ‹key›OSBundleLibraries‹/key›‹dict›key›com.apple.iokit.IOHIDFamily‹/key›‹string›1.4‹/string›‹key›com.apple.kpi.iokit‹/key›‹string›10.7 ‹/string›‹key›com.apple.kpi.libkern‹/key›‹string›10.7‹/string›‹/dict› Какво лошо направи - person Musthafa P P; 20.10.2011