स प ण लन स ड ह ईस य हर मर ठ त न.

Relevanta dokument
Mycket formellt, mottagaren har en speciell titel som ska användas i stället för namnet नमस क र

oa'khèkj 'kqdy ds dko; esa lkekftd psruk

Affärer Brev. Brev - Adress

çkf/kdkj ls çdkf'kr PUBLISHED BY AUTHORITY WEEKLY

म झ... क ब र म आपक बत न म ख श

Affärer Brev. Brev - Adress

Personligt Lyckönskningar

Personligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६

Personligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६

Personligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६. Mr. N. Summerbee 335 Main Street New York NY 92926

Personligt Lyckönskningar

Personligt Brev. Brev - Adress. Nederländska

Personligt Brev. Brev - Adress एन. सरब, ट यर स ऑफ म नह टन, ३३५ म न स ट र ट, न य य र क एन.य. ९२९२६

Affärer Brev. Brev - Adress

Mr. Adam Smith Smith's Plastics 8 Crossfield Road Selly Oak Birmingham West Midlands B29 1WQ

म थन क म त स ल ख स म त भ र म ज म नधन

S.No. Details Hearing date Time slot Sh. Mukesh

Personligt Lyckönskningar Lyckönskningar - Giftermål Japanska おめでとうございます 末永くお幸せに Används att gratulera ett nygift par おめでとうございます どうぞお幸せに Används att g

Academic Year

From Yeravda Mandir i From Yeravda Mandir

Programmeringsteknik med C och Matlab

STS1100. Register your product and get support at Quick. Start

Här räddar folket sitt språk

Operativsystem IS1350

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Raspberry Pi och Tellstick, ett program i C.

Det finns många flaggor till g++,

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Hantering av textsträngar och talsträngar. William Sandqvist

Interrupt i Linux/StrongArm 1100

Att skriva till och läsa från terminalfönstret

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Terminal vad det är vad man kan göra med den

Poster ( structar ) Postdeklarationer

( SV ) SVENSKA. Sida 6 HÅLLARMAR (ELITE OCH POWER RAIL CLAMP)

( SV ) SVENSKA OBS: Försök inte att justera bordsfästets höjd när ramkomponenter är fastsatta utan att

Programsystemkonstruktion med C++

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Systemnära programmering Tentamen. Systemnära programmering, 7.5hp 5 november 2012

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Lab 2 Operativsystem IS1350

En klass behöver både deklaration och definition. Daniel Aarno Globala funktioner och variabler är OK.

grundläggande C++, funktioner m.m.

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

#include <stdio.h> #include <string.h>

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Tillämpad programmering

Repetition C-programmering

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Operativsystem ID2200/06 omtentamen :00-18:00

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

Operativsystem ID2200/06 tentamen och omtentamen :00-12:00

Operativsystem ID2200/06 omtentamen :00-12:00

Tillämpad programmering

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Pekare och arrayer. Indexering och avreferering

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

Programmering i C++ EDA623 Något om C# EDA623 (Föreläsning 14) HT / 17

Operativsystem (ID2200/06) XX XX:00-XX:00

Exempelsamling Assemblerprogrammering

En kort text om programmering i C.

Avancerad SSL-programmering II

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5

Introduktion C-programmering

Recitation 4. 2-D arrays. Exceptions

Tentamen PC-teknik 5 p

Datorteknik ERIK LARSSON

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Tentamen *:58/ID100V Programmering i C Exempel 3

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Övning 6. Parallellport, timer

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Operativsystem ID1200/06 Tentamen :00-18:00

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Grundkurs Programmering

Första exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson,

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar.

Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00

Support Manual HoistLocatel Electronic Locks

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

... Funktionsanrop. Vad händer när man kör ett program?

Övning 7. Timer, serieport

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

int (*fp) (char, char*) //pekare till funktion som tar //argumenten (char, char*) och //returnerar int

Tellstick-15.c. Kompilering av programmet: gcc -o tellstick-15 -Wall -ltelldus-core -W -O2 -s -pipe -lm tellstick-15.c

Fö 2 TSEA81 Datorteknik och realtidssystem

Introduktion HTML och PHP 732G16 Databaser design och programmering

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

Typkonvertering. Java versus C

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Abstrakta datastrukturer

Föreläsning 12. struct

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Transkript:

BOLMJ Publications स प ण लन स ड ह ईस य हर मर ठ त न. स य भ ष त म ग य क सह. लन स इ ट ल शन प स न ड ह ईस य हर ल ह य पय त सव म हत स य भ ष त आ ण ड ह ईस य हर क स ट व मच सख ल म हत म य आउटप ट छ य च सह.. ल खक:मह श स भ ज ज धव M.S. Software Systems,BITS Pilani. Email ID: mahesh7197@gmail.com

अन म णक : वभ ग प न न बर लन स मर ठ त न :भ ग १: लन सच ओळख आ ण उब ट इ ट ल शन. २ लन स मर ठ त न :भ ग २: लन सच ज न आ ण श न ट म नलच ओळख. ७ लन स मर ठ त न :भ ग ३: कन ल आ ण ड ह ईस य हर च ओळख. १२ लन स ड ह ईस य हर मर ठ त न :भ ग ४: ड ह ईस य हरच ह ल व ड २२ म. लन स ड ह ईस य हर मर ठ त न :भ ग ५: ड ह ईस य हरच प र मटर २९ प स ग म, स स स ब धत म. लन स ड ह ईस य हर मर ठ त न :भ ग ६ :क र टर ड ह ईस य हर २९ ब सक लन स ड ह ईस य हर मर ठ त न :भ ग ७ :क र टर ड ह ईस य हर ३३ फ ईल ऑपर श स लन स ड ह ईस य हर मर ठ त न :भ ग ८:प. स. आय. ड ह ईस य हर ४० ब सक. लन स ड ह ईस य हर मर ठ त न :भ ग ९:य. एस. ब. ड ह ईस य हर ४७ ब सक क स ट. लन स ड ह ईस य हर मर ठ त न :भ ग १०: य. एस. ब. ड ह ईस ५९ य हर फ ईल ऑपर श स. लन स ड ह ईस य हर मर ठ त न :भ ग ११: स प ण य. एस. ब. ड ह ईस ६८ य हर म. लन स ड ह ईस य हर मर ठ त न :भ ग १२: ड ह ईस य हर ल क: ८१ स म फ स, य ट स ल क, पन ल क. लन स ड ह ईस य हर मर ठ त न :भ ग १३: ड ल ड ह ईस य हर ८३ ब सक. लन स ड ह ईस य हर मर ठ त न :भ ग १४: ड ह ईस य हर ड बगर ९० ब सक. स दभ ९१ : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 1

लन स मर ठ त न :भ ग १: लन सच ओळख आ ण उब ट इ ट ल शन. आपण सव जण व ड ज ऑपर ट ग स ट मश एकदम प रचय च आह त, व ड ज बर बरच आणख एक ऑपर ट ग स ट म उदय स आल ह त तच न व य न स य च ऑपर ट ग स ट म च प ढ लनस [Linus Torvalds]य न लन स ऑपर ट ग स ट म म य प तर क ल, लन स रल ज झ ल त 5 ऑ ट बर 1991 ल आ ण त अ तशय स झ ल आजह स ह स प स न त लह न ड ह ईस म य आप य नकळत आपण लन स व पर त असत.आज आप य प रचय च उब ट,र ड ह ट,फ ड र इ य द ऑपर ट ग स ट म च ब स ह लन स ह च आह. लन स क य नट च जगभर त ल ड हलपर य य स स क ड म य नवनव न च ज क न लन स च क ड सम करत असत त. तर लन स ऑपर ट ग स ट म आ ण य च इ टर स शक य स ठ आपण स क य य यल हव... व ड ज व परल आह न त ह??...मग ब स!!...म आह त म य बर बर,आपण मळ न ज ऊय य लन स य सफर वर...मग तय र आह त न लन स शक यल... [ लन स य घर त प हच य स ठ प ढ ल ल क वर टचक म र.http://www.linux.org/.] लन स मर ठ त न आपण य अ क त लन स ऑपर ट ग स ट म कश इ ट ल कर यच त प हण र आह त. आपण व ड ज व परण र अस ल तर उब ट ह व ड ज त लन स व स करण य ल क स ठ म त आह य त य जर इ टरफ स व ड ज स रख आह पण य च ब स लन स आह... य लन स च अज न एक मज हणज तच स स क ड ओप न आह आ ण आपण पण य त आपल क ह तर कड क न क ह भर घ ल शकत..आ ण आपल प शल ऑपर ट ग स ट म : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 2

तय र क शकत... हणज म य स र य कड ख र ल क न पव ण च...तस ह फ र स प न ह..आ ण य त क य वर अवघड पण न ह फ त शक यच तय र प हज... चल मग...आपण आपल स ट म व ड ज म य ब ट कर मग त ए स प अस व व ड ज ७. स ट म च ल झ य वर प ढ ल उब ट य ल कवर ज. http://www.ubuntu.com/download आपण आपल आह त ऑपर ट ग स ट म ठ व न य च बर बर उब ट पण इ ट ल क शकत य म ळ आपल ड ट पण ज ण र न ह आ ण आह य स ट म वर आपण लन स ए ज य क शकत... य म ळ अ जब त घ ब नक.. बनध त य कर... य स ठ उब ट म य व ड ज इ ट लर दल ल आह ज न म ल इ ट ल शन स रख आप य ऑपर ट ग स ट म स बत नव न लन स इ ट ल क न द त. य स ठ उब ट य स ईटवर व ड ज इ ट लर वर टचक म र. य न तर आपण स ह व त हज न प ब स मध न सल ट क न ग ट इ ट लर वर टचक म र. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 3

हज न प ब स य त LST ह ट बल हज न असत य ल उब ट कड न ल ग ट ईम सप ट दल ज त.] न तर न ट ज ऊन Not now, take me to the download ल टचक म र व..[तस त ह दलद र अस ल तर उब ट ऑग न यझ शन ल द णग पण द ऊ शकत ].न तर आपणस प प अप म स ज य ईल त स ह कर व रन कर. मग उब ट इ त ल ह य स स रव त ह ईल. य दर य न आपणस य जर न म प सवड स ह कर व ल ग ल.आ ण उब ट स ठ कत ज ग य यच ह बन स ग व ल ग ल. य स ठ म हत ख ल ल व ड त भर व. य व ड वर क क कर क झ ल आप आप उब ट इ ट ल ह ईल आप य स ट म वर... ३-४ व ळ स ट म र ट ट ह ईल आ ण न तर त ल ग इन व ड ल य ऊन थ ब ल. मग प सवड द ऊन स ट म उब ट म य घ स..एक मध र आव ज य ईल आ ण आपण लन स म य प हचल अस ल...इतक स प आह सगळ.. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 4

आत उब ट आ ण व ड ज म य आलट नप लट न फर य य ट स: स ट म र ट ट क य वर आपणस प ढ ल म ण उब ट क व ड ज अस द न पय य दसत ल. आपणस य द ह मध ल एक पय य नवड न क ण य ह ऑपर ट ग स ट म म य परत ज त य ईल. जस व ड ज ल ख ल य ब ज स ट क ब र असत तस उब ट य वर य ब ज स ट क ब र असत. य ट क ब र य उज य ब ज स आपणस स ट म र ट ट क व शट ड ऊन कर य च पय य उपल द असत त. व ड ज य य क व ड म य व ड ज म ठ,लह न क व ब द कर य स ठ व ड य उज य ब ज स पय य असत त पण उब ट म य त व ड य ड य ब ज स असत त. उब ट व ड य ड य ब ज स अ लक शन वषयक पय य असत त.वर ल क प य त ल बटन ह व ड ज य ट ट म न स रख क म करत य त आपणस ह व त अ लक शन श ध न आपण त उघड शकत. हळ हळ व पर य स स व त क य वर आपणस उब ट एकदम जम नह ज ईल...आ ण आ ण न क च मज य ईल क ह तर ट ऑपर ट ग व पर त अस य च फ ल तर न व व द.. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 5

लन स य क ह मह व य ल स: 1] www.kernel.org :य ल क वर लन सच स स दल ल असत. य य वरत लन स च ट बल हज न दल ल अस ल त पण ड ऊनल ड क स न आप य स ट म वर स ह क शकत.[उद :3.8.3 ह आ त च ट बल हज न आह त दर व ळ अपड ट ह त असत.] २]www.lkml.org : ह लन स च ऑ फ शयल म ल ग ल ट आह.य त आपण भ ग घ व शकत. आ ण हव त आध य म स मध न श ध शकत. य भ ग त क ह श क आ य स व क ठ अड य स न क वच र MJ आह च त म य मदत ल... म झ ह य ग कस व टल ह पण न क स ग... : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 6

लन स मर ठ त न :भ ग २: लन सच ज न आ ण श न ट म नलच ओळख. लन स य नव न आव त न य जर इ टरफ स च स वध आल असल तर लन स च स रव त प स नच ओळख आ ण सव त मह व च फचर हणज ट म नल व ड.य व ड व र आपण स पण स ट म क ल क शकत. आप य व ड ज म य जस ड स कम ड व ड असत तस च उब ट म य ह ट म नल व ड असत. य ल खम ल अ तग त म आपणस लन सच य क व पर कस कर यच य वर भर द ण र आह त. लन स इ टन स ह स य व स य भ ष त आपण स कस समज व न द त य ईल य च म कट न य न कर त आह. म ग ल भ ग त आपण उब ट इ ट ल कस कर यच त प हल आ त आपण उब ट म य आपल स ट म ब ट कर. ट म नल व ड ल च कर य स ठ उब ट य ड य क प य त असल य उब ट सच बटन वर क क कर.आ ण Terminal अस ट ईप कर व मग आपणस ख ल ट म नल व ड दस ल त सल ट क न आपण ट म नल उघड शकत. आपण एक च व ळ अन क ट म न स उघड न य य क वर अगद नर नर ळ क म क शकत ह ट म न स व ड च आणख एक व श ट! आणख एक ग ट हणज लन स च क णत ह ऑपर ट ग स टम य तच य जर इ टरफ स व गळ अस शकत पण श ल /ट म नल श यत स मच असत. य म ळ एकद क ट म नल म य शरल क मग त क णत पण लन स च ऑपर ट ग स टम असत त स रख च भ सत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 7

स टम म य क ह इन ट ल शन कर यच अस य स व इतर क ह च ज स कर यच अस य स आपण स स टमच अ ड म न टर अस व ल गत य स ठ आपणस ट म नलवर ट अक ट तय र क न य व र ल ग इन कर व ल गत ह ब सक ट प प हल आपण शक य. ट अक ऊ ट तय र करण. १) थम ट म नल व ड ओप न कर. २) व ड म य आपण य न व न ल ग इन क ल अस ल त न व दस ल. ३)न तर sudo passwd root ह कम ड व पर. ४) य न तर आप य स ट मच प सवड वच र य म ण द नद ट क. ५)न तर su root ह कम ड व पर. ६)आ ण ट य अक टस ठ नव प सवड (ex:root) अस द ण. ७)मग आपण ट य अक टवर ल ग इन झ ल ल असत. ८)त आपण स एनटर बटन द ब य वर स रव त ल ज थ आपल य जर न म ह त त थ ट ह न व आल ल दस ल. ९)प ढ य व ळ ल परत ट म य ज यच अस य स फ त su root आ ण प सवड दल क आपण ट म य ल ग एन ह त. अ धक म हत स ठ ख ल ल छ य चत पह. आत आपण स ज झ ल आह त ट म नल च प ण त व पर कर य स ठ... : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 8

ट म नल य कम स : ख ल ल श ल कम स लन स व य न स स ठ स मच आह त. ls : ह कम ड च ल डर टर मध ल फ ईल आ ण फ डर द खवत. pwd :कम ड च ल डर टर क णत य डर टर च ल क शन द खवत. ps : ह कम ड स गणक त ल च ल स स द खवत. cat : ह कम ड च ल फ ईल मध ल क ट ट द खवत. cp : ह कम ड फ ईल क प स ठ व परत त य त cp ज न फ ईल नव न फ ईल अस व परत त. mv : ह कम ड फ ईल च न व बदल य स ठ व परत त. mv ज न न व नव न न व. rm: ह कम ड फ ईल डल ट क व रम हल स ठ व परत त. echo : ह कम ड अ य म ट प ठव य स ठ व परत त. grep :एख य फ ईल मध न व श ट श द असण र ओळ श धण. grep श द फ ईलच न व sort :एख द फ ईल व च न य त ल ड ट ओळ न ल वल ज त आ ण त परत फ ईल म य लहल ज त. mkdir :नव न डर टर तय र करण. exit :ट म नल ब द करण. [Ref:Unix Made Easy:Tata McGrow-hill:Muster] हच अल एड टर: ट म नल म य म ल ह य स ठ हच अल एड टर हणज च VI ए डटर व परत त. य च च स ध रत हज न VIM ह पण लन स न दल ल आह फ त य त क ड नर नर य कलर क ड म य दसत ब क VIM ह अ तग त vi एड टरच व पर त असत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 9

