லினஸ் டொர்வால்ட்ஸைப் பின்பற்றுதல்: புதிதாக (VIII) உங்கள் சொந்த இயக்க முறைமையை உருவாக்கவும்

எங்கள் சொந்த இயக்க முறைமையை எவ்வாறு உருவாக்குவது என்பது குறித்த தொடர் பயிற்சிகளுக்குத் திரும்புகிறோம். இந்த அத்தியாயத்தை நீங்கள் மிகவும் விரும்புவீர்கள் என்று நினைக்கிறேன், ஏனென்றால் நாங்கள் இறுதியாக எங்கள் இயக்க முறைமையுடன் தொடர்பு கொள்ளலாம். இன்று நாம் விசைப்பலகை உள்ளீட்டைப் படிப்போம். இதற்காக, திட்டம் டைமருக்கு ஒத்ததாகும். நாம் எப்படியும் IRQ களைப் பயன்படுத்த வேண்டும், எனவே டைமரைப் போலவே தொடங்குவோம்.

ND_IRQ_InstallHandler (1, & ND_Keyboard_Handler);

எவ்வாறாயினும், எங்கள் விசைப்பலகை கையாளுநர் சற்றே மிகவும் சிக்கலானது, ஏனெனில் நாங்கள் விசைகளைப் படித்து அவற்றை ஒரு இடையகத்தில் வைப்போம்.

வெளிப்புற "சி" வெற்றிட ND_Keyboard_Handler (struct regs * r) {கையொப்பமிடாத கரி ஸ்கேன்கோட் = ND :: விசைப்பலகை :: GetChar (); if (ஸ்கான்கோட்! = 255) {ND :: Screen :: PutChar (scancode); stringBuffer [stringPos] = ஸ்கான்கோட்; stringPos ++; }}

http://gist.github.com/634afddcb3e977ea202d

ND :: Keyboard :: GetChar எனப்படும் ஒரு செயல்பாட்டை எவ்வாறு அழைக்கிறோம் என்பதை நாம் சரிபார்க்கலாம். அங்கு நாம் அந்தக் கதாபாத்திரத்தைப் பெறுகிறோம், பின்னர் அது வெற்று எழுத்து இல்லை என்றால் (இங்கே நான் 255 ஐப் பயன்படுத்தினேன், ஒரு சிறந்த அமைப்பைப் பயன்படுத்த வேண்டும்) நாம் அந்தக் கதாபாத்திரத்தை திரையில் வைத்து எளிய எழுத்துக்களில் சேமித்து வைக்கிறோம் (இது முன்னேற்றத்திற்கும் உட்பட்டது, தற்போதைய அமைப்பு நிரம்பி வழிகிறது).

nsigned char ND :: விசைப்பலகை :: GetChar () {கையொப்பமிடாத கரி ஸ்கேன்கோட்; scancode = (கையொப்பமிடாத கரி) ND :: துறைமுகங்கள் :: InputB (0x60); (ஸ்கேன்கோட் & ND_KEYBOARD_KEY_RELEASE) {திரும்ப 255; } else {திரும்ப en_US [ஸ்கான்கோட்]; }} char * ND :: விசைப்பலகை :: GetString () {போது (stringBuffer [stringPos-1]! = '\ n') {} stringPos = 0; திரும்ப சரம் பஃபர்; }

http://gist.github.com/2d4f13e0b1a281c66884

அழுத்திய விசை எவ்வாறு பெறப்படுகிறது என்பதை இங்கே காணலாம். 0x60 இல் எப்போதும் கடைசி விசையை அழுத்தும். உண்மையில் இது IRQ ஐப் பயன்படுத்தாமல் நேரடியாகப் படிக்க முடியும், ஆனால் ஒரு மாற்றம் ஏற்பட்டபோது எவ்வாறு அடையாளம் காண்பது என்பது எங்களுக்குத் தெரியாது. நாங்கள் பெற்ற குறியீடு வெளியிடப்பட்ட விசையுடன் ஒத்துப்போகிறது என்பதை AND மற்றும் செயல்பாட்டுடன் சரிபார்க்கிறோம்.

