Προς το περιεχόμενο

Symvoules gia programmatismo? Irq? RFCS?


trospe

Προτεινόμενες αναρτήσεις

Δημοσ.

Hello insomniacs...

 

Gia na ftiaksei kaneis ena programma pou na mporei na exei epidrasi se kapoio hardware ti xreiazetai? RFCS? Irq programming?

 

Kserw oti ta perissotera programmata pernane apo registers meta apo tin ALU kai meta apo ti mnimi (i kapws etsi telws pantwn,den thimamai poly kala exei perasei kairos) ektos apo to DMA programming

Den eimai programmatistis,kapote eixa ftasei mexri arxi classes kai Object Oriented..alla meta ta paratisa...

 

Legontas epidrasi ennoousa drivers...format...defrug...overclocking..... eikoniki afksisi tou buffer mias siskevis mesw ram...k.a.

 

Ligo fos re paidia?

Δημοσ.

Μπορείς να χρησιμοποιήσεις μια γλώσσα υψηλού επιπέδου όπως Pascal (Delphi ας πούμε) ή C (Visual C++).

 

Δεύτερο θα πρέπει να ξέρεις της προδιαγραφές της συσκευής που θέλεις να ελέγξεις. Π.χ.

τι τσιπάκια έχει, τι δομή έχει, πως δουλεύει, πως δουλεύει μέσα στο λειτουργικό...

 

Για παράδειγμα στην Delphi Pascal υπάρχει μια ρουτίνα που ονομάζεται CreateFile με την οποία ένα πρόγραμμα μπορεί να συνδεθεί με έναν οδηγό μιας συσκευής ώστε να την ελέγξει.

 

Πολύ απλά θέλει ψάξιμο και χρόνο...

Δημοσ.

RFCS τι είναι; Request For Comments? !!! ???

 

Μια φορά κι έναν καιρό σε DOS real mode το μόνο που έπρεπε να κάνεις ήταν να στείλεις και να λάβεις δεδομένα σε θύρες:

>mov dl,0x61
in al,dl

ή αντίστοιχα σε Pascal

>b := Port[$61]

Εκτός από τις θύρες, με μερικές συσκευές επικοινωνούσες και μέσω απευθείας προσπέλαση στη μνήμη:

>mem[vgaseg:$0000] := byte('A')

Και φυσικά υπήρχαν κι ένα σωρό ακόμα κολπάκια, όπως IRQ trapping, TSR κτλ.

 

Με την έλευση του 386 protected mode οι θύρες "προστατεύτηκαν" από το λειτουργικό, και τώρα πρέπει να ζητάς "άδεια" από τα Windows για να προσπελάσεις το υλικό.

 

Εν ολίγοις, για να βουτήξεις στα βαθιά, αρχίζεις από το Driver Development Kit της Microsoft (http://www.microsoft.com/whdc/devtools/ddk/default.mspx). Αν πάλι θες για linux, υπάρχουν δύο τρόποι, ένας να αλλάξεις τον kernel και ένας για user mode drivers, αλλά δεν έχω ασχοληθεί πολύ με linux για να σου πω λεπτομέρειες.

Δημοσ.

Υ.Γ. ειδικά το format και το defrag δεν απαιτεί πρόσβαση στο υλικό, υπάρχει το αντίστοιχο API των Windows.

 

Αν θες γίνε πιο συγκεκριμένος...

Δημοσ.

@GCMH

To oti o programmatismos thelei xrono...asta na pane...pistevw oti einai kathara thema ypomonis kai empeirias. Ante kai ligo iq :-)

 

@alkisg

To API den einai ligo kseperasmeno? Enas programmatistis sti douleia otan ksanaskeftomoun na piasw tin c++ ,me symvoulepse gia to visual studio 2005.

.NET

 

Isws gia ta rfcs den to diatypwsa swsta. Mperdeftika mia fora pou eixa diavasei enan algorithmo mias kryptografisis. Kamia sxesi.

 

Genika tha ithela na mathw ti xreiazetai gia ton programmatismo syskevwn.

Analoga ti theleis einai panta to zitoumeno?? Gia einai pio grigoro ena programma stin diaxeirisi siskevis xreiazetai operator overloading,pointers DirectMemoryAccess kai kapoies alles texnikes ektos apo ta ergostasiaka xaraktiristika tis syskevis?? :roll:

