ATmega128RFA1 க்கான OTA பூட்லோடரை எழுதுகிறோம் (ஸ்மார்ட் ரெஸ்பான்ஸ் XE சாதனத்தின் ஒரு பகுதியாக)

ATmega128RFA1 க்கான OTA பூட்லோடரை எழுதுகிறோம் (ஸ்மார்ட் ரெஸ்பான்ஸ் XE சாதனத்தின் ஒரு பகுதியாக)

இரண்டாம் நிலை சந்தையில் ஒரு சுவாரஸ்யமான சாதனத்தை ஆசிரியர் வாங்குவதில் இது தொடங்கியது - Smart Response XE (குறுகிய விளக்கம்) இது பள்ளிகளை நோக்கமாகக் கொண்டது: வகுப்பில் உள்ள ஒவ்வொரு மாணவரும் தொண்ணூறுகளில் இருந்து மின்னணு நோட்புக் அல்லது மொழிபெயர்ப்பாளர் போன்ற சாதனத்தைப் பெறுகிறார்கள், ஆசிரியர் ஒரு கேள்வியைக் கேட்கிறார், மேலும் மாணவர்கள் சாதனங்களின் விசைப்பலகைகளில் பதில்களைத் தட்டச்சு செய்கிறார்கள். ரேடியோ சேனல் (802.15.4) ஆசிரியரின் கணினியுடன் இணைக்கப்பட்ட ரிசீவருக்கு.

இந்த சாதனங்கள் பல ஆண்டுகளுக்கு முன்பு நிறுத்தப்பட்டன, மேலும் பள்ளிகள் ஒவ்வொன்றும் $100- $200 க்கு வாங்கியவை இப்போது eBay இல் $10 அல்லது அதற்கும் குறைவான விலையில் வருகின்றன. அழகற்ற சோதனைகளுக்கு அங்குள்ள வன்பொருள் மிகவும் பொருத்தமானது:

  • 60 விசைப்பலகை
  • 384×136, பிக்சலுக்கு 2 பிட்கள் தீர்மானம் கொண்ட காட்சி - BC, CGA போன்றது, ஆனால் 4 வண்ணங்கள் அல்ல, ஆனால் பிரகாசத்தின் தரங்கள்
  • மைக்ரோகண்ட்ரோலர் ATmega128RFA1 (128 kB ஃபிளாஷ் நினைவகம், 4 kB ROM, 16 kB RAM, 802.15.4 டிரான்ஸ்ஸீவர்)
  • வெளிப்புற (மைக்ரோகண்ட்ரோலருடன் தொடர்புடையது, முழு சாதனம் அல்ல) SPI இடைமுகத்துடன் 1 மெகாபிட் (128 கிலோபைட்) ஃபிளாஷ் நினைவகம்
  • 4 AAA உறுப்புகளுக்கான பெட்டி.

மைக்ரோகண்ட்ரோலரின் பெயரிலிருந்து இது AVR குடும்பத்தைச் சேர்ந்தது என்பது தெளிவாகிறது, அதாவது சாதனத்தை Arduino-இணக்கமாக்குவது அற்பமான பணியை விட அதிகம்...

செய்தியிலிருந்து ஹாகடே அது என்னவென்று ஆசிரியர் கண்டுபிடித்தார் ஏற்கனவே செய்திருக்கிறார்கள் (அதே இணைப்பு எதை எங்கு இணைக்க வேண்டும் என்று உங்களுக்கு சொல்கிறது), Arduboy க்கான கேம்களை இயக்க வாய்ப்பு உள்ளது:


ஆனால் ஆசிரியர் சாதனத்தில் விளையாடாமல், படிக்கும் வாய்ப்பில் அதிக ஆர்வம் காட்டுகிறார்:

  • தொடர் SPI இடைமுகத்துடன் கூடிய ஃபிளாஷ் நினைவகம்
  • AVR க்கான பூட்லோடர்கள்
  • தரநிலை 802.15.4

