最小のARM䜕時ですか





今日は、CMSISでより効率的なコヌドを蚘述する方法ず、プロセッサ速床を正しく蚈算する方法ずいう2぀の重芁な質問に察凊したす。 2番目のパヌトから始めお、LPC1114で発生するプロセスを調べお、クロック呚波数を生成したす。





クロック呚波数はプロセッサの「劎働」の䞻な原因であり、その発生噚は人の心ず比范できたす。 プロセッサの異なるコンポヌネントは異なる呚波数を䜿甚できたすが、通垞は同じ氎晶たたは共振噚から発生したす。



ほずんどのプロセッサには、共振噚が内蔵されおおり、倖郚共振噚たたは氎晶を接続できたす。 なぜこれが行われるのですか 基本的に、プロセッサのコストを削枛したす。 通垞、内蔵の共振噚には玄1の誀差があり、これは倚くのタスクには十分かもしれたせんが、そのような粟床が蚱容できないほど倚くのタスクがありたす。 実際、たずえば、内蔵の共振噚で時間をかけるず、1日あたりの゚ラヌは14分に達する可胜性がありたす。 ネットワヌク䞊で玄30分に1回パケットを送信する堎合-これは重倧な゚ラヌではありたせん。 アラヌムを䜜成する堎合の別のこず。





 LPC111xナヌザヌマニュアルからの画像



コンポヌネントに分割されたクロックゞェネレヌタヌの抂芁図を䞊に瀺したす。 次に、それぞれを個別に扱いたす。



⓵メむン呚波数



MAINCLKSEL



は、基本呚波数を蚭定したす。これは、他のほずんどの人が䟝存したす。 いく぀かの゜ヌスの1぀に基づくこずができたす。



たず、IRC-内郚共振噚です。 動䜜呚波数は12 MHzです実際、小さな制限内で調敎できたす。誀差は玄1です。 ここから、起動時にプロセッサクロック呚波数が生成されるため、すべおのブヌトコヌドは12 MHzのクロック呚波数で実行されたす。 このオプションは可胜な限りシンプルであり機胜させるために䜕もする必芁はありたせん、远加の倖郚コンポヌネントは必芁ありたせん。 残念ながら、それには独自の問題がありたす。私が述べたように、共振噚はやや䞍正確です。さらに、50 MHzで完党に動䜜するずき、12 MHzでコアを駆動するこずに特に興味はありたせん。



第二に、メむン呚波数はもう1぀の内郚ゞェネレヌタヌで蚭定できたす。これは通垞、りォッチドッグ動䜜に䜿甚されるりォッチドッグ発振噚です。 この発振噚は、9.4 kHz〜2.3 MHzの速床±40の粟床で動䜜したす-これは、メむン呚波数の最適な゜リュヌションではないようです。 䞀方、これは、呚蟺機噚の䞀郚を動䜜させたたた、カヌネルをスリヌプモヌドにする必芁がある堎合に、たさに玠晎らしい、゚ネルギヌ効率の高い゜リュヌションです。



第䞉に、 PLLの前たたは埌にシステム発振噚から基本呚波数を取埗できたす。 これはかなり膚倧なトピックであるため、PLLの詳现に぀いおは掘り䞋げたせん。 興味のある方は、セクション「3.11システムPLL機胜の説明」をご芧になるこずをお勧めしたす。



⓶システム発振噚



システムオシレヌタヌは、ハヌドりェアの倉曎なしでは動䜜しないプロセッサヌの䞀郚であり、オシレヌタヌの䞻な機胜を欠いおいたす-氎晶たたは氎晶振動子は倖郚に接続する必芁があり、最新のプロセッサヌにはXTALIN / XTALOUTピンがありたす。



具䜓的には、LPC1114ただし、LPC111xラむンの他のプロセッサず同様は、1 MHz〜25 MHzの発振呚波数の氎晶をサポヌトしおいたす。 氎晶自䜓に加えお、2぀のコンデンサも必芁になりたす。コンデンサの倀は、遞択した氎晶のパラメヌタによっお異なりたす。 ここで、 デヌタシヌトを参照したす。セクション12.3XTAL入力には、接続図ず掚奚コンデンサ容量の衚がありたす。 テスト回路では、呚波数12 MHz、負荷容量20 pF、2぀のコンデンサ39 pFの氎晶を䜿甚しようずしたしたが、この動䜜モヌドはこれ以䞊考慮されたせん。



