最新 RSS

tips@free BLOG

レトロなマイコン、電子工作、PCやフリーソフト関係のTipsと私的備忘録

<前の3件 次の3件>

2012/10/10

[ARM]LPC1114 (ARM Cortex-M0)始めました

トラ技10月号の付録は、ARM Cortex-M0コアのCPUと開発環境が入ったDVDでしたので久しぶりに買ってみました。

CPUはNXP社のLPC1114で、今時珍しくパッケージはDIP28、型番はPLC1114FN28/102のようです、スリムタイプだったらもっとよかったのに、残念。

特徴は以下のとおり

  • 32bit CPUなのに秋月で1個 110円!
  • シリアルワイヤデバッグ対応
  • クロック: 50MHz max、12MHzのRCオッシレータ内蔵(精度1%)、 PLL内蔵
  • メモリ: Flash 32KB ページ(256バイト)単位で、IAPで消去可、RAM 4KB
  • タイマ: 32bit x 2、 16bit x 2(PWM)、 systick、 ウオッチドック
  • 周辺: UART(RS485) x 1、I2C x 1、 SPI x 1、 ADC x 6、 GPIO x 22
  • アクティブ電流 @3.3V 50MHz 5.8mA、 12MHz 1.4mA、 3MHz 600uA
  • Flashメモリプログラミングファームウェア内蔵、シリアルポートから書込み可

詳しくは参考リンクのデータシートやユーザーズマニュアルを参照。

さて、ブレッドボードで簡単にLチカまでやってみたメモです、環境はWindows7/Linux Ubuntu12.04(64bit)。