vi एड टर ह एकतर कम ड म ड म य क व इ स ट म ड म य च लत हणज एक तर क ड लह शकत न ह तर क ड म य बदल क शकत पण द ह एक च व ळ न ह. कम ड म ड म य एड टर र ड ओ ल म ड म य च लत. थम vi फ ईल च न व अश कम ड द ऊन आपण फ ईल एड टर म ड म य उघड शकत. न तर i बटन द ब न मग आपण य एड टर म य लह शकत. लह न झ यवर Esc बटन द ब य वर एड टर र ड ओ ल म ड म य ज त. कस ल हलव य स ठ h, j,k,l ह बटण व परत त. एड टर य फ ईल मध न एख द श द श ध यच अस य स /श द अस श धल ज त.आ ण प ढच श द प ह य स ठ परत n बटन द ब न न ट ज त य त. एड टर मध न ब ह र पड य स ठ Ctrl+Q बटन द व व आ ण न तर q! कम ड व पर व. आ ण फ ईल स ह क न ब ह र पड य स ठ wq! ह कम ड व पर व. एख द ओळ डल ट कर य स ठ dd ह कम ड व पर व. एख द ओळ जर च क न डल ट झ ल अस ल तर तल परत आण य स ठ u कम ड व पर व. एख द अ र डल ट कर य स ठ कम ड म ड म य ज ऊन य अ र वर कस लन ऊन x बटन द ब व. एख य श द य प ढ न च ल क रच अस य स य श द वर ज ऊन a ह बटन द ब व मग य प ढ ल अ र वर कस ल श ट ह त. एख य व श ट ओळ ल ज य स ठ :ओळ न बर [:११२]आ ण ए टर ह कम ड व परत त. एख द अ र र ल स कर य स ठ य अ र वर ज ऊन r बटन द ब व आ ण न तर नव न अ र द ब व त अ र र ल स ह ईल. आपण य अ क त आपणस म ग स ठ ल गण य ब सक कम ड प ह य, य च व पर आपण स vi एड टर म य म ल हत न न क ह ईल. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 10

य शव य ब य च कम ड आह त पण आपण जत य ल गत ल तत य च कम ड शकल आह त. अ धक कम ड ज ण न घ य स ठ प ढ ल ल क वर टचक म र. ट स: ट म नल म य आध व परल ल कम ड परत प ह य स ठ व व पर य स ठ अप-एर - क व पर व. तस च एख य फ ईल च न व ट ईप कर य ऐवज य फ ईलच स रव त च क ह अ य र ट ईप क न tab बटन द ब व मग फ ईल च प ढच न व आप आप य ईल. अश त ह न आपण ट म नल कम ड आ ण vi एड टर य कम स प ह य,प ढ य अ क त आपण: कन ल आ ण ड ह ईस य हर च ओळख क न घ ण र आह त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 11

लन स मर ठ त न :भ ग ३: कन ल आ ण ड ह ईस य हरच ओळख. नम क र,य भ ग त आपण लन स कन ल आ ण ड ह ईस य हर य च ओळख क न घ ण र आह त, य च आपण स ड ह ईस य हर म तय र करत न फ र फ यद ह ईल. कन ल ह लन स ऑपर ट ग स ट मच ग भ आह. लन स क य नट सतत य कन ल ल स ध रत असत त व कन ल च नवनव न हज न रल ज करत असत त. लन सच कन ल ह c आ ण assembly य द न भ ष त ल हल आह. कन ल ह कन ल प स म य रन ह त असत. कन ल ह स टम च ह ड व अर आ ण य जर च अ लक श स य य त ल मडलव अर च क म करत. कन लच अस ल क ड ह ह ड व अर वर अवल ब न असत ब क स क ड ह फ र म ठ आह त ह ड व अर वर अवल ब न नसत. कन ल ह य जर कड न ड ट घ ऊन त स सर, म मर इतर ड ह ईस य य श क य नक शन करत असत. लन स कन ल लन स शक य च खर मज य त ज ह आपण स ट म इ टरन स शकत. लन स य जस जस आत घ सत ज त तसतश क ल सट व ढत आ ण ततक च त शकण र म चक र ह त. आपण य अ क त लन स य ग य त न क क य दडल ल आह त प ह य. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 12

लन स कन ल : य न स स ट म ह अन क स स एकच व ळ ह त ळत असत य च ब स हणज ऑपर ट ग स ट म च कन ल,कन ल ह ऑपर ट ग स ट मच प वर, म मर, स स य मह व य ग ट स भ ळण र म ठ ब स क ड असत.कन ल ऑपर ट ग स ट म म य ख ल ल म ण व गव ग य भ मक बज वत. स स म न जम ट:अन क स स तय र करण, य स सरल प ठव न श य ल न स र च लवण आ ण न तर स स ब द करण ह कन लच स स म न जम टच क म. म मर म न जम ट : स स ल म मर मळव न द ण क म झ यवर त म कळ करण आ ण उपल द म मर च हच अल अ सव प न नय जन करण. फ ईल स ट म: लन स च ब स हणज य च फ ईल स ट म. लन स म य सगळ क ह फ ईल अस च म नल ज त हणज अगद फ डर हणज पण फ ईल च असत आ ण स ट म ल ज डल ल क णत ह ड ह ईस ह ह ऑपर ट ग स ट म स ठ फ ईलच असत... ह आह न म त ग ट.. लन स कन ल य फ ईल स ट मच चरल ल यर ह ड व अर य वर तय र करत. [अश अन क फ ईल स ट म आह त लन स म य,उद :FATफ ईल स ट म] ड ह ईस क ल: स ट म ल ल वल य य क ड ह ईस क म क न घ य स ठ क ह ठर वक क ड र न क ल ज त. य ल ड ह ईस य हर हणत त कन ल म य स ट म च ब सक ड ह ईस य हर इन ब ट असत त.उद : क-ब ड च ड ह ईस य हर. न टव क ग:न टव क ग च प क स तय र करण प ठवण आल ल प क स ओळखण आ ण य च व पर करण य स र य न टव क ग य ग ट कन ल ह त ळत. [Ref:Linux device driver :orelly:hartman] कन ल प स आ ण य जर प स: य जर प स:य जरच म,shell क व इतर अ लक श स ह य जर प स च भ ग आह त.य अ लक श स न स ह ड व अर बर बर म हत च द व णघ व ण क य च असत पण त ड यर ट क शकत न ह त य स ठ य न कन ल च मदत घ व ल गत. कन ल प स:कन ल ह ह ड व अर बर बर ड यर ट स भ षण कर त असत त.य त ड ह ईस य हर आ ण य च फ श स, स ट म क स ह य जरल ह ड व अर श स ब धत क म कर य स मदत : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 13

करत त. य व र र ड, र ईट ऑपर श स करत य त त.य म ड म य य जर ल प ण अ धक र असत त. ड ह ईस य हरह अ लक श स आ ण ह ड व अर य य त ल द व हण न क म करत. य जर प स [अ लक श स] कन ल प स [ ड ह ईस य हर] १ ह ड व अर २ ड ह ईस य हर हणज क य? आप य स टमल ड ह ईस ज ड य वर त ड ह ईस कस क म कर व य स ठ स टमम य य ड ह ईसस ठ च त ड ह ईस कस क म कर व ह ठरव य स ठ क ह क ड ल हल ल असत य स ड ह ईस य हर हणत त.जस आपण आप य स टमल क ह नव न ड ह ईस ज डल क आप य ल य ड ह ईस च य हर इ ट ल कर व ल गत य न तरच त ड ह ईस क म कर यल स रव त करत. क ह य हर स टम म य च असत त आपण ड ह ईस ज ड य वर त ल ड ह ऊन क म क ल गत त. जस आपण प न ई ह आप य क य टर ल ज डल क आपल क य टर य स ठ च य हर आप आप इ ट लकरत मग आपल प न ई ह च ल ल गत. लन सच एक म त फचर हणज ऑपर ट ग स ट म च ल असत न आपण ड ह ईस य हर ल ड क व अन ल ड क शकत य स ठ स ट म र ट ट कर यच गरज न ह.य च लन स य स वध म ळ लन स स ह स म य व परत त. ड ह ईस य हर य मल कन ल य भ ष त म य स अस ह हणत त. य क म य ल ह य ल दल य ड ह ईस स ब धत क मक ज प हत. ड ह ईस य हरच क र टर य हर [ब ईट ड ट सफर], ल क य हर[ ट र ज ड ह ईस],न टवक य हर[प क स ड ट सफर] अस क र पडत त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 14

आप य ट म नल व ड म य ज ऊन ls /usr/src/linux/drivers/ ह कम ड द य स आपण स आप य लन स स ट म मध ल ड ह ईस य हर प ह यल मळत ल. म य स कम स: म य स ह.ko [कन ल ऑ ज ट ]फ ईल य प त असत त.ख ल ल कम स ट म नलवर व प न आपण आपण स हव त म य ल कन ल म य घ ल क व कन ल मध न क ढ शकत. lsmod : ह कम ड आप य स गणक त ल म य स हणज च ड ह ईस य हर च ल ट द खवत. [न द :प ढ ल कम ड म य आपण स कम ड बर बर फ ईल च न व य व ल गत ]. insmod म य ल फ ईल : ह कम ड व प न आपण आपणस हव त म य ल कन ल म य घ ल शकत. modprobe म य ल फ ईल : ह कम ड व पर य स,आपणस हव त म य ल व य म य लश नगड त अस म य स आप आप कन ल म य ज त त. rmmod म य ल फ ईल : ह कम ड व प न आपण आपणस हव त म य ल कन ल मध न ब ह र क ढ शकत. अश त ह न आपण य भ ग त कन ल आ ण ड ह ईस य हर य च ओळख क न घ तल आह.आपणस ड ह ईस य हर म लहण च ल कर य आध ह ब सक म हत समजण फ र मह व च आह. प ढ ल अ क त आपण ड ह ईस य हरच ह ल व ड म कस लह यच त प हण र आह त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 15

लन स ड ह ईस य हर मर ठ त न :भ ग ४: ड ह ईस य हरच ह ल व ड म. आपण क णत ह नव न म ग भ ष शकत न स रव त ह ल व ड म य ब सक म प स न करत.य भ ग तह आपण लन स ड ह ईस य हरच ह ल व ड म म ल हण र आह त. य भ ग त आपण म गल ल गण य सव ब सक ग ट शकण र आह त य म ळ ह भ ग फ र मह व च आह.प ढच म करत न ब य च व ळ आपणस य भ ग च र फर स दल ल आह. ड ह ईस य हर म ह ल य र स रख क म करत य च अथ अस क अ लक शन य य त ल फ श स रन करत.ह म c य भ ष त ल हल ज त पण य य त C म य व परत तस main() ह फ शन नसत.ह म कन ल व र ल क आ ण ल क क ल ज त य स ठ य स क प ईल करण गरज च असत. लन स ड ह ईस य हर म य क टर आ ण ड टर असत त.म य ल ल ड क य वर क टर क ल क ल ज त. आ ण rmmod व र म य ल क ढ न ट क य स ड टर क ल क ल ज त य हर म य म य ल init,exit फ श स ह क म प हत त. लन स ड ह ईस य हर म लह य स स रव त कर य अग दर आपण प ढ ल ग ट व स ट ग करण मह व च आह. आप य लन स क य टरमध ल ट म नल व ड ओप न कर. ट अक ट न ल ग इन कर [su root]. [ ट अक ट कस तय र कर व ह ज ण न घ य स ठ य थ टचक म र.] न तर whoami [म क ण ] ह कम ड व प न आपण ट अक ट मध च आह त क य च ख क न घ ण. न तर आपण ह म म य एक फ डर तय र कर व ज थ म ट अर करत य त ल. आ ण य फ डर म य ज व.[cd /home/mj/]म MJ न व च फ डर तय र क न य त क म करण र आह. आपण क ण य फ डर म य आह ह ज ण न घ य स ठ pwd ह कम ड व पर व हणज आपल च ल डर टर क णत त समज ल. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 16

आपण vi एड टर व प न आपल म लहण र आह त तर vi hello.c ह कम ड द य वर अग दर जर hello.c फ ईल अस ल तर त ओप न ह ईल अ यथ नव न hello.c फ ईल तय र ह ईल.आ ण आपण हच अल एड टर य [vi] म य ज ऊ. vi म य म लह य स ठ आध i बटन द ब व तरच vi एड टर इ सट म डम य य त आ ण आपण vi एड टरम य लह शकत. य न तर ख ल ल म प ट कर व क व ट ईप कर व. क व ड यर ट लन स य ट ट एड टर म य ज ऊन क ड क प प ट क न त फ ईल.c ए सट शन द ऊन स ह कर. ह ल व ड म: #include<linux/init.h> #include<linux/module.h> MODULE_LICENSE("GPL"); static int hello_init(void) printk(kern_alert "Hello world"); return 0; static void hello_exit(void) printk(kern_alert "Goodby"); module_init(hello_init); module_exit(hello_exit); आपण वर ल म य क डच प ट करण ओळ न पह त ज ऊय. म य स रव त ल क ह ह डर फ ईल इ ल ड कर य ल गत त. य इ ल ड फ ई सच आप य स गणक त ल ल क शन प ह य स ठ /root/inclue/linux य ल क शन वर ज आपल स ड ट एच [.h]फ ई स च स ठ मळ ल. 1) init.h ह फ ईल init ह स स ट ट कर य स ठ इ ल ड क ल ज त. जवळप स सव च म म य ह फ ईल इ ल ड कर व ल गत.य ह डर फ ईलम य स ट म ब ट आ ण म य स कन ल म य ट क य स ठ व क ढ य स ठ य च उपय ग ह त.init आ ण exit ह फ श स य च फ ईल म य डफ ईन क ल आह त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 17

2) आपण जर ड ह ईस य हर लह त अस तर module.h फ ईल इ ल ड करण ब धनक र आह.य फ ईल म य म य सश नगड त फ श स उपल द असत त. 3) MODULE_LICENSE ह ओळ आपण GPL ह ल यस स व परण र आह त स गत. GPL च अथ न प लक ल यस स [GNU Public License]अस ह त. 4) ज ह म य ल कन ल म य ल ड ह त त ह hello_init ह फ शन क म करत.य फ शनल इ नशल यझ फ शन हणत त.जर ह फ शन फ ल झ ल तर त एरर क ड रटन करत हण न ह फ शन कध च void नसत. 5) printk फ शन :जस आपण c म ग म य printf व परत ह त तस लन स कन ल म ग म य prink()ह ट ग स ठ फ शन व परत त.य फ शनम ळ ग ड ट ह कन ल य ल ग बफर म य स ठवल ज त. prink म य अज न एक स वध असत त हणज म स जच मह व ठरवण य स ठ म स ज य स रव त ल क ह ट ग ल वत त. printk फ शन म य व गव ग य आठ loglevel असत त. य kernel.h य फ ईल म य कन ल म य इन ब ट असत त. printk फ शन य आठ ल ग ल हल ख ल ल म ण : KERN_EMERG : ह ल हल म स ज ज ह इमज स अस ल त ह व परत त.उद : स स ब द ह ण. KERN_ALERT: ल व ध न घ य स ठ. KERN_ERR :च क दश व य स ठ KERN_CRIT: ट कल सर यस ह ड व अर व स टव अर ल म स ग य स ठ. KERN_WARNING :ध य च स द श द य स ठ. KERN_NOTICE:स ध न ट स म स ज स ग य स ठ. KERN_INFO:म हत स ग य स ठ. KERN_DEBUG:ड ब ग ग करत न म स ज प ह य स ठ. वर ल म म य आपण Hello world ह म स ज ल ग करण र आह त. 6) य न तर रटन फ शन व र आपण फ शन क ल करत न आल य एररच क ड रटन क ल ज त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 18

7) म य ल कन ल मध न क ढ न ट क य स ठ hello_exit ह फ शन व परत त.ह फ शन रन झ य न तर GoodBy ह म स ज ल गम य र क ड ह त. 8) module_init ह फ शन कन ल ल म य स इ नशल ईझ झ यवर क णक णत फ शन रन कर यच त स गत त. 9) module_exit ह फ शन कन ल ल म य स क ढ न ट क य वर क णक णत फ शन रन कर यच त स गत त म एड टर म य ट इप क न झ य न तर Ctrl+Q बटन क व Esc द ब न आपण ए डटर मध न ब ह र पड व. म स ह क न ब ह र पड य स ठ wq! ह कम ड व पर व. आत आपल प हल म तय र झ ल आह त परत एकद प ह य स ठ आपण.c फ ईल ट ट एड टर मध न ओप न क न च क क शकत क व cat hello.c ह कम ड द ऊन फ ईल र ड ओ ल म ड म य बर बर आह क त प ह शकत. म क फ ईल: वर ल क ड रन कर य अग दर त म क फ ईल व प न क प ईल कर व ल गत. य स ठ आपल म य फ डर म डग आह यच फ डर म य Makefileन व च फ ईल तय र करण अ यथ त ह ल त म य फ ईल च प ण प त य व ल ग ल. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 19