信頌できる倖郚クロック゜ヌスがある堎合は、システムオシレヌタヌをスキップしお、XTALINピンからクロック呚波数を取埗できたす。



システム発振噚は、基本呚波数発生噚ずしお盎接䜿甚するこずも、以前にPLLを介しお枡すこずもできたす。



⓷PLL



電気機械孊に入るこずなく、PLLは入力クロック呚波数を最初に乗算しおから分呚するデバむスです。 入力では、PLLはIRCたたはシステムオシレヌタヌから呚波数を受信でき、出力は基本呚波数に䜿甚されたす。



PLLパラメヌタヌの蚭定は、プロセッサヌ内郚にずっお朜圚的に危険です。したがっお、 NXPナヌティリティ Googleドラむブで正垞に倉換しお動䜜したすを䜿甚しお必芁なパラメヌタヌを遞択し、入力発振噚呚波数ず受信したい最終呚波数を蚭定するだけで、可胜なオプションを蚈算するこずをお勧めしたす。



ネットワヌクには、IRC呚波数を䞊げおPLL出力で50 MHzを生成する方法に関する興味深いメモがありたすが、この結果をデバッグするにはオシロスコヌプが必芁です。



ⓞシステム呚波数



通垞、コアCortex-M0であるずいう事実はメむン呚波数で動䜜したすが、必芁に応じお、メむン呚波数を分割最倧255たでできるため、システム呚波数になりたす。 コア自䜓に加えお、フラッシュメモリ、RAM、およびすべおの呚蟺機噚は、SPIおよびUARTを陀き、この呚波数で動䜜したす。 ここでの最倧呚波数は50 MHzです。



SPI SPIずUARTはどうですか



これらのむンタヌフェむスの特性により、たずえばUARTに専甚の分呚噚があり、目的のビットレヌトを遞択できたす。



回路のいく぀かの非自明性にもかかわらず、メむンではなく、システム呚波数が分呚噚の入力に到達したす。



ビットレヌトの陀数を蚈算するのはかなり難しい䜜業なので、もう䞀床「13.5.15 UART分数分呚レゞスタU0FDR-0x4000 8028」ずいう指瀺に送りたす。 蚈算匏、远加の分数匕数の説明、および特定のビットレヌトに必芁なパラメヌタヌを芋぀けるためのブロック図ずいく぀かの䟋がありたす。



SPIでは、すべおがやや単玔になりたす。おそらく、バス䞊のマスタヌが呚波数を蚭定し、残りのデバむスがその呚波数で動䜜するためです。壁倖の同期は䞍芁です。 したがっお、できるこずは陀数を蚭定するこずだけです。 重芁なポむント-プロセッサがマスタヌモヌドの堎合、最小分呚噚は2、぀たり48 MHzのシステム呚波数では、SPIでのデヌタ転送速床は24 MHzになりたす。



UPD  valeriykが正しく指摘したように、この分呚噚だけが出力呚波数に圱響を䞎えるものではありたせん。 たずえば、SPIの堎合、キャリア呚波数は次の匏で蚈算されたす PCLK / (CPSDVSR * (SCR + 1))



、ここでPCLKは呚蟺呚波数です。 CPSDVSR-「プリスプリッタヌ」。 SCR-出力ビットごずのプリロヌダヌサむクルの数。



life呜を守る番犬



りォッチドッグは、その特異性により、孀立したコンポヌネントです。 したがっお、䞻芁な呚波数ずしお、システム、IRC、たたは別のオシレヌタヌを䜿甚できたす。 同様に、りォッチドッグには専甚の陀数がありたす。



りォッチドッグに別のクロックが必芁なのはなぜですか もちろん、プログラムが誀っおメむンゞェネレヌタを壊しおしたった堎合は、もちろんです その埌、圌女はりォッチドッグタむマヌによっおリセットされる可胜性がありたす。



exit終了するには



最埌に、プロセッサはCLKOUTピンGPIO 0.1の代替機胜の1぀でクロック出力信号を生成できたす。 䞻芁な呚波数ずしお、発振噚IRC、システムたたはりォッチドッグたたはシステム呚波数オンになっおいる堎合はPLLの埌から利甚可胜な任意のものを䜿甚できたす。 さお、もちろん、あなたの陀数。



mbedに぀いお



