1. 苦い教訓
この日は厳冬の日でしたが、お客様は当社で新たに開発した装置を現場で使用されており、本来は温湿度センサーを最大20台まで接続できるよう設計されていましたが、現場のスペースが広いため、お客様は30 個の温湿度センサーの接続を要求されました。この要件の変更は非常に簡単で、プログラム内のマクロ定義を変更するだけです。プログラムの修正やプログラムのファームウェアのアップデートが必要となるため、お客様に機器を当社に返送していただき、機器のファームウェアをバージョンアップしてから試験場へ機器をお送りいただきます。しかし、プロジェクトのスケジュールが緊急だったため、クライアントはこの解決策には時間がかかると考え、この解決策に同意しませんでした。結局、当社の研究開発と生産は 6 時間残業し、機器一式が再構築されたのは夜の 12 時になってから、営業スタッフが新しい機器を一晩かけてお客様の元まで運転しました。わずかな変更が必要なため、多くの人的資源と物的資源が無駄になりました。これは本当に重い教訓です。
この重い教訓を踏まえ、私は迷わずデバイスプログラムに IAP 機能を追加しました。デバイスが IAP 機能を備えているため、必要に応じていつでもフィールドデバイスのファームウェアプログラムを更新でき、これから自分自身を実現することができます。の上!
2.IAPとは何ですか
IAP (In-Application Programming) はアプリケーション内プログラミングを指します。これは、MCU プログラム ファームウェアが動作中に新しいコード データを取得してフラッシュの一部の領域をプログラムし、古いプログラム ファームウェアを新しいファームウェア プログラムで上書きしてプログラム ファームウェアを実現できることを意味します。アップグレード。IAP の目的は、予約された通信ポートを通じて製品のプログラム ファームウェアを更新およびアップグレードするです。
IAP 機能を使用する理由
IAP 機能はどのようなメリットをもたらしますか?
IAP は次の 2 つのメリットをもたらします。
1. IAP はケースを分解せずに製品プログラムのファームウェアをアップグレードできます。
通常、プログラムのダウンロードには専用のダウンロード ポート (JTAG ポートなど) を使用する必要があります。ただし、このインターフェイスは通常、デバイスの外部に予約されていません。デバイスのプログラム ファームウェアを更新する必要がある場合は、デバイス シェルを逆アセンブルする必要があります。ダウンローダーを使用して接続します。デバイスのダウンロード ポートに移動し、プログラムをデバイスにダウンロードします。
たとえば、現場に 100 台のデバイスがあり、顧客からの新しい要件により、現場でデバイスのプログラム ファームウェアをアップグレードする必要があります。エンジニアがサイトに来ると、まず 100 台のデバイスのシェルを開き、次にダウンローダーを使用してダウンロード ポートに接続してプログラム ファームウェアをアップグレードし、その後 100 台のデバイスのシェルをインストールする必要があります。
デバイス ケースの取り外しと取り付けは非常に面倒な作業であり、場合によっては誤った操作 (ネジの滑りや回路基板のショートなど) によってデバイスが損傷する可能性もあります。デバイスに IAP 機能がある場合、デバイスの予約済みシリアル ポート、USB ポート、またはネットワーク ポートを使用して、デバイス プログラム ファームウェアをアップグレードできます。プログラムファームウェアのアップデートは、デバイスシェルを分解することなく実現できるため、時間と労力が節約され、問題の可能性も減少します。
2. IAP はネットワーク経由でデバイスをリモートでアップグレードできます。
デバイスが 3G/4G、WIFI、NB およびその他のネットワーク機能を備えている場合、IAP はこれらのネットワーク機能を使用してリモート デバイスのアップグレードを実現できます。例えば、IOT-NB機能を搭載した機器であれば、クラウド上のサーバーを利用し、NBネットワークを介して機器にデータを送信することで、エンジニアを現地に派遣することなく、機器のリモートファームウェアアップグレード機能を実現できます。時間、労力、効率を節約します。
3. IAPの動作原理
IAP の中心となる機能は、プログラムの更新です。では、IAP は更新プログラム機能をどのように実装しているのでしょうか。また、IAP の動作原理は何でしょうか?
まずは身近な例として、ダイヤモンドカッターヘッドの製造工程について話しましょう。鋸刃の頭には、ダイヤモンドの粉末をホットプレスで高温高圧で加工した、高強度で耐摩耗性の高いダイヤモンドヘッドが溶接されるのが一般的です。
ホットプレス装置の製造工程における温度と圧力のプロセスは、ダイヤモンドの性能と品質を決定しますが、例えば、簡単なプロセスでは、起動時に温度と圧力がゆっくりと上昇し、高温高圧の状態に達します。一定時間後、高温高圧を一定時間維持し、最後にゆっくりと温度と圧力を下げるこの製造プロセスをプロセスカーブ制御と呼びます。
顧客が大理石を切断するための鋸刃を必要としており、高強度の鋸刃が必要なため、ダイヤモンド カッター ヘッドのプロセス カーブを変更する必要があるとします。まず、生産責任者が曲線工程リストを持参し、オペレータが曲線工程リストを受け取り、工程曲線を再設定し、装置を再起動することで工程曲線の更新が完了する。プロセス曲線全体を更新するプロセスには 3 つの重要な部分があります。
1. 装置によって現在実行されているプロセス曲線パラメーター。
2. プロダクションディレクターによって提供される新しいプロセス曲線パラメータ。
3. オペレーター。
プロセス曲線を更新するプロセスには 3 つの重要なアクションがあります。
1. 配布。生産ディレクターは新しいプロセスをオペレーターに渡します。
2. 置き換え、生産作業員は古いプロセス曲線を削除し、新しいプロセス曲線を入力します。
3. 再起動し、新しいプロセスパラメータの入力が完了した後にマシンを再起動し、新しいプロセス曲線を実行します。
話題に戻りますが、IAP 機能を実装する場合、通常、ファームウェア プログラムの設計時に2 つのプロジェクト コードを記述する必要があります。
1.最初のプロジェクト コードはユーザー関数の操作を実行しません。(製品機能) ですが、USB、USART、またはネットワーク ポートを介してデータを受信し (APP コードがデータです)、コードの 2 番目の部分を更新します。コードのこの部分を ブートローダーと呼びます。
2. 2 番目のプロジェクト コードは実際の関数コード(製品の機能を実現するため) であり、コードのこの部分をアプリ(アプリケーション プログラム) と呼びます。
ブートローダー コードとアプリ コードの両方が同時に(異なる領域) フラッシュに書き込まれます。チップの電源がオンになると、ブートローダー コードが最初に実行を開始し、次にジャンプしてアプリ コードを実行します。一般的なプロセスは次のとおりです。
1. アプリの更新が必要かどうかを確認し、コードが更新され、必要に応じてアプリのコード更新が行われます。
2. アプリのコードにジャンプします。
3. アプリのコードを実行します。
ダイヤモンド カッター ヘッドの例と組み合わせると、IAP ワークフローは次のように比較できます。
1. ブートローダーはオペレーターに相当します。オペレータは新しいプロセス パラメータを受信してプロセス パラメータを更新でき、ブートローダは新しいプログラム ファームウェアを受信してデバイス プログラム ファームウェアを更新できます。
2. 温度は、装置内で実行されているプロセスパラメータに相当します。
3. 新しい装置は新しいプロセスパラメータと同等です。
4. 外部デバイスに対応して、新しいアプリ プログラム データをブートローダーに送信します。
5. 置き換えの場合、対応するブートローダーは、受信したアプリプログラムのデータを、アプリプログラムに対応する FLASH 領域に書き込みます。
6. 再起動し、対応するブートローダーがアプリの更新を完了した後、アプリのコードにジャンプして実行します。
IAP ワークフローによれば、IAP 機能は次の 3 つの機能に分解できます。
1. データ対話、外部デバイスから送信されたデータの受信。
2. データ保存、受信したデータをメモリに書き込みます。
3. プログラムジャンプ、ジャンプ、APP の実行。
IAP の上記 3 つの部分の機能をIAP 3 軸と呼びますが、次に、この 3 つの軸がどのような内容で、どのように実現されるかを見てみましょう。
作成は簡単ではありません。友達が「いいね」、転送、コメント、フォローしてくれることを願っています!
あなたの「いいね」、転送、コメント、注目が私の継続的な更新の原動力になります!
CSDN: https://blog.csdn.net/li_man_man_man
今日のヘッドライン: https://www.toutiao.com/article/7149576260891443724