[न द:य त ल Makefile ह श द क स स स ट ह आह य म ळ M ह क प टल ल टस म य हव.] obj-m सम र क णक णत म य स ब ड कर यच आह त य च न व य व त. य न तर.o,.koस र य फ ईल क प ईल झ य वर आप आप तय र ह त ल. [न द:य म य आपण आप य फ ईल च न व.c य ए सट शन च व पर न करत.o [ऑ ज ट] य ए सट शन च व पर करण र आह त] ख ल ल क ड Makefileम य प ट कर व. obj-m +=hello.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean क डच म हत : shell uname r : ह कम ड आप य स ट म वर कन ल च क णत हज न आह त श धत.प ढ ल ओळ ह दश वत क, ल ड ह ण र म य ल ह कन ल च भ ग आह आ ण ल ड झ य न तर त कन लच भ ग बन ल. म प ढ ल म ण रन करण : ट म नल व ड म य ज ऊन आपल म क फ ईल अस ल य फ डर म य ज ण. make कम ड व प न आपल क ड आपण क प ईल कर व क ड क प ईल झ ल तरच ब क सप ट ग फ ई स तय र ह त ल अ यथ एरस च म स ज मळ ल. य च बर बर क ण य ओळ ल च क झ ल आह य ओळ च न बर पण मळ ल. आपण परत vi hello.c क न क ड म य ज ऊन आव यक च ज स कर व त. sudo insmod hello.ko: ह कम ड व पर य वर आपल म य ल कन ल म य इ ल ड ह त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 20

आत त झ ल क न ह ह च क कर य स ठ कन ल ल ग मध ल म स ज प ह य स ठ dmesg ह कम ड व पर. आपण स Hello World ह म स ज दस ल हणज इ न शयल यझ शन फ शन स रळ त च लत अस ल. lsmod ह कम ड व प न आपल म य ल ह ल ट म य आह न त च क करण. न तर आपल म य ल क ढ न ट क य स ठ sudo rmmod hello.ko ह कम ड व पर आ ण dmesg कम ड व प न म स ज च क करण. [न द : आपण एक म य ल एकद च इ सट क शकत द स य द त इ सट कर यच अस य स आध च म य ल क ढ न मग परत स ध रत म य ल इ सट कर व. ] अश क र आज आपण कन ल च ब सक म कस कर व ह शकल त. म आप य ल स प ज व हण न म क ल ल म फ ई स ज डल य आह त.ख ल ल hello.c आ ण Makefile य च.txt ह ए सट शन क ढ न य फ ई स आपण जश य तश व प शकत.[ह ए सट शन फ ईल ल गल ज ड य स ठ म ल वल ल आह.] आपल वत च ड ह ईस य हर कस व टल आप य ल..झक स न.. आत य च म म य स ध रण करत करत आपण प ढच म शकण र आह त.मग तय र रह... [Ref: Linux For You magazine] : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 21

लन स ड ह ईस य हर मर ठ त न :भ ग ६: ड ह ईस य हरच प र मटर प स ग म, स स स ब धत म. म ग ल भ ग त आपण ब सक ह ल व ड च म प हल त,इत य स य प त न ड ह ईस य हर लह यल त ह ल न क च मज आल अस ल.य भ ग त आपण थ ड प ढ ज ऊन व गव गळ ब सक स शकण र आह त. समज त ह ल त म य ड ह ईस य हरल क ह प र मटर य यच असत ल तर त कस य यच त आपण य अ क त प ह य. थम आपण आप य म य लल फ त एक प र मटर कस प ठव यच त प ह य. #include<linux/init.h> #include<linux/module.h> #include<linux/moduleparam.h> MODULE_LICENSE("GPL"); int paramtest; module_param(paramtest, int,s_irusr S_IWUSR); static int param_init(void) printk(kern_alert "Showing the parameter demo"); printk(kern_alert "VALUE OF PARAMTEST IS: %d",paramtest); return 0; static void param_exit(void) printk(kern_alert "Exiting the parameter demo"); module_init(param_init); module_exit(param_exit); [Ref: Linux For You magazine] वर ल म म य म य ल प र मटर श नगड त फ श स च ल भ घ य स ठ moduleparam ह फ ईल ह डर म य इ ल ड क ल ल आह. module_param(paraameter name, data type,permission); ह फ रम ट कन ल ल प र मटरच न व, य च ड ट ट ईप आ ण य स द य ज ण य पर मशन दश वत. पर मशन च ५ क र पडत त: S_IWUSR,S_IRUSR,S_IXUSR,S_IRGRP,S_WGRP : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 22

य त S_I ह ह डर सव न क मन आह. R =र ड व चण,W =र ईट ल हण,X= ए झ य ट करण. USR=य जर,GRP= प य त OR हणज ऑर ऑपर शन क न एक प ज त पर मशन स ट करत य त त. ह म रन कर य स ठ प ढ ल प य य आह त. आप य म क फ ईल म य hello.o य ज ग आप य वर ल फ ईल च न व [parameter.o] द ण.आ ण फ ईल स ह करण. न तर make ह कम ड व प न फ ईल क प ईल करण. आत ह म य ल कन ल म य ट क य स ठ :sudo insmod parameter.ko paramtest=2 : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 23

ह कम ड व परण य त आपण paramtest य स २ ह स य प र मटर हण न प ठवल. आत आपल आउटप ट प ह य स ठ dmesg कम ड व परण. त ह आपण स Value of paramtest=2 अस आउटप ट मळ ल. प र मटरच अ र : आत एक प ज त प र मटर प स कर य स ठ प र मटरच अ र प ठव व ल गत. य स ठ प ढ ल म पह : #include<linux/init.h> #include<linux/module.h> #include<linux/moduleparam.h> MODULE_LICENSE("GPL"); int paramarray[3]; module_param_array(paramarray, int,null, S_IWUSR S_IRUSR); static int array_init(void) printk("into the parameter Array demo"); printk("array elements are :%d\t%d\t%d",paramarray[0],paramarray[1], paramarray[2]); return 0; static void array_exit(void) printk("exiting the array parameter demo"); module_init(array_init); module_exit(array_exit); य त int च ३ इतक स ईझ असल ल अ र व परल आह. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 24

अ र ह प र मटर हण न व पर य स ठ module_param() य ज ग module_param_array() ह फ शन व परल आह. य त इतर प र मटर स बत counter असत ह कत प र मटर प स क ल य च न द ठ वत आपल म म य त स वध व परल न ह आह हण न आपण त ० अस ठ वल आह. आपण sudo insmod parameterarray.ko paramarray=1,2,3 अस प र मटर अ र स बत म य ल ल ड करत. त ह आपणस dmesg क य वर य त न स य आउटप ट नवर दसत ल. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 25

स स स ब धत म. आप य स गणक त अन क स स च ल असत त आप य ल प ढ ल म लहत न क णत स स च ल आह क णत स स ब द आह य च म हत स स आय ड ह म हत स ट म कड न घ व ल गत अश व ळ आपण स प ढ ल स स स ब धत म न क च उपय ग त य ईल. #include<linux/init.h> #include<linux/module.h> #include<linux/sched.h> MODULE_LICENSE("GPL"); static int test_init(void) struct task_struct *task; for_each_process(task) printk("process Name :%s\t PID:%d\t Process State:%ld\n",task->comm,task->pid, task->state); return 0; static void test_exit(void) printk(kern_info "Clearing up.\n"); module_init(test_init); module_exit(test_exit); लन स म य य क स सल क ह ग ट ज ड य ग ल य असत त जस क स सच आय ड न बर, स स च च ल थत ल ग इ य द. स स स ब धत म ल हत न आपणस sched.h ह फ ईल ह डर म य इ ल ड कर व ल गत. आपणस task_struct य चर च प टर क न य य आध र आपण भरप र म हत मळव शकत. आपण वर ल म म य आप य स ट म मध ल स सच आय ड न बर, स स च च ल थत ल ग इ य द म हत प ह. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 26

य त task न व च प टर तय र कर य त आल ल अस न आपण आप य स ट म मध ल स स य चर प टरच व पर क न ड ल करण र आह त. ह म रन क य न तर आपण स स स च ल ट दस ल. अश र त न आपण आप य स ट म मध ल स स ब ल प ण पण म हत घ व शकत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 27

य स स आय ड आपण इ टरन टवर सच क रण आपणस ह य य स स ब ल अ धक म हत घ व शकत.तस च क णत स स क णत अ लक शन च ल आह य च ट ट क य ह स म हत मळत. अश र त न आपण प र म टर प स ग आ ण स स श नगड त म कस रन कर व त प हल त.प ढ ल भ ग त आपण क र टर ड ह ईस य हरच म हत घ व य. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 28

लन स ड ह ईस य हर मर ठ त न :भ ग ७ :क र टर ड ह ईस य हर ब सक आपण ब सक ड ह ईस य हर कस लह यच ह प हल त,आत ख स क र टर ड ह ईस य हर कस लह यच त य अ क त प ह य. आपण म ग ल लन स कन ल य भ ग त ह पण शकल आह त क लन स म य ड ह ईस स एक फ ईल य प त असत.य ड ह ईस फ ईलच न व ह आप य स ट मवर ल अ लक शन आ ण ड ह ईस फ ईल य य त ल द व हण न क म करत.आ ण ड ह ईस फ ईल आ ण ड ह ईस य य म य स भ षण कर य स ठ य ड ह ईसच न बर मह व च असत. ड ह ईस फ ईलच न बर ह द न न बर य ज ड न बनल ल असत :म जर न बर आ ण म यनर न बर. <major,minor>.आप य स टमम य अन क य हर एख द म जर न बर [क मन] व प शकत पण य च म यनर न बर व गळ अस ल.कन ल म यनर न बर च व पर न क क णत ड ह ईस कन ट क ल आह त समज न घ य स ठ करत. आप य स ट म मध ल क र टर ड ह ईस य हर प ह य स ठ प ढ ल कम ड ट म नल व ड द ऊन प ह शकत. $ ls l /dev/ grep ^c ls l /dev :य कम ड न आपण सव ड ह ईस प ह शकत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 29

त आपण स प ढ ल म ण दस ल: य त brw : ह ल क ड ह ईस य हर तर crw क र टर ड ह ईस य हर दश वत त. dev_t ह रएबल य म य द ह न बर स ठवल ल असत त. [१२ ब ट म जर +२० ब ट म यनर=३२ ब ट ड ह] MKDEV( int major,int minor) ह कम ड व परल क ड ह ईस dev तय र ह त. आपल ड ह ईस फ ईल ह ड ह ईस य हरल ज ड य स ठ प ढ ल द न प य य आह त. १.आप य ड ह ईसच <major,minor> न बर द ऊन र ज टर करण. २. ड ह ईस फ ईल य ऑपर श स आ ण ड ह ईस य हर च फ श स ज डण. ड ह ईसच न बर मळव य स ठ <linux/fs.h> मध ल प ढ ल API फ र मह व च आह त. int register_chardev_region(dev_t first,unsigned int count, char *name); int alloc_chardev_region(dev_t *dev,unsigned int firstminor,unsigned int count,char *name); void unregister_chardev_region(dev_t first,unsigned int count); : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 30

प हल API ह cnt इतक न बर असल ल ड ह ईस र ज टर करत. जर ह फ श स यव थतपण च ल तर त ० ह रटन करत आ ण जर क ह ल म आल तर नग ट ह स य रटन ह त. द सर API ह आप आप म कळ म जर न बर श ध न ड ह ईस र ज टर करत.त प हल म यनर न बर ह श यत ० ह च असत. तसर API ह आपल स आपल ड ह ईस न बर व प न झ य वर म कळ कर य स ठ व परत त.ह API ल न अप फ शन म य व पर व. [REF:Linux Device Driver Book] ड ह ईस न बर दश वण र म: #include <linux/module.h> #include <linux/version.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/fs.h> static dev_t first; //globle variable for the device no int init ofd_init(void) /*const*/ printk(kern_info "NAMSAKAR:ofd reg"); if (alloc_chrdev_region(&first, 0, 3, "Mahesh") <0) return -1; printk(kern_info "<Major,Minor>: <%d,%d> \n", MAJOR(first),MINOR(first)); return 0; static void exit ofd_exit(void)/*destructor*/ unregister_chrdev_region(first, 3); printk(kern_info "by Gn:ofd unreg"); module_init(ofd_init); module_exit(ofd_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("MJ"); MODULE_DESCRIPTION("OUR FIRST character DRIVER"); ह म रन क य न तर mahesh न व च ड ह ईस य हर तय र ह ऊन य च म यनर आ ण म जर न बर आपण स दस ल. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 31

वर ल आउटप ट व ड म य आपण आप य ड ह ईस च म जर न बर आ ण म यनर न बर ड ल झ ल ल प हल त ह आपण आप य ममध ल printkफ शन व प न आउटप ट व ड म य द खवल आह त. वर ल च त आपण आपल ड ह ईस स टम म य र ज टर झ ल आह क न ह ह /proc/device म य ज ऊन प हल य थ आपण mahesh न व च ड ह ईस तय र झ ल ल दस ल.न तर आपण /devम य ज ऊन प ह य स आपण स ड ह ईस फ ईल तय र झ ल न ह ह कळ ल मग आपण mknodच व पर क न न ड तय र क ल व य त आप य ड ह ईस स ठ फ ईल तय र झ ल ल दस ल. ह च क म आपण ऑट म टक पण क शकत त आपण प ढ ल भ ग त प हण र आह त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 32

लन स ड ह ईस य हर मर ठ त न :भ ग ८ :क र टर ड ह ईस य हर फ ईल ऑपर श स. क र टर ड ह ईस य हर ह य च फ ईल ल ज डल ग ल ल असत आपल सव क म त फ ई स य म यम त न प ण करत. फ ईल ऑपर श स य चर म य पण फ ईल च सव फ श स ड ल अर क न आपण त फ ईल ओपन क ज, र ड,र ईट क शकत. य क फ शन म य स य आपण य फ शन च ट क न न व द ऊ. य म ळ कर टर ड ह ईस य हर च ब सक म ख ल ल म ण ह ईल. #include <linux/module.h> #include <linux/version.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/device.h> #include <linux/cdev.h> static dev_t first; //globle variable for the device no static struct cdev c_dev; //globle var for char struct static struct class *cl; //globle var for device class static int my_open(struct inode *i, struct file *f) printk(kern_info "Driver :open()\n"); return 0; static int my_close(struct inode *i, struct file *f) printk(kern_info "Driver:close()\n"); return 0; static ssize_t my_read(struct file *f,char user *buf,size_t len,loff_t *off) printk(kern_info "Driver:read()\n"); return 0; static int my_write(struct file *f,const char user *buf,size_t len,loff_t *off) printk(kern_info "Driver:write()\n"); return len; static struct file_operations pugs_fops=.owner = THIS_MODULE,.open = my_open,.release =my_close,.read =my_read,.write =my_write ; : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 33

