Cortex-M0

新版FM音源プログラム (26)

gcc の「インライン・アセンブラ」で書いた ARMv6-M (Cortex-M0) 版の acc_calc_slot() 関数のリストを下に示します。 「中身」は armcc 版と同等です。

新版FM音源プログラム (25)

armcc のエンベデッド・アセンブリ関数で書いた「アキュムレータ機能」付きのスロット計算関数「acc_calc_slot()」の Cortex-M0 版のリストを下に示します。

新版FM音源プログラム (19)

今回からは実行サイクル数の検討に入ります。 まずは、ARMv6-M アーキテクチャの Cortex-M0 である NXP LPC1114、Cypress PSoC4 から始めます。 アセンブリ言語で書いたスロット (オペレータ) 計算プログラムをコンパイルして得られたオブジェクトを逆アセン…

ICSP 接続で PIC32MX のフラッシュに書き込む (10)

LPC1114 / NUC120 共用のソース・パッケージを公開しました。(→ こちら) ファイル名は pic_icsp-20130619.zipです。

ICSP 接続で PIC32MX のフラッシュに書き込む (9)

2 線式 ICSP 接続によるフラッシュ書き込みでは、JTAG のクロック 1 周期分のデータ転送を ICSP クロック 4 周期に対応させて転送しています。 LPC1114FN28/102 による ICSP 書き込みプログラムでは、ARM の IP と思われる SSP モジュールを 4 ビット SPI モ…

LPC1114FN28/102 (23) -- ICSP 接続で PIC32MX のフラッシュに書き込む (8)

icsp1114 のソース・パッケージを公開しました。(→ こちら) それにともない、HEX パッケージは削除しました。 参考にした「pic32prog」が GPLv2 ライセンスなので、CMSIS ライブラリ関連を除き、GPLv2 ライセンスを継承しています。

LPC1114FN28/102 (22) -- ICSP 接続で PIC32MX のフラッシュに書き込む (7)

