Paul Sokolovsky
5e66f2b751
zephyr/main: Configure IPv4 netmask and gateway to allow Internet access.
2017-04-22 19:29:47 +03:00
Paul Sokolovsky
5846770997
zephyr/modmachine: Implement machine.reset().
2017-04-19 13:28:36 +03:00
Paul Sokolovsky
209eaec599
socket_send: Don't send more than MTU allows.
...
As Zephyr currently doesn't handle MTU itself (ZEP-1998), limit amount
of data we send on our side.
Also, if we get unsuccessful result from net_nbuf_append(), calculate
how much data it has added still. This works around ZEP-1984.
2017-04-14 19:46:27 +03:00
Paul Sokolovsky
84e17063c3
zephyr/modusocket: Strip packet header right in the receive callback.
...
Instead of complicating recv() implementation.
2017-04-13 22:19:16 +03:00
Paul Sokolovsky
81d302b8f8
zephyr/modusocket: Call net_nbuf_print_frags() in recv callback if DEBUG > 1.
2017-04-11 15:25:42 +03:00
Paul Sokolovsky
0a88b44248
zephyr/machine_pin: Implement pin protocol for machine.Signal support.
2017-04-08 14:27:36 +03:00
Paul Sokolovsky
e05cb4183a
zephyr/modmachine: Add Signal class.
2017-04-08 00:50:19 +03:00
Paul Sokolovsky
cf70f9a474
zephyr/mpconfigport.h: Fix build if usocket module is disabled.
2017-04-08 00:38:51 +03:00
Paul Sokolovsky
8ef469f7ca
zephyr/modusocket: Implement accept().
2017-04-08 00:33:09 +03:00
Paul Sokolovsky
96166ec165
zephyr/modusocket: socket_bind: Don't set recv callback on STREAM sockets.
...
For stream sockets, next exected operation is listen().
2017-04-08 00:30:17 +03:00
Paul Sokolovsky
f1c0676a70
zephyr/modusocket: Implement listen().
2017-04-07 16:47:10 +03:00
Paul Sokolovsky
1da8404647
modusocket: Handle a case when recv_q is empty when EOF is signaled.
...
In this case, we can mark socket as closed directly.
2017-04-06 10:12:14 +03:00
Paul Sokolovsky
faf333c04f
zephyr/modusocket: Factor out "extended k_fifo API".
...
Internal structure of k_fifo changed between 1.7 and 1.8, so we need
to abstract it away. This adds more functions than currently used, for
future work.
2017-04-05 13:39:16 +03:00
Paul Sokolovsky
a9e6f08adb
zephyr/Makefile: Add "test" target, runs testsuite in QEMU.
2017-04-05 00:46:00 +03:00
Paul Sokolovsky
58168c8e6b
zephyr/zephyr_getchar: Explicitly yield to other threads on char availability.
...
Without this, if there's a large chunk of data coming from hardware (e.g.
clipboard paste, or fed programmatically from the other side of the console),
there's a behavior of initial mass fill-in of the buffer without any
consumption, which starts much later and doesn't catch up with further
filling, leading to buffer overflow.
2017-04-04 17:14:53 +03:00
Paul Sokolovsky
2908c3ca41
zephyr/modusocket: Factor out socket_new() function.
...
It will be reused e.g. for accept() implementation.
2017-04-04 06:28:14 +03:00
Paul Sokolovsky
6e99a8c94e
zephyr/modusocket: Be sure to use MP_OBJ_FROM_PTR.
2017-04-04 06:21:09 +03:00
Paul Sokolovsky
4c392243ae
zephyr/prj_base.conf: Add config for net_buf logging.
...
Disabled by default.
2017-04-03 12:07:56 +03:00
Paul Sokolovsky
ca81c3ab0b
zephyr/modusocket: Implement recv() for TCP sockets.
...
Short read approach is taken - at most, the remaining data in the current
fragment will be returned.
2017-04-02 16:27:09 +03:00
Paul Sokolovsky
3df65e9bae
zephyr/modusocket: Implement recv() for UDP sockets.
...
The foundation of recv() support is per-socket queue of incoming packets,
implemented using Zephyr FIFO object. This patch implements just recv()
for UDP, because TCP recv() requires much more fine-grained control of
network fragments and handling other issues, like EOF condition, etc.
2017-04-01 09:20:17 +03:00
Damien George
4c307bfba1
all: Move BYTES_PER_WORD definition from ports to py/mpconfig.h
...
It can still be overwritten by a port in mpconfigport.h but for almost
all cases one can use the provided default.
2017-04-01 11:39:38 +11:00
Paul Sokolovsky
64d00511e1
zephyr/modusocket: Implement send().
2017-03-31 23:14:39 +03:00
Paul Sokolovsky
88582e33cc
zephyr/modusocket: Implement bind() and connect().
2017-03-31 23:02:41 +03:00
Paul Sokolovsky
6cc1a7a214
zephyr: Integrate modusocket into build.
2017-03-31 00:06:31 +03:00
Paul Sokolovsky
d1015f0e0d
zephyr/modusocket: Initial version of usocket module for Zephyr.
...
So far, socket creation and closure is implemented.
2017-03-31 00:04:31 +03:00
Paul Sokolovsky
344bfbb71c
zephyr: Fix NLR segfault in minimal build.
...
Requires inclusion of zephyr.h to properly detect that we're building for
Zephyr.
2017-03-30 22:17:18 +03:00
Paul Sokolovsky
df48f4645d
zephyr/Makefile: Add workaround (fix?) for broken builds for DTS targets.
2017-03-30 15:16:55 +03:00
Paul Sokolovsky
29dd92c82a
zephyr/Makefile: Rework to use modern, official build integration.
...
Build happens in 3 stages:
1. Zephyr config header and make vars are generated from prj.conf.
2. libmicropython is built using them.
3. Zephyr is built and final link happens.
2017-03-30 00:08:27 +03:00
Paul Sokolovsky
e93c4ca181
zephyr/prj_base.conf: Enable TCP (and UDP explicitly).
2017-03-29 00:46:06 +03:00
Paul Sokolovsky
dbb2aea428
zephyr/prj_base.conf: Disable legacy kernel compatibility.
...
This keeps dependency on mdef, sysgen and other stuff which complicates
build integration.
2017-03-27 17:06:30 +03:00
Paul Sokolovsky
220df8544b
zephyr/zephyr_getchar: Use native k_sem instead of legacy nano_sem.
2017-03-27 00:41:58 +03:00
Paul Sokolovsky
99866a00a0
py/nlrx86: Better check for Zephyr (requires 1.7).
2017-03-26 00:33:23 +03:00
Damien George
180045bce9
zephyr/main: Move lexer constructor to within NLR handler block.
...
And raise an exception when mp_lexer_new_from_file is called.
2017-03-14 11:52:05 +11:00
Paul Sokolovsky
9c9674a325
zephyr/main: Remove unused __fatal_error().
2017-03-14 00:19:35 +03:00
Paul Sokolovsky
f5aac7d33f
zephyr/main: nlr_jump_fail: Fix noreturn warning.
2017-03-13 00:43:36 +03:00
Paul Sokolovsky
40e541063f
zephyr: Move "minimal" configuration building to a separate wrapper script.
...
Minimal config can be now build with:
./make-minimal BOARD=...
This is required because of Makefile.exports magic, which in its turn depends
on PROJ_CONF to be set correctly at the beginning of Makefile parsing at all
times. Instead of adding more and more workarounds for that, it's better to
just move minimal support to a separate wrapper.
Also, remove Zephyr 1.5 era cruft from Makefile, and add support for Zephyr's
"run" target which supercedes older "qemu" target in upstream.
2017-03-12 23:54:12 +03:00
Paul Sokolovsky
736a8a8ac7
zephyr: Make sure that generated prj.conf is updated only on content changes.
...
This is a typical problem with make: we want to trigger rebuilds only
if file actually changed, not if its timestamp changed. In this case,
it's aggravated by the fact that prj.conf depends on the value of
BOARD variable, so we need to do some tricks anyway. We still don't
try to detect if just BOARD changed, just try to generate new
prj.conf.tmp every time (quick), but do actual replacement of prj.conf
only if its content changed.
2017-03-12 22:28:45 +03:00
Paul Sokolovsky
e8d4527996
zephyr/modzephyr: Fix typo in identifier.
2017-03-09 10:18:21 +01:00
Paul Sokolovsky
a64a0276b3
zephyr/modzephyr: Add a module for Zephyr-specific things.
...
Mostly intended to ease experimentation, no particular plans for APIs
so far (far less their stability), is_preempt_thread() provided is
mostly an example.
2017-03-08 08:55:50 +01:00
Paul Sokolovsky
3d739eb398
zephyr/README: Network startup issues with frdm_k64f resolved.
...
But leave a generic warning that users should be aware of Zephyr's
limitations/issues for a board they use.
2017-02-17 22:08:42 +03:00
Paul Sokolovsky
453f98914e
zephyr/main: Don't unconditionally dump stats on each GC.
...
This was a debug output for initial porting, breaks tests.
2017-02-14 23:31:47 +03:00
Paul Sokolovsky
ce2703599f
zephyr: Add qemu_cortex_m3 config fragment.
...
Should work for QEMU networking with soon-to-merged upstream patch.
2017-02-14 17:01:26 +03:00
Paul Sokolovsky
64916436b2
zephyr: Enable IPv6 networking in addition to IPv4.
2017-02-14 16:23:54 +03:00
Paul Sokolovsky
00bd145398
zephyr/README: Describe many gotchas of networked builds.
2017-02-01 21:28:11 +03:00
Paul Sokolovsky
d335904666
zephyr/Makefile.zephyr: Support and default to networked (SLIP) QEMU.
...
Also works for non-networked builds (like minimal).
2017-01-30 21:27:29 +03:00
Paul Sokolovsky
300ecac336
zephyr/prj_frdm_k64f.conf: Add, enable Ethernet support.
2017-01-27 23:48:42 +03:00
Paul Sokolovsky
1df1642b70
zephyr: Allow to have per-board Zephyr config fragments.
...
To enable options which may be incompatible with other boards, etc.
2017-01-27 23:42:11 +03:00
Paul Sokolovsky
40e72e4a5c
zephyr: Make sure that correct Zephyr config is used for "minimal" build.
...
Overriding CONF_FILE in "minimal" target itself is too late due to include-
pinned $(Z_EXPORTS) target.
2017-01-27 21:43:13 +03:00
Damien George
77e0cee49e
zephyr: Convert to use builtin help function.
2017-01-22 11:56:16 +11:00
Paul Sokolovsky
5298472fee
zephyr: Enable SLIP networking for the default build.
...
This makes MicroPython app running in QEMU be pingable from the host (by
following QEMU networking setup instructions,
https://www.zephyrproject.org/doc/samples/net/qemu_setup.html ).
2017-01-21 17:16:35 +03:00