
एम्बेडेड सिस्टम C2 सॉफ्टवेयर C/C# में लिखा गया है।
Oni framework एम्बेडेड डिवाइस सॉफ्टवेयर विकास के लिए एक प्लेटफॉर्म है। इसका उपयोग एम्बेडेड डिवाइस को दूरस्थ रूप से डीबग करने/कार्यक्षमता जोड़ने के लिए किया जाता है। फिलहाल, मुख्य अवधारणाएं एक पूरी तरह से मॉड्यूलर प्लगइन सिस्टम हैं, जिसमें स्थानीय और दूरस्थ RPC शामिल हैं। इसे ring-0 विशेषाधिकार स्तर पर चलाने के लिए डिज़ाइन किया गया था, लेकिन कुछ बदलावों के साथ इसे ring-3 स्तरों पर भी उपयोग किया जा सकता है। सावधान रहें, यह उत्पादन उपयोग के लिए नहीं है, केवल उन डेवलपर्स के लिए है जो अनुसंधान के लिए एक आसान निर्माण प्लेटफॉर्म चाहते हैं।
योजनाबद्ध सुविधाएँ:
Oni-Framework के लिए बस इतना आवश्यक है कि आप इस निर्देशिका को चेकआउट करें और oni/utils/kdlsym/default.h फ़ाइल को सभी आवश्यक कार्यान्वयनों के साथ लागू करें। इसके बाद, यह gcc या clang के साथ ठीक से कंपाइल होना चाहिए और एक निष्पादन योग्य फ़ाइल तैयार करनी चाहिए। आपको BYO-निष्पादन विधि की आवश्यकता होगी, लेकिन अधिकांश एम्बेडेड उपकरणों के लिए यह ssh शेल, या telnet पर शेल, या किसी भी शेल के माध्यम से पूरा किया जा सकता है। अन्य उपकरणों को चल रहे मेमोरी संदर्भ में लोड करना होगा, फिर main पर जाना होगा जो सभी आरंभीकरण मुद्दों का ध्यान रखेगा।
git clone https://github.com/kiwidoggie/oni-framework.git
a. वैकल्पिक: FreeBSD हेडर स्थान सेट करें export BSD_INC="/path/to/freebsd/headers/include"make create चलाना होगा जो फ़ोल्डर संरचना बनाएगाmake का उपयोग करके बनाएं
a. यदि आपने पर्यावरण चर सेट नहीं किया है तो आप make BSD_INC=/path/to/freebsd/headers/include के साथ बना सकते हैंOni-Framework पूरी तरह से कार्यात्मक libc पर निर्भर नहीं करता है, और पूरी तरह से स्वतंत्र रूप से बनाने और चलाने के लिए बनाया गया है (बशर्ते सभी पूर्वापेक्षाएँ पूरी हों)। इसके बजाय आवश्यक कार्यक्षमता को मौजूदा कार्यों के न्यूनतम सेट से जोड़ा जाता है, या तो चल रही प्रक्रिया के संदर्भ में, या कर्नेल संदर्भ में (बाद वाला केवल परीक्षण किया गया है)।
include/oni/utils/kdlsym/my_platform.h में एक नया हेडर बनाकर एक नया kdlsym (कर्नेल डायनामिक सिंबल रिज़ॉल्यूशन) लक्ष्य बनाएंinclude/oni/utils/kdlsym/default.h की सामग्री को अपनी नवनिर्मित हेडर फ़ाइल में कॉपी और पेस्ट करेंinclude/oni/utils/kdlsym.h में जोड़ें#if ONI_PLATFORM==ONI_UNKNOWN_PLATFORM
#include "kdlsym/default.h"
#elif ...
#elif ONI_PLATFORM==ONI_MY_PLATFORM
#include "kdlsym/my_platform.h"
#endif
include/oni/config.h पर स्थित है// Unknown device
#define ONI_UNKNOWN_PLATFORM -1
#define ONI_MY_PLATFORM 5
#define ONI_PLATFORM ONI_UNKNOWN_PLATFORM को #define ONI_PLATFORM ONI_MY_PLATFORM में बदलकर वर्तमान बिल्ड लक्ष्य बदलेंयदि आप योगदान देना चाहते हैं, तो बस एक पुल अनुरोध सबमिट करें। अन्यथा, इस बिंदु पर इसके लिए कोई वास्तविक समर्थन नहीं है। भविष्य में यह बदल सकता है
| बिट ऑफसेट | बिट लंबाई | नाम | विवरण | उपयोग |
|---|
| 0 | 3 | Magic | यह एक सरल पैकेट हेडर मैजिक है ताकि सुनिश्चित किया जा सके कि संदेशों को ठीक से संसाधित किया जा रहा है | आवश्यक: 0101b या 5 (दशमलव) पर सेट होना चाहिए |
| 3 | 4 | संदेश श्रेणी | यह बताता है कि oni-framework पक्ष पर संदेश को किस श्रेणी में रूट किया जाए | आवश्यक: अधिकतम 14 श्रेणियां (वर्तमान में 5 उपयोग में) |
| 7 | 32 | त्रुटि/संदेश प्रकार | इस फ़ील्ड में त्रुटि कोड या संदेश प्रकार होता है | अनुरोध: इसे संदेश प्रकार पर सेट किया जाना चाहिए जो वर्तमान में CRC32(MessageName) द्वारा गणना की जाती है, प्रतिक्रिया: यह त्रुटि कोड/वापसी मान पर सेट होता है |
| 39 | 16 | पेलोड आकार | यह संदेश हेडर के बाद आने वाले डेटा की लंबाई है | वैकल्पिक: यदि कोई पेलोड नहीं है तो 0 पर सेट करें, अन्यथा डेटा की अपेक्षा करेगा |
| 55 | 1 | अनुरोध | यह फ्लैग 1 पर सेट होगा यदि संदेश अनुरोध है, या 0 यदि यह प्रतिक्रिया है | आवश्यक |
| 56 | 7 | आरक्षित | आरक्षित | अनदेखा करें: 0 पर सेट करें |