ஆசிரியர் எழுதத் தொடங்கினார் நூலகம் (GPL v3), இது காட்சி, வெளியீடு உரை மற்றும் செவ்வகங்களை துவக்கவும், SPI ஃபிளாஷ் நினைவகத்தை அணுகவும் உங்களை அனுமதிக்கிறது. பின்னர் அவர் சாதனத்தின் நடைமுறை பயன்பாட்டிற்கான யோசனைகளைக் கொண்டு வரத் தொடங்கினார்: VT-100-இணக்கமான பாக்கெட் டெர்மினல், மல்டிபிளேயர் கேம்கள். மூன்று சாதனங்களை மீண்டும் கட்டியெழுப்பிய அவர், "காற்றுக்கு மேல்" ஓவியங்களைப் பெற "கற்பிக்க" முடிவு செய்தார். சுவாரஸ்யமானது மட்டுமல்ல, மிகவும் வசதியாகவும் இருக்கும்: சாதனம் ஒவ்வொரு முறையும் திறக்க கடினமாக உள்ளது, மேலும் பேட்டரி பெட்டியின் அட்டையின் கீழ் ஒரு JTAG புரோகிராமரை போர்டில் இணைக்க அனுமதிக்கும் துளைகள் மட்டுமே உள்ளன.

ATmega128RFA1 க்கான OTA பூட்லோடரை எழுதுகிறோம் (ஸ்மார்ட் ரெஸ்பான்ஸ் XE சாதனத்தின் ஒரு பகுதியாக)

Arduino பூட்லோடரைப் பதிவேற்ற இது போதுமானது, ஆனால் ஸ்கெட்ச் அல்ல - சீரியல் போர்ட் அங்கு இணைக்கப்படவில்லை, எனவே வழக்கைத் திறக்காமல் நீங்கள் இன்னும் செய்ய முடியாது. மேலும், முதல் சீரியல் போர்ட்டின் TX0 மற்றும் RX0 கோடுகள் விசைப்பலகை மேட்ரிக்ஸின் வாக்குப்பதிவு வரிகளுடன் இணைக்கப்பட்டுள்ளன, அதாவது காட்சியின் பக்கங்களில் உள்ள செயல்பாட்டு விசைகளை வாக்களிக்கின்றன. ஆனால் நீங்கள் என்ன செய்ய முடியும் - ஆசிரியர் இதை உருவாக்கினார்:

ATmega128RFA1 க்கான OTA பூட்லோடரை எழுதுகிறோம் (ஸ்மார்ட் ரெஸ்பான்ஸ் XE சாதனத்தின் ஒரு பகுதியாக)

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

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

ஓவியங்களைப் பதிவேற்ற Arduino IDE நிரலைப் பயன்படுத்துகிறது avrdude. இது நெறிமுறையைப் பயன்படுத்தி மைக்ரோகண்ட்ரோலருடன் தொடர்பு கொள்கிறது STK500, இது இரு திசைகளிலும் கோப்புகளை மாற்ற உங்களை அனுமதிக்கிறது. மாறி தாமதங்கள், சிதைவு மற்றும் தரவு இழப்பு சாத்தியம் உள்ள சேனல்களுடன் இது மோசமாக இணக்கமாக உள்ளது. சீரியல் சேனலில் ஏதாவது சலசலப்பு அல்லது சலசலப்பு ஏற்பட்டால், காரணத்தைத் தேடி நீங்கள் பைத்தியம் பிடிக்கலாம். பிரச்சனை ஒரு மோசமான கேபிள், அதே போல் ஒரு கேப்ரிசியோஸ் CP2102 இன்டர்ஃபேஸ் கன்வெர்ட்டர் என்று உணரும் வரை ஆசிரியர் அரை நாள் அவதிப்பட்டார். உள்ளமைக்கப்பட்ட இடைமுக மாற்றி கொண்ட மைக்ரோகண்ட்ரோலர் கூட, எடுத்துக்காட்டாக, ATmega32u4, சில சமயங்களில் இப்படிச் செயல்படலாம். ஒவ்வொரு Arduino பயனரும் ஓவியங்களைப் பதிவேற்றும்போது பிழைகள் மிகவும் அரிதானவை அல்ல என்பதை கவனித்திருக்கிறார்கள். சில நேரங்களில் பதிவு நன்றாக நடக்கும், ஆனால் ஒரு சோதனை வாசிப்பின் போது ஒரு பிழை கண்டறியப்பட்டது. எழுதும்போது பிழை ஏற்பட்டது என்று அர்த்தமல்ல - படிக்கும்போது தோல்வி ஏற்பட்டது. இப்போது "காற்றில்" வேலை செய்யும் போது அதே விஷயம் நடக்கும் என்று கற்பனை செய்து பாருங்கள், ஆனால் அடிக்கடி.