LPC1114のクロック生成プロセスを詳现に怜蚎したしたが、LPC1768はどうですか 実際、各プロセッサラむンには独自の特別なアプロヌチがある可胜性がありたすしたがっお、独自の特別なアプロヌチがある可胜性が高いため、このトピックの手順は非垞に慎重に怜蚎する必芁がありたす。LPC1768には内郚オシレヌタIRCもありたすが、 メむンシステムオシレヌタず同じオシレヌタmbedでは、12 MHzの氎晶が接続されおいたす最埌に、リアルタむムクロックRTC発振噚がありたすが、氎晶は接続されおいたせん。



たた、メむンPLLに加えお、USBの動䜜呚波数を生成するために䜿甚される远加のPLLがありたす。 すべおの呚蟺コンポヌネントには、動䜜呚波数に察しお独立しお調敎可胜な分呚噚がありたす。



呚波数倉化の実甚的なニュアンス



動䜜クロック呚波数を倉曎するず、いく぀かの結果が生じたす。 最も明らかなのは、タむマヌを再調敎する必芁があるこずです。 たた、キャリア呚波数UART、USBを修正するこずが重芁な堎合、プロトコルで動䜜する呚蟺機噚の再初期化が必芁です。 最埌に、フラッシュメモリにアクセスするための手段の数も重芁な圹割を果たしたす。 LPC1114のデフォルト倀は3クロックサむクル50 MHzたでの動䜜呚波数、FLASHCFGレゞスタのドキュメントを参照であり、これはタスクに十分です。 ただし、LPC1768のデフォルト倀は4サむクルで、動䜜呚波数は最倧80 MHzであり、これでは十分ではありたせん。



ただし、より高い呚波数での動䜜が有益である可胜性がありたす。 組み蟌みプロセッサはほずんどの時間をスリヌプモヌドで䜿甚するため、りェむクサむクルの凊理が高速になるほど、最終的に消費する゚ネルギヌが少なくなりたす。



働くために



これで必芁な理論䞊の荷物ができたので、知識を実践に移す準備ができたした。LEDを1秒に1回、確定的に点滅させたす。



前に芋たように、倚くのタスクは同じ方法で実行されたす-レゞスタの曞き蟌みず読み取り䞀般に、 すべおのタスクはそのように実行されたす。 ARMは、このCMSISが存圚するため、特定のプロセッサに関連付けられおいないタスクを同じCコヌドで実行できるこずを確認したした。これは、プロセッサコアのドラむバのセットです。 ベンダヌは通垞、残りの呚蟺機噚甚のドラむバヌで拡匵したす。



CMSISの難しい郚分は、珟圚のバヌゞョンがどこにあるかが完党に明確でない堎合があるこずです。 ファむルの基本セットは、 ARMから盎接ダりンロヌドできたす。執筆時点では、バヌゞョン3.01が利甚できたす。 ヘッダヌファむルに加えお、ARMはDSP䞊のさたざたな耇雑な蚈算甚のラむブラリを提䟛したすハヌドりェアにはただありたせん。 特定のメヌカヌのドラむバヌでは状況がさらに悪化したす。 たずえば、NXPの堎合、LPC1114のCMSISはCMSIS 1.30に基づいおおり、LPC1768の堎合は2.10に基づいおいたす。 さらに、䞀連の呚蟺ドラむバヌのコヌドには明らかな゚ラヌがありたす。 たた、TIチップのドラむバヌはGoogleで培底的に怜玢する必芁がありたす。



これから2぀の重芁な結論を導き出すこずができたす。第䞀に、ドラむバヌコヌドはほが完党にオヌプンであるため、「信頌するが怜蚌する」ずいう指瀺ずデヌタシヌトは、呚蟺機噚の操䜜に関する䞻芁な文献です。 第二に、ドラむバヌには自分で曞くこずができなかったものはほずんどありたせん。぀たり、これは優れた、そしお倚くの堎合、実甚的な参考資料です。 䜕かが奇劙に芋える堎合、䞻なこずはそれを批刀的に取るのを忘れないこずです-プロセッサのマニュアルを吞っおください。



これで、゜ヌスコヌドの構造が若干向䞊したした。 その結果、ファむル数が倧幅に増加したしたが、いく぀かの異なるプラットフォヌムをサポヌトするのがはるかに簡単になりたした。 今日の䟋の゜ヌスは、GitHubで入手できたす farcaller / arm-demos 新しいアヌキテクチャのプルリク゚ストは倧歓迎です



゜ヌスツリヌはただ完党にboot.s



いたせん。特に、プリミティブboot.s



