تتوفر آلية تطوير تطبيق مخصص وتحميله في الوحدة ضمن نظامي التشغيل Linux وWindows. في هذه المقالة سوف نلقي نظرة تفصيلية على كيفية القيام بذلك، وذلك باستخدام أمثلة من SDK المقدمة
قبل كتابة المقال، طلب مني أحد معارفي، بعيدًا عن التطوير لنظام التشغيل Linux، أن أتعامل مع مسألة وصف عملية تطوير التطبيق الخاص بي لوحدة SIM7600E-H بأكبر قدر ممكن من التفاصيل. كان معيار تقييم إمكانية الوصول إلى عرض المواد هو عبارة "حتى أفهم".
أدعوك للتعرف على ما حدث.
يتم استكمال المقالة وتحديثها بانتظام
مقدمة
عادة، يتم استخدام وحدات الاتصالات الخلوية فقط لنقل البيانات والمكالمات الصوتية ونقل الرسائل القصيرة وما شابه ذلك. كل هذا يتم من خلال أوامر AT المرسلة من متحكم تحكم خارجي. ولكن هناك فئة من الوحدات التي تسمح لك بتنفيذ تعليمات برمجية مخصصة يتم تحميلها من الخارج. في بعض الحالات، يؤدي هذا إلى تقليل الميزانية الإجمالية للجهاز بشكل كبير، مما يسمح لك بتثبيت متحكم أبسط (وميزانية متساوية) على اللوحة أو التخلي عنه تمامًا. مع ظهور وحدات LTE التي يتحكم فيها نظام التشغيل Android أو Linux ومواردها القوية، أصبح من الممكن حل أي مهام متاحة للمعالجات الشائعة. ستتحدث هذه المقالة عن SIM7600E-H، الذي يتحكم فيه نظام التشغيل Linux. سننظر في كيفية تنزيل تطبيق قابل للتنفيذ وتشغيله.
من نواحٍ عديدة، تعتمد المادة على مستند "SIM7600 Open Linux Development Quide"، لكن بعض الإضافات، وقبل كل شيء، النسخة الروسية ستكون مفيدة. ستساعد المقالة أولئك الذين بدأوا للتو في إتقان الوحدة على فهم كيفية تنزيل التطبيق التجريبي وتوفير المهارات اللازمة للعمل اللاحق.
باختصار حول من هو SIM7600E-H
SIM7600E-H عبارة عن وحدة مبنية على معالج ARM Cortex-A7 بسرعة 1.3 جيجا هرتز من Qualcomm، مع وجود نظام التشغيل Linux (kernel 3.18.20) بالداخل، وهو قادر على العمل مع نطاقات التردد الأوروبية (بما في ذلك الروسية) 2G/3G/ LTE التي تدعم Cat .4، مما يوفر سرعات تنزيل قصوى تصل إلى 150 ميجابت في الثانية وسرعات تحميل تصل إلى 50 ميجابت في الثانية. تغطي الأجهزة الطرفية الغنية ونطاق درجات الحرارة الصناعية ووجود نظام الملاحة GPS/GLONASS المدمج أي متطلبات للحل المعياري الحديث في مجال M2M.
نبذة عن النظام
تعتمد وحدة SIM7600E-H على نظام التشغيل Linux (kernel 3.18.20). بدوره، تم بناء نظام الملفات على أساس نظام الملفات المسجلة UBIFS (نظام ملفات الصور غير المصنفة).
تشمل الميزات المهمة لنظام الملفات هذا ما يلي:
- يعمل مع الأقسام، ويسمح لك بإنشاء حجمها أو حذفها أو تغييرها؛
- ويضمن محاذاة التسجيل عبر حجم الوسائط بالكامل؛
- يعمل مع الكتل السيئة.
- يقلل من احتمالية فقدان البيانات أثناء انقطاع التيار الكهربائي أو حالات الفشل الأخرى؛
- حفظ السجلات.
الوصف مأخوذ
أولئك. يعد هذا النوع من نظام الملفات مثاليًا لظروف التشغيل القاسية للوحدة ومشاكل الطاقة المحتملة. ولكن هذا لا يعني أن ظروف الطاقة غير المستقرة ستكون الوضع المتوقع لتشغيل الوحدة، بل يشير فقط إلى قابلية بقاء الجهاز بشكل أكبر.
ذاكرة
يتم توزيع مناطق الذاكرة على النحو التالي:
هناك ثلاثة مجالات رئيسية يجب تسليط الضوء عليها:
ubi0:rootfs – للقراءة فقط ويحتوي على نواة لينكس نفسها
ubi0:usrfs - يستخدم في المقام الأول لبرامج المستخدم وتخزين البيانات
ubi0:cahcefs - محجوز لتحديثات FOTA. إذا كانت المساحة المتوفرة غير كافية لتنزيل التحديث، فسيقوم النظام بحذف الملفات غير المستخدمة وبالتالي تحرير المساحة. ولكن لأسباب أمنية، يجب ألا تضع ملفاتك هناك.
وتتوزع الأقسام الثلاثة على النحو التالي:
نظام الملفات
مقاس
مستعملة
متوفرة
يستخدم٪
شنت على
ubi0:rootfs
40.7M
36.2M
4.4M
89%
/
ubi0:usrfs
10.5M
360K
10.1M
3%
/البيانات
ubi0:cachefs
50.3M
20K
47.7M
0%
/مخبأ
الوظائف المتاحة
كما ذكر أعلاه، تم بناء الوحدة على شرائح Cortex A7 من Qualcomm. سيكون من الخطأ عدم توفير مثل هذا المركز عالي الأداء لمعالجة برنامج المستخدم وتفريغ المعالج الرئيسي للجهاز عن طريق تفريغ جزء من البرنامج إلى الوحدة.
بالنسبة لبرنامج المستخدم، ستتوفر لنا أوضاع التشغيل الطرفية التالية:
رقم التعريف الشخصي
الاسم
رقم GPIO لنظام
حدث اساسي
وظيفة1
وظيفة2
سحب
مقاطعة الاستيقاظ
6
SPI_CLK
-
UART1_RTS
-
-
ب-PD
-
7
SPI_MISO
-
UART1_Rx
-
-
ب-PD
-
8
SPI_MOSI
-
UART1_Tx
-
-
ب-PD
-
9
SPI_CS
-
UART1_CTS
-
-
ب-PD
-
21
SD_CMD
-
بطاقة الذاكرة
-
-
ب-PD
-
22
SD_DATA0
-
بطاقة الذاكرة
-
-
ب-PD
-
23
SD_DATA1
-
بطاقة الذاكرة
-
-
ب-PD
-
24
SD_DATA2
-
بطاقة الذاكرة
-
-
ب-PD
-
25
SD_DATA3
-
بطاقة الذاكرة
-
-
ب-PD
-
26
SD_CLK
-
بطاقة الذاكرة
-
-
ب-بن
-
27
SDIO_DATA1
-
WLAN
-
-
ب-PD
-
28
SDIO_DATA2
-
WLAN
-
-
ب-PD
-
29
SDIO_CMD
-
WLAN
-
-
ب-PD
-
30
SDIO_DATA0
-
WLAN
-
-
ب-PD
-
31
SDIO_DATA3
-
WLAN
-
-
ب-PD
-
32
SDIO_CLK
-
WLAN
-
-
ب-بن
-
33
GPIO3
GPIO_1020
MIFI_POWER_EN
GPIO
MIFI_POWER_EN
ب-بو
-
34
GPIO6
GPIO_1023
MIFI_SLEEP_CLK
GPIO
MIFI_SLEEP_CLK
ب-PD
-
46
ADC2.
-
ADC
-
-
-
-
47
ADC1.
-
ADC
-
-
ب-بو
-
48
SD_DET
GPIO_26
GPIO
GPIO
SD_DET
ب-PD
X
49
الوضع
GPIO_52
الحالة
GPIO
الحالة
ب-PD
X
50
GPIO43
GPIO_36
MIFI_COEX
GPIO
MIFI_COEX
ب-PD
-
52
GPIO41
GPIO_79
BT
GPIO
BT
ب-PD
X
55
SCL
-
I2C_SCL
-
-
ب-PD
-
56
SDA
-
I2C_SDA
-
-
ب-بو
-
66
RTS
-
UART2_RTS
-
-
ب-PD
-
67
CTS
-
UART2_CTS
-
-
ب-PD
-
68
آر إكس دي
-
UART2_Rx
-
-
ب-PD
-
69
RI
-
GPIO(RI)
-
-
ب-PD
-
70
DCD
-
GPIO
-
-
ب-PD
-
71
TXD
-
UART2_Tx
-
-
ب-PD
-
72
DTR
-
GPIO (DTR)
-
-
ب-PD
X
73
PCM_OUT
-
PCM
-
-
ب-PD
-
74
PCM_IN
-
PCM
-
-
ب-PD
-
75
PCM_SYNC
-
PCM
-
-
ب-PD
-
76
PCM_CLK
-
PCM
-
-
ب-بو
-
87
GPIO77
GPIO77
BT
GPIO
BT
ب-PD
-
أوافق، القائمة مثيرة للإعجاب وملاحظة: يتم استخدام جزء من الأجهزة الطرفية لتشغيل الوحدة كجهاز توجيه. أولئك. بناء على هذه الوحدة، يمكنك إنشاء جهاز توجيه صغير يقوم بتوزيع الإنترنت عبر شبكة Wi-Fi. بالمناسبة، هناك حل جاهز يسمى SIM7600E-H-MIFI وهو عبارة عن بطاقة MiniPCIE مع وحدة SIM7600E-H ملحومة والعديد من دبابيس الهوائي، أحدها هوائي Wi-Fi. ومع ذلك، هذا موضوع لمقال منفصل.
الاربعاء (ليس يوم من أيام الأسبوع)
ما تحتاجه ليس متاحًا للتنزيل مجانًا - SDK، والذي يمكنك طلبه من الموزع الخاص بك.
تثبيت الأدوات المساعدة للعمل مع الوحدة
فيما يلي، سنعمل ضمن نظام التشغيل Windows باعتباره نظام التشغيل الأكثر شهرة لدى معظم المستخدمين.
سنحتاج إلى تثبيت البرنامج اللازم في بضع خطوات بسيطة لإتقان العمل مع الوحدة فيما بعد:
- جنو / لينكس
- سيغوين
- سائق
- اعلان
تثبيت جنو/لينكس
لإنشاء التطبيق، يمكنك استخدام أي مترجم متوافق مع ARM-Linux. سوف نستخدم SourceryCodeBenchLiteARM GNU/Linuxtranslater المتاح للتنزيل على
للتأكد من تثبيت جميع المكونات بشكل صحيح، سأترك بعض لقطات الشاشة لعملية التثبيت. من حيث المبدأ، لا يوجد شيء معقد في التثبيت.
للتأكد من تثبيت جميع المكونات بشكل صحيح، سأترك بعض لقطات الشاشة لعملية التثبيت. من حيث المبدأ، لا يوجد شيء معقد في التثبيت.
- نحن نقبل اتفاقية الترخيص
- حدد مجلد التثبيت
- نترك المكونات الضرورية دون تغيير
- اترك الأمر كما هو
- عدة مرات "التالي" و"التثبيت" وهذا كل شيء
تثبيت سيجوين
علاوة على ذلك، من أجل التطوير، ستحتاج إلى مجموعة من المكتبات والأدوات المساعدة من المجموعة المقدمة
لا يوجد شيء معقد في تثبيت Cygwin، الشيء الوحيد الذي تحتاج إلى تحديده هو المرآة التي سيقوم المثبت بتنزيل الملفات الضرورية منها، واختيار أي منها وتثبيته، بالإضافة إلى مجموعة من الأدوات المساعدة والمكتبات، مع ترك جميع المكتبات المتاحة و المرافق المحددة.
تثبيت برنامج التشغيل
بعد توصيل الوحدة بجهاز الكمبيوتر، ستحتاج إلى تثبيت برامج التشغيل. يمكن طلبها من الموزع الخاص بك (مستحسن). لا أنصحك بالبحث في الإنترنت بنفسك، لأن... قد يستغرق الأمر وقتًا طويلاً للعثور على سبب تعارض الجهاز.
من بين المنافذ المختارة نرى ما يلي:
Windows
لينكس
وصف
تشخيصات SimTech HS-USB
المسلسل USB
واجهة التشخيص
SimTech HS-USB NMEA
المسلسل USB
واجهة نظام تحديد المواقع NMEA
منفذ SimTech HS-USB AT
المسلسل USB
في واجهة المنفذ
مودم سيم تك HS-USB
المسلسل USB
واجهة منفذ المودم
SimTech HS-USB الصوت
المسلسل USB
واجهة USB الصوت
محول SimTech HS-USB WWAN
يو اس بي نت
واجهة NDIS WWAN
واجهة ADB المركبة من Android
يو اس بي ايه دي بي
يضيف Android منفذ التصحيح
كما لاحظت على الأرجح، لا يوجد USB ADB بين المنافذ الموجودة في لقطة الشاشة، وذلك لأن منفذ ADB في الوحدة مغلق افتراضيًا وتحتاج إلى تمكينه عن طريق إرسال الأمر "AT+CUSBADB=1" إلى AT منفذ الوحدة وأعد تشغيلها (يمكن القيام بذلك باستخدام الأمر "AT+CRESET").
ونتيجة لذلك، نحصل على الواجهة المطلوبة في مدير الأجهزة:
لقد انتهينا من برامج التشغيل، فلننتقل إلى ADB.
تثبيت بنك التنمية الآسيوي
انتقل إلى الموقع الرسمي لمطور Android
قم بتنزيل الأرشيف الناتج وفك ضغطه إلى جذر محرك الأقراص C.
متغيرات البيئة
بعد تثبيت Cygwin، ستحتاج إلى إضافة المسار Cygwin/bin/ إلى متغيرات بيئة التطوير (لوحة التحكم الكلاسيكية → النظام → إعدادات النظام المتقدمة → المتقدمة → متغيرات البيئة → متغيرات النظام → المسار → تحرير) كما هو موضح في لقطة الشاشة أدناه:
وبالمثل، قم بإضافة المسار إلى أرشيف ADB الذي تم تنزيله وتفكيكه إلى جذر محرك الأقراص C.
انقر فوق "موافق" عدة مرات وأعد تشغيل الكمبيوتر.
بعد إعادة التشغيل، يمكنك بسهولة التحقق مما إذا كان ADB يعمل بشكل صحيح عن طريق فتح سطر الأوامر (Win+R → cmd) وكتابة الأمر "adb version". نحصل على شيء مثل هذا:
لنقم بتوصيل الوحدة بجهاز الكمبيوتر (إذا حدث أن تم قطع اتصالها) وتحقق مما إذا كان ADB يراها باستخدام الأمر "adb devices":
تم ذلك، وبذلك يكتمل تكوين الاتصال بالوحدة ويمكننا تشغيل الصدفة للعمل مع الوحدة.
تفريغ وتجميع SDK
الآن بعد أن أصبح لدينا إمكانية الوصول إلى الصدفة ويمكننا البدء في العمل باستخدام سطر أوامر الوحدة، فلنحاول تجميع تطبيقنا الأول لتحميله في الوحدة.
قد يجد الكثير من الناس صعوبة في ذلك! لأن تعمل الوحدة على نظام التشغيل Linux؛ ولتجنب الاصطدامات عند تجميع التعليمات البرمجية ضمن Windows، فمن الأفضل تجميعها في البيئة الأصلية - Linux.
لن نتناول بالتفصيل كيف يمكنك تثبيته على جهاز افتراضي في حالة عدم وجود Linux والرغبة في تثبيته على جهازك. سنستخدم VirtualBox، ونثبت الإصدار 20.04 من Ubuntu (الإصدار الحالي وقت كتابة هذا التقرير) وسنبدأ بموجبه العمل مع المترجمين وحزم SDK وما إلى ذلك.
دعنا ننتقل إلى بيئة Linux ونقوم بفك ضغط الأرشيف المستلم من الموزع.
simcom@VirtualBox:~/Desktop/OpenLinux$ sudo tar -xzf MDM9x07_OL_2U_22_V1.12_191227.tar.gz
انتقل إلى دليل sim_open_sdk وأضف البيئة:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ cd sim_open_sdk
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ source sim_crosscompile/sim-crosscompile-env-init
نبقى في نفس المجلد وننفذ الأوامر اللاحقة أثناء وجوده فيه.
قم بتثبيت مكتبة libncurses5-dev إذا لم يتم تثبيتها:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get update && sudo apt-get install libncurses5-dev -y
بايثون، إذا لم يتم تثبيته أيضًا:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install python -y
و دول مجلس التعاون الخليجي:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ sudo apt-get install gcc
التحويل البرمجي:
الآن نحن بحاجة إلى تجميع عدة ملفات، نقوم بتشغيل الأوامر التالية بالتسلسل.
إذا انبثقت نافذة تكوين kernel أثناء الترجمة، فما عليك سوى تحديد Exit والعودة إلى وحدة التحكم؛ ولسنا بحاجة إلى تكوين kernel الآن.
نحن نفعل:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make
تجميع محمل الإقلاع:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make aboot
تجميع النواة:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_menuconfig
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel
تجميع نظام الملفات الجذر:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make rootfs
بالنسبة لمستخدمي Linux، سيكون من المناسب تجميع برنامج تشغيل الوحدة:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make kernel_module
لنقم بتجميع العرض التوضيحي:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ make demo
وبعد ذلك ستظهر عدة ملفات جديدة في دليل sim_open_sdk/output:
simcom@VirtualBox:~/Desktop/OpenLinux/sim_open_sdk$ ls output/
appsboot.mbn boot.img demo_app helloworld system.img
عرض
دعونا نحاول تحميل العرض التوضيحي في وحدتنا ونرى ما سيخرج منه.
تحميل
في دليل sim_open_sdk يمكننا رؤية الملف demo_app. نأخذه وننقله إلى جذر محرك الأقراص C على الكمبيوتر الذي تتصل به الوحدة. ثم قم بتشغيل سطر أوامر Windows (Win+R -> cmd) وأدخل:
C:>adb push C:demo_app /data/
ستخبرنا وحدة التحكم بما يلي:
C:demo_app: 1 file pushed, 0 skipped. 151.4 MB/s (838900 bytes in 0.005s)
هذا يعني أنه تم إرسال الملف بنجاح إلى الوحدة وكل ما علينا فعله هو تشغيله. دعونا لا نتردد.
نحن نفعل:
C:>adb shell
نقوم بتوسيع حقوق الملف الذي تم تنزيله:
/ # cdhmod 777 /data/demo_app
ونركض:
/ # /data/demo_app
في نفس وحدة التحكم، ستخبرنا الوحدة بما يلي:
SDK_VER : SIM_SDK_VER_20191205
DEMO_VER: SIM_SDK_VER_20191205
Please select an option to test from the items listed below.
1. WIFI 2. VOICE CALL
3. DATA CALL 4. SMS
5. WDS(APN) 6. NAS
7. AT 8. OTA
9. TTS 10. GPIO
11. GPS 12. Bluetooth
13. TCP/UDP 14. Timer
15. ADC 16. I2C
17. UIM(SimCard) 18. DMS(IMEI,MEID)
19. UART 20. SPI
21. Version 22. Ethernet
23. FTP 24. SSL
25. HTTP(S) 26. FTP(S)
27. MQTT(S) 28. ALSA
29. DEV 30. AUDIO
31. JSON 32. LBS
99. EXIT
Option >
دعونا نلقي نظرة على IMEI للوحدة، أدخل 7 (التبديل إلى وضع الأوامر) ثم أدخل 5:
Please select an option to test from the items listed below.
1. WIFI 2. VOICE CALL
3. DATA CALL 4. SMS
5. WDS(APN) 6. NAS
7. AT 8. OTA
9. TTS 10. GPIO
11. GPS 12. Bluetooth
13. TCP/UDP 14. Timer
15. ADC 16. I2C
17. UIM(SimCard) 18. DMS(IMEI,MEID)
19. UART 20. SPI
21. Version 22. Ethernet
23. FTP 24. SSL
25. HTTP(S) 26. FTP(S)
27. MQTT(S) 28. ALSA
29. DEV 30. AUDIO
31. JSON 32. LBS
99. EXIT
Option > 7
Please select an option to test from the items listed below.
1. get Module Version 2. get CSQ
3. get CREG 4. get ICCID
5. get IMEI 6. get CIMI
99. back
Option > 5
IMEI: 867584030090489
Please select an option to test from the items listed below.
1. get Module Version 2. get CSQ
3. get CREG 4. get ICCID
5. get IMEI 6. get CIMI
99. back
Option >
بهذه الطريقة سوف نرى IMEI للوحدة.
وختاما
آمل أن نكون قادرين على الحصول على فكرة عامة عن كيفية البدء بالوحدة. في المقالات التالية، سنلقي نظرة فاحصة على الإمكانيات التي توفرها منصة SIM7600E-H، بالإضافة إلى كيفية تحديث التطبيق الخاص بك عن بعد في الوحدة.
أدعوك لطرح الأسئلة في التعليقات، وكذلك الإشارة إلى جانب إمكانات الوحدة الذي يجب أن ينعكس في المقالات اللاحقة.
المصدر: www.habr.com