討論區: 開發者論壇 (Thread #27928)

Porting to LPC1434(cortex-m3) (2010-11-18 12:25 by (del#10285) #54254)

NXP LPC1343(cortex-m3)(トランジスタ技術増刊 2010/09)に移植しました

5人の哲学者が食事を終えました
ソース一式を
ftp://x02.mech.osaka-sandai.ac.jp/pub/arm/HOSV4-lpc1343.zip
においておきます
readme.txtを参照してください

ツール
ARM arm-none-eabi-gcc.exe V4.3.3(Code Red/Red Suite/2009_01_C)
HOST gcc(V4.5.0)+MinGW+msys

cortex-m3は以前にもSTM32に実装しましたので、今回は少し工夫をしてみました
HOS-V4では、多重割り込みを処理するため割り込みを集中管理していますが、cortex-m3ではハードウェアで全て処理できます
その結果 hosirq.S を省くことができました
アセンブラはhosctx.Sのみで済すことができます(hossvc.Sは効率化のためASMで作成しています)
割り込み優先度は
  SVC   0(最高)
  USB   1
  SysTick 6
  PendSV  7(最低)
としました

ターミナルIOはCDCに対応しましたので、VirtualCOMを使用できます
9.6K,8N1,フロー制御無としました
テストには app\trg-LPC1343\sample\5philo.bin を書き込みます
ピリオドを連続表示して、入力待ちになっていますので、任意のキーでスタートします

RE: Porting to LPC1434(cortex-m3) (2010-11-19 23:16 by ryuz #54280)

お世話になっております。Ryuzです。

いつもいろんな環境に移植いただきありがとうございます。

私が現状 Advance 版の方に頭が切り替わってしまっており、
なかなかうまく活用させていただけておらず申し訳ありません。

> HOS-V4では、多重割り込みを処理するため割り込みを集中管理していますが、
> cortex-m3ではハードウェアで全て処理できます
> その結果 hosirq.S を省くことができました

これは非常に斬新な事だと思います。

Advance 版も Cortex 系列の対応は、是非行いたいと思ってる
ところですので、その際には是非参考にさせていただきたいと
思います。

今も、Interface付録の SH2A への移植をやってるところなのですが、
こちらも多重割り込み機構はいろいろあるのに、なかなかカーネルの
アーキテクチャと整合が取れずに苦しんでいたりします。

なかなか新しいリリースができておりませんが、今後とも
よろしくお願いいたします。
回覆: #54254

RE: Porting to LPC1434(cortex-m3) (2011-01-13 03:54 by juntmug #55269)

armもTRONも初学者みたいなもんなんですが、LPCXpressoの1768版にも乗せないといけないトラップに嵌められちゃってるみたいなんです。LPCXpressoシリーズだからと言ってM0の1114版よりも、同じCortex M3のこちらを参考にするのが良いんですよね。元のarm対応フォルダがスカスカなのにぶち当たって困っていたので、ほぼそのまま動きそうなソースがあるのは救世主です。ありがとうございます。
回覆: #54254

RE: Porting to LPC1434(cortex-m3) (2011-01-13 05:26 by juntmug #55270)

MacOS Xでクロスコンパイルとちょっとひねた事をしていて、pathの相違などを修正しつつ頑張っているんですが、strfuncのアセンブルで止まってしまっています。

Makefileに書かれている _strlen.S とアセンブラのソースでincludeされている macro.d が見当たりません。これらのファイルはどこにあるんでしょうか???
回覆: #54254

RE: Porting to LPC1434(cortex-m3) (2011-02-18 18:08 by (del#10285) #55851)

>strfuncのアセンブルで止まってしまっています。
>Makefileに書かれている _strlen.S とアセンブラのソースでincludeされている macro.d が見当たりません。これらのファイルはどこにあるんでしょうか???

通常のstrlen()で置き換えてください

asmで作ってみたのですが、効果はありませんでした

macro.dも自作アセンブラ用ですので、無視してください

そんなものが残っていましたか?

回覆: #55270