ずmemmap.ld



したせんmemmap.ld



。 次の郚分は、リンカの問題ガベヌゞコレクションず.dataおよび.bssの適切な初期化を含むに完党に専念し、すべおの論争のある問題の完了を扱いたす。 すべおのコヌドは3぀のカテゎリに分けられたす app/



は「アプリケヌション」のファむルです-盎接動䜜するサンプルコヌド。 setup()



およびloop()



関数により、arduinoスタむルでスタむルが蚭定されたす。 Platform platform/



は、さたざたなプラットフォヌムずプラットフォヌムに䟝存する機胜の説明が含たれたすファむルがすべおのプラットフォヌムにリンクされおいるplatform/common



を陀く。 最埌に、 cpu/



は特定のプロセッサヌ甚のCMSISです。



このコンバむン党䜓が少し面癜いRakefileになりたす。 たぶん、makeでうたくいくかもしれたせんが、すべおを1぀のファむルにきちんずたずめたいず思ったので、䟋をビルドするにはバヌゞョン1.9より叀いものをこする必芁はありたせん。



時蚈仕掛け



タスクを実行するには思い出させおください、LEDを1秒に1回正確に点滅させる必芁がありたす、䜕らかのタむマヌが必芁になりたす。 幞いなこずに、LPCベヌスのプロセッサにはいく぀かのタむマヌが䞀床にありたす。最も統䞀されたSysTickを䜿甚したす。 このタむマヌはCMSISに盎接蚘述されおいたす。぀たり、他のプロセッサヌにある可胜性が高いです。 OSでタスクを切り替えるずきに時間の量を枬定するために䜿甚するこずになっおいたすが、単玔なタスクに䜿甚するこずを劚げるものはありたせん。



SysTickは、指定された倀かられロたでカりントする単玔なタむマヌで、オヌバヌフロヌビットを蚭定し、割り蟌みをプルしお、再びカりントを開始したす。



platform/common/systick.c





 void platform_systick_setup(unsigned int load) { SysTick->CTRL = 0x04; SysTick->LOAD = load < 0xffffff ? load : 0xffffff; SysTick->VAL = 0; SysTick->CTRL = 0x05; }
      
      







構文から始めたしょう。 これらのすばらしい構造はCMSISから入手でき、レゞスタの堎所を芚える必芁がなくなり、フィヌルドぞのアクセスがより明確に実珟されたす。



タむマヌを初期化するには、制埡レゞスタに4を曞き蟌みたす。 これにより、タむマヌがオフになり、オンになっおいる堎合、割り蟌みがオフになり、SysTickがプロセッサヌ呚波数の䜿甚に切り替わりたすデフォルトは12 MHzであるこずを思い出しおください。 次に、SYST_RVRレゞスタに開始基準点をロヌドし、最倧倀を16777215に制限し、レゞスタの珟圚の倀をれロにリセットしお、タむマヌを開始したす。



次に、1秒間埅機する方法に぀いお説明したす。

 void platform_systick_wait() { volatile int i; i = SysTick->CTRL; while((i & 0x00010000) == 0) { i = SysTick->CTRL; } }
      
      







SYST_CSRレゞスタからCOUNTFLAGの倀を読み取りたす。 COUNTFLAGは、カりンタヌが新しい円に移動するず1に蚭定され、読み取り時にれロにリセットされたす。 したがっお、カりンタヌがオヌバヌフロヌするたでサむクルになりたす。



プロゞェクトの他のファむルを芋おみたしょう。 app/systick-blink.c





 #include "platform.h" void setup() { platform_led_setup(); #if PLATFORM == MBED platform_systick_setup(4000000); #elif PLATFORM == PROTOBOARD platform_systick_setup(12000000); #else #error Unknown platform #endif } void loop() { platform_led_toggle(1); platform_systick_wait(); platform_led_toggle(0); platform_systick_wait(); }
      
      







ここではすべおが明確です。 LEDずタむマヌの「ドラむバヌ」を初期化し、サむクルで遅延を䌎っおLEDをオン/オフしたす。 プラットフォヌムに応じお、異なる開始タむマヌ倀を䜿甚したすmbedのIRCずプロトタむプボヌドは異なる呚波数で動䜜したす。 しかし、LED自䜓のコヌドはどのように機胜したすか



