Instruction set and endian
9:51
Жыл бұрын
【生配信】C言語テクニック
36:15
Пікірлер
@fjknj
@fjknj 25 күн бұрын
分かりやすかったです。でもCPUの中のスイッチが隠されると、動画止めて自分で考えないと分かりませんでした。
@embedded_ch
@embedded_ch 24 күн бұрын
具体的なご指摘、ありがとうございます。確かに透けて見えるようにしたほうがわかりやすいですね。リメイクの段階で改善しようと思います。
@user-kaitoshi2627
@user-kaitoshi2627 Ай бұрын
うむ!さっぱりわからん。(電子回路の知識が必要ですね?)
@embedded_ch
@embedded_ch Ай бұрын
すみません・・・。私も体系だてて学んだことがあるわけではないので順番がおかしいかもしれません・・・。もしよろしければどのあたりがわかりにくかったのかご教示いただけますと幸いです。(オープンドレインのくだりですかね?)
@zssv3
@zssv3 Ай бұрын
こういうコアなチャンネル珍しいからうれしい
@user-bk8ql3ie6d
@user-bk8ql3ie6d 2 ай бұрын
Android端末によくある RAM6+8とかってどういう意味なのでしょうか 調べても出てこなかったので詳細教えて貰えたら嬉しいです🥲
@embedded_ch
@embedded_ch 2 ай бұрын
そういった表記のスマホがあることを知りませんでした。 その表記があるページか、機種名を教えていただけないでしょうか。 回答になっておらず申し訳ありません。
@user-bk8ql3ie6d
@user-bk8ql3ie6d 2 ай бұрын
@@embedded_ch 『Teclast T50HD タブレット』だったと思います!
@embedded_ch
@embedded_ch 2 ай бұрын
ありがとうございます。当該商品のスペックを見ると、「6G搭載、8G拡張できます」という表記のようです。つまり8Gは後から購入(別料金)ということですね。
@user-bk8ql3ie6d
@user-bk8ql3ie6d Ай бұрын
@@embedded_ch 別途料金ってことですか!!なるほど!ご丁寧にありがとうございます🥹
@embedded_ch
@embedded_ch Ай бұрын
もう1つ、「最大でも8Gしか拡張できない」という点も注意してください!
@trysify
@trysify 2 ай бұрын
gen1と記載しない物ほどUSB 3.2と表示して新しいと勘違いを期待してる
@embedded_ch
@embedded_ch 2 ай бұрын
USBが規格認証ガバガバなので誤認を狙えてしまうんですよね…個人的には、そういう業者は狙ってやっていると思っています
@user-xx7rd7bw2p
@user-xx7rd7bw2p 2 ай бұрын
動画投稿ありがとうございます、楽しみにお待ちしていました! ホストとデバイスのイメージがかわいくてよかったです もちろん内容もわかりやすくて勉強になりました
@ks_y_sk
@ks_y_sk 2 ай бұрын
待ってた!
@user-rj1dr8zn1y
@user-rj1dr8zn1y 2 ай бұрын
お久しぶりの投稿ありがとうございます! 拝聴致します!
@ks_y_sk
@ks_y_sk 2 ай бұрын
めちゃくちゃわかりやすい
@user-ec1ts4ce8m
@user-ec1ts4ce8m 3 ай бұрын
組み込み開発に携わっているものです。 私ごとですが、文系出身の新卒でマイコンなどへの知識が全くない状態からのスタートでした。 ネットの情報も前提知識が求められるものか、逆に”Lチカ“までを紹介した記事などが多く、「一歩踏み込んだ勉強が難しいな」と思っておりました。 ですが組み込みチャンネルさんのおかげでマイコンの知識を学べています! わかりやすい解説、知識のない方々によりそった動画をありがとうございます!
@embedded_ch
@embedded_ch 3 ай бұрын
励みになります!ありがとうございます。
@hm7925
@hm7925 3 ай бұрын
仕事で使うところだったので役立ちました!
@dm_99
@dm_99 3 ай бұрын
なるほど!知りたかった内容😭
@dm_99
@dm_99 3 ай бұрын
いいどうが!!
@Socrate2
@Socrate2 4 ай бұрын
2進の回路から見せないと制約がなんなのかわかんないんじゃないかなぁ。 PCとかスタックとかの説明もしないとストアドプログラム方式の意味わからんだろうし。 あと、キャッシュは高速化の技術だし、MMUはアドレス空間を仮想化/アクセス制御するためのものだからOSの説明しないと理解できない。 その前に、アドレッシング方式とかオペランドの説明もしないとレジスタの意義もわかりづらいんじゃなかろうか。 演算しないと条件分岐できないとかの辺りも。
@embedded_ch
@embedded_ch 4 ай бұрын
コメントありがとうございます。ごもっともなご指摘だと思います。そのあたりを全て踏まえると長大な動画になることが予想されたため、分けた結果現状に落ち着いているのが正直なところです。説明が必要なところは別動画として作成するつもりです。いただいたご意見については参考にさせていただき、今後のテーマ決定に活かしていきます。
@Socrate2
@Socrate2 4 ай бұрын
@@embedded_ch そうなんですよね。説明すると長い。でも、組み込みやるならどうせロジック演算やラッチの考え方は出てくるだろうし、メモリーアクセスの周りも原初的なロジックのCPUもあるしで、ちゃんと理解しとかないと実用的なプログラムにならなかったりするでしょう。特にメモリー保護の周りはセキュリティが厳しくなってるから完全に理解してないと穴だらけになっちゃうし避けて通れない。 その前にSMPかな?
@embedded_ch
@embedded_ch 4 ай бұрын
動画としては分散してしまいますが(長尺は厳しいので・・)、バリエーションとして網羅するしかないかなと思っています。学習には順序があると思いますので、そこは再生リストを活用する等で対策したいと考えています。
@Socrate2
@Socrate2 4 ай бұрын
@@embedded_ch いい教科書になりそうですね
@user-es3ke8lb5s
@user-es3ke8lb5s 4 ай бұрын
this video helped me as a system architect, thank you!
@embedded_ch
@embedded_ch 4 ай бұрын
Thank you very much. It is very encouraging for me!
@heri3x285
@heri3x285 4 ай бұрын
そっか、resistorとresister!
@idwomitana-engadekita
@idwomitana-engadekita 4 ай бұрын
すいません。マイリストを保存しようとして間違えて何らかの「報告」のボタンを押してしまいました。
@embedded_ch
@embedded_ch 4 ай бұрын
わざわざお知らせいただきありがとうございます。今のところ特に問題はないようですが、こちらで対応しますのでご安心ください!
@doggy9745
@doggy9745 5 ай бұрын
アンセンブリ言語の関数呼び出しについて質問です。 質問内容は、関数呼び出しにおける一連のプロセス(各メモリとの連携の仕方)です。 関数呼び出しの時にスタックに戻りアドレスをpushすると、ある教材では記載してあったのですが 他の教材には JSR rx, proc ;rxにPC+1の値が入り,proc(なんらかの関数)を呼び出す。と書いてある箇所がありました。 このrxはレジスタでありcpu内にあると思います。 一方、スタックは主記憶にあると理解しています。 そのため、関数呼び出しの時はスタックを使うと理解していたのでレジスタとの連携がわかりません。 これはアーキテクチャによって異なるのでしょうか。 そもそもこのrxはレジスタと書いてありましたが、さまざまなレジスタがありますしよくわかりません、、 勉強を始めて数日で分からないことだらけで申し訳ありませんが教えてくださると幸いです。。
@embedded_ch
@embedded_ch 3 ай бұрын
大変申し訳ありません。せっかくご質問をいただいていたのにも関わらず見逃しておりました・・・。 CPUが何かによって変わりますが、ご質問の内容から推察する限り、 ・rxはレジスタで、xは番号だと思います(例:x=1ならレジスタr1) ・JSR命令が実行されるとき、レジスタrxに戻り先アドレスが入ります(PC+1が代入される) ・procはジャンプ先アドレスで、通常は関数ポインタです ということだと思います。 rxとなっているのは複数あるレジスタを選択できるという意味で、コンパイラが自動的に決めるものですが、アセンブラ言語として自身で実装する場合はどのレジスタを使うのかを考える必要があります。 スタック操作はJSR命令実行時にCPUによって自動的に行われます。そのため、JSR命令を実行した直後にCPUを停止させると、スタックポインタが勝手に変わっているはずです。 CPUにもよりますが、rxに戻り先を格納後に同じレジスタを関数内で使わず、また退避すべきレジスタ内容が無いのであればスタックが全く使われないこともありえます。 ご質問にあるとおり、スタックは通常、主記憶上にあります。スタックのありかはスタックポインタが指し示しており、ルネサスのシリーズであれば大体はR15がスタックポインタです。(R15を意図して書き換える必要性は普通はありません。OSを自作する時だけ意識するものです。コンパイラを使っている限りx=15は使われないはずです) 以上が回答となりますが、的が外れていたりした場合はまたコメントで教えてください。
@user-tg6ed6wj5h
@user-tg6ed6wj5h 5 ай бұрын
USBなんてコネクタの形状で区別してた🤣
@Ponmen-fq4dp
@Ponmen-fq4dp 5 ай бұрын
端的な解説をありがとうございます。非常に助かりました。
@810sd3
@810sd3 6 ай бұрын
USB機能が内蔵されているマイコンを使う時、USB通信をSDKを使って開発するのが一般的なのでしょうか?それともリンカーからフルスクラッチで作るのでしょうか?
@embedded_ch
@embedded_ch 6 ай бұрын
フルスクラッチは単純な通信しかしない場合に限られます。例えばUSB2.0のバルク通信しか使わない、とかであればフルスクラッチでも十分対応できます(労力に見合うかは検討が必要です)。接続されると想定される相手の種類が多かったり、USB3.0以降の通信をするようでしたらSDKやOSの機能を利用した方が生産性は圧倒的に高いと思います。
@810sd3
@810sd3 6 ай бұрын
@@embedded_ch 返信ありがとうございます。 RP2040のtinyUSBを見ていて、難しく感じていたので... 頑張るしかないですね。
@embedded_ch
@embedded_ch 6 ай бұрын
RP2040のtinyUSBであれば、フルスクラッチよりはマシですかね・・・。とはいえUSBの規格についてある程度の知識は求められますね。USBの規格は無料で参照できるので、一度読んでみるといいかもしれません(英語ですが)。ひとまずUSB1.1の規格が比較的簡単なので、そこから入ってはいかがでしょうか。
@810sd3
@810sd3 6 ай бұрын
@@embedded_ch ご提案ありがとうございます。 USB1.1からやってみます。 組み込み界隈(Arduinoは除く)の資料は少ないので、これからもよろしくお願い致します。
@pray4xxx
@pray4xxx 6 ай бұрын
業界に入ったばかりですがチャンネルの内容のおかげで資格の勉強が進みます! 基本情報に合格したばかりですが早期に応用情報も突破できるように頑張ります! (組み込み分野の午後問題解けるほどには至れなさそうですが😂)
@embedded_ch
@embedded_ch 6 ай бұрын
コメントありがとうございます。言われてみると、このチャンネルは資格にはフォーカスしてないですね(フリップフロップや論理回路は言及していますが・・)。資格試験対策も需要ありそうですね。
@user-nz8wy2yp1n
@user-nz8wy2yp1n 6 ай бұрын
なんやこの神チャンネルは…即チャンネル登録したわ…!!
@user-rj1dr8zn1y
@user-rj1dr8zn1y 6 ай бұрын
とても分かりやすかったです! 久しぶりの動画嬉しいです。 文系エンジニアで組み込み開発に毎日悪戦苦闘しておりますが、組み込みちゃんねるさんを見て頑張ってます。
@embedded_ch
@embedded_ch 6 ай бұрын
ありがとうございます。文系の方には厳しい世界かもしれませんが応援しています!
@user-qh7ko7xm6y
@user-qh7ko7xm6y 6 ай бұрын
声質が悪くて何も聞こえへん
@embedded_ch
@embedded_ch 6 ай бұрын
不快な思いをさせてしまい申し訳ありません。機械音声を使っている都合上、許容範囲が測れないところも正直持っています。雑なキャラクターを使っているのに急にイケボになってもなあ等、悩んでおります・・
@user-dj4fj4fp4s
@user-dj4fj4fp4s 6 ай бұрын
ありがとうございます。勉強になります。
@bikramtwayana651
@bikramtwayana651 9 ай бұрын
👍👍
@user-mg3qw7xe6t
@user-mg3qw7xe6t 11 ай бұрын
質問です。7:59 の「例外処理関数はコンパイラに教えてあげる必要がある」の部分なのですが、例外処理関数はコンパイラに何を教えてあげる必要があるのでしょうか?私の読解力がないだけで、動画内ですでに説明されているかもしれませんが、よろしくお願いいたします。
@embedded_ch
@embedded_ch 11 ай бұрын
コンパイラによって構文はいろいろですが、主にはpragmaを使って「この関数は例外処理関数だ」という宣言が必要になります。関数から呼び出し元に戻る命令やスタックの退避、復帰は通常の関数と異なるため、そういった宣言をしてあげることで、コンパイラが例外処理に適した処理にしてくれます。
@user-mg3qw7xe6t
@user-mg3qw7xe6t 11 ай бұрын
@@embedded_ch ありがとうございます!
@user-mg3qw7xe6t
@user-mg3qw7xe6t 11 ай бұрын
6:13 間違っていたらすみません。ここの右側の(もしくは左側の)電流の向きって逆だったりしないですよね?
@embedded_ch
@embedded_ch 11 ай бұрын
改めて確認してみたところ、ご指摘のとおり電流の向きが逆でした。 概要欄に訂正文を追加します。 1年以上気づきませんでした。恥ずかしい限りです。 ご指摘いただきありがとうございました。(概要欄に訂正を追記します)
@user-mg3qw7xe6t
@user-mg3qw7xe6t 11 ай бұрын
@@embedded_ch ご返信ありがとうございます。 組み込みエンジニアの道に行きたいと考えており、動画で勉強させていただいていて、とてもわかりやすくてとても参考になってます。 今度生配信等ありましたら、ぜひ伺いたいと思っています。
@embedded_ch
@embedded_ch 11 ай бұрын
@@user-mg3qw7xe6t コメントありがとうございます。参考になっているとのことで嬉しい限りです。現在多忙で、なかなか動画更新も生配信もできずにおり申し訳ありません。なるべく早く機会を設けたいと思っていますので、お待ちいただければ幸いです。
@さくら大福
@さくら大福 Жыл бұрын
Flashなど書き換え可能なメモリをROMと呼ぶのは違和感がありますね。簡単で呼びやすいのでつい呼んでしまいますけど、一瞬躊躇してしまいます
@embedded_ch
@embedded_ch Жыл бұрын
コメントありがとうございます。FlashROMは正式には「Flashメモリ」なのですが、「Flash-ROM」という文言もよく見かけるので本動画でもROMに分類しました。違和感があるのは確かですね。
@user-wg9gp5nf1k
@user-wg9gp5nf1k Жыл бұрын
ありがとうございました。
@user-wg9gp5nf1k
@user-wg9gp5nf1k Жыл бұрын
不明なとことがわかりました。 わかりやすく解説していただきありがとうございます。
@user-ji1cq3fw3j
@user-ji1cq3fw3j Жыл бұрын
プルアップとプルダウンの意味がわかってよかった。ありがとうございます
@_mrp_
@_mrp_ Жыл бұрын
キーエンス社の営業の動画はいくらでもありますが、技術者の動画はあまりお見かけしないのでとても勉強になります。
@embedded_ch
@embedded_ch Жыл бұрын
ありがとうございます。現役社員ではないものの、参考になれば幸いです。
@user-rj1dr8zn1y
@user-rj1dr8zn1y Жыл бұрын
車載組み込み開発をしているものです。 数日にわたって動画を見させていただき、大変参考にさせていただいております。 一度組み込みから挫折して逃げ出したものの、もっとスキルをつけて組み込み開発を続けていきたく拝見させていただいております。 今後も楽しみにしております。
@embedded_ch
@embedded_ch Жыл бұрын
ありがとうございます。本チャンネルが何かしら励みになれば幸いです!
@user-dq5oq2rk5v
@user-dq5oq2rk5v Жыл бұрын
楽しみー(・∀・)
@raku642
@raku642 Жыл бұрын
プログラミング初心者です。 とても分かりやすい解説でした。 コードの書き方を勉強しているのですが 目に見えづらい内部の動きを学べると コードの勉強をするときにもイメージがしやすく 勉強がはかどります。
@embedded_ch
@embedded_ch Жыл бұрын
コメントありがとうございます。大変励みになります。「もっとここの仕組みを知りたい」などリクエストがありましたら教えていただけると助かります。初心を忘れてしまっているのか、最近は「何がわからないんだろう」がイメージしにくくなっているので・・・
@raku642
@raku642 Жыл бұрын
@@embedded_ch さま お返事ありがとうございます。 リクエストがありましたら、と仰って頂き有り難うございます。 大変申し訳ありませんがお言葉甘えさせて頂きます。 当方、プログラミングについては短期の学校に通い Javaの「Hello World」からDBを使用したWEBアプリの開発の仕方まで一通り教わりました。 しかし、自分一人で何か作れる段階まで習熟できず 恥ずかしながら、youtubeやネットを検索しながら、最初から勉強しなおしているという状況です。 自分が「分からない」と感じるのは 「なぜこの機能が必要で、どういう場合に使うのか」がイメージしにくいものです。 例えば、if文やwhile文、getter/setterなどは自分で処理のイメージが出来るので 自力で理解出来るようになりました。 (コードとして記載する英単語と処理の内容が一致したものは割とイメージしやすいです。) ですが、コードの書き方と機能は分かっても なぜその処理が必要で、どんなときに設定すべきか、がイメージ出来ないと、そこで止まってしまいます。 今ですとコンストラクタや抽象クラスの設定について悩んでおり それらの仕組みや処理の流れについて知ることが出来たらありがたいです。 長文失礼致しました。
@embedded_ch
@embedded_ch Жыл бұрын
オブジェクト指向は設計手法で、「モノを抽象的に考えよう!」という思想なので具体的にわかりにくいですよね。「モノ」を抽象化した入れ物がオブジェクト(クラス)を指すとすると、入れ物にいろいろ入れていって「モノ」を作るとインスタンスという具体的なモノになるわけですが、このときに「モノ」の情報を渡して内部を初期化するのがコンストラクタです。コンストラクタはインスタンス生成時に必ず呼ばれるので、渡すものが無い場合はデフォルト値を用意する必要があります。 抽象クラスは他のクラスから参照(継承)されることを前提とした特別なクラスで、それそのものはインスタンス化できず、オーバーライドすることを強制するためのものです。つまりメソッド名だけを抽象クラスに決めておけば、内部処理が異なるメソッドでも、統一したメソッド名を扱うことができます。 ・・・という説明でわかりますかね・・・私もオブジェクト指向は得意分野ではないので(汗)、説明するために出した単語でまた不明なことが増えるということがあるかもしれません。
@raku642
@raku642 Жыл бұрын
@@embedded_ch さま ご返信有難うございます。 仕組みという点からは的外れな質問をしてしまい申し訳ありありません。 ですが「抽象クラスは他のクラスから参照(継承)されることを前提とした特別なクラスで」と 解説して頂くことで、私の用は初学者は一気に理解が進みますし 新しい単語が出たとしても、その意味を調べるという勉強する方向が定まるので助かります これからも貴チャンネルにてUPして頂いている動画を拝見し、内部の仕組みについて これからも勉強させて頂きます。 ありがとうございました。
@embedded_ch
@embedded_ch Жыл бұрын
少しでもお役に立てたなら良かったです。 内部の本質を知ることはどの分野でも大事なことだと思いますので、またわからないことがあればコメントをいただければと思います。 引き続きよろしくお願いします。
@samu5374
@samu5374 Жыл бұрын
わかりやすさNo1でした!!C言語×組込みの良い参考書なかったので助かりました!
@embedded_ch
@embedded_ch Жыл бұрын
ありがとうございます!励みになります!
@ug21_Me728
@ug21_Me728 Жыл бұрын
2:22で前に話が出てきたリセット...とありますが、何か別の動画のことを指していますか?
@embedded_ch
@embedded_ch Жыл бұрын
全く気づきませんでした・・・申し訳ありません。かつてはアップしていた動画でリセットの話が出てきていたのですが、現在リメイク中のためこの動画で急に「リセット」という言葉が出てしまっていました。 リメイク完了後にこちらの概要欄でご案内しますが、今のところはスルーしていただけると幸いです。
@ug21_Me728
@ug21_Me728 Жыл бұрын
ご回答ありがとうございます! このチャンネルでこれから勉強させていただく予定ですが、投稿順に見ていくのがよいでしょうか?
@embedded_ch
@embedded_ch Жыл бұрын
再生リストで、基礎→初級→動作の順に、再生リスト内の動画順にご覧いただくことをお勧めします。投稿はリメイクできたものからだったりなので学習のカリキュラムに沿っていないので・・・。まだ再生リスト内にアップできていない動画もありますので、わからないことなどはお気軽にご相談ください。
@userno5405
@userno5405 Жыл бұрын
元キーエンスとのことなので、そのときの経験などの動画とか、めちゃくちゃ需要があると思います。 ※元キーエンスを名乗る方って営業ばかりで、技術の方をほとんど見かけないので・・・
@embedded_ch
@embedded_ch Жыл бұрын
コメントありがとうございます。キーエンス時代の経験を動画にするのは確かに需要ありそうですね。どういう内容にするかが悩ましいです。
@UvkJo3nL
@UvkJo3nL Жыл бұрын
キャッシュについて質問です。 キャッシュというのはアセンブリで直接制御するものなのでしょうか? アセンブリの本などにはレジスタやメモリにデータを読み書きする命令はよく載っているのですが キャッシュをどうこうするというのは見たことがありません。 ライトバックやライトスルーもアセンブリで制御できるのかCPUが自動で制御するのかどちらでしょうか?
@embedded_ch
@embedded_ch Жыл бұрын
キャッシュを直接制御することはできませんが、アセンブラであればプリフェッチ命令を使うことで強制的にキャッシュメモリを使うことができます。欠点としては強制的にキャッシュミスを起こすので、どこかが犠牲になってしまうことです(キャッシュメモリをフルに使っている場合)。犠牲になるところを指定することはできません。
@UvkJo3nL
@UvkJo3nL Жыл бұрын
@@embedded_ch わかりました、ありがとうございます