அவ்வாறான நிலையில் நாங்கள் 255 ஐத் தருகிறோம் (ஏனென்றால் பின்னர் அதைப் புறக்கணிப்போம்) இல்லையெனில் விசை அழுத்தப்படும். அந்த வழக்கில் நாம் en_US எனப்படும் ஒரு வரிசையின் நிலையை திருப்பி விடுகிறோம். இந்த வரிசையில் என்ன தகவல் உள்ளது? இந்த வரிசையை நாம் ஒரு கீமேப் அல்லது எழுத்து வரைபடம் என்று அழைக்கிறோம். உங்களுக்குத் தெரியும், வெவ்வேறு மொழிகளில் வெவ்வேறு விசைப்பலகைகள் உள்ளன, அவை விசைகளை மேலெழுதும் போது ஆதரிக்கப்படுவதில்லை. எனவே ஒவ்வொரு குறியீட்டிற்கும் தொடர்புடைய விசையை en_US எங்களுக்கு வழங்கும், அது ஒரு அமெரிக்க விசைப்பலகையில் வேலை செய்யும்.

கையொப்பமிடாத கரி en_US [128] = {0,27, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0 ',' - ',' = ',' \ b ',' \ t ',' q ',' w ',' e ',' r ',' t ',' y ',' u ',' i ',' o ',' p ',' [','] ',' \ n ', 0, / * Ctrl * /' a ',' s ',' d ',' f ',' g ', 'h', 'j', 'k', 'l', ';', '\' ',' '', 0, / * இடது மாற்றம் * / '\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 0, / * வலது மாற்றம் * / '*', 0, / * Alt * / '', 0, / * கேப்ஸ் லாக் * / 0,0,0,0,0,0,0,0,0,0, / * F1-F10 விசைகள் * / 0, / * எண் பூட்டு * / 0, / * உருள் பூட்டு * / 0, / * முகப்பு விசை * / 0, / * மேல் அம்பு * / 0, / * பக்கம் மேலே * / '-', 0, / * இடது அம்பு * / 0, 0, / * வலது அம்பு * / '+', 0, / * இறுதி விசை * / 0, / * கீழ் அம்பு * / 0, / * பக்கம் கீழே * / 0, / * விசையைச் செருகவும் * / 0, / * விசையை நீக்கு * / 0,0,0, 0, 0, 11, / * F12-F0 விசைகள் * / XNUMX};

http://gist.github.com/bf52085aec05f3070b65

ஒரு சொற்றொடரைப் பெற்ற ஒரு வரையறுக்கப்பட்ட செயல்பாடும் இருந்தது. தேவைப்படும் பயன்பாடுகளிலிருந்து சரங்களை மிக எளிதாக அணுகுவதே இதன் நோக்கம். நான் நெக்ஸ்ட்ஷெல்லைட் பற்றி பேசுகிறேன், இது நெக்ஸ்டிவீலுக்கு இருக்கும் எதிர்கால ஷெல்லின் குறைக்கப்பட்ட பதிப்பாகும். நெக்ஸ்ட்ஷெல்லைட்டின் நோக்கம் புதிய செயல்பாடுகளை சிறிது சிறிதாக சோதிக்க குறைக்கப்பட்ட ஷெல் வழங்குவதாகும். நான் ஷெல் குறியீட்டை இங்கே வைக்கப் போவதில்லை, ஆனால் நான் அதை நெக்ஸ்ட்டிவெல் குறியீட்டில் சேர்த்துள்ளேன்.

இந்த நேரத்தில் இது ஒரு தனி நிரலாக செயல்படாது, ஆனால் கர்னல் என்று அழைக்கப்படும் ஒரு செயல்பாடாக செயல்படுகிறது, முக்கியமாக இயங்கக்கூடியவற்றை இயக்குவதற்கான விருப்பத்தை நாங்கள் இன்னும் சேர்க்கவில்லை. நிச்சயமாக, புதிய விசைப்பலகை உள்ளீட்டு செயல்பாடுகளுடன் ஷெல் எவ்வாறு செயல்படுகிறது என்பதற்கான சில படங்கள்.

நெக்ஸ்ட்ஷெல்லைட்


உங்கள் கருத்தை தெரிவிக்கவும்

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டிருக்கும் *

*