static int init ofcd_init(void) /*const*/ printk(kern_info "NAMSAKAR:ofd reg"); if (alloc_chrdev_region(&first, 0, 3, "Mahesh") < 0) return -1; if ((cl = class_create(this_module, "chardrv")) == NULL) unregister_chrdev_region(first, 1); return -1; if (device_create(cl, NULL,first, NULL, "mynull") == NULL) class_destroy(cl); unregister_chrdev_region(first, 1); return -1; cdev_init(&c_dev, &pugs_fops); if (cdev_add(&c_dev, first, 1)== -1) device_destroy(cl,first); class_destroy(cl); unregister_chrdev_region(first,1); return -1; return 0; static void exit ofcd_exit(void)/*destructor*/ cdev_del(&c_dev); device_destroy(cl, first); class_destroy(cl); unregister_chrdev_region(first,1); printk(kern_info "by Gn:ofd unreg"); module_init(ofcd_init); module_exit(ofcd_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("MJ"); MODULE_DESCRIPTION("OUR FIRST character DRIVER:automatic"); [REF:Linux for you magazine] : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 34

क णत.h फ ईल कध इ ल ड कर व : #include <linux/init.h> : ब सक इ न शयल यझ शन #include <linux/module.h> :क णत ह म य स लहत न #include <linux/version.h> : लन स हज नच ड ट मळव य स ठ. #include <linux/kernel.h> : prinitk() ह फ शन व परत य य स ठ. #include <linux/fs.h> :फ ई स य नगड त ऑपर श स कर य स ठ #include <linux/device.h> : ड ह ईस श नगड त ऑपर शन करत न. #include <linux/cdev.h> :म जर व म यनर न बरसह कर टर ड ह ईस तय र कर य स ठ. #include <linux/slab.h> :kmalloc() ह फ शन व पर य स ठ. #include <linux/errno.h> :एरस च क ड य फ ईल म य असत. #include <linux/types.h> :size_t,dev_t य स रख ड ट ट ईप सप ट स ठ. #include <linux/fcntl.h> :o_accmode स ठ #include <asm/system.h> :cli(), _flags व पर य स ठ #include <asm/uaccess.h> :copy_from /to _users य स रख फ श स व परत न. module.h मध ल फ श सच म हत : MODULE_ALIAS(_alias) य जर प स म य म य लच न व व म हत द य स ठ. MODULE_LICENSE(_license) म य ल क णत ल यस स व परण र आह य च न व. MODULE_AUTHOR() म य लच ल खक. MODULE_DESCRIPTION() म य ल य क म वषयक थ ड य त म हत MODULE_PARAM() म य ल ल ड करत न प स क ल ज ण र प र मटर MODULE_VERSION() व पर य ज ण य म य ल च हज न आपण modinfo म य लच न व.ko अश कम ड दल असत वर ल सव म य ल श नगड त म हत आपणस मळत. फ ईल ऑपर श स य क ह मह व य ग ट : वर ल क ड म य ओपन आ ण ल ज फ शन int रटन करत त,० हणज यश व पण प र पडल आ ण नग ट ह हणज क ह तर ल म आह.पण र ड आ ण र ईट ह फ श स क ह प झ ट ह न बर रटन करत त त हणज कत ब ईट ड ट र ड क व र ईट झ ल हण नच य फ श स च रटन ट ईप ssize_t आह. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 35

तस च आणख एक म त ग ट आह...read() ह फ शन len ब ई स इतक ड ट buf य बफर म य ल हत आ ण कत ब ई स ल हल त त स य रटन ह य हण न प ठवत. हणज च र ड फ शन ह य जर प स फक बफर म य ड ट ल हत क रण त य जरल व चत व व परत य व...आह न ग मत र ड फ श स बफर म य र ईट करत... क ह मह व च क डच भ ग: loff_t (*llseek) (struct file *, loff_t, int); य त llseek ह म थड फ ईल च च ल र ड र ईट प झशन बदलत, loff_t हणज ल ग ऑफस ट. ssize_t (*read) (struct file *, char user *, size_t, loff_t *); ह फ शन ड ह ईस कड न ड ट घ त न व परत त जर य ठक ण क ह च ड ट नस ल तर त EINVAL हणज च इ ह ल ड अ य म ट हण न एरर दश वत. int (*open) (struct inode *, struct file *); ड ह ईस ओपन करण ह ड ह ईस फ ईल वर क ल ज ण र प हल य. struct module *owner ह आप य म य ल ल प ट करत आ ण जर आपल म य ल क मत अस ल तर त क ढ न ट क य स तब ध करत. बय चद य स THIS_MODULE ह न व र हत य च ड फन शन <linux/module.h> म य असत. ओपन म थड : ओपन म थड प ढ ल क म करत : ड ह ईस तय र आह क न ह त प हण आ ण य नगड त क ह एरस आह त क त प हण. जर ड ह ईस थमच ओपन ह ट अह ल तर य च इ न शयल यझ शन करण. f_op प टर अपड ट करण. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 36

file->private_data म य ठ व य त य ण य ड ट चर स ठ र ख व ज ग क न य त त ठ वण. रल ज म थड: रल ज म थड प ढ ल क म करत : ओपन म थडन file->private_data म य ठ वल ल ज ग क ढ न घ ण. ड ह ईस ब द करण. र ड आ ण र ईट म थड: ssize_t read(struct file *filp, char user *buff, size_t count, loff_t *offp); ssize_t write(struct file *filp, const char user *buff,size_t count, loff_t *offp); य त flip ह फ ईलच प टर असत. count हणज सफर करण य ड ट च स ईझ. buff हणज य जरच बफर य त र ड आ ण र ईट करत न ड ट ठ वल ज त. offp [ल ग ऑफस ट ट ईप प टर] य जर व पर त असण य फ ईलच प झशन दश वत. रटन ह य ssize_t हणज च signed size type. ह अ धक प ट ह य स ठ प ढ ल आक त पह : : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 37

[Ref:Linux Device Driver Book] र ड आ ण र ईट म थड स ठ नयम: जर रटन स य ह फ शन मध ल count य अ क इतक अस ल तर ततक ब ई स प ठवल ज त त. ज त रटन स य ह प झ ट ह अस ल आ ण count प कम अस ल तर ततक च ड ट प ठवल ज त जर रटन स य ह श य अस ल तर फ ईल स पल अस म नल ज त. नग ट ह रटन स य हणज एरर य च न बर <linux/errno.h>य फ ईल म य असत य त EINTR [interrupt system call],-efault [bad address]य च सम व श ह त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 38

ड ह ईस य हरच ब सक स र श. य य जर फ श स कन ल फ श स म य ल ल ड करण. [load] insmod module_init() ड ह ईस उघडण. [open] fopen file_operations:open ड ह ईस मध न व चण.[close] fread file_operations:read ड ह ईस म य लहण.[read] fwrite file_operations:write ड ह ईस ब द करण.[write] fclose file_operations:release म य ल क ढ न ट कण.[remove] rmmod module_exit() [Ref:FreeSoftwareMagazine] : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 39

लन स ड ह ईस य हर मर ठ त न :भ ग ८ :प. स. आय. ड ह ईस य हर ब सक. आप य स गणक त फ स क ड,ल न क ड स रख ड ह ईस ज ड य स ठ [PCI] प. स. आय. बस च व पर ह त ह ड ट बस स उथ बस न तर न थ ज व र स प य [ स सर] ल ज डल ज त. अश त ह न आपण ड कट पवर हड ओ प हत असत न क व स ह र वर ड ट प ठवत असत न आप य नकळत आपण प. स. आय. बस व परत च असत. य च ड ट सफर प ड फ रच ज त असत.PCIe च ड ट सफर र ट २५० एम ब प र ल न आ ण ज त तज त ८ ज ब पय त आह. प स आय हणज प रफ रल क प न ट इ टरकन ट. य च PCI,PCI Express,PCI Extender,Mini PCI अस अन क क र आह त. प. स. आय. ड ह ईस च ल क र ट २५ क व ३३ Hz पय त असत. आपण आप य य भ ग त प. स. आय. ड ह ईस य हर कस असत य च म हत घ व य. प. स. आय. ड ह ईस ह आप य ह डर आय ड, ड ह ईस आय ड आ ण ल स क ड य व र ओळखल ज त.आप य स टमम य क णक णत प. स. आय. ड ह ईस आह त ह प ह य स ठ प ढ ल कम ड व पर व. lspci य त आपणस ज प हल न बर दसत त आह प. स. आय. बस न बर नत र प. स. आय. ड ह ईस न बर आ ण श वटच न बर फ शन दश वत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 40

lspci t य कम डन आपणस आपल प. स. आय. ड ह ईस ह चर म य दसत ल. य य ड ह ईस य हर स ठ ब ग च गरज नसत.य त pci_dev ह ड ट चर व परत त. प.स.आय. ड ह ईस म य त न अ स य रजन असत त. 1) क फगर शन प स, 2) इनप स आउटप ट प ट 3) ड ह ईस म मर. क फगर शन प स एकव ळ ल एक च ल ट वर क म क शकत आ ण इनप स आउटप ट प ट, ड ह ईस म मर ल क शन ह एक च प.स.आय. बस मध ल सव ड ह ईस श अर करत त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 41

क फगर शन प स मध ल र ज टर वर क म कर य स ठ कन ल च व श ट फ श स क म करत त. य क प स आय ल ट म य ४ इ टर ट प स असत त.य त ल क णत ह एक पन एक व ळ स.प.य. व र व परल ज ऊ शकत. स ट म ब ट ह त न प स आय ड ह ईस च फम व अर ह ड व अर इ न शयल ईझ क न य क रजन व गव ग य अ सल ज डल ज त,आ ण य अ सल च ल रजन ज डल आह त क फगर शन प समध न व चल ज ऊ शकत हण न ड ह ईस य हरल ड ह ईस व पर य स ठ श यत ब गच गरज भ सत न ह. [न द :य एस ब ड ह ईस य हरल ड ह ईस व पर य स ठ ब गच ल गत.] ज ह प.स.आय. ड ह ईस ल प वर द य वर ह ड व अर प ण त च ल नसत फ त क फगर शन नगड त क म ल र प स द त.फम व अर प स आय क लर मध ल र ज ट र मध ल ड ट ल र ड र ईट क न क फगर शन अ स पय त प हचत.ब ट ह त न फम व अर सव प स आय ड ह ईस बर बर य क अ स रजन ल ज ग मळव न द त आ ण त ह च ड ह ईस य हर ह ड ह ईसच म मर रजन आ ण आय ओ रजन य च ज डण प हत, प स आय क फगर शन र ज ट र ह ख ल ल म ण असत त: : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 42

[REF:Essential linux Device Driver-Alan Cox-Pearson] इनप ट आउटप ट रजन म य र ज टर असत त तर म मर रजन म य ड ट, ह डओ क ड म य इनप ट आउटप ट प स म य क ल र ज टर आ ण म मर रजन म बफर ल ज डल ल असत. ड यर ट म मर अ स स :[DMA] ड ह ईसल म मर स.प.य. न व परत ड यर ट ज डण य स ड यर ट म मर अ स स हणत त.य म ळ स सरच व पर न करत आपण म मर मध ल ड ट हलव शकत.स उथ ज मध ल ड.एम.ए क लर क व ख प.स.आय. बस स बसच त ब घ व न ड यर ट म मर सफर क शकत. स ट म मध ल ड ट एल.स.ड. न वर प ठव य स ठ य जर आपल प सलच ड ट ड एम ए असल य म बफर म य लहत आ ण एल.स.ड क लर ह च ड ट व ळ व ळ कल ट क न न वर द खवत. स ट म मध ल य म मर प सल ड.एम.ए बफर हणत त. म य ल ड ह ईस ट बल: pci_device_id ह ड ट चर य जरल व पर य स द ऊन ह ट लग स वध द त य त तस च म य ल ल ड करण य स टमल ह ह समजत क क ण य ह ड व अरल क णत म य ल क म करत. MODULE_DEVICE_TABLE(pci, i810_ids); वर ल फ शन ल कल ह रएबल तय र क न त pci_device_id ड ट चर ल प ट करत तस च य म य ल श नगड त म य स श धल ज त त व modules.pcimap म य ट कल ज त त. य न तर नव न ड ह ईस ह ट लग क य वर ह ट लग स टम modules.pcimap य च व पर क न अन प य हर ल ड करत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 43

ब सक प.स.आय. ड ह ईस य हर : थम ड ह ईस तय र कर व ल ग ल य स ठ ख ल ल क ड व पर व. ब सक प.स.आय. ड ह ईस य हर क ड: #include <linux/pci.h> आपण स ल गण र फ श स प.स.आय. ड ट एच य फ ईल मध न घ तल ज त त. #define MY_VENDOR_ID 0xABCD #define MY_DEVICE_ID_NET 0xEF01 य हर सप ट करत असण र ड ह ईस च न द य थ क ल ज त थम ड ह ईस तय र कर व ल ग ल य स ठ ख ल ल क ड व पर व struct pci_device_id network_driver_pci_table[] devinitdata = MY_VENDOR_ID, /* Interface chip manufacturer ID */ MY_DEVICE_ID_NET, /* Device ID for the network */ PCI_ANY_ID, /* Subvendor ID wild card */ PCI_ANY_ID, /* Subdevice ID wild card */ 0, 0, /* class and classmask are unspecified */ network_driver_private_data, 0, ; वर ल क ड म य प स आय य हरश नगड त ड ट दल ज त. struct pci_driver network_pci_driver =.name = "ntwrk", /* Unique name */.probe = net_driver_probe,.remove = devexit_p(net_driver_remove),.id_table = network_driver_pci_table, /* suspend() and resume() optional methods*/ ; य थ आप य ड ह ईस य हर च ब सक फ श स डफ ईन क ल ज त त.य त ड ह ईस य हर च न व ज डण आ ण क ढण य स ब धत फ शन आ ण आय ड ट बल य च सम व श ह त. static int init network_driver_init(void) pci_register_driver(&network_pci_driver); return 0; य थ आपण य हर इ न शयल ईझ क ल आह.य त प स आय य हर र ज टर क ल. Static void exit network_driver_exit(void) pci_unregister_driver(&network_pci_driver); य थ आपण य हर कड न ट क य वर अन र ज टर फ शन डफ ईन क ल आह. module_init(network_driver_init); module_exit(network_driver_exit); MODULE_DEVICE_TABLE(pci, network_driver_pci_table); : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 44

ब ग फ शनम य प ढ ल क म क ल ज त त.: प स आय ड ह ईस एन बल करण. रस स च म हत श धण :इनप ट आउटप ट बस अ स,इ ट र व ट. य हर श नगड त ड ट चर न म न दल ज त. वत ल र ज टर करण. प स आय ड ह ईस य हरच क ह मह व च क डच प ट : #include <linux/pci.h> struct pci_dev; struct pci_driver; struct pci_device_id; int pci_register_driver(struct pci_driver *drv); int pci_module_init(struct pci_driver *drv); void pci_unregister_driver(struct pci_driver *drv); int pci_enable_device(struct pci_dev *dev); int pci_read_config_byte(struct pci_dev *dev, int where, u8 *val); int pci_read_config_word(struct pci_dev *dev, int where, u16 *val); int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val); int pci_write_config_byte (struct pci_dev *dev, int where, u8 *val); int pci_write_config_word (struct pci_dev *dev, int where, u16 *val); int pci_write_config_dword (struct pci_dev *dev, int where, u32 *val); pci_resource_start() pci_resource_len() pci_resource_end() ह ह डर प स आय स ब धत र ज टर आ ण आय ड स ठ सप ट करत. य चरम य कन ल मध ल प स आय ड ह ईस दश वत ह चर प स आय ड ह ईस य हर दश वत. आप य य हरल सप ट करण र प स आय ड ह ईस च म हत द त प स आय ड ह ईस ह प स आय क अर ल र ज टर करत. म य ल इ न शय ट करत. य हर अन ल ड करत आ ण य हरल ज डल ल प स आय ड ह ईस कड न ट कत. ब फ शन म य ह फ शन व परत त. ड ह ईस च ल ह ऊन इ ट व इनप ट,आउटप ट रजन न म न दल ज त. क फगर शन प स मध ल ड ट वर क म कर य स ठ ह फ श स व परत त. ह फ श स अ तग त pci_bus ह बसश नगड त फ श स व परत त.फ श स मध ल श द च अथ : ८ ब ट ड ट सफर = byte १६ ब ट ड ट सफर = word ३२ ब ट ड ट सफर = dword प स आय क फगर शन प समध न व च य स ठ = read प स आय क फगर शन प स म य लह य स ठ = write क फगर शन प स य स रव त प स नच ऑफस ट = where एरर क ड रटन करण र स य = val प स आय ड ह ईस प टर = dev ह फ श स इनप ट आउटप ट व म मर रजन वर क म करत त. प ढ ल फ श स अन म अश म हत मळवत त: : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 45

pci_resource_flags() ब स अ स,ल थ, श वटच अ स,क ल ल ग य भ ग त आपण प स आय ड ह ईस स ठ ब सक य हर कस लह व त प हल त. प स आय च ऑपर टर स ट म म य च लण र क ड प ढ ल ल क शन ल मळ ल: drivers/net/, drivers/scsi/, drivers/video/ लन स स ट म म य प स आय ड ह ईस य हरच म हत मळव य स ठ ल क शन : Documentation/pci.txt प स आय ह इ टरफ स मदर ब ड ल कन ट ड असत य म ळ आपणस य व र आपन स फ स क ड न टवक क ड य स र य ड ह ईसस ठ य हर ल हत य त. प ढ ल भ ग त आपण य एस ब स ठ ड ह ईस य हर लहण र आह त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 46