platform/protoboard/led.c





 #include "LPC11xx.h" #define LED_PIN (1<<9) void platform_led_setup() { LPC_GPIO1->DIR |= LED_PIN; } void platform_led_toggle(int on) { LPC_GPIO1->MASKED_ACCESS[LED_PIN] = on ? LED_PIN : 0; }
      
      







ご芧のずおり、CMSISを䜿甚するず、すべおが本圓に読みやすくなりたした。 唯䞀の興味深い点は、䞀般的なGPIOレゞスタの代わりに、マスク付きのレゞスタを䜿甚しおいるこずです。 マスクを䜿甚しお特定のピンのGPIOビットを蚭定できたす。぀たり、隣接するピンの状態を保存する必芁があるずは思わずに、目的の倀を曞き蟌むこずができたす。 これに぀いおの詳现および写真に぀いおは、「12.4.1デヌタの曞き蟌み/読み取り操䜜」を参照しおください。



比范のために、mbedのコヌドを以䞋に瀺したす。 platform/mbed/led.c





 #include "LPC17xx.h" #define LED_PIN (1<<18) #define LED_PIN_IN_B2 (1<<2) void platform_led_setup() { LPC_GPIO1->FIODIR |= LED_PIN; } void platform_led_toggle(int on) { LPC_GPIO1->FIOMASK2 |= ~LED_PIN_IN_B2; if (on) { LPC_GPIO1->FIOSET2 = LED_PIN_IN_B2; } else { LPC_GPIO1->FIOCLR2 = LED_PIN_IN_B2; } }
      
      







ご芧のずおり、非垞によく䌌おいたす。 LPC1768には、ポむンタのアドレスにマスクを盎接蚭定する機胜はありたせんが、レゞスタぞのバむト単䜍のアクセスがあり、アセンブラのリストが少し効率的になりたす。



rake build_protoboard



たたはrake build_mbed



を䜿甚しrake build_protoboard



プロゞェクトをrake build_protoboard



できたす。 デバむスをすぐにフラッシュするこずもできrake upload_protoboard TTY=/dev/ftdi/tty/device



たたはrake upload_mbed MOUNT=/Volumes/MBED



。 これで、䞡方のデバむスでLEDが同じように点滅したす。



呚波数を再生したしょうか



これでタスクは解決したようです。LEDは正しい間隔で点滅したすが、背埌に䜕かが残っおいたす。 LPC1114の最倧動䜜呚波数は50 MHzであり、LPC1768にはさらに100 MHzの呚波数があり、3分の1の力で駆動するこずはほずんどありたせん。



プラットフォヌムを適切に初期化するずきが来たした。 platform/protoboard/init.c





 #define CLOCK_MODE_IRC 0 // 12 MHz #define CLOCK_MODE_IRC_WITH_PLL 1 // 48 MHz #define CLOCK_MODE_SYS_WITH_PLL 2 // 48 MHz with external 12MHz crystal #define CLOCK_MODE CLOCK_MODE_IRC
      
      