இந்த சிக்கலைச் சமாளிக்க பல்வேறு வழிகளை முயற்சித்த பிறகு, ஆசிரியர் பின்வருவனவற்றைக் கொண்டு வந்தார். சாதனம் ஒரு SPI இடைமுகத்துடன் 128 KB ஃபிளாஷ் நினைவகத்தைக் கொண்டுள்ளது - நாங்கள் கம்பிகள் வழியாக தரவைப் பெறுகிறோம் (ஆசிரியர் ஏற்கனவே ஒரு இணைப்பியுடன் ஒரு சாதனத்தை பக்கத்தில் வைத்திருப்பதை நினைவில் கொள்க), இந்த நினைவகத்தை ஒரு இடையகமாகப் பயன்படுத்தி, வானொலியில் தரவை அனுப்பவும் மற்றொரு சாதனத்திற்கு சேனல். Cybiko இலிருந்து வணக்கம்.

ரேடியோ சேனலுடன் பணிபுரிய குறியீட்டை எழுதிய பிறகு, அதே போல் எழுத்துருவும், ஏற்றி 4 கிலோபைட்டுகளை விட நீளமானது. எனவே, HFUSE மதிப்பை 0xDA இலிருந்து 0xD8க்கு மாற்ற வேண்டும். இப்போது பூட்லோடர் 8 கிலோபைட்கள் வரை நீளமாக இருக்கலாம், மேலும் தொடக்க முகவரி இப்போது 0x1E000 ஆகும். இது Makefile இல் பிரதிபலிக்கிறது, ஆனால் நிரப்பும் போது கணக்கில் எடுத்துக்கொள்ளப்பட வேண்டும் துவக்க ஏற்றி avrdude வழியாக.

ATmega802.15.4RFA128 இல் உள்ள 1 டிரான்ஸ்ஸீவர் முதலில் நெறிமுறையைப் பயன்படுத்தி செயல்பட வடிவமைக்கப்பட்டுள்ளது. ஜிக்பீ, இது மிகவும் சிக்கலானது, எனவே ஆசிரியர் அதற்கு பதிலாக பாக்கெட்டுகளை அனுப்ப முடிவு செய்தார். இது ATmega128RFA1 இல் வன்பொருளில் செயல்படுத்தப்படுகிறது, எனவே சிறிய குறியீடு தேவைப்படுகிறது. மேலும், எளிமைக்காக, ஆசிரியர் ஒரு நிலையான சேனலைப் பயன்படுத்த முடிவு செய்தார், அதை நீங்கள் கைமுறையாக கூட தேர்ந்தெடுக்க அனுமதிக்கவில்லை. 802.15.4 தரநிலையானது 16 முதல் 11 வரையிலான எண்களைக் கொண்ட 26 சேனல்களை ஆதரிக்கிறது. அவை மிகவும் நெரிசலானவை, சில வைஃபை சேனல்களை ஒன்றுடன் ஒன்று சேர்க்கின்றன (சிவப்பு ஜிக்பீ சேனல்கள், நீலம், பச்சை மற்றும் மஞ்சள் ஆகியவை வைஃபை).

ATmega128RFA1 க்கான OTA பூட்லோடரை எழுதுகிறோம் (ஸ்மார்ட் ரெஸ்பான்ஸ் XE சாதனத்தின் ஒரு பகுதியாக)