Δημοσ.

Interface milame gia c++. P.x. gia ena programma epanw se sklirous diskous pou na mporei na megalwnei mesw software to buffer tous kai na trexei synexws sto background

(Me tray icon stin kaliteri)

:confused:

Δημοσ.

@trospe

Mallon exeis mperdeutei ligo. to API den ti8etai 8ema na einai xeperasmeno giati apla xwris auto de mporeis na programmatiseis mia syskeyh (ektos k an paixeis se epipedo -ti na pw- hlektrikwn palmwn...).

To API (Application Programming Interface) einai mia genikh ennoia gia to synolo twn

'diepafwn' [interface -apo ekei k to 'I' sto 'API'], twn me8odwn/leitourgiwn (parto opws 8es) pou o kataskevastis mporei na dia8esei se programmatistes gia na doulepsoun.

px. estw mia tostiera (leme twra). estw oti h syskeyh mporei na pshsei tost,sandwich k oti allo. O kataskeyasths dia8etei etoimo ena application pou ekmetalleuetai tis leitourgies ths syskeuhs. Oi leitourgies autes epitygxanontai me th syggrafh kwdika (functions, k.o.k.). To API einai autos akribws o kwdikas, o opoios diati8etai wste o ka8e programmer na mporei na doulepsei peraiterw panw sth syskeyh (mporei na 8elei na xrhsimopoihsei kapoia etoima functions gia na allaxei kapoia leitourgia, px. anti na pshnei sandwich na pshnei kokkous kafe k na bgazei nescafe - eleos! pws to pa auto!!!).

To API einai prosbasimo mesw profanws mias glwssas programmatimsou (px. vb.NET h oti allo).

A! Episis den eimai programmatisths opote an exw kapou la8os dior8wste me....

Δημοσ.

@dikemou ....lol lol

 

@or1onas..

Thes na mou peis oti gia na grapseis ena programma pou exei prosvasi sto

firmware enos hardware xreiazesai tis ergostasiakes parametrous??

 

Kai an sto Linux gia paradeigma thelw na ftiaksw (leme twra) enan driver gia mia karta grafikwn i mias ethernet psaxnw na vrw to source tis etairias kai tis ergostasiakes parametrous is syskevis :? ?

Δημοσ.

Oxi akrivws, den to anelysa entelws swsta...

An 8es na ftiaxeis ena driver, dld ka8ara to 1o layer epikoinwnias me mia syskeyh, ISWS 8a prepei na paixeis me ka8arh c, registers, assembly h genika mia poly low-level glwssa mhxanhs.

K fysika na xereis ola ta specs ths, opws anefere k o GCMH.

To API den einai source code, alla libraries (px. dll arxeia) ta opoia exei dwsei o kataskevastis ths syskeyhs gia na ta xrhsimopoihseis gia na epikoinwnhseis me th syskeyh k na kaneis th douleia sou. OXI omws se hardware level. Auth einai h ennoia tou interface. O kwdikas sou ftanei mexri to endiameso epipedo tou API. Esy douleueis me th glwssa programmatismou ths areskeias sou k xrhsimopoieis to API (tis functions dld pou exeis sth dia8esh sou) k autes analambanoun na kanoun th douleia apo ekei k pera.

Δημοσ.

Gia na doume :-)

 

H C pantws einai tritis genias ....alla exw akousei mia xaraktiristiki frasi....

 

-A re pout@n@ C

 

Opws episis eixa diavasei kapote ena petiximeno....

 

Decription C and C++.

 

C is like a pistol. It can shoot rapidly in all the circumstances..

C++ on the other hand is like a shotgun. It is slower than the gun but it makes bigger explosion... 8-)

 

Egw mexri twra c++ doulepsa. Den piga se mia alli glwssa giati perimena prwta na exw pliri gnwsi tis kai meta na doulepsw ki alles. P.x. java i perl.

 

Pou tetoia tixi!

 

Efxaristw gia tis plirofories

Δημοσ.

Διευκρινησούλες:

