7

Sto adattando un kernel Gingerbread per la mia scheda personalizzata. Sto provando a sostituire un touch screen resistivo che utilizza un controller ADC su chip (processore S5PV210 di Samsung). Nella mia progettazione, ho bisogno di un controller capacitivo supportato dal driver eGalaxyTouch. È collegato all'USB. Il driver può essere facilmente abilitato dal menu "make xconfig". Funziona un po 'da quando ho aggiunto alcune tracce sulla console seriale e posso vederlo durante l'avvio del kernel e vedo che si installa e si disinstalla da solo quando si collega/scollega il cavo USB. Ma non fa nulla nell'interfaccia utente di Android. È un dispositivo di tipo HID. Il problema è che non si collega al corretto livello del software touchscreen Android. Devo aver perso qualcosa. Ci deve essere qualcos'altro da chiamare per forzare questo HID ad essere connesso ad un altro livello software che gestisce il touchscreen.Sostituzione del driver del touchscreen nel kernel Android

I driver del touchscreen si trovano nel kernel/driver/input/touchscreen. C'è anche del codice direttamente nel kernel/driver/input.

Eventuali indizi su come collegare il dispositivo HID al livello del touchscreen Android? Guardo come hanno fatto il vecchio resistivo e non è fatto attraverso un HID perché è un dispositivo "su misura" con ADC integrati nella CPU e non passa attraverso USB.

risposta

9

Sono riuscito a integrare il driver del touchscreen. Ecco un'idea approssimativa dei passaggi solo per dare un'idea di come funziona per gli altri che affrontano lo stesso tipo di problema.

prima rimuovere il driver touchscreen originale per prevenire i conflitti (make xconfig)

In origine, ho avuto un driver che non funziona nonostante sapessero che è stato fornito dal produttore touchscreen. Ho deciso di provare il driver touchscreen eGalax già nell'albero del kernel. Questo è un driver del modulo. Non è sufficiente abilitare "module device drivers" nel make xconfig. Sì, permetterà di compilare i file .ko. ma non dirà alla sceneggiatura cosa fare con file.ko e non finiranno col kernel nel sistema di destinazione. Quindi devi agire aggiungendo cose allo script di build o copiare manualmente il file.ko nella corretta posizione root/modules e aggiungere il caricamento del modulo con il comando "insmod /modules/file.ko" nella init. file rc. Non dimenticare di impostare i privilegi appropriati su/modules e modules/file.ko con il comando chmod.

Dopo che ha funzionato fondamentalmente, tranne alcuni problemi minori non correlati a quella domanda (il driver era per un chip leggermente diverso con bit posizionati in modo diverso, facile da risolvere).

+0

puoi dire come si può cambiare/modificare il kernel del dispositivo ?, anch'io ho lo stesso requisito –

+0

Prima di tutto, dovresti avere il codice sorgente completo del kernel della scheda che stai usando. In caso contrario, sarà necessario iniziare da zero e integrare i driver per ogni singolo componente hardware presente sulla scheda. È un compito molto lungo. Se hai creato la tua scheda CPU, molto probabilmente hai iniziato da un progetto di riferimento per non reinventare la ruota. Si dovrebbe iniziare con la stessa configurazione del kernel e dello strumento utilizzato per il progetto di riferimento su cui si basa la progettazione. Se vuoi fare tutto da solo, pensa al time to market ... Il kernel è 30.000 + file –

Problemi correlati