ラベル python-on-a-chip の投稿を表示しています。 すべての投稿を表示
ラベル python-on-a-chip の投稿を表示しています。 すべての投稿を表示

2014年6月15日日曜日

Nucleo F401REでpython-on-a-chipを動かす



python-on-a-chipオンラインコンパイラで使っているバーチャルマシンはmbedライブラリで構築されているので
mbedのプラットフォームならターゲットを比較的容易に追加する事が出来ます。

Nucleo F401REの追加例。

バーチャルマシン

p14p/pinname.py でピン名称テーブルの作成。PinName.h
ヒープサイズ、ユーザのバイトコードの開始アドレスの設定。main.cpp
Nucleo F401REはAnalogOutクラスが無かったのでダミークラスとして追加。main_nat.cpp
mbedオンラインでコンパイルしてバーチャルマシンのバイナリーを作成。pymite_F401RE.bin

オンラインコンパイラ

ターゲットのメニューに ST Nucleo F401RE を追加。pymbed_bt_ace.html
ターゲットに f401re を追加。pymbed.py

ソースコード:
https://code.google.com/p/python-on-a-chip/ バーチャルマシン本体
http://mbed.org/users/va009039/code/pymite/ オンラインコンパイラ用のバーチャルマシン
https://bitbucket.org/va009039/pymbed/ オンラインコンパイラ

(2014/6/15)
---

2014年4月12日土曜日

python-on-a-chipオンラインコンパイラのLPC1549対応

1年くらい前に比べてmbedのSerialクラスのbaud,readable,writeableメソッドが
SerialBaseから派生するようになっていたのでネイティブ関数を修正する。

mbed.py
class Serial(object):
def baud(self, n):
def readable(self):
def writeable(self):

本来は、pmImgCreator.py で mbed.py から main_nat.cpp を自動作成するのだが、
Pythonのバイトコードの変更はないので、main_nat.cpp を直接修正する。

main_nat.cpp
nat_28_mbed_baud(pPmFrame_t *ppframe)
nat_29_mbed_readable(pPmFrame_t *ppframe)
nat_30_mbed_writeable(pPmFrame_t *ppframe)

PinNameTable.h に LPC1549 のピンの名前を追加する。
バイナリー検索をしたいので、pinname.py で
mbedリポジトリから PinNames.h を取得して名前は予めソートしておく。

ターゲットによってヒープ領域を設定する。
LPC1549 はRAM容量が比較的多いので 32Kバイト にしておく。

main.cpp
#define HEAP_SIZE 0x8000
uint8_t heap[HEAP_SIZE];

mbedオンラインIDEでビルド pymite_LPC1549.binを作成して、
pymbed のフォルダにコピーしておく。

pymbed にLPC1549のドロップメニュー等を追加する。
pymbed_bt_ace.html
pymbed.py


オンラインコンパイラサイト構築のソースコード:
https://bitbucket.org/va009039/pymbed
オンラインコンパイラ用のpython-on-a-chip:
http://mbed.org/users/va009039/code/pymite/
python-on-a-chip本家ソースコード:
https://code.google.com/p/python-on-a-chip/

(2014/4/12)
---

2013年3月16日土曜日

FRDM-KL25Zでpython-on-a-chipを動かす(2)


python-on-a-chip(pymite)でLEDチカチカ以上にどのくらいのプログラミングが書けるか試してみました。

FRDM-KL25Zに載っている加速度センサMMA8451QをmbedライブラのI2Cクラスで直接呼ぶようにpythonクラスを作ったのだが、ヒープサイズが12Kバイト(0x3000)ではメモリ不足で動かなかった。
14Kバイト(0x3800)に増やしてやっと動きました。これ以上はシステムでもRAMを使っているので増やせないようです。
pymiteがどのようにヒープを使っているのはわかってないです。
ヒープサイズと残量は、
import sys
print sys.heap()
で見ることが出来ます。

http://mbed.org/users/va009039/code/pymite/wiki/FRDM-MMA8451Q

タッチセンサーは直接ポートを操作しているようなので、mbedライブラリでTSISensorクラスを呼ぶようにしました。
この場合は、簡潔にプログラミングが書けます。

http://mbed.org/users/va009039/code/pymite/wiki/FRDM_TSI

(2013/3/15)
---