Pinetime البعيد لم يعد قيد التشغيل. شكرا للجميع لاختبار pinetime عن بعد!
Pinetime البعيد هي ساعة ذكية من Pinetime في سنغافورة تم تكوينها للسماح لأي شخص في العالم بالفلاش واختبار البرامج الثابتة عن بُعد.
يراقب روبوت Pinetime البعيدة (تم إنشاؤه في Rust) مجموعة Telegram لأوامر وميض وميض البرامج الثابتة إلى Pinetime.
يتم بث الشاشة الموجودة على Pinetime مباشرة إلى YouTube ، بحيث يمكنك مشاهدة البرنامج الثابت الخاص بك على الهواء مباشرة على Pinetime.
لفلاش البرامج الثابتة الخاصة بك واختبار Pinetime ، انضم إلى مجموعة Telegram "Pinetime": https://t.me/remotepinetime
سيتم عرض سجل وميض (من OpenOCD) وسجل رسائل التصحيح (من Semihosting Arm) في قناة Telegram "Pinetime Log" هنا: https://t.me/remotepinetimelog
شاهد الفيديو التجريبي على YouTube
لفلاش ملف ثنائي البرنامج الثنائي https://.../firmware.bin إلى pinetime على العنوان 0x0 ...
/flash 0x0 https://.../firmware.bin
هذا يعمل مع أي عنوان URL غير محمي تسجيل الدخول.
لا تمرر عناوين URL للقطع الأثرية التي أنشأتها إجراءات GitHub. أنها تتطلب تسجيل الدخول وسيتم حظر بوت Telegram.
بدلاً من ذلك ، انسخ القطع الأثرية وتحميلها تحت "الإصدارات" ، والتي لا يتم حمايتها بواسطة تسجيل الدخول.
تتطلب بعض النكهات من البرامج الثابتة pinety محمل تمهيد ، مثل McUboot أو SoftDevice. قم بملفه إلى معالجة 0x0 أولاً ، ثم قم بميض البرامج الثابتة.
يجب وميض البرامج الثابتة المتوافقة مع MCUBOOT لمعالجة 0x8000
لفلاش الاختراق على pinetime ...
/flash 0x0 http://tt-392.space/breakout.hex
فيديو تجريبي من الاختراق على pinetime
لفلاش الوجه مرسومة باليد ...
/flash 0x0 https://github.com/lupyuen/pinetime-rust-mynewt/releases/download/v5.0.4/mynewt.elf.bin
/flash 0x8000 https://github.com/lupyuen/pinetime-rust-mynewt/releases/download/v7.0.1/my_sensor_app.img
المزيد عن وجه المراقبة باليد
لفلاش برامج ثابتة "Mind Mind Flown" المعدلة التي لا تنام أبدًا ...
/flash 0x0 https://github.com/lupyuen/pinetime-rust-mynewt/releases/download/v5.0.4/mynewt.elf.bin
/flash 0x8000 https://github.com/AntonMadness/Pinetime/releases/download/v0.1.1/pinetime-mcuboot-app-img.bin
تم تعديل هذا عن طريق تحرير src/DisplayApp/DisplayApp.cpp لإزالة جميع المكالمات إلى case Messages::GoToSleep:
لفلاش الصدأ على البرامج الثابتة mynewt التي تنبعث منها رسائل تصحيح semihosting ...
/flash 0x0 https://github.com/lupyuen/pinetime-rust-mynewt/releases/download/v5.0.4/mynewt.elf.bin
/flash 0x8000 https://github.com/lupyuen/pinetime-rust-mynewt/releases/download/v5.0.7/my_sensor_app.img
لفلاش الصدأ على مكافحة الشغب ...
/flash 0x0 https://github.com/lupyuen/pinetime-rust-riot/releases/download/v1.0.3/PineTime.bin
إلى Flash McUboot Bootloader 5.0.4 ...
/flash 0x0 https://github.com/lupyuen/pinetime-rust-mynewt/releases/download/v5.0.4/mynewt.elf.bin
في بعض الأحيان ، سيتم قفل Pinetime بسبب أخطاء البرامج الثابتة. وميض McOuboot Booloader أعلاه يجب إصلاح القفل.
لإنشاء البرامج الثابتة الخاصة بك في متصفح الويب (دون تثبيت أي IDE أو أدوات أدوات) تحقق من المقالات ...
بناء البرامج الثابتة في السحابة مع إجراءات github
معاينة وجوه ساعة pinetime في متصفح الويب الخاص بك مع webassembly
كيف تبدو الوامضة في برقية ...
شاهد الفيديو التجريبي على YouTube
هل لديك أسئلة على Pinetime؟ الدردشة مع مجتمع Pinetime على المصفوفة / Discord / Telegram / IRC ...
https://wiki.pine64.org/index.php/pinetime#community
تحقق من مقالتي بينت
نظرًا لأنه من الصعب ومكلف شحن أجهزة حقيقية في جميع أنحاء العالم خلال الوباء ... يمكن أن يكون اختبار البرامج الثابتة عن بُعد هو الحل.
تم إنشاء Pinetime عن بُعد للسماح للأشخاص بالتعلم وتجربة الترميز Smartwatch دون الحصول على ساعة ذكية حقيقية.
تحقق من عرض الفيديو الخاص بي ...
Riot Summit 2020 - برامج مضمونة أكثر أمانًا وأبسطًا مع الصدأ على أعمال الشغب
يمكّن Arm Semihosting البرامج الثابتة لدينا من انبعاث رسائل تصحيح الأخطاء عن طريق استدعاء تعليمات Arm Cortex-M bkpt .
تحقق من هذا التنفيذ من الذراع semihosting من pinetime-rust-mynewt ...
/// Send an ARM Semihosting command to the debugger, e.g. to print a message.
/// To see the message you need to run opencd:
/// openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -f scripts/debug.ocd
static int __semihost ( int command , void * message ) {
// Warning: This code will trigger a breakpoint and hang unless a debugger is connected.
// That's how ARM Semihosting sends a command to the debugger to print a message.
// This code MUST be disabled on production devices.
__asm(
"mov r0, %[cmd] n"
"mov r1, %[msg] n"
"bkpt #0xAB n"
: // Output operand list: (nothing)
: // Input operand list:
[ cmd ] "r" ( command ),
[ msg ] "r" ( message )
: // Clobbered register list:
"r0" , "r1" , "memory"
);
return 0 ;
} نسمي __semihost() مثل ذلك: semihosting_console.c
/// ARM Semihosting Command
#define SYS_WRITE (0x5)
/// Write "length" number of bytes from "buffer" to the debugger's file handle fh.
/// We set fh=2 to write to the debugger's stderr output.
static int semihost_write ( uint32_t fh , const unsigned char * buffer , unsigned int length ) {
// If debugger is not connected, quit.
if (! debugger_connected ()) { return 0 ; }
if ( length == 0 ) { return 0 ; }
uint32_t args [ 3 ];
args [ 0 ] = ( uint32_t ) fh ;
args [ 1 ] = ( uint32_t ) buffer ;
args [ 2 ] = ( uint32_t ) length ;
return __semihost ( SYS_WRITE , args );
}
/// Return non-zero if debugger is connected. From repos/apache-mynewt-core/hw/mcu/ambiq/apollo2/src/hal_system.c
static int debugger_connected ( void ) {
return CoreDebug -> DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk ;
}عندما ندعو ...
/// Write "hellon" (6 characters) to the debugger's stderr output.
#define SEMIHOST_HANDLE 2
semihost_write ( SEMIHOST_HANDLE , ( const unsigned char * ) "hellon" , 6 ); سنرى الرسالة hello تظهر في OpenOCD وسجل Pinetime البعيد. (يجب أن تنتهي الرسائل بخط جديد أو لن تظهر)
يجب تمكين الذراع semihosting في OpenOCD. إليكم كيف يتيح Pinetime عن بُعد Semihosting Arm: flash-log.ocd
# Arm Semihosting is used to show debug console output and may only be enabled after the init event.
# We wait for the event and enable Arm Semihosting.
$_TARGETNAME configure -event reset-init {
echo "Enabled ARM Semihosting to show debug output"
arm semihosting enable
}
يمكن أن يكون Semihosting Arm بطيئًا ... يتجمد متحكم كامل بينما يتم نقل رسالة التصحيح عن طريق حرف OpenOCD عبر منفذ SWD.
نوصي باستخدام صفيف ثابت لإخزان الرسائل الصادرة في الذاكرة.
في تنفيذ pinetime-rust-mynewt لـ ARM Semihosting ، نستخدم MyNewt MBUFs لإخزان الرسائل بكفاءة.
لا تستخدم semihosting ARM عند استمرار معالجة Bluetooth LE ... سيتم إسقاط الرسائل وسيقوم عملاء Bluetooth LE تلقائيًا بالفصل.
يجب تعطيل Semihosting Arm في البرامج الثابتة للإنتاج. أيضا ، قد يتدلى semihosting ARM عند توصيل مصحح أخطاء JLink. بالنسبة إلى pinetime-rust-mynewt نقوم بتعطيل semihosting Arm مع علامة GCC -DDISABLE_SEMIHOSTING في targets/nrf52_boot/pkg.yml (لصالح McOuboot Bootloader) وفي targets/nrf52_my_sensor/pkg.yml (لبرنامج التطبيق).
لإنشاء روبوت Telegram الخاص بك ...
الدردشة مع Botfather ، قم بإنشاء روبوت يدعى PineTime Bot
أدخل /mybots ، حدد PineTime Bot
حدد Edit Commands ، أدخل flash - flash 0x0 https://.../firmware.bin
لتشغيل بوت Telegram الخاص بك: استنساخ هذا الريبو وقم بتشغيل هذا في نص Shell ...
# Set your Telegram Bot Token
export TELEGRAM_BOT_TOKEN= ???
# This is needed to fix the h2 / indexmap build error "ids: IndexMap<StreamId, SlabIndex> expected 3 type arguments"
export CARGO_FEATURE_STD=1
# Show Rust stack trace
export RUST_BACKTRACE=1
cd ~ /remote-pinetime-bot
for (( ; ; ))
do
git pull
pkill openocd
cargo run
echo " ---------ERROR-------- "
sleep 30
doneيقوم Telegram Bot باستدعاء Pinetime Updater و Xpack OpenOCD لفلاش البرامج الثابتة إلى Pinetime عبر SWD.
لتنزيل XPack OpenOCD (لـ MAC) أو OpenOCD SPI (للتوت PI) ، انظر إلى pinetime-updater/run.sh
يعمل Bot Telegram حاليًا على Raspberry Pi مع Xpack OpenOCD (بدلاً من OpenOCD SPI). تم تنزيل Xpack OpenOCD لـ 32 بت Raspbian من هنا
تم تكوين برنامج تشغيل USB لـ ST-Link على Raspbian مثل SO ...
# For Linux Only: Install UDEV Rules according to https://xpack.github.io/openocd/install/#udev
sudo cp xpack-openocd/contrib/60-openocd.rules /etc/udev/rules.d/
sudo udevadm control --reload-rulesللعيش في دفق كاميرا Raspberry Pi الخاصة بك إلى YouTube: قم بتشغيل هذا في نص Shell ...
for (( ; ; ))
do
raspivid -n -o - -t 0 -vf -hf -fps 30 -b 6000000 |
ffmpeg -re -ar 44100 -ac 2
-acodec pcm_s16le -f s16le -ac 2
-i /dev/zero -f h264 -i - -vcodec copy -acodec aac -ab 128k -g 50 -strict experimental
-f flv rtmp://a.rtmp.youtube.com/live2/YOUR_YOUTUBE_STREAM_KEY
sleep 1
doneبناءً على https://www.makeuseof.com/tag/live-stream-youtube-raspberry-pi/
استخدم اتصال شبكة سلكية بدلاً من wifi ... لأن التبديل على فرن الميكروويف الخاص بك سيؤدي إلى تعطيل شبكة WiFi 2.4 جيجا هرتز وإنهاء دفق YouTube المباشر. (وسوف يتغير عنوان URL للبث المباشر على YouTube)
فيما يلي إعداد البث المباشر مع (من اليسار إلى اليمين) Raspberry Pi 4 ، وحدة كاميرا Raspberry Pi V2 (8 ميجابكسل) ، نظارة مكبرة ، دبابيس Pogo (طرف حاد) و ST-Link V2 ...
غطيها مع حاوية من الورق MoChé لمنع الانعكاس على النظارات المكبرة (مثل التلسكوب) ...
كيف تصنع حاوية الورق-تشامي ...
ضع Raspberry Pi ، وحدة الكاميرا ، نظفين مكبرة و pintime
قم ببناء سقالة عن طريق استراحة مظروف على Raspberry Pi ووحدة الكاميرا ونظارات مكبرة
أكمل السقالة من خلال وضع قطعة مطوية من الورق بحجم A4
لصق شرائط من المنشفة الورقية على السقالة ، تأكد من تغطية Raspbery Pi. لقد قمت بإنشاء العجينة عن طريق خلط نصف كوب من الدقيق مع نصف كوب من الماء.
دع الورق-تشتيش يجف بين عشية وضحاها لتشكيل شكل العلبة. تقليم الورق مع مقص. ميكروويف الورق اللحم لتجفيفه.
الصق طبقة ثانية من شرائط المنشفة الورقية ، بطريقة منظمة.
ميكروويف الورق البقر لمدة دقيقة واحدة ، دعه يبرد. استخدام الأوعية المنقوشة لدعم الهيكل. كرر 3 مرات حتى يجف الورق.
قم بقص العلبة الورقية مع مقص.
هل هناك أي مشكلات أمنية تعرض روبوت برقية للعالم من أجل الوميض والاختبار؟
نحن نخفف من المخاطر الأمنية قدر الإمكان ...
تم تصميم BOT TELEGRAM الخاص بنا باستخدام Rust ، وهي لغة برمجة أنظمة آمنة.
تحقق من رمز مصدر الصدأ في src/main.rs
لا يُسمح بالوصول عن بُعد إلى المضيف. روبوت Telegram فقط استطلاعات الرأي لأوامر /flash وتنفيذها.
يتم حذف الملفات المؤقتة تلقائيًا بعد الاستخدام مع مكتبة tempfile . لذلك نحن نقلل من تعرض الملفات مع البرامج الضارة.
ولكن هناك مصدر قلق واحد ... قد يتم تمييز pinetime مع البرامج الضارة التي تهاجم أجهزة Bluetooth الأخرى القريبة.
من أجل تعليم إنترنت الأشياء ... سأسمح بذلك! :-)
أنا على دراية تامة بالمخاطر عندما أقوم بتشغيل هذه الخدمة المجانية. وإذا اخترت تشغيل Pinetime الخاص بك عن بُعد ، فيجب أن تكون على دراية بالمخاطر أيضًا.
هناك مشكلة أمنية خطيرة واحدة تتعلق بدعم شبه مؤشر: تدعم واجهة برمجة تطبيقات شبه Semihosting القراءة والكتابة وتنفيذ الملفات على مضيف OpenOCD (Raspberry PI).
لم يتم حل هذه القضية الأمنية. يتمثل الحل البديل في تعطيل الدعم شبه في OpenOCD ، والذي من شأنه تعطيل رسائل تصحيح الأخطاء.
اكتب سجل تصحيح التصحيح إلى قناة برقية منفصلة
خانق عدد الرسائل شبه المتساقطة التي سيتم تسجيلها إلى قناة Telegram (يجمع وينقل الرسائل كطلب برقية واحدة كل 5 ثوانٍ)
السماح بسجل تصحيح التصحيح والبرامج الثابتة semihosting للتعايش (كلاهما يستخدم OpenOCD)