Windowsでは開発環境はLPCXpresso IDE、プログラムの書き込みはFlashMagic。 まずは動くかどうかTeratermでチェックし、その後FlashMagicで書込みました。

  1. 秋月USB-シリアル変換モジュールで3.3V電源をUSBから供給し、RXDとTXDをクロス接続
  2. CPUのP0_1をGNDに落としリセットする、PCはWin7でTeraTermを使用、ボーレイトは自動判別なんでとりあえず9600bps 8bit1Stop、パリティなし、改行は<CR><LF>
  3. PCから?を送るとSynchronizedが返ってくるので、更にSynchronizedを送るとOKが返ってきてISPセッションが始まる
  4. ISPコマンドはFlashの読み書き(W,R)やイレース(E)、ブランクチェック(I)、指定アドレスからの実行(G)もある。 他にもPartID(J),BootCodeVersion(K),ReadUID(N)とか。 例えば、R 268435456 512 と打ち込むとアドレス0x1000 0000から512バイト読み出す、ただし UU-encodeされてる
  5. LPCXpress IDE を、付属のDVDからトラ技を見ながら入れる。 Eclipseじゃん、、 (汗
  6. 後は付属のDVDからFlashMagicをインストールして書き込む、取りあえずサンプルを入れてsw_led_testのhexファイルを書き込みました(MyARM_sample、フォルダはC:\workspace)

Linuxでは開発環境はLPCXpresso for Linux、書込みはlpc21ispを使用。

  1. LPCXpresso for Linuxからダウンロードして解凍・インストールする。その前に sudo apt-get install ia32-libs-multiarch:i386が必要だった
  2. pc21ispのソースコードをダウンロード。LPC1114FN28は定義が無いのでLPC1114FN28 with Open Source Toolsを参考に追加してコンパイル
  3. Windows側からサンプルソースをコピーするがビルドできないので、CMSISv2p00_LPC11xxはlinux側で追加し、main.dとcr_startup_lpc11.dのパスの\と/を書き換える
  4. 書込みは lpc21isp -wipe -verify filename /dev/ttyUSB0 115200 12000  接続チェックは -detectonly や -termonly

2009/11/11

[linux][h8]vine5.0 64bitで h8 gcc4クロス開発環境構築の構築

H8tiny用のgccクロス開発環境を構築する。 結構大変でいろいろトライしたけど、結果的には以下の組み合わせで、、

binutils,gccについては RingServerのGNUから、 newlibについては RedHatから、適当なバージョンをダウンロードするのが吉かと。

ちなみに、Vine5.0(64bit?)の場合 mpfrパッケージの関係で gcc-4.2.4より新しいのはコンパイルできませんでした(涙。 さらに 3.4.6とか 4.0.3 とかの古いのもダメでした(組み合わせた binutilsと newlibのバージョンが悪かったのかもしれませんが)

また以前はオブジェクトは COFF形式で使用してましたが、最近は ELFしかサポートされなくなってます。 VirtualBoxとかで古い Linux環境作って古い組み合わせで COFFな環境を作った方が楽だったかも、、

※ --prefix= や --with-headers= のパスは環境に合わせます。

ダウンロードしたファイルを解凍

$ tar zxf binutils-2.20.tar.bz2
$ tar zxf gcc-4.2.4.tar.bz2
$ tar zxf newlib-1.17.0.tar.gz

binutils

$ cd binutils-2.20
$ mkdir work
$ cd work
$ ../configure --prefix=/usr/local/h8 --target=h8300-elf --disable-nls
$ make all
$ su
# make install
# exit
$ export PATH=/usr/local/h8/bin:$PATH
$ h8300-elf-as -v
GNU assembler version 2.20 (h8300-elf) using BFD version (GNU Binutils) 2.20
^C  ← [CTRL]+C 入力

gcc

$ cd gcc-4.2.4
$ mkdir work
$ cd work
$ su
# ../configure --target=h8300-elf --prefix=/usr/local/h8 --enable-languages="c" -with-newlib \
--disable-libssp --disable-libgomp --disable-nls \
--disable-shared --disable-threads --enable-multilib \
--disable-__cxa_atexit --enable-target-optspace \
--enable-optimize --disable-win32-registry \
--with-headers=/home/hoge/gcc/newlib-1.17.0/newlib/libc/include
# make
# make install
# exit
$ h8300-elf-gcc -v
Using built-in specs.
Target: h8300-elf
Configured with: ../configure --target=h8300-elf --prefix=/usr/local/h8 --enable-languages=c
-with-newlib --disable-libssp --disable-libgomp --disable-nls --disable-shared --disable-threads
--enable-multilib --disable-__cxa_atexit --enable-target-optspace --enable-optimize
--disable-win32-registry --with-headers=/home/hoge/gcc/newlib-1.17.0/newlib/libc/include
Thread model: single
gcc version 4.2.4

newlib

$ cd newlib-1.17.0
$ mkdir work
$ ../configure --prefix=/usr/local/h8 --target=h8300-elf
$ make all
$ su
# make install
$ exit

アセンブラソースの変更

  • .h8300hn

Makefile の変更

  • CC=h8300-elf-gcc
  • OBJCOPY=h8300-elf-objcopy
  • CFLAGS = -O2 -mh -mn

hoge.x (リンカスクリプト)の該当部分の変更と行追加。

  • OUTPUT_FORMAT("elf32-h8300")
  • OUTPUT_ARCH(h8300hn)
  • SEARCH_DIR("/usr/local/h8/h8300-elf/lib/h8300h/"); /* newlib */
  • SEARCH_DIR("/usr/local/h8/lib/gcc/h8300-elf/4.2.2/h8300h"); /* libgcc */
  • *(.rodata*)

2008/08/01

[linux]vine4.2にsambaとswat、さらにinetを入れる

VineLinux4.2はそのままではwindowsマシンとファイル共有するためのsambaサーバーや、GUI設定ツールのsamba swat(とsawtを呼び出すinet)が入っていない、なのでパッケージをダウンロードしてインストールする(ついでにアップデートされた新しいパッケージに入れ換える)。

http://www.t.ring.gr.jp/archives/linux/Vine/Vine-4.2/updates/RPMS/ などから

  • samba-3.0.23d-1.6vl4.i386.rpm
  • samba-client-3.0.23d-1.6vl4.i386.rpm
  • samba-common-3.0.23d-1.6vl4.i386.rpm
  • samba-doc-3.0.23d-1.6vl4.i386.rpm
  • samba-libsmbclient-3.0.23d-1.6vl4.i386.rpm
  • samba-swat-3.0.23d-1.6vl4.i386.rpm

http://www.t.ring.gr.jp/archives/linux/Vine/VinePlus/4.2/i386/RPMS.plus/ などから

  • inetd-0.17-0vl4.i386.rpm

をダウンロードし、rootになって

# apt-get install samba-3.0.23d-1.6vl4.i386.rpm \
  samba-client-3.0.23d-1.6vl4.i386.rpm \
  samba-common-3.0.23d-1.6vl4.i386.rpm
  samba-doc-3.0.23d-1.6vl4.i386.rpm \
  samba-libsmbclient-3.0.23d-1.6vl4.i386.rpm \
  samba-swat-3.0.23d-1.6vl4.i386.rpm \
  inetd-0.17-0vl4.i386.rpm \

でインストール、次に

/etc/inetd.conf の一番最後の行の頭の # を消去

swat      stream  tcp     nowait.400      root /usr/sbin/tcpd swat

/etc/hosts.allow に以下を追加(localhostだけアクセス許可)

swat: 127.0.0.1

そしてsmbpasswdで既存のユーザーをsambaにも追加して

# /etc/rc.d/init.d/inet start (又はrestart)

ブラウザから http://localhost:901 にアクセスし、samba swat から共有の設定をしてからサービスを開始する。

<前の3件 次の3件>