- Äɲ䵤줿¹Ô¤Ï¤³¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
- ºï½ü¤µ¤ì¤¿¹Ô¤Ï
¤³¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£
{{category ÅŻҹ©ºî}}
!!!MicroPython ¤ÇÍ·¤Ö(2014/9)
*´û¸¤ÎÁȤ߹þ¤ß Python ¤È°ã¤¤¡¢¥Þ¥¤¥³¥ó¾å¤Ç¥¹¥¯¥ê¥×¥È¤Î¥³¥ó¥Ñ¥¤¥ë¤Þ¤Ç¤ä¤Ã¤Æ¤·¤Þ¤¦¤é¤·¤¤¥¹¥°¥ì¥â¥Î¡£
!!ºòº£ÏÃÂê
http://www.slideshare.net/hktechno/micro-python-python
¥á¥¤¥ó¥µ¥¤¥È¤Ï¤³¤³
http://micropython.org/
¥½¡¼¥¹¤½¤Î¤Û¤«¤Ï¤³¤³
https://github.com/micropython
!!°Â²Á¤Ê Cortex-M4 ɾ²Á´ðÈÄ(STM32F4 Discovery)¤ÇÆ°ºî¤¹¤ë¢ª
https://github.com/micropython/micropython/wiki/Board-STM32F407-Discovery
!!!ɬÍפʴĶ¡Ê@Windows)
+MinGW,msys ¤ò¥¤¥ó¥¹¥È¡¼¥ë (Unix ¼° make ¤Î¤¿¤á¡£Cygwin ¤ä¾¤Î¸ß´¹ make ¤Ç¤â¤è¤¤¤È»×¤ï¤ì¤ë¡Ë
+CPython ¤ò¥¤¥ó¥¹¥È¡¼¥ë¡ÊÀ¸À®¥¹¥¯¥ê¥×¥ÈÍÑ¡Ë
+git ¤ò¥¤¥ó¥¹¥È¡¼¥ë¡Ê¤Ê¤¯¤Æ¤â¥Ó¥ë¥É¤Ç¤¤ë¤¬¡¢¥Ð¡¼¥¸¥ç¥óÀ¸À®¤Ë»È¤Ã¤Æ¤¤¤ë¡Ë
+arm ¥Ä¡¼¥ë¥Á¥§¥¤¥ó¤ò ¥¤¥ó¥¹¥È¡¼¥ë
¿ä¾©¥Ä¡¼¥ë¥Á¥§¥¤¥ó¤Ï¤³¤³
https://launchpad.net/gcc-arm-embedded
!!!STM32F4 Discovery ÍѤ˥ӥë¥É¤¹¤ë¼ê½ç¡Ê@Windows)
+arm ¥Ä¡¼¥ë¥Á¥§¥¤¥ó¤Î bin ¥Õ¥©¥ë¥À¤Ë¤¢¤ë gccvar.bat ¤ò²þÊѤ·¤Æ¡¢CPython(python.exe) ¤È make ¤Ë¥Ñ¥¹¤òÄ̤¹
+²þÊѤ·¤¿gccvar.bat ¤Ç¥·¥§¥ë¤òµ¯Æ°
+micropython-master ¤òŸ³«¤·¤¿¥Õ¥©¥ë¥À¤Î²¼¤Ë¤¢¤ë stmhal ¥Õ¥©¥ë¥À¤Ë°ÜÆ°
+make BOARD=(¥Ü¡¼¥É̾) ¤Ç¥Ó¥ë¥É¤Ç¤¤ë.
make BOARD=STM32F4DISC
¤Ç STM32F4 Discovery ÍÑ¥¤¥á¡¼¥¸¤¬¤Ç¤¤ë
!!!µ¤¤Å¤¤¤¿ÅÀ(2014/9/27 »þÅÀ)
+Windows ¤Ç USB-CDC ¤Î±þÅú¤¬»þÀޤʤ¯¤Ê¤ë¡£Ctrl-D ¤Ï¸ú¤¯¤Î¤Ç¡¢ÊÒÆ»¤Ä¤Þ¤ë¡© Mac OS X ¤Ç¤ÏÌäÂê¤Ê¤¯Æ°ºî¤¹¤ë¡£
¤ª¤½¤é¤¯¤³¤ÎÌäÂê
https://github.com/micropython/micropython/issues/587
!!!¤È¤ê¤¢¤¨¤º TTL-Serial ¤ò¥³¥ó¥½¡¼¥ë¤Ë¤¹¤ë(STM32F4DISC, Ver1.3.3)
MicroPython ¥µ¥ó¥×¥ë½¸
https://github.com/dhylands/upy-examples
¤Ë¤¢¤ë¡¢boot.py ¤ò USB-MSC ¥É¥é¥¤¥Ö¤Ë¾å½ñ¤¥³¥Ô¡¼¤·¤Æ¡¢
def init():
if False:¡¡¡ã¡Ý¡¡¤³¤³¤ò False ¤«¤é True ¤Ë
uart = pyb.UART(6,115200)
pyb.repl_uart(uart)
print("REPL is also on UART 6 (Y1=Tx Y2=Rx)")
¾åµ¤Î²Õ½ê¤ò False ¤«¤é True ¤Ë¤·¤Æ¤ª¤¯¤È¡¢
UART6 ¤¬¥³¥ó¥½¡¼¥ë¤È¤·¤Æ»È¤¨¤Þ¤¹¡£
STM32F4DISC ¤Ç¤Ï¡¢UART6 ¤Ï PC6(TX),PC7(RX) ¤È¤Ê¤Ã¤Æ¤¤¤Æ¡¢
USB ¥³¥Í¥¯¥¿(STM32 ËÜÂΤÎ)¤Î±¦¡¢GND ¤Î¤¹¤°¤½¤Ð¤Ë½Ð¤Æ¤¤¤ë¤Î¤Ç¡¢
¤³¤³¤Ë TTL-Serial ¥É¥ó¥°¥ë¤òÀܳ¤¹¤ë¤È¥³¥ó¥½¡¼¥ë¤È¤·¤Æ»È¤¨¤Þ¤¹¡£
!!!¤È¤ê¤¢¤¨¤º builtin ¥â¥¸¥å¡¼¥ë¤ò¤Ç¤Ã¤Á¤¢¤²¤ë¤Ë¤Ï(ver 1.3.3)
¤Þ¤À¤Þ¤À¥À¥¤¥Ê¥ß¥Ã¥¯¤ËÊѹ¹¤¬¤¢¤ë¤È»×¤¤¤Þ¤¹¤Î¤Ç¥á¥âÄøÅ٤ˡ£
!!£±¡Ë¥â¥¸¥å¡¼¥ë¥Õ¥¡¥¤¥ë¤ò½ñ¤¤¤ÆÊÌ¥Õ¥©¥ë¥À¤Ë¤Þ¤È¤á¤ë
¥â¥¸¥å¡¼¥ë¥Õ¥¡¥¤¥ë¤Î¥µ¥ó¥×¥ë¤Ï¡¢extmod ¤Î¤â¤Î¤¬¤ï¤«¤ê¤ä¤¹¤¤¤È»×¤¤¤Þ¤¹¡£
¤È¤ê¤¢¤¨¤ºÀâÌÀÍѤΥÀ¥ß¡¼¥â¥¸¥å¡¼¥ë {{ref testmod.zip}} ¤ò $(TOP)/testmod ¤ËÃÖ¤¤Þ¤¹¡£
!!£²¡Ë¥Ø¥Ã¥À¤È¥·¥ó¥Ü¥ë¤È¤Î·ë¹ç¤ò½ñ¤¯
¡ã¥×¥é¥Ã¥È¥Õ¥©¡¼¥àÈó°Í¸¥â¥¸¥å¡¼¥ë¤Î¾ì¹ç¡ä
¡úpy/builtin.h ¤Î¤½¤ì¤Ã¤Ý¤¤¾ì½ê¤Ë
// extmod modules
extern const mp_obj_module_t mp_module_test;
¡úpy/builtintables.c ¤Î¤½¤ì¤Ã¤Ý¤¤¾ì½ê¤Ë
// extmod modules
#if MICROPY_PY_TESTMOD
{ MP_OBJ_NEW_QSTR(MP_QSTR_testmod),(mp_obj_t)&mp_module_test },
#endif
¡ã¥×¥é¥Ã¥È¥Õ¥©¡¼¥à°Í¸¤Î¾ì¹ç¡ä
¡ústmhal/mpconfigport.h ¤Î¤½¤ì¤Ã¤Ý¤¤¾ì½ê¤Ë
extern const struct _mp_obj_module_t mp_module_test;
#define MICROPY_PORT_BUILTIN_MODULES \
¡ÊÃæά¡Ë
{ MP_OBJ_NEW_QSTR(MP_QSTR_testmod), (mp_obj_t)&mp_module_test }, \
!!3)Makefile ¤Î½¤Àµ
¤½¤ì¤Ã¤Ý¤¤¾ì½ê¤òõ¤·¤Æ
¡ú¥·¥ó¥Ü¥ë¡¢¥Ï¥Ã¥·¥å(qstr)´ØÏ¢¤ÎÁÞÆþ
# qstr definitions (must come before including py.mk)
QSTR_DEFS = qstrdefsport.h $(BUILD)/pins_qstr.h ../testmod/testqstr.h
¡ú¥â¥¸¥å¡¼¥ë¤Î¥Ó¥ë¥ÉÀßÄê¤òÁÞÆþ
# for test module
MICROPY_PY_TESTMOD = 1¡¡¢«¤³¤ì¤Ï¤¤¤ó¤Á¤¡£
ifeq ($(MICROPY_PY_TESTMOD),1)
TESTMOD_DIR=testmod
INC += -I$(TOP)/testmod
CFLAGS_MOD += -DMICROPY_PY_TESTMOD=1
SRC_MOD += $(addprefix $(TESTMOD_DIR)/,\
modtest.c \
)
endif
!!£´¡Ë»î¤·¤Æ¤ß¤ë
Micro Python inchiki on 2014-10-05; F4DISC with STM32F407
Type "help()" for more information.
>>> import testmod
>>> dir(testmod)
['__name__', 'hello1']
>>> testmod.hello1([1,2,3])
'[1, 2, 3]'
>>>
!!!TI ¤Î CC3000 WLAN ¥â¥¸¥å¡¼¥ë¤ò»È¤Ã¤Æ¤ß¤ë(ver 1.3.3 , 2014/10/12)
¡¦¥Ó¥ë¥É
make V=1 BOARD=STM32F4DISC MICROPY_PY_CC3K=1
¡¦¤³¤ó¤Ê´¶¤¸¤Ç¤¹
>>> import network
>>> dir(network)
['__name__', 'CC3k', 'route']
>>> dir(network.CC3k)
['connect', 'disconnect', 'is_connected', 'ifconfig', 'patch_version', 'patch_program', 'WEP', 'WPA', 'WPA2']
### CC3k(spi, pin_cs, pin_en, pin_irq)
### B13=SCK, B14=MISO, B15=MOSI
>>> a = network.CC3k(pyb.SPI(2), pyb.Pin.cpu.A15, pyb.Pin.cpu.B10, pyb.Pin.cpu.B11)
#¤Ê¤¼¤« E15 ¤Ç¤Ï¥À¥á
#>>> a = network.CC3k(pyb.SPI(2), pyb.Pin.cpu.E15, pyb.Pin.cpu.B10, #pyb.Pin.cpu.B11)
>>> dir(a)
['connect', 'disconnect', 'is_connected', 'ifconfig', 'patch_version', 'patch_program', 'WEP', 'WPA', 'WPA2']
>>> a.patch_version()
(1, 24)
>>> a.is_connected()
False
>>> a.connect('SSID','password')
>>> a.is_connected()
True
>>> a.ifconfig()
IP:192.168.1.16
Mask:255.255.255.0
GW:192.168.1.1
DHCP:192.168.1.1
DNS:192.168.1.1
MAC:ho:ge:ho:ge:fu:ga
SSID: SSID
>>>