लन स ड ह ईस य हर मर ठ त न :भ ग ९:य. एस. ब. ड ह ईस य हर ब सक क स ट. आपण प न ई ह, म उस, क ब ड,ह ड फ न इ य द अन क ड ह ईस आप य स गणक स ज ड य स ठ य.एस ब प ट व परत.य प ट व र आपण आप य स सर श स भ षण कर त असत.ह अन क ड ह ईस य.एस.ब.[य न हस ल स रयल बस] य बसच व पर क न सर यल प त न ड ट सफर करत त. [य.एस.ब. २.० आ ण ३.० ब ल ज ऊन घ य स ठ य थ टचक म र ] म ग ल भ ग त आपण कर टर आ ण प स आय स ठ च ड ह ईस य हर प हल त य भ ग त आपण क ह तर म त शकण र आह त एकदम ल ई ह ड ह ईस य हर... य.एस.ब ड ह ईस य हरच रचन : य.एस.ब ह ट क लर ह म ख असत आ ण त य क य.एस.ब ड ह ईसल क ह ड ट स ड कर य स आह क त वच रत. क णत ह य.एस.ब ड ह ईस ह ह ट क लरल वच र य शव य ड ट सफर क शकत न ह. स ट म म य य एस ब ह ट स ठ य एस ब ह ट क लर य हर तर य एस ब ड ह ईस स ठ य एस ब ल इ ट य हर असत. य एस ब क अर ह य द घ न ह ल गण र ट नस आ ण चर प रवत. य एस ब क अर ह य हर स ट मच क अर वभ ग आह. कन लच ह पर ड khubd ह सव प ट वर ल ठ ऊन क ण य प ट वर क य बदल झ ल ल आह त य च म हत घ त असत. य जर प स मध न य एस ब ड ह ईस ल अ स स कर य स ठ य एस ब फ ईल स ट म usbfs ह व परत त. य जर /dev,/sys मध न ह य एस ब ड ह ईस ब ल क ह म हत घ व शकत. य स बध स प ण म हत दश वण र ख ल ल आक त पह व. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 47

य.एस.ब बस च क ह फ चस : हड ओ आ ण ऑड ओ ड ट प ठव य स ठ ड ह ईस क ह फ स ब ड व थ म गव शकत.तस च य एस ब ट क ल म य ज क मन जनरल ड ह ईस असत त य स ठ क ह ख स य हर लह यच गरज नसत उद : क ब ड,म उस,न टवक ड ह ईस क ह ख स ड ह ईस स ठ आपणस ख स य हर लह व ल गत. लन स स ट म ह द न क र य य एस ब य हर ल सप ट करत. एक ज स टम म य असत [य एस ब ड ह ईस य हर] द सर ज ड ह ईस म य असत [य एस ब ग ज टस य हर] आत आप य य ग स ठ एक प न ई ह य आ ण त आप य स गणक ल ज ड. आप य स ट मल ज डल ल य एस ब ड ह ईस ऑपर ट ग स टमल कळल क न ह त प ह य स ठ lsusb कम ड ट म नस म य व पर व.आत त ह ल प न ई हच ए झ ल ल दस ल. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 48

आप य प न ई ह स ब धत सव म हत प ह य स ठ lsusb v ह कम ड व पर व.य त आप य प न ई ह च उ प दक य च न व य च आय ड ड ट च न व आ ण य च आय ड अश म हत मळ ल.म य प न ई ह च ह डर आय ड आ ण ड ट आय ड 0x0781,0x5567 अस मळ ल.य च व पर आपण य हर लह य स करण र आह त. [न द :य म हत त D= ड ह ईस,C=क फगर शन,I=इ टरफ स E =ए डप ट य च स दभ प ढ य ण रच आह.] : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 49

आत आपण आपल प हल ब सक य एस ब य हर लह य : #include <linux/module.h> #include <linux/kernel.h> #include <linux/usb.h> static int pen_probe(struct usb_interface *interface, const struct usb_device_id *id) printk (KERN_INFO "Pen drive(%04x:%04x) plugged\n", id->idvendor, id- >idproduct); return 0; static void pen_disconnect(struct usb_interface *interface) printk(kern_info "PEN drive removed \n"); static struct usb_device_id pen_table[]= USB_DEVICE(0x0781,0x5567), ; MODULE_DEVICE_TABLE (usb, pen_table); static struct usb_driver pen_driver =.name = "pen_driver",.id_table = pen_table,.probe = pen_probe,.disconnect = pen_disconnect, ; static int init pen_init(void) return usb_register(&pen_driver); static void exit pen_exit(void) usb_deregister(&pen_driver); module_init(pen_init); module_exit(pen_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR ("MJ"); MODULE_DESCRIPTION("USB PEN REGISTRATION DRIVER"); य च चर कर टर ड ह ईस य हर स रख च आह य त ड ह ईस फ ईल मध न र ज टर क व अन र ज टर न करत आपण ह ड व अर व परण र आह त. य स ठ usb_register आ ण usb_deregister ह य एस ब च API व परल ल आह त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 50

य त ब आ ण ड सकन ट स बत स प ड आ ण र य म ह फ श स पण गरज पड य स व प शकत य म ळ ज ह नक अस ल त ह आपल ड ह ईस स प ड म ड म य ज ईल आ ण परत हव अस ल त ह र य म ह ईल. ड ह ईस ऑट म टक डट ट ह य स ठ ड ह ईस ट बल तय र क न य त आप य ड ह ईसच आय ड प स क ल आह त य म ळ आपल ड ह ईस ज डल क ह य हर आप आप च ल ह ईल.य एस ब ड ह ईस स ठ य ट बल म य प हल प र म टर ह usb ह प स कर व ल गत. य न तर आपण आप य ड ह ईस आय ड ट बलच न व प स क शकत. प न ई ह लग क य वर ब फ शन च ल ह इल आ ण प न ई ह क ढ न ट क य वर ड कन ट फ शन रन ह ईल. ह म रन कर य स ठ थम य मस ठ म क फ ईल तय र कर व. न तर make कम ड व प न क प ईल क न.ko फ ईल तय र करण. lsmod व प न आपल नव न म य ल ल ड करण. पण य आध आप य स ट म म य आध प स नच असल ल य एस ब च म य ल [usbstorage] कड न ट क व ल ग ल य स ठ rmmod usb-storage ह कम ड व प न त म य ल स ट म मध न क ढ न ट क व. आत आपल प न ई ह कन ट कर व. आ ण dmesg कम ड रन कर व. न तर प न ई ह क ढ न ट क व आ ण परत dmesg कम ड रन कर व. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 51

आपणस आपल ब आ ण ड सकन ट ह द ह फ श स रन ह ऊन आउटप ट आल ल दस ल.आत आपणस खर म त क म करण र य हर तय र क य च मज न क च आल अस ल. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 52

य.एस.ब ड ह ईस य हरच रचन : वर ल च त य एस ब य हर ह कन ल च स टम आ ण ह ड व अर म य असत. य एस ब क अर ह य एस ब य हरल ह ड व अर व पर य स ठ ए स स द त. य एस ब चर ब ल आपणस म हत प ढ ल ल क वर मळ ल: www.usb.org : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 53

य एस ब य हर ह स प ण य एस ब ड ह ईस ल ज डल न ज त फ त य एस ब इ टरफ सल ज डल ज त त. य एस ब ऐ डप ट आत[IN endpoint] क व ब ह र [out endpoint] ड ट सफर कर यस ठ व परत त. ह ड ट सफर एक च दश न प ईप म फ त ह त. य एस ब ऐ डप टच च र क र पडत त: क ल: ड ह ईस क फगर क रण स ठ व ड ह ईसच म हत मळव य स ठ तस च कम ड प ठव न ड ह ईसच ट स प ह य स ठ.श यत ड ह ईसम य endpoint 0 ह ह क म प र पडत.ह एकम व ए डप ट आह ज द ह दश न ड ट प ठवत. इ ट:ह ऐ डप ट थ ड च ड ट क ह ठर वक अ तर न प ठव य स ह त ह म य न ड ट प ठव न म उस कब ड स रख ड ह ईस क ल कर य तव व परत त. ब क:ह ऐ डप ट फ रच ज त ड ट सफर कर य स ठ व परत त. ज त ड ट क ण य ह ड ट च ल ट न ह त व गरज पड य स ज त व ळ घ ऊन ड ट प ठव य स ठ ह ऐ डप ट व परत त. टर,न टवक क ड य स ठ ह ऐ डप ट व परत त. आयस नस:ह ऐ डप ट ऑड ओ हड ओ ड ह ईस म य ज त ड ट प ठव य स ठ ह त य त ड ट ल ट च पव न करत सतत ड ट च व ह च ल ठ वल ज त. इ ट व आयस नस ऐ डप ट ह क ह ठर वक व ळ ल ड ट प ठव य स ठ सतत स ट क ल ज त त य एस ब ऐ डप ट ह struct usb_host_endpoint य चर म य ठ वल ज त त व य ऐ डप ट च म हत struct usb_endpoint_descriptor म य स ठवल ज त. य त ल क ह मह व च फ चस : bendpointaddress :ह ड ट इनप ट असण र क आउटप ट ह स गत य व न ड ट स टम ल ज ण र क ड ह ईस ल ज ण र त समजत. bmattributes :य व र ऐ डप ट ह क ल,ब क,इ ट, आयस नस य प क क णत आह त समजत. wmaxpacketsize :य म ळ ऐ डप ट व र ज त त ज त कत स ईझ ह त ळल ज ऊ शकत त समजत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 54

binterval :य म ळ इ ट र व ट च व ळ समजत. ऐ डप टह एक तपण इ टरफ सम य ग ड ळल ल असत त. ड ह ईस एक च व ळ अन क इ टरफ स व प शकत त य एस ब इ टरफ सल आप य न हम य स ट ग सह आणख ह क ह स ट ज अस शकत त थम इ टरफ स ह थ मक स ट स व परत त क ह व ळ द स य प त न क ल कर य स ठ अ टरन ट ह सट ग व परत. य च म हत usb_interface य चरम य ठ वल ज त. ह इ टरफ स क फगर शन य प त ग ड ळल ल असत त. स र श न क फगर शन हणज ड ह ईसच फ ईल,इ टरफ स ह ड ह ईसच फ श स,ए ड प ट हणज ड ट सफर करण र प ईप. ड ह ईसल एक क व अन क क फगर शन असत त. क फगर शनम य एक क व अन क इ टरफ स असत त. इ टरफ सम य एक क व अन क स ट ज असत त. इ टरफ सम य एक क व अन क ए डप ट असत त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 55

य एस ब ड ह ईस न बर: प हल य एस ब ड ह ईस ह टहब असत य स य एस ब क अर न एक न बर दल ल आह य न तर य त त प ट न बर य प ट ल ड ह ईस ज डल आह त प ट. य न तर क फगर शन न बर आ ण न तर इ टरफ स न बर उद त प ढ ल म ण दश वत त : 2-1:1.0 य एस ब अ स :[USB Urbs] कन ल ह य एस ब ड ह ईस स बत य एस ब र व ट ल क य व र स भ षण करत. य एस ब अ स ह ए ड प ट स बत ड ट प ठव य स ठ आ ण घ य स ठ व परत त. य आर ब प ढ ल म ण क म करत त: य एस ब ड ह ईस य हर य आर ब तय र करत त. य एस ब ड ह ईसल ए डप ट न मल ज त. य आर ब ह ड ह ईस य हरच व पर क न य एस ब क अर म य न द क ल ज त य न तर य एस ब क अर य च न द य एस ब ह ट क लर य हर म य करत य एस ब ह ट क लर ह स स क न य एस ब ड ट सफर करत. ज ह य आर ब प ण ह त य एस ब ह ट क लर ह य एस ब ड ह ईस य हरल य च न द प ठवत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 56

य एस ब इ फ म शन य हर: #include <linux/module.h> #include <linux/kernel.h> #include <linux/usb.h> static struct usb_device *device; static int pen_probe(struct usb_interface *interface, const struct usb_device_id *id) struct usb_host_interface *iface_desc; struct usb_endpoint_descriptor *endpoint; int i; iface_desc = interface->cur_altsetting; printk (KERN_INFO "Pen i/f %d now probed:(%04x:%04x)\n",iface_desc- >desc.binterfacenumber, id->idvendor, id->idproduct); printk(kern_info "ID->bNumEndpoints: %02X\n",iface_desc- >desc.bnumendpoints); printk(kern_info "ID->bInterfaceclass: %02X\n", iface_desc- >desc.binterfaceclass); for(i=0; i < iface_desc->desc.bnumendpoints; i++) endpoint = &iface_desc->endpoint[i].desc; printk(kern_info "ED[%d]->bEndpointAddress: 0x%02X\n",i, endpoint->bendpointaddress); printk(kern_info "ED[%d]->bmAttributes: 0x%02X\n", i, endpoint- >bmattributes); printk(kern_info "ED[%d]->wMaxPacketSize: 0x%04X (%d)\n",i, endpoint->wmaxpacketsize, endpoint-> wmaxpacketsize); device = interface_to_usbdev(interface); return 0; static void pen_disconnect(struct usb_interface *interface) printk(kern_info "Pen i/f %d now disconnected \n",interface- >cur_altsetting->desc.binterfacenumber); static struct usb_device_id pen_table[]= USB_DEVICE(0x0781,0x5567), ; MODULE_DEVICE_TABLE (usb, pen_table); : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 57

static struct usb_driver pen_driver =.name = "pen_driver",.id_table = pen_table,.probe = pen_probe,.disconnect = pen_disconnect, ; static int init pen_init(void) return usb_register(&pen_driver); static void exit pen_exit(void) usb_deregister(&pen_driver); module_init(pen_init); module_exit(pen_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR ("MJ"); MODULE_DESCRIPTION("USB PEN Info DRIVER"); वर ल म म य struct usb_interface ह ह ड ल व न आपण स हव त म हत घ तल आह ब आ ण ड स कन ट ह स त इ टरफ सस ठ रन ह त त आ ण त च य च प हल प र म टर असत त. आ ण क ट नर ड ह ईस ह ड ल हण न interface_to_usbdev ह फ शन व परत त. ह म रन क य वर आपणस आप य ड ह ईस स ब धत सव डट ल म हत उपल द ह ईल. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 58

लन स ड ह ईस य हर मर ठ त न :भ ग १०: य. एस. ब. ड ह ईस य हर फ ईल ऑपर श स. य. एस. ब. ड ह ईस य हरह प स आय ड ह ईस य हर स रख च ल हल ज त. ब फ शन न ० रटन क ल हणज आपल ड ह ईस यश व पण र ज टर झ ल आ ण आ ण एरर क ड रटन क ल हणज ड ह ईस र ज टर झ ल न ह.म य ल ड ह ईस ट बल ह आपल ड ह ईस ऑट म टक डट ट व ल ड ह य स व परत त य त module.usbmap,madule.pcimap य य एस ब आ ण प स आय स ठ तय र ह ण य म प फ ई स आह त. ड ट सफर : आप य प न ई ह मध न ड ट सफर कर य स ठ य हर म डफ य क य. प न ई ह म य र ड आ ण र ईट ऑपर शन कर य स ठ pen_read आ ण pen_write ह द न फ श स व परल ल आह त.य त ड ट सफर कर य स ठ usb_bulk_msg()ह ब क ड ट सफर स म थड ब क ए ड प ट च व पर क न ड ट सफर कर ल. प ढ ल क ड आपणस च ल ब सक र ड र ईट फ चस प रवण र क टम य हर कस तय र कर यच त दश व ल. य एस ब म य ड ट सफर य द न प त आह त,एक प त य आर ब व परत द स य प त त य जरल य आर ब व पर य च गरज भ सत न ह क रण य आर ब आप आप फ श स य अ तग त स ट क ल ज त. आत आपण य आर ब कस व पर व त प हण र आह त. य आर ब च व पर क न: य आर ब तय र क न अल क ट करण : य त थम य आर ब तय र क न अल क ट क ल ज त. struct urb *usb_alloc_urb(int iso_packets, int mem_flags); य फ शन म य iso_packets ह प र म टर कत आयस स नस प क स प ठव यच य च स य द त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 59

जर आपण ड ट सफर स ठ आयस स नस म थड व परत नस तर ह ह ह य ० ह द त त. mem_flags ह ल ग kmalloc फ शन ल प ठवत त तस च ल ग आह य आर ब स मट करण. int usb_submit_urb(struct urb *urb, int mem_flags); य त आपणस ज य आर ब आप य ड ह ईस ल प ठव यच आह य च प टर व ल ग प ठवल ज त. प ढ ल त न प क एक ल ग प स क ल ज त. GFP_ATOMIC=क लर ह य आर ब ल क ह ल करत अस ल, current->state ह TASK_RUNNING ट ट नस ल त ह. GFP_NOIO = ल क आय ओ प च म य अस ल आ ण ट र ज ड ह ईस य एरर ह ल ग य भ ग त. GFP_KERNEL = अ यथ ब य डफ ट. य आर ब र करण. int usb_kill_urb(struct urb *urb); int usb_unlink_urb(struct urb *urb); usb_kill_urb य त य आर ब ब द ह ऊन ड ह ईस ड स कन ट ह त. usb_unlink_urb य त य एस ब क अर ल य आर ब ब द कर य स ठ स चन प ठवल ज त. य आर ब करण. आपल क म झ य वर य आर ब ह य एस ब क अर ल आपल क म झ ल आह अस स गत void usb_free_urb(struct urb *urb); य त आपणस ज य आर ब म कळ कर यच आह य च प टर प स क ल ज त. बफर तय र करण. usb_buffer_alloc(dev->udev, count, GFP_KERNEL, &urb->transfer_dma); : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 60

य फ शन च व पर क न आपण ड एम ए [ड यर ट म मर अ स स ]स ठ बफर तय र क शकत. य व र ड ट फ ट प ठवल ज त. ड ट सफर : void usb_fill_int_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int buffer_length, usb_complete_t complete, void *context, int interval); void usb_fill_bulk_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int buffer_length, usb_complete_t complete, void *context); void usb_fill_control_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, unsigned char *setup_packet, void *transfer_buffer, int buffer_ length, usb_complete_t complete, void *context); य आर ब चर च व पर क न य एस ब क अर म य य आर ब स मट कर य स ठ. इ ट,ब क,क ल य न स र फ शन सल ट कर व. य आर ब च व पर न करत स ध ड ट सफर. int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, void *data, int len, int *actual_length, int timeout); int usb_control_msg(struct usb_device *dev, unsigned int pipe, u8 request, u8 requesttype, u16 value, u16 index, void *data, u16 size, int timeout); ब क म स ज फ शन क ल म स ज फ शन. वर ल फ श स ह वत य आर ब स ब ध ऑपर शन करत त.य जर ल व परत य ण र स प ड ट सफर फ शन वर दल आह त.ज अ तग त ब क ग ट च क ळज वत घ त. struct usb_device *usb_dev : य ल ड ट प ठव यच आह त ड ह ईस unsigned int pipe :स ड क व रस ह ए ड प ट उद : usb_sndbulkpipe, usb_rcvbulkpipe. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 61