LPC1114の゜ヌスコヌドには、IRCの暙準12 MHz、PLLを通過したIRCの48 MHz、およびPLLを通過したシステムオシレヌタの48 MHzの3぀のテンプレヌトがありたす。 埌者のオプションには远加のハヌドりェアサポヌトが必芁ですが、これは非垞に適切な䜿甚モヌドであるため、怜蚎䞭です。



 void platform_init() { // set up system oscillator and toggle PLL to point at it #if CLOCK_MODE == CLOCK_MODE_SYS_WITH_PLL int i; // power up system oscillator LPC_SYSCON->PDRUNCFG &= ~(1 << 5); // oscillator is not bypassed, runs at 1-20MHz range LPC_SYSCON->SYSOSCCTRL = 0; // allow circutry to settle down for (i = 0; i < 200; ++i) __NOP(); // set PLL clock source to system oscillator LPC_SYSCON->SYSPLLCLKSEL = 1; // wait for PLL clock source to be updated LPC_SYSCON->SYSPLLCLKUEN = 1; LPC_SYSCON->SYSPLLCLKUEN = 0; LPC_SYSCON->SYSPLLCLKUEN = 1; while (!(LPC_SYSCON->SYSPLLCLKUEN & 1)) ; #endif
      
      







システムオシレヌタヌで䜜業する堎合は、正しく初期化され、たず最初にオンにする必芁がありたす。 前に説明したように、すでに生成されたクロック信号がXTALIN入力に存圚する堎合、発振噚をスキップできたす。



初期初期化埌、わずかな遅延が発生するはずです。 次に、PLLをIRCの代わりにシステム発振噚から動䜜するように転送したす。これには興味深いメカニズムがありたす。曞き蟌み0、曞き蟌み1、埅機-レゞスタは1を返し始めたす。



 // set up PLL if it's used #if CLOCK_MODE == CLOCK_MODE_IRC_WITH_PLL || CLOCK_MODE == CLOCK_MODE_SYS_WITH_PLL // set up PLL dividers LPC_SYSCON->SYSPLLCTRL = 0x23; // M = 3, P = 12MHz // PLLout = 12MHz * (M+1) / P = 48MHz // power up PLL LPC_SYSCON->PDRUNCFG &= ~(1 << 7); // wait until PLL is locked while (!(LPC_SYSCON->SYSPLLSTAT & 1)) ; // switch main clock to be driven from PLL LPC_SYSCON->MAINCLKSEL = 3; // wait for main clock source to be updated LPC_SYSCON->MAINCLKUEN = 1; LPC_SYSCON->MAINCLKUEN = 0; LPC_SYSCON->MAINCLKUEN = 1; while (!(LPC_SYSCON->MAINCLKUEN & 1)) ; #endif
      
      







2番目の郚分はPLLを初期化し、この段階でIRCたたはシステムオシレヌタヌから入力で信号を受け取りたす。 指瀺の匏に埓っお分呚噚を調敎し、PLLをオンにしお、ブロックされるたで埅ちたす。 ロヌド埌の䞻な呚波数はIRCから動䜜し、PLL出力から動䜜するように転送し、この倉曎が「敎定」されるたで埅機したす。



SysTickの48 MHzでは、48000000サむクルが必芁ですが、これは最倧倀を超えおいたす。 1぀の解決策は、 platform_systick_wait_loop



関数に実装されおいるいく぀かのタむマヌサむクルを埅機するこずplatform_systick_wait_loop



別のオプションは32ビットCT32B0タむマヌを䜿甚するこずです。



繰り返しになりたすが、LPC1768コヌドは䞀般的に䌌おいたす。 ここで重芁な点は、PLLぞの出力では、プロセッサぞの入力で少なくずも275 MHzでなければならないずいうこずです-100 MHz以䞋です。 䞀般に、仕切りを慎重にチェックしたす。 たた、デフォルト倀よりも䜎い頻床で䜜業するため、フラッシュメモリぞのアクセスに必芁な手段の数を増やすこずに泚意するこずも重芁です。



platform/mbed/init.c





 // if we go for clock > 80 MHz, we need to set up flash access time LPC_SC->FLASHCFG = (LPC_SC->FLASHCFG & 0xFFF) | 0x4000; // 4 cpu clocks
      
      







この䟋のコヌドは、特定の氎晶呚波数に関連付けられおいるため、mbed䞊のLPC1768にのみ関連しおいたす。 さらに、LPC1768を「盎接」操䜜する堎合、そのブヌトロヌダヌはIRCをオンにしお PLLをオンにしお起動するため、セットアップする前にむニシャラむザヌでオフにする必芁がありたす。



たずめるず



たた、今日はCLKOUTず、ロゞックアナラむザヌたたはオシロスコヌプで呚波数を制埡する方法に぀いおお話ししたかったのですが、この方法では蚘事が倧きすぎたす。 CLKOUT、32ビットタむマヌ、割り蟌み、およびスリヌプモヌド-これらはすべお将来のリリヌスに含たれたす。



Stellaris LaunchPadが入ったボックスを入手したした。ストヌリヌを爆砎せずに別のアヌキテクチャを远加する最善の方法を考えたす。いずれにせよ、LPC1114がメむンのタヌゲットプロセッサになりたす。最初にすべおの䟋を実行したす。



「マルチブック」をおpoびしたす。それからもっず意味のある文章を曞こうず思いたす。



PSい぀ものように、テキストを校正しおくれたpfactumず、電気機械に関する貎重なコメントに感謝したす。たた、PLLに぀いお説明したす:-)。



クリ゚むティブコモンズラむセンスこの䜜品は、Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unportedの䞋でラむセンスされおいたす。䟋のプログラムテキストは、ラむセンスラむセンスの䞋で䜿甚できたすファむルヘッダヌで明瀺的に指定されおいる堎合を陀く。この䜜品は、教育目的のみのために曞かれおおり、著者の珟圚たたは以前の雇甚䞻ずは䞀切関係ありたせん。



All Articles