15 மற்றும் 26 சேனல்கள் வைஃபை குறுக்கீட்டிற்கு மிகக் குறைவாகவே பாதிக்கப்படுகின்றன. அவற்றில் இரண்டாவதாக ஆசிரியர் தேர்வு செய்துள்ளார். மறுப்பு: ஜிக்பீயை இந்த வழியில் எளிமைப்படுத்த அனுமதிக்கப்படுகிறதா என்பது மொழிபெயர்ப்பாளருக்குத் தெரியாது. ஒருவேளை நாம் இன்னும் கொஞ்சம் நிரலாக்கத்தை செய்து அதை முழுமையாக செயல்படுத்த வேண்டுமா?

முதல் சாதனத்தில், STK500 நெறிமுறை வழியாக தரவை அனுப்பும் வரையறுக்கப்பட்ட நிலை இயந்திரத்தை செயல்படுத்த வேண்டியது அவசியம். பெரும்பாலும், அனுப்பப்பட்ட மற்றும் பெறப்பட்ட செய்திகள் தன்னிறைவு பெற்றவை, ஆனால் சில சேனல்கள் முன்பு அனுப்பப்பட்ட செய்திகளுடன் இணைக்கப்பட்டுள்ளன. உரையாடலின் விளக்கம் கொடுக்கப்பட்டுள்ளது இங்கே.

இந்த உரையாடலின் ஒரு முக்கிய அங்கம், இலக்கு சாதனத்தின் ஃபிளாஷ் நினைவகத்தில் எழுதப்படும் பாக்கெட்டுகளின் பரிமாற்றமாகும். AVR குடும்பத்தின் எளிய மைக்ரோகண்ட்ரோலர்களுக்கு, பக்க அளவு 128 பைட்டுகள், ஆனால் ATmega128RFA1 க்கு இது 256. மற்றும் SPI நெறிமுறை மூலம் இணைக்கப்பட்ட ஃபிளாஷ் நினைவகத்திற்கு, இது ஒன்றுதான். முதல் சாதனத்தில் உள்ள நிரல், ஒரு ஓவியத்தை பதிவேற்றும் போது, ​​உடனடியாக அதை இரண்டாவது இடத்திற்கு மாற்றாது, ஆனால் அதை இந்த நினைவகத்தில் எழுதுகிறது. Arduino IDE உள்ளீட்டின் சரியான தன்மையை சரிபார்க்கும் போது, ​​அங்கு எழுதப்பட்டவை அனுப்பப்படும். இப்போது நாம் பெற்ற தரவை ரேடியோ சேனல் வழியாக இரண்டாவது சாதனத்திற்கு அனுப்ப வேண்டும். அதே நேரத்தில், பெறுதலில் இருந்து பரிமாற்றம் மற்றும் பின்புறம் மாறுவது அடிக்கடி நிகழ்கிறது. STK500 நெறிமுறை தாமதங்களில் அலட்சியமாக உள்ளது, ஆனால் தரவு இழப்பை பொறுத்துக்கொள்ளாது (விசித்திரமானது, ஆனால் தாமதங்கள் தரவு பரிமாற்றத்தையும் பாதிக்கும் என்று மேலே கூறப்பட்டது). வயர்லெஸ் பரிமாற்றத்தின் போது ஏற்படும் இழப்புகள் தவிர்க்க முடியாதவை. ATmega128RFA1 ஆனது, பரிமாற்றத்தின் சரியான தன்மை குறித்து சந்தேகம் இருக்கும்போது மீண்டும் மீண்டும் கோரிக்கைகளை செயல்படுத்துவதற்கான உள்ளமைக்கப்பட்ட வன்பொருள் செயல்படுத்தலைக் கொண்டுள்ளது, ஆனால் ஆசிரியர் அதையே மென்பொருளிலும் செயல்படுத்த முடிவு செய்தார். அவர் ஒரு நெறிமுறையை உருவாக்கினார், அதில் அதிக தரவு மற்றொன்றை விட ஒரு வழியில் பாய்கிறது.