void *data :प ठव य क व घ त य ज ण य ड ट च प टर int len :ड ट बफरच ल थ int *actual_length : न क कत ड ट प ठवण र आह य च स य. int timeout :व ट प ह य च व ळ. u8 request, u8 requesttype, u16 value, u16 index, void *data, u16 size : य य एस ब म स ज य क ल म स जस ठ य ह य आह त आपण आप य ममध ल र ड फ शन प ह य. static ssize_t pen_read(struct file *f,char user *buf, size_t cnt, loff_t *ppos) int retval; int read_cnt; retval = usb_bulk_msg(device,usb_rcvbulkpipe(device,bulk_ep_in),bulk_buf, MAX_PKT_SIZE, &read_cnt,5000); if(retval) printk(kern_err "Bulk message returned %d \n", retval); return retval; if (copy_to_user(buf, bulk_buf, MIN(cnt, read_cnt))) return -EFAULT; return MIN(cnt, read_cnt); य त usb_bulk_msg फ शन ल य एस ब ड ट ब क म थडन र स ह कर य स ठ प र म टर प ठवल आह त. जर रटन ह य प झ ट ह अस ल तर रटन ह य इतक म स ज व चल ग ल अस ल. त य जर ल उपल ध क न द य स ठ copy_to_user य फ शन च व पर क न त य जर य बफर म य ल हल ज त. तस च र ईट फ शन म य थम य जर य बफर मध ल ड ट copy_from_user य फ शन च व पर क न ब क बफर म य घ तल ज त आ ण usb_bulk_msg फ शन ल sndbulkpipe व प न ड ट ड ह ईस म य लहल ज त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 62

#include <linux/module.h> #include <linux/kernel.h> #include <linux/usb.h> #define MIN(a,b) (((a) <= (b))? (a) : (b)) #define BULK_EP_OUT 0x01 #define BULK_EP_IN 0x82 #define MAX_PKT_SIZE 512 static struct usb_device *device; static struct usb_class_driver class; static unsigned char bulk_buf[max_pkt_size]; static int pen_open(struct inode *i, struct file *f) return 0; static int pen_close(struct inode *i,struct file *f) return 0; static ssize_t pen_read(struct file *f,char user *buf, size_t cnt, loff_t *ppos) int retval; int read_cnt; retval = usb_bulk_msg(device,usb_rcvbulkpipe(device,bulk_ep_in),bulk_buf, MAX_PKT_SIZE, &read_cnt,5000); if(retval) printk(kern_err "Bulk message returned %d \n", retval); return retval; if (copy_to_user(buf, bulk_buf, MIN(cnt, read_cnt))) return -EFAULT; return MIN(cnt, read_cnt); : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 63

static ssize_t pen_write(struct file *f, const char user *buf, size_t cnt,loff_t *ppos) int retval; int wrote_cnt =MIN(cnt,MAX_PKT_SIZE); if(copy_from_user(bulk_buf, buf, MIN(cnt,MAX_PKT_SIZE))) return -EFAULT; /*write data in to bulk endpoint */ retval =usb_bulk_msg(device,usb_sndbulkpipe(device, BULK_EP_OUT),bulk_buf,MIN(cnt,MAX_PKT_SIZE), &wrote_cnt,5000);; if(retval) printk(kern_err "Bulk message returned %d\n", retval); return retval; return wrote_cnt; static struct file_operations fops =.open = pen_open,.release =pen_close,.read =pen_read,.write =pen_write, ; static int pen_probe(struct usb_interface *interface, const struct usb_device_id *id) int retval; device = interface_to_usbdev (interface); class.name = "usb/pen%d"; class.fops = &fops; if ((retval =usb_register_dev(interface, &class )) < 0) err("not abe to get a minor for this device"); else printk(kern_info "Minor obtained : %d \n", interface->minor); return retval; static void pen_disconnect(struct usb_interface *interface) usb_deregister_dev(interface, &class); : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 64

static struct usb_device_id pen_table[]= USB_DEVICE(0x0781,0x5567), ; MODULE_DEVICE_TABLE (usb, pen_table); static struct usb_driver pen_driver =.name = "pen_driver",.id_table = pen_table,.probe = pen_probe,.disconnect = pen_disconnect, ; static int init pen_init(void) int result; if(( result = usb_register (&pen_driver))) err("usb_register failed.err no %d", result); return result; static void exit pen_exit(void) usb_deregister(&pen_driver); module_init(pen_init); module_exit(pen_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR ("MJ"); MODULE_DESCRIPTION("USB PEN Device DRIVER"); ह म रन क य वर आ ण प न ई ह लग क य स /dev/pen0ह तय र झ ल अस ल. आपण /dev/pen0 य वर क ह स ध र ड र ईट ऑपर शन क शकत आ ण प न ई ह क ढ न ट क य स /dev/pen0 नघ न ज ईल. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 65

[ न द: म रन कर य आध usb-storeage ई हर रम ह क ल प हज. ] य एस ब ड ह ईस य हरच क ह मह व च क डच प ट : #include <linux/pci.h> ह ह डर य एस ब स ब धत सव म हत व फ श स स ठ सप ट करत. struct usb_driver; य चरम य य एस ब ड ह ईस दश वत struct pci_driver; ह चर प स आय ड ह ईस य हर दश वत. struct usb_device_id; आप य य हरल सप ट करण र य एस ब ड ह ईस च म हत द त int usb_register(struct usb_driver *d); य एस ब ड ह ईस ह य एस ब क अर ल struct usb_class_driver; struct urb; struct urb *usb_alloc_urb(int iso_packets, int mem_flags); void usb_free_urb(struct urb *urb); र ज टर करत. म जर न बर व प न क य नक शन करण र य एस ब ड ह ईस स ठ य एस ब ड ट प ठव य स ठ च चर य एस ब,य आर ब चर तय र कर य स ठ क व क ढ न ट क य स ठ : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 66

int usb_submit_urb(struct urb *urb, int य एस ब ड ट स मशन च ल क व ब द mem_flags); int usb_kill_urb(struct urb *urb); कर य स ठ int usb_unlink_urb(struct urb *urb); usb_[rcv snd][ctrl int bulk isoc]pipe() प ईप तय र करण. usb_buffer_alloc() usb_buffer_free() usb_gadget_register_driver() ड यर ट म मर सफर स ठ बफर तय र करण. क म झ य वर बफर म कळ करण. ग ज ट ड ह ईस र ज टर करण. ग ज ट य हर: ए ब ड ड स ट म ज ह स गणक ल ज डल ज त, य व ळ लन स ह द ह वर रन ह त असत. त ह स गणक ह ह ट हण न क म करत तर ए ब ड ड ड ह ईस ह ग ज ट य हर वर क म करत. य त प ढ ल भ ग य त त. ग ज ट ड ह ईस[ ट र ज,न टवक ] ह ह ट कड न आल य र व ट ल उ तर द त त. जस प न ई ह वत ल आपण ट र ज ल स च आह य च म हत ह ट स गणक ल द त. drivers/usb/gadget/zero.c य ठक ण आपणस ग ज ट य हर ब सक चर क ड मळ ल. अ धक म हत स ठ : लन स स ट म म य य एस ब क ल टन क ड : o य एस ब ड य म ट: drivers/usb/usb-skeleton.c o Documentation/usb/ इ टरन ट स स ल क: o www.usb.org/developers/docs. o www.linux-usb.org. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 67

लन स ड ह ईस य हर मर ठ त न :भ ग ११:स प ण य. एस. ब. ड ह ईस य हर म. लन स म य क ह य हर च क ड ह थ मक स य त ब ध न ठ वल आह त य च व पर आपण आपल क ड लह य स क शकत हणज च ज ह आपण नव न य एस ब ड ह ईस स ठ य हर लहण र अस त ह आपण श य प स न च ल न करत ड यर ट ह क ड र फर स ध न य त स ध रण क न आपण आपल ड ह ईस य हर लह शकत. अश य हर ल क ल टन य हर हणत त.त य एस ब क ल टन, मबफर क ल टन अस व गव गळ क ल टन य हर आप य लन स य य हर फ डर म य आपण स आढळ न य त त. य भ ग त आपण य एस ब क ल टन य हर प हण र आह त य त आपण य क ओळ च अथ प ह य आ ण प ण य हर समज व न घ व य. [न द:य आध पण य एस ब ड ह ईस य हरच आध च भ ग व चण गरज च आह ] तर आप य स ट म म य ह य हर drivers/usb/usb-skeleton.c य ल क शन ल आढळत आपण य य हर च २.२ ह ह ज न प ह य. य त म म जस आह तस ठ व न य क ओळ च अथ मर ठ त स प क न स गतल आह य च व पर आपणस क ड म य च ज स कर य स ठ ह इल.व आपणस प ण म समजल ज ईल. #include <linux/kernel.h> //कन ल ह डर printk स रख फ शन रन ह य स ठ #include <linux/errno.h> //एररच क ड य त असत #include <linux/init.h> // स स इ न शयल यझ शन #include <linux/slab.h> //kmalloc फ शन च लव य स ठ #include <linux/module.h> // ड ह ईस य हर लह य स ठ,म य सश नगड त ऑपर श स #include <linux/kref.h> //URB च र फर स क कर य स ठ #include <linux/uaccess.h> //user to/from ह फ शन व पर य स ठ #include <linux/usb.h> //य एस ब श नगड त फ श स #include <linux/mutex.h>// य य अल स म फ र ल क स ट कर य स ठ //आपण य ड ह ईस स ठ य हर ल हण र आह त य ड ह ईस च ड ट न बर आ ण ह डर न बर //ख ल डफ ईन क ल ज त. /* Define these values to match your devices */ #define USB_SKEL_VENDOR_ID 0xfff0 #define USB_SKEL_PRODUCT_ID 0xfff0 : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 68

// ड ह ईस ट बल म य आपल ड ह ईस र ज टर क ल ज त ज ण क न ज ह य ह डर आय ड //आ ण ड ट आय ड च ड ह ईस स ट मल ज डल ज ईल त ह आपल य हर आप आप डट ट ह ऊन ल ड ह इल. /* table of devices that work with this driver */ static const struct usb_device_id skel_table[] = USB_DEVICE(USB_SKEL_VENDOR_ID, USB_SKEL_PRODUCT_ID), /* Terminating entry */ ; MODULE_DEVICE_TABLE(usb, skel_table); //य थ आपण आप य ट बलच न व आ ण य एस ब ह प र म टर द त. /* Get a minor range for your devices from the usb maintainer */ #define USB_SKEL_MINOR_BASE 192 //य जर य र फर स स ठ म यनर न बर. /* our private defines. if this grows any larger, use your own.h file */ #define MAX_TRANSFER (PAGE_SIZE - 512) // ज त त ज त कत ड ट प ठवल ज ईल. /* MAX_TRANSFER is chosen so that the VM is not stressed by allocations > PAGE_SIZE and the number of packets in a page is an integer 512 is the largest possible packet on EHCI */ #define WRITES_IN_FLIGHT 8 /* arbitrarily chosen */ //ह ड ह ईस य हर चर आह,य त य हर य सव पट डफ ईन क य आह त. /* Structure to hold all of our device specific stuff */ struct usb_skel struct usb_device *udev; /* the usb device for this device */ struct usb_interface *interface; /* the interface for this device */ struct semaphore limit_sem; /* limiting the number of writes in progress */ struct usb_anchor submitted; /* in case we need to retract our submissions */ struct urb *bulk_in_urb; /* the urb to read data with */ unsigned char *bulk_in_buffer; /* the buffer to receive data */ size_t bulk_in_size; /* the size of the receive buffer */ size_t bulk_in_filled; /* number of bytes in the buffer */ size_t bulk_in_copied; /* already copied to user space */ u8 bulk_in_endpointaddr; /* the address of the bulk in endpoint */ u8 bulk_out_endpointaddr; /* the address of the bulk out endpoint */ int errors; /* the last request tanked */ bool ongoing_read; /* a read is going on */ bool processed_urb; /* indicates we haven't processed the urb */ spinlock_t err_lock; /* lock for errors */ struct kref kref; struct mutex io_mutex; /* synchronize I/O with disconnect */ struct completion bulk_in_completion; /* to wait for an ongoing read */ ; #define to_skel_dev(d) container_of(d, struct usb_skel, kref) static struct usb_driver skel_driver; static void skel_draw_down(struct usb_skel *dev); : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 69

//प ढ ल फ शन ह य हर क ढ न ट क य वर सव ग ट ल न कर य स ठ व परत त. static void skel_delete(struct kref *kref) struct usb_skel *dev = to_skel_dev(kref); usb_free_urb(dev->bulk_in_urb); //य आर ब म कळ क ल ज त. usb_put_dev(dev->udev); // ड ह ईस क टर एक न कम करत. kfree(dev->bulk_in_buffer); //बरफ क ल ज त. kfree(dev); // ड ह ईस ह त. //ह फ शन ड ह ईस ओपन झ य वर रन ह त. static int skel_open(struct inode *inode, struct file *file) struct usb_skel *dev; // ड ह ईस प टर struct usb_interface *interface; //इ टरफ स प टर int subminor; int retval = 0; subminor = iminor(inode); श धण. interface = usb_find_interface(&skel_driver, subminor);//य एस ब मध ल इ टरफ स if (!interface) pr_err("%s - error, can't find device for minor %d\n", func, subminor); retval = -ENODEV; goto exit; dev = usb_get_intfdata(interface); //इ टरफ स च ड ट ट अर करण. if (!dev) retval = -ENODEV; goto exit; /* increment our usage count for the device */ kref_get(&dev->kref); // ड ह ईस च कत व ळ व परल य च न द करण. /* lock the device to allow correctly handling errors * in resumption */ mutex_lock(&dev->io_mutex); // य ट स ल क ल वण. retval = usb_autopm_get_interface(interface); // ड ह ईसच ओट स प ड ड म ड च ल करण. if (retval) goto out_err; /* save our object in the file's private structure */ file->private_data = dev; //फ ईल य य ह ट ड ट म य इ टरफ सच म हत भरण. mutex_unlock(&dev->io_mutex);//ल क क ढ न घ ण. exit: : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 70

return retval; // ड ह ईस म कळ करण. static int skel_release(struct inode *inode, struct file *file) struct usb_skel *dev; dev = file->private_data; // य ह ट ड ट स ह करण. if (dev == NULL) return -ENODEV; करण. /* allow the device to be autosuspended */ mutex_lock(&dev->io_mutex); //ल क करण. if (dev->interface) usb_autopm_put_interface(dev->interface); // ड ह ईसच ओट स प ड ड म ड च ल mutex_unlock(&dev->io_mutex); //ल क क ढ न घ ण. /* decrement the count on our device */ kref_put(&dev->kref, skel_delete); // ड ह ईसच न बर एक न कम करण. return 0; //य फ शन च व पर आप य म म य आल य च क व चण,सव एरर फ ग रस ट करण आ ण ड ह ईस ओपन क य न तर म मर व छ करण. static int skel_flush(struct file *file, fl_owner_t id) struct usb_skel *dev; int res; dev = file->private_data; if (dev == NULL) return -ENODEV; /* wait for io to stop */ mutex_lock(&dev->io_mutex); // य ट स ल क करण. skel_draw_down(dev); /* read out errors, leave subsequent opens a clean slate */ spin_lock_irq(&dev->err_lock); // पन ल क स ट करण. res = dev->errors? (dev->errors == -EPIPE? -EPIPE : -EIO) : 0; dev->errors = 0; //च क व च न घ ण. spin_unlock_irq(&dev->err_lock); // पन ल क क ढ न ट कण. mutex_unlock(&dev->io_mutex); // य ट स अलल क करण. return res; //आपल ड ट यव थतपण व चल ग ल आह क न ह य च पडत ळण. static void skel_read_bulk_callback(struct urb *urb) struct usb_skel *dev; dev = urb->context; : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 71

spin_lock(&dev->err_lock); /* sync/async unlink faults aren't errors */ if (urb->status) if (!(urb->status == -ENOENT urb->status == -ECONNRESET urb->status == -ESHUTDOWN)) dev_err(&dev->interface->dev, "%s - nonzero write bulk status received: %d\n", func, urb->status); dev->errors = urb->status; //च क झ ल आह. else dev->bulk_in_filled = urb->actual_length; //ड ट यव थतपण प हचल आह. dev->ongoing_read = 0; spin_unlock(&dev->err_lock); complete(&dev->bulk_in_completion); //क ल ट स स झ ल आह. //ड ट व च य स ठ तय र ह ण., य आर ब स ट ग करण. static int skel_do_read_io(struct usb_skel *dev, size_t count) int rv; /* prepare a read */ //य आर ब म य ड ट भ न घ ण. usb_fill_bulk_urb(dev->bulk_in_urb, dev->udev, usb_rcvbulkpipe(dev->udev, dev->bulk_in_endpointaddr), dev->bulk_in_buffer, min(dev->bulk_in_size, count), skel_read_bulk_callback, dev); /* tell everybody to leave the URB alone */ spin_lock_irq(&dev->err_lock); dev->ongoing_read = 1; spin_unlock_irq(&dev->err_lock); /* do it */ //य आर ब स मत करण.ब क ए ड प टल ड ट प ठवण. rv = usb_submit_urb(dev->bulk_in_urb, GFP_KERNEL); if (rv < 0) dev_err(&dev->interface->dev, "%s - failed submitting read urb, error %d\n", func, rv); dev->bulk_in_filled = 0; rv = (rv == -ENOMEM)? rv : -EIO; spin_lock_irq(&dev->err_lock); dev->ongoing_read = 0; spin_unlock_irq(&dev->err_lock); return rv; : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 72

//ड ट व चण. static ssize_t skel_read(struct file *file, char *buffer, size_t count, loff_t *ppos) struct usb_skel *dev; int rv; bool ongoing_io; dev = file->private_data; /* if we cannot read at all, return EOF */ if (!dev->bulk_in_urb!count) return 0; /* no concurrent readers */ rv = mutex_lock_interruptible(&dev->io_mutex); if (rv < 0) return rv; if (!dev->interface) /* disconnect() was called */ rv = -ENODEV; goto exit; /* if IO is under way, we must not touch things */ retry: spin_lock_irq(&dev->err_lock); ongoing_io = dev->ongoing_read; //इनप ट आउटप ट स स प ण ह ऊ द ण. spin_unlock_irq(&dev->err_lock); if (ongoing_io) /* nonblocking IO shall not wait */ if (file->f_flags & O_NONBLOCK) rv = -EAGAIN; goto exit; /* * IO may take forever * hence wait in an interruptible state */ rv = wait_for_completion_interruptible(&dev->bulk_in_completion); if (rv < 0) goto exit; /* * by waiting we also semiprocessed the urb * we must finish now */ dev->bulk_in_copied = 0; dev->processed_urb = 1; if (!dev->processed_urb) /* * the URB hasn't been processed * do it now */ wait_for_completion(&dev->bulk_in_completion); dev->bulk_in_copied = 0; dev->processed_urb = 1; : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 73

/* errors must be reported */ rv = dev->errors; if (rv < 0) /* any error is reported once */ dev->errors = 0; /* to preserve notifications about reset */ rv = (rv == -EPIPE)? rv : -EIO; /* no data to deliver */ dev->bulk_in_filled = 0; /* report it */ goto exit; /* * if the buffer is filled we may satisfy the read * else we need to start IO */ if (dev->bulk_in_filled) /* we had read data */ size_t available = dev->bulk_in_filled - dev->bulk_in_copied; size_t chunk = min(available, count); if (!available) /* * all data has been used * actual IO needs to be done */ rv = skel_do_read_io(dev, count); //ड ट व चण. if (rv < 0) goto exit; else goto retry; /* * data is available * chunk tells us how much shall be copied */ if (copy_to_user(buffer, dev->bulk_in_buffer + dev->bulk_in_copied, chunk)) //ड ट य जर म मर बरफ म य स ठवण. rv = -EFAULT; else rv = chunk; dev->bulk_in_copied += chunk; /* * if we are asked for more than we have, * we start IO but don't wait */ if (available < count) skel_do_read_io(dev, count - chunk); else /* no data in the buffer */ rv = skel_do_read_io(dev, count); if (rv < 0) goto exit; else if (!(file->f_flags & O_NONBLOCK)) goto retry; : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 74

exit: rv = -EAGAIN; mutex_unlock(&dev->io_mutex); return rv; //आपल ड ट यव थतपण ल हल ग ल आह क न ह य च पडत ळण. static void skel_write_bulk_callback(struct urb *urb) struct usb_skel *dev; dev = urb->context; //एरर आल आह क न ह त च क करण. /* sync/async unlink faults aren't errors */ if (urb->status) if (!(urb->status == -ENOENT urb->status == -ECONNRESET urb->status == -ESHUTDOWN)) dev_err(&dev->interface->dev, "%s - nonzero write bulk status received: %d\n", func, urb->status); spin_lock(&dev->err_lock); dev->errors = urb->status; spin_unlock(&dev->err_lock); //क म झ य वर DMA बफर क न द ण. /* free up our allocated buffer */ usb_free_coherent(urb->dev, urb->transfer_buffer_length, urb->transfer_buffer, urb->transfer_dma); up(&dev->limit_sem); \\ड ट ल हण. static ssize_t skel_write(struct file *file, const char *user_buffer, size_t count, loff_t *ppos) struct usb_skel *dev; int retval = 0; struct urb *urb = NULL; char *buf = NULL; size_t writesize = min(count, (size_t)max_transfer);//ड ट च स य आ ण ज त त ज त ड ट सफर कर य च मत य प क लह न स य नवडण. dev = file->private_data; /* verify that we actually have some data to write */ if (count == 0) //ड ट आह क न ह त प हण. goto exit; /* * limit the number of URBs in flight to stop a user from using up all * RAM */ if (!(file->f_flags & O_NONBLOCK)) if (down_interruptible(&dev->limit_sem)) retval = -ERESTARTSYS; : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 75

goto exit; else if (down_trylock(&dev->limit_sem)) retval = -EAGAIN; goto exit; spin_lock_irq(&dev->err_lock); retval = dev->errors; if (retval < 0) /* any error is reported once */ dev->errors = 0; /* to preserve notifications about reset */ retval = (retval == -EPIPE)? retval : -EIO; spin_unlock_irq(&dev->err_lock); if (retval < 0) goto error; /* create a urb, and a buffer for it, and copy the data to the urb */ urb = usb_alloc_urb(0, GFP_KERNEL);//य आर ब तय र करण आ ण य स म मर द ण. if (!urb) retval = -ENOMEM; goto error; buf = usb_alloc_coherent(dev->udev, writesize, GFP_KERNEL, &urb->transfer_dma); //DMA व प न ड ट सफर करण. if (!buf) retval = -ENOMEM; goto error; //ड ट य जर बफर कड न ड ह ईस य हर बफर म य ल हण. if (copy_from_user(buf, user_buffer, writesize)) retval = -EFAULT; goto error; /* this lock makes sure we don't submit URBs to gone devices */ mutex_lock(&dev->io_mutex); if (!dev->interface) /* disconnect() was called */ mutex_unlock(&dev->io_mutex); retval = -ENODEV; goto error; //य आह ब स ट करण. /* initialize the urb properly */ usb_fill_bulk_urb(urb, dev->udev, usb_sndbulkpipe(dev->udev, dev->bulk_out_endpointaddr), buf, writesize, skel_write_bulk_callback, dev); urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP; usb_anchor_urb(urb, &dev->submitted); //ब क ए ड प टल ड ट प ठवण, /* send the data out the bulk port */ retval = usb_submit_urb(urb, GFP_KERNEL); mutex_unlock(&dev->io_mutex); if (retval) dev_err(&dev->interface->dev, : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 76

"%s - failed submitting write urb, error %d\n", func, retval); goto error_unanchor; /* * release our reference to this urb, the USB core will eventually free * it entirely */ usb_free_urb(urb); //य आर ब म कळ करण. return writesize; error_unanchor: usb_unanchor_urb(urb); error: if (urb) usb_free_coherent(dev->udev, writesize, buf, urb->transfer_dma); usb_free_urb(urb);//एरर आ य स बफर व य आर ब ल न करण. up(&dev->limit_sem); exit: return retval; // ड ह ईसच सव फ ईल ऑपर शन य थ डफ ईन क ल आह त. वर दल ल सव फ श स य थ ड ल अर क ल आह त. static const struct file_operations skel_fops =.owner = THIS_MODULE,.read = skel_read,.write = skel_write,.open = skel_open,.release = skel_release,.flush = skel_flush,.llseek = noop_llseek, ; /* * usb class driver info in order to get a minor number from the usb core, * and to have the device registered with the driver core */ //य एस ब ल स ड फन शन- क ल टन च न व आ ण फ ईल ऑपर शन च प इ टर डफ ईन क ल आह. static struct usb_class_driver skel_class =.name = "skel%d",.fops = &skel_fops,.minor_base = USB_SKEL_MINOR_BASE, ; // ब फ शन ड फन शन static int skel_probe(struct usb_interface *interface, const struct usb_device_id *id) struct usb_skel *dev; struct usb_host_interface *iface_desc; struct usb_endpoint_descriptor *endpoint; size_t buffer_size; int i; int retval = -ENOMEM; : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 77