*

  1. தரவுக்கு பொறுப்பு: மிகுவல் ஏஞ்சல் கேடன்
  2. தரவின் நோக்கம்: கட்டுப்பாட்டு ஸ்பேம், கருத்து மேலாண்மை.
  3. சட்டபூர்வமாக்கல்: உங்கள் ஒப்புதல்
  4. தரவின் தொடர்பு: சட்டபூர்வமான கடமையால் தவிர மூன்றாம் தரப்பினருக்கு தரவு தெரிவிக்கப்படாது.
  5. தரவு சேமிப்பு: ஆக்சென்டஸ் நெட்வொர்க்குகள் (EU) வழங்கிய தரவுத்தளம்
  6. உரிமைகள்: எந்த நேரத்திலும் உங்கள் தகவல்களை நீங்கள் கட்டுப்படுத்தலாம், மீட்டெடுக்கலாம் மற்றும் நீக்கலாம்.

  1.   டாரியோ அவர் கூறினார்

    சிறந்த ஆசிரியர்! நன்றி

  2.   பாப்ஆர்க் அவர் கூறினார்

    உண்மை என்னவென்றால், நான் ஒருபோதும் டுடோரியலைப் பின்பற்றவில்லை, ஏனெனில் முதல் பகுதியில் தொகுக்க முயற்சிக்கும்போது அது எனக்கு ஒரு பிழையைக் கொடுத்தது, ஆனால் அது என்ன பிழை என்று எனக்கு நினைவில் இல்லை

  3.   லோபஸின் பூனை அவர் கூறினார்

    எனது கிராஸ் அறியாமைக்கு மன்னிக்கவும் ... இந்த குறியீடுகள் எங்கிருந்து எழுதப்பட்டுள்ளன? முனையத்திலிருந்து ??

    1.    அட்ரியன்ஆரோயோஸ்ட்ரீட் அவர் கூறினார்

      குறியீடுகள் மூலக் குறியீட்டின் ஒரு பகுதியாகும். நான் அதை முழுமையாக்கவில்லை, இல்லையெனில் இடுகை அனைத்தும் குறியீடு மற்றும் விளக்கம் எதுவும் இல்லை. நீங்கள் அதைப் பின்பற்ற விரும்பினால் ஆரம்பத்தில் இருந்தே பயிற்சிகளைப் படிக்க பரிந்துரைக்கிறேன். முழு மூலக் குறியீட்டையும் இங்கே பார்க்கலாம் (http://github.com/AdrianArroyoCalle/next-divel)

  4.   கேடி அவர் கூறினார்

    வழிதல் ஏற்படாதவாறு முன்னேற்றம் எப்படி இருக்கும்?

    1.    தட்டு அவர் கூறினார்

      கேடி, நீங்கள் இன்னும் களஞ்சியக் குறியீட்டைச் சரிபார்த்தீர்களா? அங்கு அதிகபட்ச அளவு நிறுவப்பட்டுள்ளது, அதே போல் அதைக் கட்டுப்படுத்தும் செயல்பாடுகளும் உள்ளன, அங்கு நீங்கள் அளவு மாற்றத்தை செய்யலாம் அல்லது இடையக நிறைவுற்றால் அதை விடுவிக்க ஒரு நியாயமான வழியை செயல்படுத்தலாம்
      நீங்கள் அதை சரிபார்க்க இணைப்பை விட்டு விடுகிறேன் https://github.com/AdrianArroyoCalle/next-divel/blob/master/src/start/ND_Keyboard.cpp

  5.   நிகோ அவர் கூறினார்

    வணக்கம் மிகவும் சுவாரஸ்யமானது, லினஸ் டார்வல்களைப் பின்பற்றும் இந்த «தொடரை you நீங்கள் தொடரப் போகிறீர்களா?
    இதுபோன்ற ஒரு கர்னலை உருவாக்க சில புத்தகம், தகவல்களை பரிந்துரைக்க முடியுமா?

    வாழ்த்துக்கள் !!

  6.   பதில்கள் வேகனாஸ்.ஆர்க் அவர் கூறினார்

    வணக்கம். பயிற்சிக்கு நன்றி. தயவுசெய்து, டானன்பாமின் "ஆப்பரேட்டிங் சிஸ்டம்ஸ்" இல்லாத ஒரு புத்தகத்தை நீங்கள் பரிந்துரைக்கலாமா? முன்கூட்டிய மிக்க நன்றி.
    வாழ்த்துக்கள்.