マイコンのメモリについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Fimbul
記事: 100
登録日時: 12年前

マイコンのメモリについて

#1

投稿記事 by Fimbul » 12年前

私が使っているマイコンのメモリに「Flash」、「EEPROM」、「RAM」、「Interrupt vector」があります。
PC上のプログラムが用いるメモリに相当する物は、RAMで良いのでしょうか。

ここからは上記だと仮定して話をします。
私が使っているマイコンのRAMが1 [Kbytes]なので、メモリ節約のために、例えばint型を使わずにchar型を使う等の方法を取ろうと思います。
ただ、PC上ではint型の代わりにchar型を使う事で不都合な事が出てくると聞きました。
それは何なのでしょうか、また、マイコンの場合でも同じ事が言えるのでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: マイコンのメモリについて

#2

投稿記事 by softya(ソフト屋) » 12年前

メモリの小さなマイコンだとプログラムはFlashでスタックと変数はRAMに書き込むの一般的です。

charで特に不都合なことは思いつきませんが、どういう文脈で出た話か分かりますか?
構造体などで他の型との混在でアライメントのため無駄になるシチュエーションか、charの型の範囲で表せる数値が-128から127と狭いことでしょうか。
※ 細かいことを言えばマーナーではcharが8bitとは限らないとか符号部があるかもわからないんですけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Fimbul
記事: 100
登録日時: 12年前

Re: マイコンのメモリについて

#3

投稿記事 by Fimbul » 12年前

softya(ソフト屋) さんが書きました: メモリの小さなマイコンだとプログラムはFlashでスタックと変数はRAMに書き込むの一般的です。
変数と言うのは、静的変数を含んだ全ての変数でよろしいでしょうか。
また、マイコンへの書き込み方ですが、プログラムはFlashでスタックと変数はRAMに書き込む設定と言うのはデフォルトでそうなっているのでしょうか。
softya(ソフト屋) さんが書きました: charで特に不都合なことは思いつきませんが、どういう文脈で出た話か分かりますか?
アラインメント、処理速度がどうのこうの、と言う様な話だった気がします。
もしかしたら、char型ではなくてshort int型だったかもしれません。

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: マイコンのメモリについて

#4

投稿記事 by beatle » 12年前

全ての変数がRAMに配置されるとは限りません。例えばconst変数はもしかしたらFlash上にのみ配置されるかもしれません。
それから、初期値有りグローバル変数の初期値はフラッシュに書き込まれます。

プログラムはFlashに書き込む以外にありませんよね。RAMは電源を切るとプログラムが消えてしまいますから。

たかぎ
記事: 328
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: マイコンのメモリについて

#5

投稿記事 by たかぎ » 12年前

どんなマイコンなのか不明ですし、周辺のハードウェア構成も不明なので正確なことはいえませんが...

普通はフラッシュメモリにプログラムや静的オブジェクトの初期値が格納されますが、ここでいう「Flash」が別の用途の可能性もあります。
つまり、単なる補助記憶装置として使われている可能性もあるからです。

また、プログラムが「RAM」に配置される可能性はあります。
例えば、フラッシュメモリには圧縮した形式(または非圧縮)でプログラムが格納されており、実行時にそれがRAMに転送されて使われることがあります。
さらに、開発中の効率を改善するために、RAMに直接プログラムをダウンロードして実行させることもあります。
一般的にはRAMの方が高速ですし、フラッシュメモリは書き換え回数に制限もありますので、こうしたことはよくあります。

「EEPROM」は容量もバスの構成もいろいろですので、具体的にどんなデバイスがどう使われているのかがわからないと何ともいえません。

「Interrupt vector」というのはメモリデバイスではありませんが、割り込みベクタが書き込まれたROMということであれば、そこにモニタプログラムやIPLの類が格納されている可能性はあります。

