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)
---
ラベル:
F401RE,
Python,
python-on-a-chip
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)
---
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)
---
ラベル:
LPC1549,
python-on-a-chip
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)
---
ラベル:
Python,
python-on-a-chip
登録:
投稿 (Atom)