
لا تستخدم هذه الأداة إذا لم تكن قد فهمت سلوكياتها في سياق جهازك المستهدف.
تقوم هذه الأداة بالوصول إلى واجهات العتاد والبرمجيات الثابتة منخفضة المستوى لجهازك. بشكل خاص، فإن عملية الاستكشاف تعني عدم اليقين بشأن العواقب إذا لم يكن الجهاز المستهدف هو الجهاز الذي كنا نأمل العثور عليه.
قد يؤدي استخدام هذه الأداة إلى عدم الاستقرار أو الانهيارات أو الأعطال الحرجة للجهاز المستهدف.
تتمتع وحدات ASPEED BMC بعدة أوضاع تشغيل ضمنية:
لتوفير الوضعين 1 و2، تعرض وحدة BMC ميزات على العديد من واجهاتها التابعة التي تسمح للمضيف بالوصول إلى BMC وتنفيذ عمليات عشوائية في نطاق عناوينها الفعلية.
تتعلق الواجهات المهمة بكل من ناقلَي PCIe وLPC، حيث قد لا يكون أي منهما متصلاً بوحدة المعالجة المركزية المضيفة في تصميم منصة معين.
غالبًا ما يُستخدم الوضع 3 أيضًا، لكن بالنسبة إلى AST2400 وAST2500 يتم تكوين العتاد للوضعين 1 و2 عند الإقلاع البارد. وبالتالي يقع العبء على مطوّري البرمجيات الثابتة لوحدة BMC لضمان تأمين جميع الواجهات إذا كانوا يرغبون في الحفاظ على سرية وسلامة وتوافر بيانات BMC المخزنة وبيئات التشغيل الخاصة بها.
PCIe VGA P2A: واجهة PCIe MMIO توفر وصولاً عشوائياً إلى AHB عبر نافذة منزلقة بحجم 64kiB
iLPC2AHB: جهاز منطقي SuperIO يوفر وصولاً عشوائياً إلى AHB
UART التصحيح: غلاف تصحيح UART مقدَّم من العتاد مع وصول عشوائي إلى AHB
X-DMA: وصول عشوائي إلى ناقل M-Bus
جهاز PCIe BMC: مجموعة من واجهات PCIe MMIO الثابتة توفر وصولاً مقيداً إلى AHB عبر نوافذ بحجم 4kiB
LPC2AHB: تعيين تسيطر عليه BMC لدورات LPC FW على ناقل AHB
يدعم حاليًا استخدام واجهات P2A وiLPC2AHB وLPC2AHB وUART التصحيح
يستكشف توفر جميع الواجهات عبر أي واجهة متاحة
وحدة تحكم BMC داخل النطاق من المضيف
إعادة وميض أو تفريغ البرمجيات الثابتة لوحدة BMC قيد التشغيل من المضيف
قراءة وكتابة ذاكرة RAM الخاصة بوحدة BMC
يدعم أيضًا واجهة Linux /dev/mem للتنفيذ على وحدة BMC نفسها
يتم تجميع الأداة لعدة بنى معمارية، وعلى الأقل تم اختبار ما يلي:
البناء يتم ببساطة عن طريق تنفيذ make، بينما يتم التجميع المتبادل عن طريق تعيين CROSS_COMPILE في بيئة make، على سبيل المثال:
$ make CROSS_COMPILE=powerpc64le-linux-gnu-
$ ./doit
Not enough arguments
Usage:
./doit probe [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit ilpc read ADDRESS
./doit ilpc write ADDRESS VALUE
./doit p2a vga read ADDRESS
./doit p2a vga write ADDRESS VALUE
./doit debug read ADDRESS INTERFACE [IP PORT USERNAME PASSWORD]
./doit debug write ADDRESS VALUE INTERFACE [IP PORT USERNAME PASSWORD]
./doit devmem read ADDRESS
./doit devmem write ADDRESS VALUE
./doit console HOST_UART BMC_UART BAUD USER PASSWORD
./doit read firmware
./doit read ram
./doit write firmware
./doit replace ram MATCH REPLACE
./doit reset TYPE [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc read ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc erase ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc write ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
$ ./doit probe --require confidentiality digi,portserver-ts-16 <IP> <PORT> <USER> <PASSWORD>
Connecting to Digi Portserver TS 16 at <IP>:23
Logging into Digi Portserver TS
Configuring binary mode on port 4
Resetting port 4
Connecting to BMC console at <IP>:2104
Entering debug mode
Initialised Debug UART AHB interface
Performing interface discovery via Debug UART
Exiting debug mode
Have SuperIO: Yes
iLPC2AHB Bridge: Read-only
Have VGA PCIe device: Yes
Have MMIO on VGA device: Yes
P2A write filter state:
0x00000000-0x0fffffff (Firmware): Read-write
0x10000000-0x1fffffff (SoC IO): Read-write
0x20000000-0x3fffffff (Flashes): Read-write
0x40000000-0x5fffffff (Reserved): Read-write
0x60000000-0x7fffffff (LPC Host): Read-write
0x80000000-0xffffffff (DRAM): Read-write
Have X-DMA on VGA device: Yes
Have BMC PCIe device: No
X-DMA is unconstrained: No
Have debug UART: Yes
Debug UART enabled on: UART5
$ echo $?
1
$