組み込み開発者はプログラムできません

高レベルのアプリケーションソフトウェアの典型的な開発者は、システムリソースの可用性とリアルタイム要件の柔らかさに慣れているため、コードを最適化してコードを最適化することを期待できます。アプリケーションのリソース集約度は、ビジネス上の利益によって直接必要とされる極端な場合にのみ発生します。適用された自動化のタスクでは、人的資源が依然として最も高価な資源であるため、これは論理的です。さらに、バイトをいじる認知コストを削減することで、プログラムの機能の正確性の確保など、最も重要なタスクに開発者の注意を向けることができなくなります。





フォールトトレランスが向上したシステムを含め、組み込みシステム開発者の非常に狭い範囲で発生する逆の問題になることはめったにありません。 MCS51 / AVR / PICを使用した初期の経験は非常にトラウマ的であるため、客観的な理由がない場合でも、多くの患者がキャリアを通じてバイト数を数え続けると考える理由があります..。もちろん、これは、厳しい価格制限がコンピューティングプラットフォーム(マイクロコントローラー)のリソースの上限を設定する場合には適用されません。しかし、これは、一連のコンピューティングプラットフォームの価格が、輸送や複雑な場合のように、製品全体のコストや重要なソフトウェアの開発と検証のコストと比較して重要でない場合に当てはまります。産業自動化。この投稿は、後者のカテゴリのシステムに関するものです。





通常、ここで非難を見つけることができます:「あなたは犬のA MISRAですか?そしてAUTOSAR標準ですか?HIC ++のマニュアルを読んでいないかもしれませんか?私たちはここで真剣なビジネスをしていて、装身具ではありません。クレーンは落ちます「あなたの頭は完全に死んでしまいます。」ミッションクリティカルなシステムでの適切なソフトウェア設計と機能の正確さの実践は相互に排他的ではないことを注意深く認識しなければなりません。すべてのソフトウェアがVモデルに従って設計されている場合、方法論にアーキテクチャ設計という意味のある名前の項目が含まれているという理由だけで、この記事で少し新しいことを学ぶでしょう私は残りの埋め込み者に座って彼らの行動について考えるように促します。





盗まないでください

, , ? :





  • . .





  • . , .





  • . , - , UB, unsafe , .





  • . . C++ RTTI ( , malloc()



    free()



    ).





  • . - , , .





, , . , , , .





" "? . , - , . , , MISRA- () .





, , , . , , , Boeing 737MAX ( , ). -, ( ) , . - .





, :





  • -, .





  • , - , .





  • Utils helpers, .





: , ; , ; , , . , -, , , .





: Mbed, Arduino, .. , , . CLion ; . , - . , - , .





( ) ; ( ). , . . , , . , , :





, ! , Mbed , , . , ! , , ! , . , , CAN , , Mbed.





, , , . , , : , - . , — , . , , - , 1% .





, . , .





UAVCAN (Uncomplicated Application-level Vehicular Computing And Networking), () Ethernet, CAN FD RS-4xx. - DDS ROS, , , , baremetal .





UAVCAN - — DSDL — , -. REST , XMLRPC, . — , - — , , UAVCAN.





, . , : " - ?"





, " , ". DSDL:





# Calibrated airspeed
uavcan.time.SynchronizedTimestamp.1.0 timestamp
uavcan.si.unit.velocity.Scalar.1.0    calibrated_airspeed
float16                               error_variance
      
      



# Pressure altitude
uavcan.time.SynchronizedTimestamp.1.0 timestamp
uavcan.si.unit.length.Scalar.1.0      pressure_altitude
float16                               error_variance
      
      



# Static pressure & temperature
uavcan.time.SynchronizedTimestamp.1.0 timestamp
uavcan.si.unit.pressure.Scalar.1.0    static_pressure
uavcan.si.unit.temperature.Scalar.1.0 outside_air_temperature
float16[3] covariance_urt
# The upper-right triangle of the covariance matrix:
#   0 -- pascal^2
#   1 -- pascal*kelvin
#   2 -- kelvin^2
      
      



, (, , ). , , , .





: ( ) ? . , (.. ) .





, , . - . , , , , , .





" " — — " , , ". , , , : , , . , : , . - :





uint16 differential_pressure_reading
uint16 static_pressure_reading
uint16 outside_air_temperature_reading
      
      



, , , , , , . , , . .





-, , — . , , , , .





, . , , . , , .





, .





, , , . , , , : UAVCAN Interface Design Guidelines. , , , - .





. DS-015 ( NXP Semiconductors Auterion AG) , , , . .





- uavcan_ru forum.uavcan.org.








All Articles