ターゲットのメモリ配置(アライメント)の注意すべき点


ISaGRAF Ver.4カーネルを新しいOSに移植する場合、ワークベンチデータベースで設定したメモリ配置の設定オプションは、ターゲットのCコンパイラやCPUのメモリ配置(構造体内のバイトデータのアライメント)の仕様を一致させる必要があります。



ISaGRAF Ver.4の場合
    ターゲット側のメモリ配置の仕様は、以下のような簡単なプログラムで確認できます。
    2つの構造体を作り、そのサイズを調べます。

    typedef unsigned char uchar;
    typedef unsigned long uint32;
    typedef struct typStruct2Types{
    uchar u1;
    uint32 u2;
    } structA;
    typedef struct typStruct3Char{
    uchar u1;
    uchar u2;
    uchar u3;
    } structB;

    main(){
    int n1=0;
    int n2=0;
    n1=sizeof(structA);
    n2=sizeof(structB);
    }

    実行結果のn1,n2の値でアライメントがわかります。以下の通りになります。

    n1 = 5 の場合
    アラインメントなし (アライメントサイズ=1バイト)
    structA メモリ境界
    u1 1バイト
    u2 1バイト
    1バイト
    1バイト
    1バイト
    n1 = 6 の場合
    アライメントサイズ=2
    structA メモリ境界
    u1 2バイト
       
    u2
     
     
     
    2バイト
     
    2バイト
     
    n1 = 8 の場合
    アライメントサイズ=4
    structA メモリ境界
    u1 4バイト
     
       
       
    u2 4バイト
     
     
     
    n2 = 3 の場合
    密着アラインメント
      structB
    structB u1
    u2
    u3
    structB u1
    u2
    u3
    n2 = 4 の場合
    密着しないアラインメント
      structB
    structB u1
    u2
    u3
     
    structB u1
    u2
    u3
     
最終更新:
2008-08-01 13:52
改訂:
1.0
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

最も人気の FAQ RSS

  1. LD言語で、ある接点がFALSEの場合、それ以降のファンクションブロックを実行しないように出来るか? (44520 回の閲覧)
  2. SFC要素の「ステップ」と「トランジション」の意味と役割を教えてください。 (43452 回の閲覧)
  3. ISaGRAF WorkbenchをWindows 7で使用するにはどうしたらよいでしょうか? (40945 回の閲覧)
  4. ISaGRAFはIEC1131-3のシステム定義に準拠しているか? (38996 回の閲覧)
  5. PLCプログラムをより早く動かすにはどうすればよいですか? (38831 回の閲覧)
  6. LD言語で、立ち上がり・立ち下がりの出力はあるか? (36892 回の閲覧)
  7. VxWorksターゲットにおける変数管理の留意点について (36391 回の閲覧)
  8. 日立製作所製SHマイコン用コンパイラ使用時の注意事項 (35599 回の閲覧)
  9. Cファンクション/ファンクションブロックの"Hidden" パラメータとはどのようなものか (35532 回の閲覧)
  10. FBD/LD言語で同じ行に複数の演算がある場合の実行順序は? (33530 回の閲覧)

最近の FAQ RSS

  1. ファンクションブロックはネストできますか。 (2016-08-05 15:07)
  2. Cファンクション/ファンクションブロックの"Hidden" パラメータとはどのようなものか (2015-01-30 14:24)
  3. 前のISaGRAFで作成したプロジェクトをインポートしたら、コメントが文字化けを起こしています。 (2014-05-07 06:52)
  4. 前のバージョンで作成したプロジェクトは読み込めますか。 (2014-03-07 07:46)
  5. ISaGRAFでコンフィグレーション、リソースそれにPOUはそれぞれいくつ作成できますか。 (2014-03-07 02:06)