/* allocate memory for our device state and initialize it */ dev = kzalloc(sizeof(*dev), GFP_KERNEL); if (!dev) dev_err(&interface->dev, "Out of memory\n"); goto error; kref_init(&dev->kref); sema_init(&dev->limit_sem, WRITES_IN_FLIGHT); mutex_init(&dev->io_mutex); spin_lock_init(&dev->err_lock); init_usb_anchor(&dev->submitted); init_completion(&dev->bulk_in_completion); dev->udev = usb_get_dev(interface_to_usbdev(interface)); dev->interface = interface; /* set up the endpoint information */ /* use only the first bulk-in and bulk-out endpoints */ //इन आ ण आउट ए ड प ट स ध ण र फ शन iface_desc = interface->cur_altsetting; for (i = 0; i < iface_desc->desc.bnumendpoints; ++i) endpoint = &iface_desc->endpoint[i].desc; if (!dev->bulk_in_endpointaddr && usb_endpoint_is_bulk_in(endpoint)) /* we found a bulk in endpoint */ buffer_size = usb_endpoint_maxp(endpoint); dev->bulk_in_size = buffer_size; dev->bulk_in_endpointaddr = endpoint->bendpointaddress; dev->bulk_in_buffer = kmalloc(buffer_size, GFP_KERNEL); if (!dev->bulk_in_buffer) dev_err(&interface->dev, "Could not allocate bulk_in_buffer\n"); goto error; dev->bulk_in_urb = usb_alloc_urb(0, GFP_KERNEL); if (!dev->bulk_in_urb) dev_err(&interface->dev, "Could not allocate bulk_in_urb\n"); goto error; if (!dev->bulk_out_endpointaddr && usb_endpoint_is_bulk_out(endpoint)) /* we found a bulk out endpoint */ dev->bulk_out_endpointaddr = endpoint->bendpointaddress; if (!(dev->bulk_in_endpointaddr && dev->bulk_out_endpointaddr)) dev_err(&interface->dev, "Could not find both bulk-in and bulk-out endpoints\n"); goto error; /* save our data pointer in this interface device */ usb_set_intfdata(interface, dev); /* we can register the device now, as it is ready */ retval = usb_register_dev(interface, &skel_class); if (retval) : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 78

/* something prevented us from registering this driver */ dev_err(&interface->dev, "Not able to get a minor for this device.\n"); usb_set_intfdata(interface, NULL); goto error; error: /* let the user know what node this device is now attached to */ dev_info(&interface->dev, "USB Skeleton device now attached to USBSkel-%d", interface->minor); return 0; if (dev) /* this frees allocated memory */ kref_put(&dev->kref, skel_delete); return retval; //प न ई ह क ढ न ट क य वर रन ह ण र फ शन //य त ड ह ईस ड र ज टर क न म मर क ल ज त. static void skel_disconnect(struct usb_interface *interface) struct usb_skel *dev; int minor = interface->minor; dev = usb_get_intfdata(interface); usb_set_intfdata(interface, NULL); /* give back our minor */ usb_deregister_dev(interface, &skel_class); /* prevent more I/O from starting */ mutex_lock(&dev->io_mutex); dev->interface = NULL; mutex_unlock(&dev->io_mutex); usb_kill_anchored_urbs(&dev->submitted); /* decrement our usage count */ kref_put(&dev->kref, skel_delete); dev_info(&interface->dev, "USB Skeleton #%d now disconnected", minor); //ट यमर क उ टर फ शन static void skel_draw_down(struct usb_skel *dev) int time; time = usb_wait_anchor_empty_timeout(&dev->submitted, 1000); if (!time) usb_kill_anchored_urbs(&dev->submitted); usb_kill_urb(dev->bulk_in_urb); // ड ह ईस थ य व ळ न तर ब द क ल ज त व ड ह ईस व परल ज त नसत न य च प वर व चवल ज त. static int skel_suspend(struct usb_interface *intf, pm_message_t message) struct usb_skel *dev = usb_get_intfdata(intf); : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 79

if (!dev) return 0; skel_draw_down(dev); return 0; // ड ह ईस ल ग ल त ह त परत र य म करण. static int skel_resume(struct usb_interface *intf) return 0; // ड ह ईस र स ट कर य आध य च ट ट स ह क न ठ वण र फ शन. static int skel_pre_reset(struct usb_interface *intf) struct usb_skel *dev = usb_get_intfdata(intf); mutex_lock(&dev->io_mutex); skel_draw_down(dev); return 0; // ड ह ईस र स ट ह ऊन परत आ य वर य स य च प व च ट ट द य स दभ त ह फ शन व परल ज त. static int skel_post_reset(struct usb_interface *intf) struct usb_skel *dev = usb_get_intfdata(intf); /* we are sure no URBs are active - no locking needed */ dev->errors = -EPIPE; mutex_unlock(&dev->io_mutex); return 0; //य एस ब ड ह ईस य हर ड फन शन static struct usb_driver skel_driver =.name = "skeleton",.probe = skel_probe,.disconnect = skel_disconnect,.suspend = skel_suspend,.resume = skel_resume,.pre_reset = skel_pre_reset,.post_reset = skel_post_reset,.id_table = skel_table,.supports_autosuspend = 1, ; module_usb_driver(skel_driver); MODULE_LICENSE("GPL"); : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 80

लन स ड ह ईस य हर मर ठ त न :भ ग १२ : ड ह ईस य हर ल क: स म फ स, य ट स ल क, पन ल क. आप य स गणक त एक च व ळ अन क स स च ल असत त,ब य चद अन क ड एक च म मर वर क म करत असत त अश व ळ जर य च म न जर यव थतपण झ ल न ह तर य ड म य ग त ह ऊन आपल स ट म ह ग क व श ह ऊ शकत.एख द म मर इतर क ण ह व परत न ह ह प ह न व परण व वत त म मर व पर त असत न त ल क क न ठ वण य स ल क ग क व य य अल ए ल जन हणत त. ल क ग च द न म ख क र पडत त:स म फ स आ ण पन ल क. सम फ स :ह ल क एकच व ळ फ त एक ल च एख द रस स व प द त य स ल प ग ल क अस ह हणत त. आपण ज ह ल क करण र आह त त ह down() ह कम ड द ण आपल ड ट वर न क म क न घ ण आ ण क म झ य वर up() ह कम ड व प न स म फ र ल क मध न ब ह र पडण.आ ण प ढ ल क ण ल त रस स ख ल क न द ण. एख य स सल एख द रस स हव अस ल आ ण त रस स जर द स य स स न ल क क ल अस ल तर तर त स स वत ल ल प म ड म य ट कत आ ण ज ह हव असल ल रस स म कळ ह ईल त ह त स स ल प मध न ज ग ह त आ ण स म फ र व प न य रस स च क ल वत य त य त घ त. य स म फ र च प शल ट ईप हणज य ट स:ह ब यनर म ड[०/१] म य क म करत अस न य त द नच ट ट [ल क /अनल क] मध ल ऑपर शन च लत त. हणज च ह एक व ळ फ त एक च ट क ल क क शकत पण स म फ र ह एकव ळ अन क ट क ह डल क शकत त. थम ह य ट स इ न शयल ईझ कर व ल गत. static DECLARE_MUTEX(my_lock); न तर त down कम ड व प न ल क क न घ ण. ड ऊन ह फ शन स म फ रच ह य एक न कम करत. down(&my_lock); य न तर आपल रस स वर ल क म क न घ ण. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 81

