Segger社はGNU linkerを独自のSEGGER linkerに変えたことにより、10倍以上速く、コードサイズを2%削減を実現させました。Segger社の正規代理店であるポジティブワン株式会社(本社:東京都渋谷区)は、ARM Cortex向け統合開発環境 Segger Embedded Studioの販売を開始いたします。
独自のSEGGER linkerは、Segger Embedded Studioに完全に切り替えました。これは、非商用目的で無料で使用できる、大きなソフトウェアです。GCCとClang / LLVMの両方のコンパイラを使用して開発の準備が整いました。
Segger Embedded Studioには独自のランタイムライブラリが付属しています。最適化され、GNUランタイムだけでなく、商用で利用できます。Embedded Studioと他のIDEの商用製品を比較すると、弱点の1つがGNUリンカであることが分かりました。何よりも、初期化されたセグメントに圧縮を使用せず、RAMにコードを入れません。GNU linkerは約2%の効率を失います。
◆昔のGNU linker
GNU linkerは、メガバイトの線形仮想アドレッシングが普遍的で、ディスクスペースが無制限であり、処理能力が豊富なUnixの世界から進化しました。これは想像できるように、ローエンドの組み込みシステムを意識しておりません。
小型組み込みシステム(通常は内蔵メモリを備えたマイクロコントローラ)は複雑です。通常、フラッシュメモリとRAM用に別々のメモリ領域があります。しかし、パフォーマンスを向上させるために、RAMは通常、異なる領域に分割されているため、CPUと周辺装置、または同じデバイス内の他のCPUによって同時にアクセスすることができます。
GNU linkerには、このエイリアンの世界にはいくつかの欠点があります。
キャリブレーションデータ、フラッシュ保護バイト、ROMまたはブートローダAPI用の固定アドレスジャンプテーブルなど、組み込みファームウェア環境に共通する典型的な "キープアウト"領域に対応するのに十分な柔軟性はありません。
複数のRAM領域を使用すると、自動的にこれらのRAM領域にデータを分割することはできず、ユーザーはリージョン間で手動でデータの配置を選択する必要があります。リンケージ速度は許容されますが、高速ではありません。大容量のメガバイトオーダーのファームウェアイメージを、さらに大きなメガバイトのデバッグデータでリンクすると、何度も繰り返しリンクすると時間が奪われる可能性があります。
読み書きセクションの初期化を自動的には処理せず、Unixシステムのローダーに委譲します。組み込みシステムでは、初期化されたイメージをフラッシュからRAMにコピーし、main()に入る前に "bss"セクションをゼロにする必要があります。また、GNUリンカは初期化イメージを圧縮してフラッシュ使用を減らすことも、イメージの完全性チェックをサポートするためにCRCを自動的に計算することもできません。
マップファイルはほとんど理解できません。メモリの割り当て、機能とデータのサイズ、マイクロコントローラに入るものは非常に重要なので、正確で読みやすいマップファイルを持たないことは許されません。Segger社は、独自のlinkerを書くことにしました。
SEGGER Linkerをゼロから、従来のコードやレガシーな考え方なしに書いていきます。リンカの設計要旨は、単にGNUリンカの欠点を回避し、単純なリンクを作成し、組み込み開発者のリンク問題を解決することです。
◆新しい、ゼロレガシーのSEGGER linker
SEGGER linkerの設計目標は簡単に述べられています:
・ 大規模なアプリケーションであっても高いリンケージ速度
・ モジュラーリンケージ:必要なものだけにリンクし、自動化
・ 簡単で読みやすいマップファイル
1つまたは複数の特定のシンボルのためにコード/データがどれだけ取り込まれたかを計算するオプション - 特定の暗号(emSSL用)が必要とするFlashメモリの量など、ミドルウェアオプションのコードサイズを測定することが重要です。
・ RAMで初期化されたデータとコードのフラッシュコピースペースを最小限に抑える圧縮オプション
・ 他の一般的なlinker(IARやARMなど)の互換性オプション
・ 最後の操作として別の関数を呼び出すコードのテール最適化。テールを呼び出された関数とマージ可能
・ 入力フラグメント(関数とデータ)をソートするさまざまな方法:アルファベット順、通話距離による地域性向上、パッキングを改善するための整列、サイズ別 - これらはほんのわずかです
・ 小さな関数の自動インライン化
・ オプションで、命令レベルで同一のボディを持つ関数を削除
J-Link、J-Trace、Flasherのファームウェアの一部としてembOS、embOS / IP、emUSB、emFile、Web、FTPサーバーなどのミドルウェアを使用することが含まれます。また、同じハードウェア製品、ほとんどのJ-Linkを利用して、ミドルウェアを開発、テスト、継続的に改善することができます。社内で独自の製品を使用することで、ユーザビリティをチェックし改善するのに役立ちます。この販売サポートを可能としております。
【Seggerの製品ラインURL】
https://www.segger-pocjapan.com/
【ポジティブワン株式会社について】
社名 ポジティブワン株式会社(POSITIVE ONE CORPORATION)
東京本社 〒150-0043 東京都渋谷区道玄坂1-12-1 渋谷マークシティ・ウエスト22F
関西本社 〒651-0087 兵庫県神戸市中央区御幸通8-1-6神戸国際会館 22F
URL http://www.positive-one.com
ポジティブワン株式会社は、最先端技術と時代を先読みしたエンベデッドソリューションをご提供します。そのために海外の有力な最先端技術会社と提携し、多様化する仕様に対応できるOEMハードウエアや世界標準ISOなどに準拠する品質向上のためのツールをご提供します。さらに、システムコンサルティング、エンベデッドからPC、スマートフォン、サーバーを含んだハードウエアからソフトウエアまでのシステム受託開発など、皆様のプロジェクト成功のためのご支援をいたします。
【本件に関するお問い合わせ先】
ポジティブワン株式会社
メールアドレス:poc_sales@positive-one.com
TEL:03-3256-3933 FAX:03-4360-5301
独自のSEGGER linkerは、Segger Embedded Studioに完全に切り替えました。これは、非商用目的で無料で使用できる、大きなソフトウェアです。GCCとClang / LLVMの両方のコンパイラを使用して開発の準備が整いました。
Segger Embedded Studioには独自のランタイムライブラリが付属しています。最適化され、GNUランタイムだけでなく、商用で利用できます。Embedded Studioと他のIDEの商用製品を比較すると、弱点の1つがGNUリンカであることが分かりました。何よりも、初期化されたセグメントに圧縮を使用せず、RAMにコードを入れません。GNU linkerは約2%の効率を失います。
◆昔のGNU linker
GNU linkerは、メガバイトの線形仮想アドレッシングが普遍的で、ディスクスペースが無制限であり、処理能力が豊富なUnixの世界から進化しました。これは想像できるように、ローエンドの組み込みシステムを意識しておりません。
小型組み込みシステム(通常は内蔵メモリを備えたマイクロコントローラ)は複雑です。通常、フラッシュメモリとRAM用に別々のメモリ領域があります。しかし、パフォーマンスを向上させるために、RAMは通常、異なる領域に分割されているため、CPUと周辺装置、または同じデバイス内の他のCPUによって同時にアクセスすることができます。
GNU linkerには、このエイリアンの世界にはいくつかの欠点があります。
キャリブレーションデータ、フラッシュ保護バイト、ROMまたはブートローダAPI用の固定アドレスジャンプテーブルなど、組み込みファームウェア環境に共通する典型的な "キープアウト"領域に対応するのに十分な柔軟性はありません。
複数のRAM領域を使用すると、自動的にこれらのRAM領域にデータを分割することはできず、ユーザーはリージョン間で手動でデータの配置を選択する必要があります。リンケージ速度は許容されますが、高速ではありません。大容量のメガバイトオーダーのファームウェアイメージを、さらに大きなメガバイトのデバッグデータでリンクすると、何度も繰り返しリンクすると時間が奪われる可能性があります。
読み書きセクションの初期化を自動的には処理せず、Unixシステムのローダーに委譲します。組み込みシステムでは、初期化されたイメージをフラッシュからRAMにコピーし、main()に入る前に "bss"セクションをゼロにする必要があります。また、GNUリンカは初期化イメージを圧縮してフラッシュ使用を減らすことも、イメージの完全性チェックをサポートするためにCRCを自動的に計算することもできません。
マップファイルはほとんど理解できません。メモリの割り当て、機能とデータのサイズ、マイクロコントローラに入るものは非常に重要なので、正確で読みやすいマップファイルを持たないことは許されません。Segger社は、独自のlinkerを書くことにしました。
SEGGER Linkerをゼロから、従来のコードやレガシーな考え方なしに書いていきます。リンカの設計要旨は、単にGNUリンカの欠点を回避し、単純なリンクを作成し、組み込み開発者のリンク問題を解決することです。
◆新しい、ゼロレガシーのSEGGER linker
SEGGER linkerの設計目標は簡単に述べられています:
・ 大規模なアプリケーションであっても高いリンケージ速度
・ モジュラーリンケージ:必要なものだけにリンクし、自動化
・ 簡単で読みやすいマップファイル
1つまたは複数の特定のシンボルのためにコード/データがどれだけ取り込まれたかを計算するオプション - 特定の暗号(emSSL用)が必要とするFlashメモリの量など、ミドルウェアオプションのコードサイズを測定することが重要です。
・ RAMで初期化されたデータとコードのフラッシュコピースペースを最小限に抑える圧縮オプション
・ 他の一般的なlinker(IARやARMなど)の互換性オプション
・ 最後の操作として別の関数を呼び出すコードのテール最適化。テールを呼び出された関数とマージ可能
・ 入力フラグメント(関数とデータ)をソートするさまざまな方法:アルファベット順、通話距離による地域性向上、パッキングを改善するための整列、サイズ別 - これらはほんのわずかです
・ 小さな関数の自動インライン化
・ オプションで、命令レベルで同一のボディを持つ関数を削除
J-Link、J-Trace、Flasherのファームウェアの一部としてembOS、embOS / IP、emUSB、emFile、Web、FTPサーバーなどのミドルウェアを使用することが含まれます。また、同じハードウェア製品、ほとんどのJ-Linkを利用して、ミドルウェアを開発、テスト、継続的に改善することができます。社内で独自の製品を使用することで、ユーザビリティをチェックし改善するのに役立ちます。この販売サポートを可能としております。
【Seggerの製品ラインURL】
https://www.segger-pocjapan.com/
【ポジティブワン株式会社について】
社名 ポジティブワン株式会社(POSITIVE ONE CORPORATION)
東京本社 〒150-0043 東京都渋谷区道玄坂1-12-1 渋谷マークシティ・ウエスト22F
関西本社 〒651-0087 兵庫県神戸市中央区御幸通8-1-6神戸国際会館 22F
URL http://www.positive-one.com
ポジティブワン株式会社は、最先端技術と時代を先読みしたエンベデッドソリューションをご提供します。そのために海外の有力な最先端技術会社と提携し、多様化する仕様に対応できるOEMハードウエアや世界標準ISOなどに準拠する品質向上のためのツールをご提供します。さらに、システムコンサルティング、エンベデッドからPC、スマートフォン、サーバーを含んだハードウエアからソフトウエアまでのシステム受託開発など、皆様のプロジェクト成功のためのご支援をいたします。
【本件に関するお問い合わせ先】
ポジティブワン株式会社
メールアドレス:poc_sales@positive-one.com
TEL:03-3256-3933 FAX:03-4360-5301