இது சரியானது அல்ல, ஆனால் அது வேலை செய்கிறது. 256-பைட் பக்கம் நான்கு பிரிவுகளாக பிரிக்கப்பட்டுள்ளது, அவை ஒவ்வொன்றும் ஒரு பாக்கெட்டாக காற்றில் அனுப்பப்படுகிறது. ஒரு பாக்கெட்டில் 125 பைட்டுகள் வரை டேட்டாவும், நீளத்திற்கு ஒரு பைட் மற்றும் CRC க்கு இரண்டு பைட்களும் இருக்கலாம். எனவே பக்கம் மற்றும் பிரிவு எண்களுடன் (64 முதல் 0 வரை) 3 பைட்டுகள் நீளமுள்ள துண்டுகள் அங்கு வைக்கப்பட்டுள்ளன. பெறும் சாதனத்தில் ஒரு மாறி உள்ளது, அது எத்தனை பிரிவுகள் பெறப்பட்டன என்பதைக் கண்காணிக்க அனுமதிக்கிறது, மேலும் நான்கும் வந்தவுடன், அனுப்பும் சாதனம் முழுப் பக்கமும் பெறப்பட்டதை உறுதிப்படுத்துகிறது. உறுதிப்படுத்தல் இல்லை (CRC பொருந்தவில்லை) - முழுப் பக்கத்தையும் மீண்டும் அனுப்பவும். கேபிள் வழியாக அனுப்பும்போது வேகம் இன்னும் அதிகமாக உள்ளது. பார்க்க:


ஆனால் பொதுவாக, ஓவியங்களை பதிவேற்றுவதற்கும் அதன் மூலம் சாதனங்களுக்கும் கேபிளை இணைக்க வசதியான வழியை வழங்குவது அவசியம். எடுத்துக்காட்டாக, புகைப்படத்தில் உள்ளதைப் போல CP2102 இல் அத்தகைய இடைமுக மாற்றியின் உள்ளே வைக்கவும், அதை பலகையில் ஒட்டவும், இதனால் மைக்ரோ USB கேபிளை இணைக்கும் மற்றும் துண்டிக்கும்போது அது சக்தியைத் தாங்கும்.

ATmega128RFA1 க்கான OTA பூட்லோடரை எழுதுகிறோம் (ஸ்மார்ட் ரெஸ்பான்ஸ் XE சாதனத்தின் ஒரு பகுதியாக)

இது 3,3-வோல்ட் ஸ்டேபிலைசரையும் கொண்டுள்ளது (6 வோல்ட் மின்சாரம் உள்ள சாதனத்தில் இதை எவ்வாறு பயன்படுத்துவது - ஒரே நிலைப்படுத்தி இருந்தால் மட்டுமே, மேலும் இரண்டு டையோட்களைச் சேர்த்து, அவற்றில் எது சாதனத்தை இயக்கும் என்பதைத் தானாகவே தேர்ந்தெடுக்கலாம்) . மூன்று எல்.ஈ.டிகளும் இடைமுக மாற்றி பலகையில் இருந்து விற்கப்படாமல் இருக்க வேண்டும், இல்லையெனில் அவை பேட்டரிகளை இயக்கும் போது கூடுதலாக ஏற்றும், மேலும் விசைப்பலகை வாக்கெடுப்பில் தலையிடும் மற்றும் SPI இடைமுகத்துடன் ஃபிளாஷ் நினைவகத்துடன் வேலை செய்யும்.

ஒரு இலக்கைப் பின்தொடர்வது அதை அடைவதை விட சுவாரஸ்யமாக மாறியது (மேலும் பஸ்ஸைப் பற்றிய நகைச்சுவை தேவையில்லை). AVR பூட்லோடர்கள், SPI ஃபிளாஷ் நினைவகம், STK500 நெறிமுறை மற்றும் 802.15.4 தரநிலை பற்றி ஆசிரியர் நிறைய கற்றுக்கொண்டார்.

மேலே விவரிக்கப்பட்ட நூலகத்துடன் சேர்த்து மற்ற எல்லா குறியீடுகளும் - இங்கே, மேலும் இது GPL v3 இன் கீழ் உள்ளது. ஆசிரியரின் ட்விட்டர் - இங்கே.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்