न तर up कम ड व प न ल क रल ज करण. up(&my_lock); पन ल क: सम फ स ह एक च व ळ एख य रस स वर क म करण य स स प स न रस स च बच व करत त तर पन ल क ह ल प ग ल क न ह त तर त आप य ट कल स शन म मर ल इतर म कड न ह ण य ह त प प स न बच वत त.जर एख य फ शन ल जर ल क मळत नस ल तर त तथ च व ट प हत बस न र हत. य त स सर च NOP न ऑपर शन ह कम ड रन ह त र हत. य व ळ स स सर ब क क म म रत न ह हण न पन ल कच व ळ कम तकम ठ व व.य म ळ पन ल क करत न च बर च ब ल ट ळत य त त. कन ल म य बर चद पन ल क ह च व परल असत.जस क इ ट ह डलर स र य म म य ह म त परफ म स द त. य त जर द स य फ शन न ल क मळवल ल अस ल तर क ड एक ल प म य ज त य त त सतत ल क म कळ झ ल क न ह त प हत र हत य स पन हणत त. य ल कच म ट स सर स ट मम य फ र उपय ग ह त. पन ल क च फ श स <linux/spinlock.h>य फ ईल म य डफ ईन क ल ल असत त. पन ल क ड ल अर प ढ ल म ण करत त. struct spinlock my_lock; spin_lock_init(&my_spin_lock); पन ल क ह प ढ ल फ श स व प न घ तल ज त. spin_lock(&my_lock); आ ण प ढ ल फ शन व प न क ढ न घ तल ज त. spin_unlock(&my_lock); द स य स स म य रन ह ण य इ ट प स न आप य ड ट च बच व कर य स ठ आपण पन ल क व प शकत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 82

लन स ड ह ईस य हर मर ठ त न :भ ग १३: ड ल ड ह ईस य हर ब सक. ह डओ ड ह ईस ह ड ल वर द खव य स ठ ह य अल आउटप ट ड ट तय र करत त. लन स ह डओ स ट म ह म बफर ल यस तय र क न द ऊन ह ड व अर च ज स वर डप ड बल नसण र स ट म स वध तय र क न द त. हड ओ फ स क ड च ह ड व अर ह व गव ग य क रच असत. य म ल आपणस व गव गळ क ड ग कर व ल ग शकत ह ल म ट ळ य स ठ लन स म य म बफर च ल यर तय र क ल ज त. य च व पर क न अ लक शनम य क णत ह बदल न करत अ लक श स व गव ग य ह ड व अर वर च ल शकत.आपण व पर त असल ल क ह व ब ऊजर, हड ओ ल यस अश अ लक श स ड यर ट मबफर व प न फ स ह ड व अरश ड ट सफर ऑपर शन करत त. म बफर क स ट: ख ल ल च त द खव य म ण म ह ल यर क मन म बफर ए. प. आय. च व पर क न व गव य हड ओ क ड बर बर ड ट सफर करत त.य व न आपण स म बफर च फ यद क य आह त समजल अस लच.x-windows स रख क ह अ लक श स APIच व पर न करत ड यर ट ह ड व अर श स भ षण स ध शकत त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 83

आप य ट म नस व ड म य आपण fbset ह कम ड दल असत त आप य मबफर य हर म फ त ड ल च स ट ज आपण स पह वय स मळत ल.य त रझ य शन, व स,ट य म ग, ह ट कल स क,ह र झ टल स क य च स व तर म हत मळ ल. म बफर API: म बफर API च व पर करत न क ह म य ड ट चर म हत असण गरज च आह त प ढ ल म ण : 1) struct fb_var_screeninfo.:य चर म य ड ल न च क ह बदलत य ण य ग ट ठ वल य असत त उद : रझ य शन,म ज न ह स ट ज मर बदल शकत. 2) struct fb_fix_screeninfo :य ड ट चर म य हड ओ ह ड व अर च फ स म हत ठ वल ल असत जस क मबफर म मर च स ईझ, ट ट ग च अ स. 3) fb_cmap :ह चर म बफरच कलर म प ठरवत.य जर य म फ त र ड, ल, न [RGB]य कलस य स य ठरव शकत. तस च य त सपर स स ट कर य च ह स वध आह. मबफर य हर: आपण आप य ड ल बर बर मबफर य हर न स भ षण करण र आह त य त आपण म बफर म मर ल क शन बर बर इ टरअ ट करण हणज ड ल वर दसण य क ट ट म य बदल घडवण क रण य च मबफर म म र त ल ड ट ह आपण स नवर दसत असत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 84

ड ट चस : struct fb_info :ह मबफर ड ह ईस य हर मध ल म ख ड ट चर आह.ह चर include/linux/fb.h य थ डफ ईन क ल ल असत. struct fb_info /*... */ struct fb_var_screeninfo var; /* Variable screen information. struct fb_fix_screeninfo fix; /* Fixed screen information. /*... */ struct fb_cmap cmap; /* Color map. /*... */ struct fb_ops *fbops; /* Driver operations. /*... */ char iomem *screen_base; /* Frame buffer's virtual address */ unsigned long screen_size; /* Frame buffer's size */ /*... */ /* From here on everything is device dependent */ void *par; /* Private area */ ; वर ल चर म य आपण शकल ल न फ स इ फ, न ह रएबल इ फ,कलर म प ह ड ट चर डफ ईन क ल आह त तस च फ ईल ऑपर शन स ठ व पर य त य ण र fb_ops ह चर स आह. क न बफर च स ईझ आ ण ब स अ स डफ ईन क ल आह त. य त आप य ड ह ईसश नगड त असल ल ड ट ह par य प टरम य ठ वल ल असत. framebuffer_alloc() ह म थड व प न fb_info स ठ म मर अल क ट क ल ज त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 85

fb_ops ह चर: fb_ops ह चर ह म बरफ य हरस ठ ए प ट द त त.प हल क ह फ शन ह य हर फ शन रन ह य स ज र असत त तर क ह ऑ शनल असत त ह फ शन फ सश स ब धत असत त.fb_ops य च चर प ढ ल म ण आह. struct fb_ops struct module *owner; /* य हर ओपन करण */ int (*fb_open)(struct fb_info *info, int user); /* य हर क ज करण */ int (*fb_release)(struct fb_info *info, int user); /* ह रएबल न इ फ व प न ड ह ईसच प र म टर यव थ त आह त क न ह त त च क करण.*/ int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info); /* हड ओ क लर च र ज ट र स ट करण */ int (*fb_set_par)(struct fb_info *info); /* कलर र ज टर प र म टर स ट करण. */ int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green, unsigned blue, unsigned transp, struct fb_info *info); /* ड ल ल क करण */ int (*fb_blank)(int blank, struct fb_info *info); /* प ढ ल म थड य फ स क ड च व पर करत त. */ /* र टअ गल च क न ए रय ह प स लन भ न घ त. */ void (*fb_fillrect)(struct fb_info *info,const struct fb_fillrect *rect); /* च क न च क ह भ ग एक भ ग कड न द सर कड क प कर य स ठ */ void (*fb_copyarea)(struct fb_info *info,const struct fb_copyarea *region); /* ड ल वर च क ढ य स ठ */ void (*fb_imageblit)(struct fb_info *info,const struct fb_image *image); /* ड ल र ट ट कर य स ठ */ void (*fb_rotate)(struct fb_info *info, int angle); /* ड ह ईसश स ब धत आय ओ सल ट इ टरफ स कम ड */ int (*fb_ioctl)(struct fb_info *info, unsigned int cmd, unsigned long arg); /*... */ : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 86

प र म टर च क आ ण स ट करण : fb_check_var() : ह म थड ड ह ईस वर ब सक च क ऑपर शन करत त रझ य शन ब ट पर प स ल य ह य च क करत RGB फ म ट स ट करत. fb_set_par(): ह म थड एल स ड क लर य र ज टर य स ट ग स ट करत.य त म ज न स ट ग य त.तस च size_reg म य र झ य शन स ट ग,आ ण DMA_REGम य ड.एम.ए. स ट क ल ज त, य च व पर ड यर ट म मर ए स स स ठ ह त. कलर म ड: स ड [psudo] कलर आ ण [true]कलर ह द न कर च कलर म ड आह त. प स ल ह य प कलर ह य ल इ ड स क ल असत आपण आप य म बफर म मर च ज ग व चव शकत. य स ठ आपणस आपल ह ड व अर कलर स ट [palette]ल सप ट द ण र हव. एल स ड म य १६ ब ट / प स ल आ ण RGB565 फ म ट व परत त य च अथ fb_check_var() फ शन ब ट ऑफस ट ह य र ड, न, य स ठ अन म ११,५,० अस घ त त. [०-५ (५): य,५-११(६): न,११-१६[५]:र ड] fb_set_par() फ श स अ फ ल ड ग च व पर क न प स ल ह य आ ण ब क उ ड ह म स करत.RGB न एनक ड गस ठ व परल ल ब ट ल थ [५+६+५=१६] य स कलर ड थ हणत त.य च व पर क न मबफर य हर आप य क य टर मध ल ब ट ल ग इम ज ड ल वर द खवत त. न ल क ग: fb_blank() ह फ शन ड ल ल क ग आ ण अन ल क गल सप ट करत. ह स वध प वर म न जम ट स ठ व परल ज त. आपल ड ल १० म नट स ठ ल क ठ व य स ठ setterm -blank 10 ह कम ड व पर व. ह कम ड CTRL_REG म य ल क ग स ठ च ह य स ट क न fb_blank() ह फ शन क ल करत.आ ण ड ल ल क करत. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 87

ए स ल र ट ड म थड: ए स ल र ट ड म थड य म थड हड ओ आ ण फ स च म ठ म ठ ऑपर श स कर य स ठ व परत त. स टम म य ड ल वर ल ड ग, च ग,ब ट म प म ह करण य स र य ग ट कर य स ठ फ स ह ड व अर असण गरज च आह.fb_ops य चर म य आपण ए स ल र ट ड म थड च ल ट प हल आह च. य म य फ स क ड च प शल स वध आ ण स ध रण च व पर क न अ धक च गल च नवर प हत य त. fb_imageblit() म थड ड ल वर इम ज तय र करत जर आप य स ट म म य फ स क ड नस ल तर फ म बफर य हर cfb_imageblit() ह य च म थड स ध फ शन रन करत. ह फ शन पण त च क म करत पण ह फ स ह ड व अर च प वर व पर त न ह.आप य नवर ब ट इम ज आणत न ह फ शन व परल ज त. fb_copyarea() ह फ शन नच क ह भ ग एक भ ग कड न द सर कड क प कर य स व परल ज त. fb_fillrect()ह फ शन क नच क ह भ ग प स ल र ष न भ र वल ज त. मबफर कड न ड यर ट म मर ए स स : DMA इ जन स ट म म मर व न मच ड ट घ व न स सर म फ त स स क न त फ स ड ट नवर द खवल ज त. ड ल य र श र ट वर DMA च र ट अवल ब न असत. मबफर क हर ट DMA अ स स र ख न ठ व य स ठ myfb_probe()फ शन म य dma_alloc_coherent()म थड व परल ज त. myfb_set_par() म थडन DMA च अ स क लर य DMA_REG य र ज ट र म य ल हल ज त. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 88

ज ह य हर myfb_enable_controller() फ शन व प न DMA च ल करत त ह क लर ड यर ट म मर अ स स च व पर क न प स ल ड ट मबफर कड न घ ऊन ड ल वर द खवत. क ट आ ण ईटन स : एल स ड क लर CONTRAST_REG र ज टर च व पर क न क ट क ल करत. स सर जनरल पप ज इ प ट आउटप ट ल ईन च व पर क न ईटन स क ल करत. backlight_device_register() य र ज टर च व पर क न ब क ल ईट क ल करत य त. ड ल य हरवर प ढ अ य स कर य स ठ प ढ ल ल कल भ ट य.: लन स मबफर ज ट च ल क: o www.linux-fbdev.org आप य लन स स टम मध ल मबफर य हर च ल क शन: o drivers/video/*fb.c मबफर क ल टन य हर: o drivers/video/*fb.c ड ल य हर स र श: कन ल इ टरफ स स ठ ल गण र ड ल ड ह ईस य हर च फ श स प ढ ल म ण : register_framebuffer() unregister_framebuffer() framebuffer_alloc() framebuffer_release() fb_alloc_cmap() fb_dealloc_cmap() dma_alloc_coherent() dma_free_coherent() मबफर ड ह ईस र ज टर करण. मबफर ड ह ईस म कळ करण. fb_info चर म ठ म मर अल क ट करण. अल क ट क ल ल म मर म कळ करण. कलर म प अल क ट करण. कलर म प म कळ करण DMA च म प ग क न म मर अल क ट करण. DMA बफर च म मर म कळ करण. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 89

लन स ड ह ईस य हर मर ठ त न :भ ग १४: ड ह ईस य हर ड बगर ट स. आपण आपल ड ह ईस य हर ल ड करत न क व व परत न स ट म श,एरर व ड क व क ह तर च क च उ तर मळत अस य स ड हलपस ल त स डव व ल गत. आप य ल आल ल प ल म क ठ न आल य च अ य स कर य स ठ ड बगर व परत त. पण म य अन भव न स र सव त च गल ड ब ग ग ट नक हणज printk फ शन.printk च क ळज प व क व पर आपणस ब य च ग ट च म हत दव शकत.. आपण म लहत न य क आउटप ट व स ट ज printk च व पर क न द श त क शकत व य ह ल च व पर क न न क क ठ न ल म आल त श ध शकत. तस च क म झ य वर अश स ग स ठ व परल ल printk कम स द ऊन लपव शकत. ड ब ग ग स ठ प ढ ल ट स उपल द आह त. ड ट ड ल ड बगर:ddd फकल ड ल ड बगर :gdb कन ल फकल ड ल ड बगर :kgdb वर ल ट स च व पर क न आपण अ धक च ग य क र ड ब ग ग क शकत पण ह ट स व पर य आध त क फगर कर य च गरज असत. ह ट स शक य च उ तम प त ह ज आप य स ट मवर ह ट स इ त ल कर यच आ ण गरज ल ग ल त ह ड ब ग ग ट ट कर यच. अश र त न आपण य भ ग पय त ब सक लन स ड ह ईस य हर ब ल य सव ब सक ग ट शकल आह त. ह प तक आप य ल लन स ड ह ईस य हर य ब सक ग ट स य आ ण स य भ ष त समज न घ य स न क च उपय ग पडल अस ल य त श क च न ह. आपणस ह प तक कस व टल य ब ल ऐक यल मल न क च आवड ल तस च आपणस क ह स ध रण स चव य य असत ल तर न क कळव. : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 90

स दभ : र फर स प तक : Jonathan Corbet,Alessandro Rubini and Greg Kroah-Hartman. Linux Device Drivers,3rd Edition, :O Relly publications, July 2009. Sreekrishanan Vekanteswaran. Essential Linux Device Drivers :Pearson Edition,2009. Jon Masters and Richard Blum. Professional Linux programming :Wiley India Edition,2007. John Muster. UNIX made easy,3rd Edition: New Delhi: Tata McGraw-Hill Edition,2002. म सक : Linux For You Magazine. Free Software Magazine म ग ग ईड: Detlef Fliegl.Programming Guide for Linux Device Drivers.https://usb.cs.tum.edu,2009. इ टरन ट ग ईड: ग गल, व कप डय, लन सश नगड त अन क व बस ईट, लन स क य नट...Finally..we can conclude the book with following line.. open source is the only right way to do software and best tool for doing the job. - --- Linus Torvalds : मह श ज धव : mahesh7197@gmail.com : www.bolmj.wordpress.com Page 91

मर ठ आव त ल खक:मह श स भ ज ज धव ल ग : www.bolmj.wordpress.com स पक : Email ID : mahesh7197@gmail.com BOLMJ मर ठ क शन आव त न आ ण त न आप य स ठ आप य भ ष त स प ण लन स ड ह ईस य हर मर ठ त न. लन स स रव त प स न त मर पय त. ड ह ईस य हर य क स ट स य भ ष त. मच सख ल म हत सव ट ससह म हत. सव म आउटप टच छ य च. Knowledge across the world should be Open to all, Free of cost, Easy to adopt and should available in our mother tongue. --BOLMJ