秋月電子でhttps://akizukidenshi.com/catalog/g/gM-05313/を買ったので、Mac OS X(Maverics)上に開発環境を構築してみた。
STM32F4DISCOVERYはCPUとしてARM Cortex-M4をコアに持ったSTM42F407VGT6をもったワンボードマイコンである。1MB Flash ROMと192KBのRAMを積んで\1,650というのは安い買い物である。
開発環境構築の流れは、MacでSTM32F4-Discoveryの開発環境を構築してChibiOS/RTを動かすのサイトを参考にした。このサイトに従って、arm-none-eabi-gcc, arm-none-eabi-gdb, openocdを順にインストールしていく。
続きを読む →
ubuntu上でMicroSqueakをビルドする
ふと思い立って(現実逃避ともいう)ずっと放っておいたMicroSqueakに手をつけた。
MicroSqueakは、John Maloneyにより作られた、小さなSqueakのVMとイメージを作るためのパッケージである。以下のサイトで公開されている。
http://web.media.mit.edu/~jmaloney/microsqueak/
MicroSqueakでは以下のような流れで新しいVMとイメージを作成する。
- 古いVMで開発用のイメージ(MicroSqueakDev.image)を起動する。
- 起動したSqueakで、新しいイメージ(msqueak.image)を生成する。このイメージが新しいVMで使われるイメージとなる。
- 同様にSqueakで、新しいVMのソースファイルを生成する。
- 生成されたソースファイルから新しいVMをビルドする。
- 生成されたイメージを、ビルドしたVMで起動する。
オリジナル版はMac用のソースを吐き出すようになっているが、手元の環境ではビルドできそうになかったのでそのままの状態で放置していた。
そこで、今回はVirtual Box上のubuntu 12.04LTS(32bit版)で動くように、機種依存部を作り(過去のVMソースからパクり)、機種非依存部のコード生成の問題を解決するチェンジファイルを作成した。
20140224a.3.cs
ubuntu上で動くMicroSqueak VMをビルドする手順を以下に示す。
続きを読む →
ビデオ公開:「なんちゃってFlow-based Programming」
すっかり忘れていたのだが、昨年末のSmalltalk勉強会(兼忘年会)で発表したビデオを(遅ればせながら)公開しました。
「なんちゃってFlow-based Programming」 – https://www.youtube.com/watch?v=rs3sZn0Bxc8 – 貧弱なプレゼン資料
いま取り組んでいるPharo上のビジュアルプログラミング環境(Fluo)について簡単に発表しています。Fluoの細かいところは全て省いていますが、何となく雰囲気はつかめるのではないかと思います。
概要はこちらにもまとめてあります。
コメントなど歓迎です。
Pharoでイメージが壊れた場合…
忙しいときほどこういうことが起こる。
Pharoで何気なくSave & Quitした後、そのイメージで起動しようとすると画面表示直後に落ちてしまうという現象。
「なぜ今起こるんだ!」と怒鳴りたくなるあの(この)瞬間。
こういう時の対処方法として正当なのは、changesファイルを読み込んで該当する変更をfile inすることだけど、変更が多かったり微妙だったりするとかなり面倒くさいし、かえってミスを招く場合がある。
ということでその現象に出くわしたので解決法を探ってみた。
続きを読む →
Raspberry piとXBee S2を接続する
Raspberry piとXBee S2(ZigBee)を接続してみた。
準備
設定などのため、XbeeとMacを接続するのにスイッチサイエンスのhttps://www.switch-science.com/catalog/1031/を使ったので、FTDIのドライバをインストールする。既にこの時点でインストール済だったので作業しなかったが、おそらくhttp://www.ftdichip.com/Drivers/VCP.htmでFTDIUSBSerialDriver_v2_2_18.dmgあたりを使えば良いのだろう。(手順は省略)
続きを読む →
Raspberry-PiにおけるGPIO関係ツールのインストール方法
まだ検証の途中なのだけど、このままだと忘れそうなので一旦公開(2014.1.24)
Raspberry-PiのGPIOを操作するためのツールについてまとめた。
Raspberry-Piには基板上に13×2ピンのコネクタがあり、GPIOを利用することができる。

