2025年06月13日
- kojima295
- 6月13日
- 読了時間: 8分
更新日:6月13日
おはようございます。
・・・
とにかく講座を進めないと・・・
さて、TI社のARMマイコン・プログラムを掲示したところからでしたね。
赤いヤツです!
本日中にプログラムの解説を完了させます。
・・・
チョット、雑談を致しましょう。
AIをどのように感じますか・・・
何でも知っている?
確かに多くのことを知っています。
恐らく、活字や画像として一般に公開されているモノの殆どは学習して知っていると思いまう。
それに対して人間はどうでしょうか・・・
ココで問題があって、、、AIが何でも知っているので人は特に学習する必要はないと考えておられる方が多いように感じております。
これはね、、、あり得ません!!
何故なら、知らないことはAIに質問することすらできないためです。
何が言いたいのかと言えば、ある程度、少しでよいので知っている必要があると考えています。
お話が少しズレますが、
超能力者の方で「宇宙のエネルギーを受けて、何でも答えられる」とおっしゃる方もいらっしゃいます。
確かに、そうなのかもしれません。
しかし、この超能力者の方が知らないことに関しては「宇宙のエネルギー」であっても伝えることは出来ないはずです。
全く知らないことはイメージ化できないためです。
もし、イメージとして渡すことが出来たとしても、それが何を意味しているのか分からない。
数学の難問を解いてくださいと「宇宙のエネルギー」にお願いしても、その解答イメージを理解できなければ、分からないはずです。
つまり「知識や経験のかけら」でよいので知っている必要がある・・・
この「かけら」がなければ、人間はAIの言う事を理解できない・・・
で、この「かけら」のことを教養と呼ぶらしいです。
カッチョよく言えば「リベラルアーツ」です。
一言で言えば、これからの時代は、この「教養」と呼ばれるものが命綱となると考えています。
普通のとき、平時は「教養」は単なる遊び道具だそうです。
しかし、緊急事態時には・・・
何が言いたいのかと言えば、私自身に言っているのですが・・・
「書籍は読んでおいたほうが良い!」
と言う事です。
いろいろな分野があります。
いろいろな分野の中で2つ専門分野を持つとよいと言われたことがあります。
その他の分野に関しては「断片の知識」で良いと思います。
これを持っていることで「AI」と対等に対話が出来るようになると考えます!
AIが無くても「2つ専門分野」を持っていれば、何とかギリギリ生き残れます。
AIがあれば「その他の分野に関する断片知識」を持つことで、様々なことに対応できるようになるはずです。
若い方が「AIが出て来て、自分に何が出来るのか物凄い絶望感を持っている」とのお話を耳にすることがあります。
これに関する私なりの回答として、、、
「2つの専門分野」と「リベラルアーツ」を持つことで極めて広範囲において対応が出来るようになる。これと高いEQを持つことで、、、無敵になる!
ちなみに「無敵」とは、敵がいないという意味です。
勘違いをされると困りますが、「敵がいないのです・・・」
「味方しかいない・・・」
何が言いたいのかと言えば「敵を味方につける」と言う事です。
メチャむずかしいけどね!!
・・・
お話を元に戻して、技術講座は本日午前10時30分頃から開始いたします。
よろしくお願いします!!
・・・
チョット待て!
大変なことになったようです。
・・・
ごめんなさい。遅れました!!
いろいろなことが起き、少々混乱致しました。
講座を再開致します。
int main(void)
{
/* Power on GPIO, initialize pins as digital outputs */
SYSCFG_DL_init();
/* Default: LED is off */
DL_GPIO_setPins(
GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_TEST_PIN);
while (1) {
/*
* Call togglePins API to flip the current value of the LED. This
* API causes the corresponding HW bits to be flipped by the GPIO HW
* without need for additional R-M-W cycles by the processor.
*/
delay_cycles(DELAY);
DL_GPIO_togglePins(GPIO_LEDS_PORT,
GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_TEST_PIN);
}
}ココからでしたね。
ビルド を実行したことを覚えておられるでしょうか。

上図のように実行。

ビルド が無事完了致しました。
ここで、、、

こちらを選択致します。
「Start Debugging」と言う項目です・・・
これは、その名のとおり「デバッグをスタートするよ」と言う意味です。
すると・・・
チョット待った!!
ごめん、間違えました!!

「Debug」を選択してから「Build Project(s)」でした・・・
で、ここで、、、

「Debug Project」実行!!
すると、ゴニョゴニョ動き出します。
場合により、、、

こんなのが出ますが「Update」ボタンを押下していただければ大丈夫です。
さて、これからが本番!!