LPC1114 用のプログラムができました。 Yahoo! ボックス上においてあります。(→ こちら) とりあえず、HEX パッケージのみを公開します。 ソース・パッケージは近日公開の予定です。 (2012/12/30 追記: ソース・パッケージを公開しました。それにともない、HE…

LPC1114FN28/102 (21) -- ICSP 接続で PIC32MX のフラッシュに書き込む (6)

「Psuedo Operation」の「SendCommand()」は JTAG TAP (Test Access Port) のインストラクション・レジスタ (IR) に値を設定するもので、「XferData()」はデータ・レジスタ (DR) に値を設定すると共に、その値が書かれる前の DR の値を読み出す操作です。 両…

LPC1114FN28/102 (20) -- ICSP 接続で PIC32MX のフラッシュに書き込む (5)

JTAG インターフェースには (プローブ側から見れば) TDI と TMS の 2 本の出力があり、TDO の 1 本の入力があります。 TDI と TMS は独立で、ハードウェア的に言えば、それぞれがパラレル・データから「シリアライズ」されてシリアル・データとして出力され…

LPC1114FN28/102 (19) -- ICSP 接続で PIC32MX のフラッシュに書き込む (4)

前回述べた「キー・シーケンス」を発行したあと、ターゲットが正常に ICSP モードに移行したかどうかを簡単に直接的に調べる方法は存在しないようです。 プローブ側から ICSP モードで、まず IDCODE レジスタやステータス・レジスタを読み出して、期待した値…

LPC1114FN28/102 (18) -- ICSP 接続で PIC32MX のフラッシュに書き込む (3)

「110 円のマイコンで 220 円のマイコンに書き込む」シリーズの 3 回目ですが、「書き込む」側と「書き込まれる」側を明確にするために、タイトルを少し変えました。 進展としては、いわゆる「LED チカチカ」プログラム (Microchip 社のコンパイラ XC32 に付…

LPC1114FN28/102 (17) -- ICSP 接続で PIC32MX のフラッシュに書き込む (2)

前回の記事の最後に示した図を下に再掲しますが、これは Microchip 社のドキュメント PIC32MX Flash Programming Specification (DS61145 Revision K, July 2012) の pp.13 「Figure 5-4」を書き直したものです。 JTAG の 1 クロック分と、2-wire 4-phase IC…

LPC1114FN28/102 (16) -- ICSP 接続で PIC32MX のフラッシュに書き込む (1)

LPC1114FN28 を使って、PIC32MX マイコンのフラッシュにプログラムを書き込む実験をしています。 4 線式 JTAG 接続ではなく、2 線式の ICSP 接続 (2-wire 4-phase) を LPC1114 の SPI (4 ビット転送モード) を使って実現しています。 PC とはシリアル接続を…

LPC1114FN28/102 (15) -- リニア PCM プレイヤー (3)

LPC1114 では GPIO (汎用入出力ポート) は AHB に接続されており、ウェイト・ステートなしで動作します。 そのため、ポートに対して出力する場合の Cortex-M0 の STR 命令の実行クロック数は、本来の値の「2」から増えることはありません。 逆に言えば、GPIO…

LPC1114FN28/102 (14) -- リニア PCM プレイヤー (2)

リニア PCM プレイヤーでは、MMC/SD カードから読み出したウェーブ・データを、せいぜい 8 ビット・オフセット・バイナリ形式から 2 の補数 16 ビット・データに変換する程度で、特に複雑な「処理」はせずに DAC に流しこみます。 特に 16 ビット・ステレオ…

LPC1114FN28/102 (13) -- リニア PCM プレイヤー (1)

LPC1114FN28/102 で MMC/SD カード内の (mp3 でない) リニア PCM ファイルを再生するプレイヤーを作っています。 とは言っても、実用的なものを目指してはいないので、持ち運びできる形にするわけではありません。 MMC/SD カードは「ネイティブ・モード」で…

LPC1114FN28/102 (12) -- IRQLATENCY レジスタ (5)

STMicroelectronics 製の Cortex-M3 マイコン STM32F10x シリーズでは、フラッシュからの読み出しに際して挿入する必要のあるウェイト・ステート数 (WS) について、システム・クロック (SYSCLK) との間に次のような関係があります。 0 MHz 24 MHz 48 MHz 「S…

LPC1114FN28/102 (11) -- IRQLATENCY レジスタ (4)

ARM 社発行の文書 Application Note 226Using the Cortex-M0 on theMicrocontroller PrototypingSystem には、「HMALC-AS3」という「Microcontroller Prototyping System」についての説明が記述されています。 その実体は、「CPU FPGA」と「DUT FPGA」と称す…

LPC1114FN28/102 (10) -- IRQLATENCY レジスタ (3)

ユーザ・マニュアルなどの技術文書に明確な記載はないものの、ブローシャなどプレゼンテーション用資料には「割り込みレイテンシ 16 クロック」と記載されいる数値と、LPC1114FN28/102 の実測結果の 22 クロック程度の数値との違いが腑に落ちず、いろいろ「…

LPC1114FN28/102 (9) -- IRQLATENCY レジスタ (2)

SysTick タイマは、24 ビット幅のダウン・カウンタによる簡単なインターバル・タイマで、一定周期で CPU に割り込みをかけるのを目的としています。 コア・ペリフェラルとして ARM 社から供給される IP 内に含まれるので、半導体ベンダ独自の周辺モジュール…

LPC1114FN28/102 (8) -- IRQLATENCY レジスタ (1)

LPC1114FN28/102 で割り込みレイテンシを調べていて、LPC111x / LPC11C1x のユーザ・マニュアル (UM10398) には記載がない「IRQLATENCY」レジスタ (アドレス 0x40048170) が存在し、機能することを確認しました。 「IRQLATENCY」レジスタは、 LPC11Uxx のユ…

LPC1114FN28/102 (7) -- 円周率の計算 (11)

LPC1114FN28/102 で Spigot アルゴリズムを使って円周率Πの値 500 桁を UART 経由でシリアル回線に出力するプログラムを作りました。 プログラムの大きさは、フラッシュに書き込むサイズとして 0x47c = 1148 バイトです。 ターミナル・ソフト (tt.exe) でキ…

LPC1114FN28/102 (6)

外付けディジタル・オーディオ DAC および内蔵タイマを PWM DAC として使って約 440 Hz の正弦波を発生させる前回のプログラムを、LPCXpresso IDE でビルドして動作させることができました。 トラ技 2012 年 10 月号付属の DVD-ROM に収録されている LPCXpre…

LPC1114FN28/102 (5)

LPC1114FN28 の内蔵タイマを利用した PWM DAC および外付けディジタル・オーディオ DAC でオーディオ信号を発生させるプログラムを作りました。 プログラムのソースは記事の最後で示します。 外付けディジタル・オーディオ DAC は、いつもの ROHM BU9480F で…

LPC1114FN28/102 (4)

Windows 用のターミナル・ソフトとしては、「TeraTerm」と、Windows XP までは標準でバンドルされていた「ハイパーターミナル」とが有名ですが、これらはいずれもシリアル回線が接続されると有無を言わせず DTR(Data Terminal Ready) をアサートします。 こ…

LPC1114FN28/102 (3)

「Flash Magic」の設定としては、まず、トランジスタ技術 2012 年 10 月号 pp.83 にあるように「Step1 - Communications」の部分で Select : LPC1114/102 COM Port : COM x Baud Rate : 115200 Interface : None (ISP) Oscillator (MHz) : 12 のように設定し…

LPC1114FN28/102 (2)

シリアル接続で LPC1114FN28/102 のフラッシュに書き込むための「公式」のツールが「Flash Magic」です。 RS232C 制御信号の DTR/RTS を LPC マイコンの ~RESET/~BOOT ピンに接続しておくと、Flash Magic の機能を利用してターゲット・マイコンを自動的にリ…

LPC1114FN28/102 (1)

現在、VCF の実験は一時中断して「トランジスタ技術」誌 2012 年 10 月号付属の LPC1114FN28/102 (NXP 製、Cortex-M0 コア、600 mil 幅 28 pin DIP、最大クロック 50 MHz、フラッシュ ROM 32 KB、SRAM 4 KB) の実験をしています。 フラッシュ・メモリの書き…