(http://elinux.org/RPi_Low-level_peripheralsより)
GPIOへ直接アクセスする方法以外に、公開されているツールを利用することができる。
ここでは、PWMのためにWiringPiを、サーボ制御のためにServoBlasterを用いる方法について説明する。
続きを読む →
OS X(Mavericks)にMARY-MB用の開発環境を構築する(準備編)
http://www.marutsu.co.jp/shohin_104609/で販売されているMARY-MB基盤のプログラムをMac(Mavericks)で開発するための環境構築についてまとめた。
オリジナルの情報はほとんどhttps://toragi.cqpub.co.jp/tabid/432/Default.aspxから得たが、Mac特有の問題や一部変更された部分がある。
続きを読む →
ARM版AndroidのためのPharoアプリケーションの構築方法
あまり知られていないかもしれないが、Android上でPharo Smalltalkを動かすことができる。実際にPharoで作られたDrGeoというアプリケーションがGoogle Playで配布されているくらいだ。
以下では、Android上で動くPharoアプリケーションをどのように作るかについてまとめる。
情報源としては、https://code.google.com/p/squeakvm-tablet/wiki/JenkinsBuilds#Introductionを参考にした。
なお、上記サイトではCogDroidとPharoDroidの2つのVMが利用できると書かれているが、後者は現時点でダウンロードできないため、前者のCogDroidを用いた作成方法について説明する。また、一般的にARMアーキテクチャのデバイスを用いることが多いと思われるのでARMに絞った話にしてあるのと、私自身はMac上で開発を行っているので、Macでの方法であることを予め断っておく。
続きを読む →
PharoでXMLRPCを使う(2)
以前にPharoでXMLRPCを使う。という記事を書いたが、Pharo 2.0でXMLRPC使おうとすると問題が起こる。
というのもXMLRPCではKom系のWebサーバーを使っているのに対して、Pharo 2.0ではZincがデフォルトだからである。
過去の記事どおりにインストールしようとすると、いろいろなパッケージを入れた後でエラーとなってしまう。
手動でKom系を追加してもいいのだろうが、今後どのような扱いがされるのか不安なので、XMLRPCでZincが使えるようにした。
嘘です。嘘を言いました。ごめんなさい。
実は、既にXMLRPCではZincが使えるようにされているので若干の修正を加えればちゃんと動きます。
ConfigurationOfXMLRPCを書き換えるのが面倒だったので、以下では、手動で構築する手順について述べていきます。
準備
XMLParserとXMLWriterが必要なので、あらかじめパッケージをインストールしておきます。
MetacelloConfigurationBrowser open.
でMetacelloのブラウザを起動し、一覧からXMLParserを選んでInstallボタンを押してインストールします。
ついでにXMLWriterも自動的にインストールされるので、これで準備はOKです。
Client-Coreパッケージのロード
まずは、XMLRPCのClientパッケージをロードする。そのために、Monticelloにレポジトリを追加する。
MCHttpRepository location: 'http://ss3.gemstone.com/ss/XMLRPC' user: '' password: ''
上記のようにHTTPのレポジトリを追加して開くと、XMLRPC関係のパッケージが表示される。
XMLRPC-Client-Coreを選んだら、右側のペインでXMLRPC-Client-Core-SantiagoBragagnolo.30を選んでLoadする。
(おそらく、これ以降のパッケージを選んでも大丈夫だと思うが、EiichiroItoというシグネチャのものは選ばない方がいいと思われるwww。以下同様。)
Client-Testsパッケージのロード
この手のパッケージでテストしないのは地獄を見るだけなので、Testsパッケージも追加する。
先ほどのレポジトリから、XMLRPC-Clients-Testsを選び、右側のペインでXMLRPC-Client-Tests-SantiagoBragagnolo.14を選んでLoadする。
Server-Coreパッケージのロード
レポジトリの左側のペインでXMLRPC-Server-Coreを選び、XMLRPC-Server-Core-SantiagoBragagnolo.19をLoadする。
Server-Testsパッケージのロード
レポジトリの左側のペインでXMLRPC-Server-Coreを選び、XMLRPC-Server-Tests-SantiagoBragagnolo.9をLoadする。
これで一通りのパッケージがロードできた。
しかし、現在のテストコードはKom用なので、これをZinc用に書き換える必要がある。
XMLRPCTestクラスの修正
XMLRPCTestクラスのsetUpメソッドを修正する。このメソッドでは、XMLRPCKomServerEchoTestを使ってテストするように書かれているが、この部分をXMLRPCZNServerEchoTestに書き換える。
XMLRPCStandardEchoクラスの修正
XMLRPCStandardEchoクラスのクラス側メソッドであるecho:を修正する。
echo: aValue ^aValue
元のコードでは、エコーで返されるコレクションのfirstをとるようになっているが、このfirstを削除してaValueそのものを返すようにする。
XMLRPCZNServerEchoTestクラスの修正
XMLRPCZNServerEchoTestクラスのsetUpを修正する。
setUp "self new setUp" "XMLRPCHttpModule stop" XMLRPCServer defaultClass: XMLRPCZNServer. newServer := false. XMLRPCStandardEcho addTests. XMLRPCHttpModule start; setDebugMode. (Delay forMilliseconds: 5) wait. newServer := true
元のコードでは、HttpServiceでサービスの登録有無を確認しているが、特に必要ないと思われるのでその部分をごっそり削除する。
以上でZincへの対応は終わり。テストクラスのうち、XMLRPCKomServerEchoTestとXMLRPCKomServerTestを除けばちゃんとグリーンでテストがとおるようになる。
問題点
実は大きな問題があり、この修正をかけた後でサーバーを起動したまま保存&終了すると、次回Pharoがフリーズするという現象を確認している。
Save & Quitする場合は確実にサーバーを止めないと非常に痛い目にあうので注意すること。
NativeBoostで音をならす(Windows版)
昨日のSmalltalk勉強会で学んだNativeBoostで何をやろうかいろいろ考えてたけど、今朝ふっと思い立ったのは「音を鳴らす」だった。
学園祭のゲームで音がないのが寂しかったけど、PharoSoundの状況は芳しくないしどうにもならないと考えていた。
でも、マルチメディア関数を使えば直接鳴るはずではないか!ということに気づいた。
ということで、適当なクラス(SoundTest1)を作って、以下のようなメソッドを追加した。
playSoundNamed: aString <primitive: #primitiveNativeCall module: #NativeBoostPlugin> ^ self nbCall: #( int PlaySoundA (String aString, 0, 1)) module: 'C:\Windows\System32\winmm.dll'
でもって適当なワークスペースで以下をDo itする。
SoundTest1 new playSoundNamed: 'C:\Windows\Media\chimes.wav'
チャイムが鳴った!
Windows XPでしか試していないけど、超手軽に音を鳴らせることができた。
あと1週間前に気づいていればゲームも華やかになったのだが…
来年の楽しみにしておこう。