39行目に矢印表示がでるはず・・・
この矢印は「今、この行をマイコンが実行していますよ」と言う意味です。
int main(ゴニョゴニョ) と言う文の次の行から実行が開始されました!
この int main(ゴニョゴニョ) と言うのは、メイン関数と言って、マイコンは必ずこのメイン関数から最初に実行されます。
で、デバッグと言う機能を使用し、マイコンをスタートさせました。
(ごめんなさい。今チョット電話割込みが入りました!)
(戻って参りました!!)
まだ「 { 」の部分なので、メイン関数のスタート位置に立ったところです。
さて、ここから、、、

「Step Over」と言う選択肢を選んで実行すると、、、

矢印が41行目に移動致しました。
この「Step Over」と言うのは、一行づつ実行させるときに使用いたします。
で、40行目を飛ばしたと思います。
/* Power on GPIO, initialize pins as digital outputs */これですね・・・
これは「コメント文」と言って、人間が理解できるようにメモを残すための文があるんです。
「 /* ゴニョゴニョ */ 」
この「 /* 」から「 */ 」の間の囲まれた部分が「コメント文」を意味します。
この文は、マイコンには関係ありません。(人間用メモ機能なので・・)
このため、実行されません!!
・・・
いちいち「Step Over」を選択するのはめんどくさいので、、、
この場合「F10」ボタンを押下することで上記を選択したことと同じになります。
SYSCFG_DL_init();今、この文を実行しようとしています。(まだ実行していません)
さて、、、これは何か?
上記に説明があるのですが、、、
これを初めて読んで理解できる人は、、、
宇宙人です。。。
SYSCFG_DL_init();コレですね・・・
「初期化関数」と言うヤツなのですが。。。
この文を実行することで、マイコンが動くための準備が行われます。
準備体操みたいなものです。
と言っても、分からないと思います。
これは、、、実は「TI社独自の関数」なんです。。。
もちろん、あらゆるマイコンには「初期化関数」があり、必ずと言っていいほど実行致します。
この「初期化関数」と言うモノは、通常各プログラマが、その内容を記述致します。
でも、それだとめんどくさいじゃないですか・・・
皆さんは「関数」と言うモノをご存じないかもしれません。
これは当たり前です。
「関数」に関しては、AIに説明を求めてください。。。
多分、私よりも分かりやすく説明してくれるはずです・・・ とほほ。。。
・・・
皆さん!
この「SYSCFG_DL_init」関数の中身を見てみたいでしょ!
では、この関数の中身にジャンプしてみましょう!!

「Step into」と言う選択肢があります!
これは、関数の内部にジャンプするための機能です。
では、これを選択してみましょう・・・

出ました・・・
これが「SYSCFG_DL_init」関数の中身です。
48行目から始まっています。
この「SYSCFG_DL_init」関数の中身は、さらに「3つの関数」で構成されています。
なんだそれ、、、と、
SYSCFG_DL_initPower();
SYSCFG_DL_GPIO_init();
/* Module-Specific Initializations*/
SYSCFG_DL_SYSCTL_init();最初に「SYSCFG_DL_initPower」関数の中に入ってみましょう。
更に「Step into」実行!!

56行目
おいおい、さらに「3つの関数」で構成されています・・・
でね、これ全部見ていくと・・・
とんでもない数の関数で構成されています。
こんなの、いちいちプログラマが書いていたら大変でしょ・・・・
実際、大変なんです・・・
マイコンをスタートさせるための準備体操の段階で、プログラマのエネルギー切れが起きてしまいます。
そこで、TI社は考えたようです。
「この初期化関数の部分はTI社のツールを使用し、半分自動で作成するようにしよう!!」
このツールを使用し、自動で作成させた初期化関数の名前が「SYSCFG_DL_init」と言う訳です。
もちろん最終的には、この中身を理解する必要があります。
何かあったとき、困るじゃないですか・・・
だから、理解できるだけの知識は必要です。
でも、今は全てを理解して下さいとは言いません。
いきなり最初から理解することは極めて困難です。
このために、TI社も考えたようですし、、、
まず、この「準備体操関数」を使用しましょう。。。
今の段階では、中身の理解を避ける・・・
ちなみに理解は「チョー難しい」です・・・
このように「Arduino」とは全く異なる構造となっています。
これがプロ用の記述方法なんです。
でも、この方法を理解できると、、、
Arduino言語では出来ない事も自由自在にできるようになります!!
・・・
疲れちゃいました!!
まだ、プログラム用準備体操の段階です。
全部説明するとお話を致しましたが、一旦本日はココで完了と致しましょう。
数十セントのマイコンを動かすだけでも、大変です。
これが、スマホ用の大規模マイコンだと・・・
考えるだけで恐ろしくなります。
でも、アップルさんやGoogleさん、サムスンさんなどはやっているわけです。。。
どうです、皆さん。。。
この恐ろしく、そして美しい世界に入って見ませんか?
じゃ、また明日。
お会いいたしましょう。


コメント