狠狠撸

狠狠撸Share a Scribd company logo
Cプログラムを異なるマイコンで動作させる際の
エンディアンとビットフィールドの取り扱い
Gou Sawada
2017/6/20
1.エンディアンについて
例えばH8用のCプログラムの一部を
Windowsで動作させたいとする。
H8はビッグエンディアン、Intel CPUはリトルエンディアンなので
外部のバイナリファイルを読み込むときなどに問題になる。
sample1.c
UB ReadFile[100]; //外部のバイナリファイルを読んで
1バイトずつ格納するための配列
typedef struct test{
UH Code; // コード(2byte)
UB yobi[14]; // 予備
}TEST;
TEST *file_ptr;
//(中略:ReadFileに外部のバイナリファイルを1バイトずつ格納する処理)
file_ptr = (TEST*)&ReadFile[0];
ReadFileの値が以下であったとする。
ReadFile[0]=0x01
ReadFile[1]=0x02
このとき、"file_ptr->Code"の値は以下のようになる。
H8 Intel
0x0102 0x0201
sample2.c
UH code; //2バイト
UB *ptr;
ptr = (UB*)&code;
*ptr = 0x01;
ptr++;
*ptr = 0x02;
このときも、"code"の値は以下のようになる。
0x0102 0x0201
H8 Intel
2.ビットフィールドについて
実は共用体のビット定義も逆になっている。
※注:設定によって変更することも可能
sample3.c
typedef union {
UH data; //2バイト
struct {
UH bf1:7;
UH bf2:5;
UH bf3:4;
} bit;
} BIT_TEST1;
sample3.cはCPUによって
先頭メンバのビットフィールドが逆順になる。
bit15~12 bit11~7 bit6~0
bit15~9 bit8~4 bit3~0
Intel
bf3 :4bit bf2 :5bit bf1 :7bit
H8
bf1 :7bit bf2 :5bit bf3 :4bit
ただし先頭メンバが配列のときは、
配列の要素ごとにビットフィールドが逆になる。
sample4.c
typedef union {
UB data[2]; //1byte×2の配列
struct {
UB bf1:4;
UB bf2:4;
UB bf3:4;
UB bf4:4;
} bit;
} BIT_TEST2;
sample4.cのビットフィールドは以下のようになる。
bf3 :4bitbf4 :4bitbf1 :4bitbf2 :4bit
bit7~4 bit3~0 bit7~4 bit3~0
bit3~0bit7~4bit3~0bit7~4
Intel
data[0] data[1]
bf4 :4bitbf3 :4bitbf2 :4bitbf1 :4bit
data[0] data[1]
H8
※本资料は蚕颈颈迟补に投稿したものを再编集したものです。

More Related Content

Similar to 颁プログラムを异なるマイコンで动作させる际のエンディアンとビットフィールドの取り扱い (8)

PDF
Runtime c++editing
Seiya Ishibashi
?
PDF
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
TetsuroMatsumura
?
PDF
JIT Code Profiling with VTune
MITSUNARI Shigeo
?
PDF
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
?
PDF
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
sandai
?
PDF
翱辫别苍颁尝に触れてみよう
You&I
?
KEY
ひのきのぼうだけで全クリ目指す
AromaBlack
?
PDF
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
?
Runtime c++editing
Seiya Ishibashi
?
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
TetsuroMatsumura
?
JIT Code Profiling with VTune
MITSUNARI Shigeo
?
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
?
【学习メモ#1蝉迟】12ステップで作る组込み翱厂自作入门
sandai
?
翱辫别苍颁尝に触れてみよう
You&I
?
ひのきのぼうだけで全クリ目指す
AromaBlack
?
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
?

Recently uploaded (13)

PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PDF
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
PDF
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
Ad

颁プログラムを异なるマイコンで动作させる际のエンディアンとビットフィールドの取り扱い