intの代わりにcharを使った場合、整数拡張が頻繁に行われて速度効率もサイズ効率もかえって低下する可能性があります。
CPUのアーキテクチャやコンパイラの仕様によりますので、処理系不明の状況ではまともな回答はできません。
最後に編集したユーザー たかぎ on 2012年6月02日(土) 13:05 [ 編集 1 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: マイコンのメモリについて

#6

投稿記事 by softya(ソフト屋) » 12年前

Fimbul さんが書きました:変数と言うのは、静的変数を含んだ全ての変数でよろしいでしょうか。
また、マイコンへの書き込み方ですが、プログラムはFlashでスタックと変数はRAMに書き込む設定と言うのはデフォルトでそうなっているのでしょうか。
マイコンの開発環境と言うか、やり方次第なのでどうにでもなります。
なので、マイコンの種類や開発環境、いまやろうとしている手順が明確で無いと答えようがありません。
Fimbul さんが書きました:アラインメント、処理速度がどうのこうの、と言う様な話だった気がします。
もしかしたら、char型ではなくてshort int型だったかもしれません。
たかぎさんが指摘されている通り、言い出せばきりがないほど細かい話はあります。
マイコンの性能や要求されるプログラムの仕様次第で考えることは沢山あると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Fimbul
記事: 100
登録日時: 12年前

Re: マイコンのメモリについて

#7

投稿記事 by Fimbul » 12年前

開発環境の話が多いですが、こちらの都合で提示出来ません。
申し訳ないです。
たかぎ さんが書きました: intの代わりにcharを使った場合、整数拡張が頻繁に行われて速度効率もサイズ効率もかえって低下する可能性があります。
整数拡張とは下記の事でしょうか。
http://ja.wikipedia.org/wiki/%E6%B1%8E% ... 1%E5%BC%B5

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: マイコンのメモリについて

#8

投稿記事 by softya(ソフト屋) » 12年前

Fimbul さんが書きました:開発環境の話が多いですが、こちらの都合で提示出来ません。
申し訳ないです。
少なくとも市販マイコンであればマイコン名称(PIC16F84等)とか、汎用ツール(MpLabやHEW)は書いても素性バレしないと思いますよ。
と言うより、この話の深い所を聞きたいのなら明かせるところは明かすべきだと思います。
Fimbul さんが書きました:整数拡張とは下記の事でしょうか。
http://ja.wikipedia.org/wiki/%E6%B1%8E% ... 1%E5%BC%B5
その事です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: マイコンのメモリについて

#9

投稿記事 by たかぎ » 12年前

Fimbul さんが書きました:開発環境の話が多いですが、こちらの都合で提示出来ません。
申し訳ないです。
それなら有償のサービスを利用する方が得策です。
公開掲示板で、他の閲覧者にとって何のメリットもない話を展開しても無価値だからです。

Fimbul
記事: 100
登録日時: 12年前

Re: マイコンのメモリについて

#10

投稿記事 by Fimbul » 12年前

前述した様に、こちらの都合で開発環境は提示出来ません。
それの為に、話が進まない様ですので解決とします。
返信どうもありがとうございました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: マイコンのメモリについて

#11

投稿記事 by softya(ソフト屋) » 12年前

経験豊富なたかぎさんの知識を聞ける機会を逸するのは勿体無いと思ったりしますけどね。
検討してもらって出せる情報があれば、また質問して下さい。
プライベートメッセージで何処まで出せるか質問されても良いと思います。
1KBのRAMだとPICとかAVRとかルネサス系が辺りだと思うんですけどね(他にもあります)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Fimbul
記事: 100
登録日時: 12年前

Re: マイコンのメモリについて

#12

投稿記事 by Fimbul » 12年前

たかぎ さんが書きました:
Fimbul さんが書きました: 開発環境の話が多いですが、こちらの都合で提示出来ません。
申し訳ないです。
それなら有償のサービスを利用する方が得策です。
公開掲示板で、他の閲覧者にとって何のメリットもない話を展開しても無価値だからです。
たかぎさんは上記の事を私と面と向かって話せる覚悟を持っていますか。
それなら良いですが、人を批判するなら自分が批判される覚悟を持って下さい。
たかぎさんの発言は、管理人のDixqさんに言われるなら私も素直に納得します。

ここの掲示板に質問する人達は、殆どがプロではなく素人の人間です。
私も含め、彼らが何故質問するかと言えば、ただ楽しくプログラミングを勉強したいからです。
そして、宿題の丸投げ禁止や、コードをコードタグで囲む等の、最低条件のルールを守る必要はあります。
ですが、たかぎさんの様な発言の仕方では、質問者は何故この様な事を言われなければならないのかと、不愉快に思うだけです。
いくらプロの方でも、素人はその様な方に聞きたいとは思いません。
プロの方から見て、素人のコーディング、質問のレベルの低さはうんざりするかもしれません。
ですが掲示板では、Dixqさん、beatleさんは非常に丁寧に対応してくださいます。
softyaさん、ISLeさんも、失礼ながら多少言葉はきつめではありますが、同じく丁寧に対応してくださいます。

たかぎさんは、上記の事を踏まえてどの様な考えなのでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: マイコンのメモリについて

#13

投稿記事 by softya(ソフト屋) » 12年前

ちょっとフォローしておくと、たかぎさんの言葉はきつく見える場合もあるかも知れませんがいつも真摯に対応なさって下さっていると思います。
それと「同じ事で困っている人の為に過去ログに有用な情報を残すようお願いします。」はフォーラムルールにある義務行為ですので、大筋においては間違ってはいないとも言えます。
Fimbulさんが否定的に捉えてしまった文面だったかも知れませんが、出来ない出来ないでは進まないので妥協点を見い出して出せる情報は出して欲しいと言った感じのニュアンスで捉えて頂ければ幸いです。
たかぎさんからは違うコメントが返るかも知れませんが私はそう捉えていたとご理解下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: マイコンのメモリについて

#14

投稿記事 by たかぎ » 12年前

Fimbul さんが書きました:
たかぎ さんが書きました:
Fimbul さんが書きました: 開発環境の話が多いですが、こちらの都合で提示出来ません。
申し訳ないです。
それなら有償のサービスを利用する方が得策です。
公開掲示板で、他の閲覧者にとって何のメリットもない話を展開しても無価値だからです。
たかぎさんは上記の事を私と面と向かって話せる覚悟を持っていますか。
それなら良いですが、人を批判するなら自分が批判される覚悟を持って下さい。
そう感情的になられても困ります。
情報を提示できない理由はわかりませんが、多くの場合は業務上の秘密を守るためでしょう。
それであれば、機密保持契約を結ぶなりして有償のサポートサービスを受ける方が得策だし、そうするのが筋だといっているのです。
このことは面と向かって自信を持って提案できます。
なぜそれを批判と考えるのか、まったく意味がわかりません。
最後に編集したユーザー たかぎ on 2012年6月03日(日) 12:49 [ 編集 1 回目 ]

たかぎ
記事: 328
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: マイコンのメモリについて

#15

投稿記事 by たかぎ » 12年前

softya(ソフト屋) さんが書きました:それと「同じ事で困っている人の為に過去ログに有用な情報を残すようお願いします。」はフォーラムルールにある義務行為ですので、大筋においては間違ってはいないとも言えます。
そうなんです。
もし仮に、何らかの方法で環境に関する共通認識を持てるに至ったとしても、ほかの大多数の閲覧者がその認識に到達することはまず無理です。
それであれば、「同じ事で困っている人の為に...」といっても「同じ事」なのかどうかすら判断が付かない情報しか残らないのです。

現実問題としては、そうした状況に至ることさえ稀で、よくわからない抽象論に終始することでしょう。
それなら、掲示板以外の方法を使う方がやはり得策なのです。

Fimbul
記事: 100
登録日時: 12年前

Re: マイコンのメモリについて

#16

投稿記事 by Fimbul » 12年前

たかぎ さんが書きました:
softya(ソフト屋) さんが書きました: それと「同じ事で困っている人の為に過去ログに有用な情報を残すようお願いします。」はフォーラムルールにある義務行為ですので、大筋においては間違ってはいないとも言えます。
そうなんです。
もし仮に、何らかの方法で環境に関する共通認識を持てるに至ったとしても、ほかの大多数の閲覧者がその認識に到達することはまず無理です。
それであれば、「同じ事で困っている人の為に...」といっても「同じ事」なのかどうかすら判断が付かない情報しか残らないのです。

現実問題としては、そうした状況に至ることさえ稀で、よくわからない抽象論に終始することでしょう。
それなら、掲示板以外の方法を使う方がやはり得策なのです。
分かります。
たかぎ さんが書きました:
Fimbul さんが書きました: 開発環境の話が多いですが、こちらの都合で提示出来ません。
申し訳ないです。
それなら有償のサービスを利用する方が得策です。
公開掲示板で、他の閲覧者にとって何のメリットもない話を展開しても無価値だからです。
ですが、言い方があると思います。
情報が少ないので答える事が難しい、有償のサービスを利用してみてはどうか、と私に伝える為に「何のメリットも無い」、「無価値」と喧嘩を売る言葉をわざわざ使う必要があるのでしょうか。
これを読んで、感情的にならない方がおかしいと思います。

たかぎ
記事: 328
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: マイコンのメモリについて

#17

投稿記事 by たかぎ » 12年前

Fimbul さんが書きました:情報が少ないので答える事が難しい、有償のサービスを利用してみてはどうか、と私に伝える為に「何のメリットも無い」、「無価値」と喧嘩を売る言葉をわざわざ使う必要があるのでしょうか。
なぜ「喧嘩を売る言葉」と考えるのか理解に苦しみます。

よくわからない話に終始してしまうと、それは「他の閲覧者にとって何のメリットもない話」になります。
そして、それは公開掲示板にとっては「無価値」ですし、多くの閲覧者に有益な情報を残そうと回答している回答者たちにとっても「無価値」なやり取りになります。
単なる事実関係でしかないと思うのですが...。

たかぎ
記事: 328
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: マイコンのメモリについて

#18

投稿記事 by たかぎ » 12年前

たかぎ さんが書きました:
Fimbul さんが書きました:情報が少ないので答える事が難しい、有償のサービスを利用してみてはどうか、と私に伝える為に「何のメリットも無い」、「無価値」と喧嘩を売る言葉をわざわざ使う必要があるのでしょうか。
なぜ「喧嘩を売る言葉」と考えるのか理解に苦しみます。

よくわからない話に終始してしまうと、それは「他の閲覧者にとって何のメリットもない話」になります。
そして、それは公開掲示板にとっては「無価値」ですし、多くの閲覧者に有益な情報を残そうと回答している回答者たちにとっても「無価値」なやり取りになります。
単なる事実関係でしかないと思うのですが...。
少し追記...
正直言うと私の方が喧嘩を売られたようで、ちょっと困惑気味です。

Fimbul
記事: 100
登録日時: 12年前

Re: マイコンのメモリについて

#19

投稿記事 by Fimbul » 12年前

たかぎ さんが書きました:
Fimbul さんが書きました: 情報が少ないので答える事が難しい、有償のサービスを利用してみてはどうか、と私に伝える為に「何のメリットも無い」、「無価値」と喧嘩を売る言葉をわざわざ使う必要があるのでしょうか。
なぜ「喧嘩を売る言葉」と考えるのか理解に苦しみます。

よくわからない話に終始してしまうと、それは「他の閲覧者にとって何のメリットもない話」になります。
そして、それは公開掲示板にとっては「無価値」ですし、多くの閲覧者に有益な情報を残そうと回答している回答者たちにとっても「無価値」なやり取りになります。
単なる事実関係でしかないと思うのですが...。
そうですか。
問題と思わないのであれば、それで良いですが、以後私の質問には返信なさらないでください。
たかぎ さんが書きました: 少し追記...
正直言うと私の方が喧嘩を売られたようで、ちょっと困惑気味です。
たかぎさんのスタンスと同じで、私の知った事ではないです。

たかぎ
記事: 328
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: マイコンのメモリについて

#20

投稿記事 by たかぎ » 12年前

Fimbul さんが書きました: 問題と思わないのであれば、それで良いですが、以後私の質問には返信なさらないでください。
自分が立てたトピックは自分のものなので好き勝手にしてよいと勘違いしていませんか?
その勘違いが、見当はずれなことで怒り出さなければならない理由になっている気がします。
Fimbul さんが書きました:たかぎさんのスタンスと同じで、私の知った事ではないです。
私のスタンスをまったく理解されていないようで残念です。

閉鎖

“C言語何でも質問掲示板” へ戻る