API γενικά είναι ένα σύνολο συναρτήσεων, σαν να λέμε μία ή πολλές βιβλιοθήκες που μπορούμε να χρησιμοποιήσουμε. Windows API είναι οι συναρτήσεις που προσφέρουν τα Windows στα προγράμματα.

 

Διεπαφή (interface) προγράμματος λέμε τα κουμπάκια και τα παράθυρα που έχει. Διεπαφή βιβλιοθήκης λέμε ουσιαστικά το API.

 

Με ελάχιστες εξαιρέσεις, όλες οι γλώσσες πατάνε πάνω στο API των Windows. Δηλαδή είτε γράψεις MFC πρόγραμμα με C++ είτε Delphi είτε C builder είτε .NET, τελικά θα καλεστεί το API των Windows. (οι ελάχιστες εξαιρέσεις περιλαμβάνουν owner drawn controls, wxwidgets κτλ κτλ, ας τις αφήσουμε έξω από τη συζήτηση please).

 

Δηλαδή χωρίς το API δεν γίνεται τίποτα. Είναι σχετικά χαμηλό επίπεδο προγραμματισμού, δηλαδή συνήθως χρειάζεται περισσότερο χρόνο να κάνεις κάτι με API παρά με άλλες μεθόδους.

 

Παλιότερα προγραμματίζαμε μόνο σε API. Μετά βγήκαν MFC, Delphi, ATL, .NET κτλ και "πακετάρανε" διάφορες λειτουργίες σε "αντικείμενα". Δηλαδή πολλές φορές δεν χρειάζεται να καλείς συναρτήσεις, αλλά τραβάς από ένα toolbox το FileOpenDialog και έχεις ταχύτατα τη λειτουργία που θες.

 

Βέβαια αυτό το πακετάρισμα των δυνατοτήτων των Windows μας γλυτώνει πολύ χρόνο, αλλά από την άλλη κάνει τα προγράμματα ελαφρώς πιο αργά. Το κυριότερο όμως μειονέκτημα είναι ότι δεν έχουν πακεταριστεί όλες οι δυνατότητες του API των Windows.

 

Παραδείγματα:

Από Delphi τραβάω ένα TFontDialog και έχω σε 1 λεπτό έτοιμο τον διάλογο επιλογής γραμματοσειρών.

Με Windows API θα χρειαστώ κανά δεκάλεπτο για την ίδια δουλειά.

Όμως αν θέλω να περιορίσω τις γραμματοσειρές έτσι ώστε να φαίνονται μόνο αυτές που έχουν και ελληνικά γράμματα, δεν μπορώ να το κάνω σε Delphi, πρέπει υποχρεωτικά να γράψω API.

 

Στους device drivers τα πράγματα είναι πιο απόλυτα. Από τα πράγματα που θα χρειαστείς, σχεδόν ΤΙΠΟΤΑ δεν θα υπάρχει σε Delphi / MFC / .NET κτλ. Θα πρέπει υποχρεωτικά να γράψεις σε API. Δεν έχεις άλλη επιλογή.

 

Η μόνη επιλογή σου είναι το υπόλοιπο του προγράμματος που δεν ασχολείται με hardware. Π.χ. για το user interface μπορείς να διαλέξεις οτιδήποτε από τα παραπάνω. Όλα αυτά (Delphi κτλ) σου επιτρέπουν να χρησιμοποιείς και Windows API, ακριβώς επειδή είναι απαραίτητο σε δύσκολες εφαρμογές.

 

Επομένως μπορείς να συνδυάσεις Delphi και Windows API, Visual C/C++ και Windows API, .NET και Windows API, Visual Basic και Windows API ή ότι άλλο θέλεις. Το API όμως για την περίπτωσή σου είναι υποχρεωτικό.

Δημοσ.

alkisg

Το κυριότερο όμως μειονέκτημα είναι ότι δεν έχουν πακεταριστεί όλες οι δυνατότητες του API των Windows.
:evil:

 

Oso mikroteri einai i genia toso apolita kai pio grigora diaxeirizetai ena programma mou fainetai telika....vevaia exei to timima tou xronou.

 

Mia fora mou eixe deiksei enas assemblakias 10 grammes kwdika gia na typwsei stin othoni to xaraktira "A" :twisted:

 

Anyway alkisg thanks isoun poly diafwtistikos

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...