Coder Social home page Coder Social logo

eerimoq / simba Goto Github PK

View Code? Open in Web Editor NEW
339.0 28.0 66.0 25.36 MB

Simba Embedded Programming Platform.

License: Other

Makefile 2.66% C 83.10% Python 2.02% Shell 0.17% C++ 0.54% Batchfile 0.12% Assembly 7.80% Dockerfile 0.02% SWIG 3.57%
embedded microcontroller

simba's Introduction

Simba

This is the source code repository of the Simba Embedded Programming Platform. See http://simba-os.readthedocs.org for further details.

Simba is written in C.

Don't hesitate to create issues or pull requests if you want to improve Simba!

“We don't make mistakes, we just have happy accidents.” ― Bob Ross

Try it out!

  1. Download the Arduino IDE and install Simba using the Boards Manager.

    https://raw.githubusercontent.com/eerimoq/simba-releases/master/arduino/avr/package_simba_avr_index.json
    https://raw.githubusercontent.com/eerimoq/simba-releases/master/arduino/sam/package_simba_sam_index.json
    https://raw.githubusercontent.com/eerimoq/simba-releases/master/arduino/esp/package_simba_esp_index.json
    https://raw.githubusercontent.com/eerimoq/simba-releases/master/arduino/esp32/package_simba_esp32_index.json
    
  2. Select a Simba board.

  3. Open the blink example.

  4. Upload!

See the Simba installation documentation for detailed step-by-step instructions.

Need help?

  1. Have a look at the Simba documentation. It's actually pretty good. =)
  2. Write an issue here on GitHub.

Contributing

Contributing is very easy, using GitHub for pull requests and code review. Just follow the steps below for a smooth process.

  1. Fork this repository.
  2. Implement the new feature, bug fix or other improvement, usually on the master branch.
  3. Implement test case(s) to ensure that future changes do not break legacy.
  4. Create a pull request and wait for the code to be reviewed, usually done within a day or two.

License

Simba is licensed under the MIT License. See LICENSE for a copy of the licence. Third party source code and libraries that Simba depends on may have other licenses. Most third party code is placed in the 3pp folder.

simba's People

Contributors

alex4o avatar alguryanow avatar dannixon avatar eerimoq avatar gacha avatar ivankravets avatar mrsurly avatar pctj101 avatar pmp-p avatar rafacouto avatar ruslanusmanov avatar shacal avatar simonlbn avatar temoto avatar thomasbarth avatar toomyem avatar wuwx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

simba's Issues

TCP sockets on ESP

Currently only UDP sockets are supported in Simba. This issue will add support for TCP sockets for the ESP.

Http Server do not support POST method

I find those lines in http_server.c file:

/* Save the action and path in the request struct. */
strcpy(request_p->path, path_p);

if (strcmp(action_p, "GET") == 0) {
    request_p->action = http_server_request_action_get_t;
} else {
    return (-1);
}

but, in most cases, POST method is used to submit form, I hope POST method will be implement in simba project.

Cygwin: "make -s console" fails with ImportError: No module named msvcrt

$ make -s console
Traceback (most recent call last):
File "../../simba/simba/make/console.py", line 6, in
import readchar
File "/usr/lib/python2.7/site-packages/readchar/init.py", line 3, in
from .readchar import readchar, readkey
File "/usr/lib/python2.7/site-packages/readchar/readchar.py", line 13, in
from .readchar_windows import readchar
File "/usr/lib/python2.7/site-packages/readchar/readchar_windows.py", line 5, in
import msvcrt
ImportError: No module named msvcrt
../../simba/simba/make/app.mk:137: receptet för målet ”console” misslyckades
make: *** [console] Fel 1

Note that readchar is installed

compile error with cpp code

if i use arduino.cpp code like this:

#include <simba.h>

yes, it's a empty file, only include simba.h, then i use

pio run

i got many error message:

mbp:simba-heater wwx$ pio run
[Sat Sep 10 20:12:52 2016] Processing esp12e (platform: espressif8266, build_unflags: -Wno-implicit-function-declaration, build_flags: -DCONFIG_START_NETWORK=0, board: esp12e, framework: simba)
---------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Collected 0 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/esp12e/src/arduino/arduino.o
cc1plus: warning: command line option '-std=gnu99' is valid for C/ObjC but not for C++ [enabled by default]
In file included from /Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/lwip/ip_addr.h:38:0,
from /Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/lwip/ip.h:39,
from /Users/wwx/.platformio/packages/framework-simba/src/inet/network_interface.h:26,
from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:196,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv4/lwip/ip4_addr.h:213:23: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F,             \
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv4/lwip/ip4_addr.h:213:31: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F,             \
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv4/lwip/ip4_addr.h:213:40: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F,             \
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv4/lwip/ip4_addr.h:213:49: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F,             \
^
In file included from /Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/lwip/ip_addr.h:39:0,
from /Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/lwip/ip.h:39,
from /Users/wwx/.platformio/packages/framework-simba/src/inet/network_interface.h:26,
from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:196,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv6/lwip/ip6_addr.h:263:23: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F, \
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv6/lwip/ip6_addr.h:263:31: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F, \
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv6/lwip/ip6_addr.h:263:40: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F, \
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv6/lwip/ip6_addr.h:263:49: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F, \
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv6/lwip/ip6_addr.h:263:58: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F, \
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv6/lwip/ip6_addr.h:263:67: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F, \
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv6/lwip/ip6_addr.h:263:76: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F, \
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/lwip/ipv6/lwip/ip6_addr.h:263:85: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
LWIP_DEBUGF(debug, ("%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F, \
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:44:0,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/src/oam/settings.h:38:9: error: duplicate 'const'
FAR const char *name_p;
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:56:0,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:66:12: error: using typedef-name 'chan_t' after 'struct'
struct chan_t **chans_pp;
^
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:28:14: note: 'chan_t' has a previous declaration here
typedef void chan_t;
^
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:75:8: error: using typedef-name 'chan_t' after 'struct'
struct chan_t {
^
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:28:14: note: 'chan_t' has a previous declaration here
typedef void chan_t;
^
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:118:22: error: using typedef-name 'chan_t' after 'struct'
int chan_init(struct chan_t *self_p,
^
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:28:14: note: 'chan_t' has a previous declaration here
typedef void chan_t;
^
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:170:31: error: using typedef-name 'chan_t' after 'struct'
int chan_is_polled_isr(struct chan_t *self_p);
^
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:28:14: note: 'chan_t' has a previous declaration here
typedef void chan_t;
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/kernel/sys.h:24:0,
from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:57,
from src/arduino/arduino.cpp:1:
.pioenvs/esp12e/SimbaFramework/src/kernel/ports/esp/gnu/sys_port.h:24:13: error: duplicate 'const'
#define FAR const
^
/Users/wwx/.platformio/packages/framework-simba/src/kernel/sys.h:178:7: note: in expansion of macro 'FAR'
const FAR char *sys_get_info(void);
^
.pioenvs/esp12e/SimbaFramework/src/kernel/ports/esp/gnu/sys_port.h:24:13: error: duplicate 'const'
#define FAR const
^
/Users/wwx/.platformio/packages/framework-simba/src/kernel/sys.h:188:7: note: in expansion of macro 'FAR'
const FAR char *sys_get_config(void);
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:61:0,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/src/sync/queue.h:70:12: error: using typedef-name 'chan_t' after 'struct'
struct chan_t base;
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:56:0,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:28:14: note: 'chan_t' has a previous declaration here
typedef void chan_t;
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:62:0,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/src/sync/event.h:29:12: error: using typedef-name 'chan_t' after 'struct'
struct chan_t base;
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:56:0,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:28:14: note: 'chan_t' has a previous declaration here
typedef void chan_t;
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/kernel/sys.h:24:0,
from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:57,
from src/arduino/arduino.cpp:1:
.pioenvs/esp12e/SimbaFramework/src/kernel/ports/esp/gnu/sys_port.h:24:13: error: duplicate 'const'
#define FAR const
^
/Users/wwx/.platformio/packages/framework-simba/src/filesystems/fs.h:159:11: note: in expansion of macro 'FAR'
const FAR char *path_p;
^
.pioenvs/esp12e/SimbaFramework/src/kernel/ports/esp/gnu/sys_port.h:24:13: error: duplicate 'const'
#define FAR const
^
/Users/wwx/.platformio/packages/framework-simba/src/filesystems/fs.h:433:27: note: in expansion of macro 'FAR'
const FAR char *path_p,
^
.pioenvs/esp12e/SimbaFramework/src/kernel/ports/esp/gnu/sys_port.h:24:13: error: duplicate 'const'
#define FAR const
^
/Users/wwx/.platformio/packages/framework-simba/src/filesystems/fs.h:466:27: note: in expansion of macro 'FAR'
const FAR char *path_p,
^
.pioenvs/esp12e/SimbaFramework/src/kernel/ports/esp/gnu/sys_port.h:24:13: error: duplicate 'const'
#define FAR const
^
/Users/wwx/.platformio/packages/framework-simba/src/filesystems/fs.h:511:29: note: in expansion of macro 'FAR'
const FAR char *path_p,
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:80:0,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:60:38: error: duplicate 'const'
ssize_t std_sprintf(char *dst_p, FAR const char *fmt_p, ...);
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:77:26: error: duplicate 'const'
FAR const char *fmt_p,
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:91:24: error: duplicate 'const'
ssize_t std_printf(FAR const char *fmt_p, ...);
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:104:25: error: duplicate 'const'
ssize_t std_vprintf(FAR const char *fmt_p, va_list *ap_p);
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:118:41: error: duplicate 'const'
ssize_t std_fprintf(chan_t *chan_p, FAR const char *fmt_p, ...);
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:132:42: error: duplicate 'const'
ssize_t std_vfprintf(chan_t *chan_p, FAR const char *fmt_p, va_list *ap_p);
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:152:33: error: duplicate 'const'
int std_strcpy(char *dst_p, FAR const char *src_p);
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:163:39: error: duplicate 'const'
int std_strcmp(const char *str_p, FAR const char *fstr_p);
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:174:22: error: duplicate 'const'
int std_strcmp_f(FAR const char *fstr0_p,
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:175:22: error: duplicate 'const'
FAR const char *fstr1_p);
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:187:21: error: duplicate 'const'
int std_strncmp(FAR const char *fstr_p,
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:201:23: error: duplicate 'const'
int std_strncmp_f(FAR const char *fstr0_p,
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:202:23: error: duplicate 'const'
FAR const char *fstr1_p,
^
/Users/wwx/.platformio/packages/framework-simba/src/text/std.h:214:20: error: duplicate 'const'
int std_strlen(FAR const char *fstr_p);
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/drivers/uart.h:25:0,
from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:157,
from src/arduino/arduino.cpp:1:
.pioenvs/esp12e/SimbaFramework/src/drivers/ports/esp/uart_port.h:38:12: error: using typedef-name 'chan_t' after 'struct'
struct chan_t chout;
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:56:0,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:28:14: note: 'chan_t' has a previous declaration here
typedef void chan_t;
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:191:0,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/src/inet/socket.h:26:12: error: using typedef-name 'chan_t' after 'struct'
struct chan_t base;
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:56:0,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/src/sync/chan.h:28:14: note: 'chan_t' has a previous declaration here
typedef void chan_t;
^
In file included from /Users/wwx/.platformio/packages/framework-simba/src/inet/network_interface/wifi_station_espressif.h:26:0,
from /Users/wwx/.platformio/packages/framework-simba/src/simba.h:201,
from src/arduino/arduino.cpp:1:
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/espressif/esp_sta.h:360:6: error: use of enum 'dhcp_status' without previous declaration
enum dhcp_status wifi_station_dhcpc_status(void);
^
/Users/wwx/.platformio/packages/framework-simba/3pp/ESP8266_RTOS_SDK/include/espressif/esp_sta.h:360:49: error: invalid type in declaration before ';' token
enum dhcp_status wifi_station_dhcpc_status(void);
^
*** [.pioenvs/esp12e/src/arduino/arduino.o] Error 1
====================================================== [ERROR] Took 2.26 seconds ======================================================

Flash driver for ESP

Implement the flash driver for esp to make spiffs work with flash storage. At the same time the flash driver API should be changed to include an erase function and low level read and write functions.

ESP32: SPIFFS

Implement support for a SPI Flash File System on the ESP32.

PlatformIO release

Simba is a new framework in PlatformIO. Support for ESP must be added to the Scons build script used by the PlatformIO. Also, make sure that the rest of the boards builds.

When all boards works, set a tag and release it to PlatgormIO.

Linux board make error after commit >= 156e0aa

>>> app: hello_world, board: linux <<<

CC /home/wuwx/tmp/simba/src/inet/network_interface/slip.c
In file included from /home/wuwx/tmp/simba/3pp/lwip-1.4.1/src/include/lwip/arch.h:43,
                 from /home/wuwx/tmp/simba/3pp/lwip-1.4.1/src/include/lwip/debug.h:35,
                 from /home/wuwx/tmp/simba/3pp/lwip-1.4.1/src/include/lwip/opt.h:46,
                 from /home/wuwx/tmp/simba/3pp/lwip-1.4.1/src/include/lwip/init.h:35,
                 from /home/wuwx/tmp/simba/src/inet/network_interface/slip.c:43:
/home/wuwx/tmp/simba/src/inet/arch/cc.h:39: error: redefinition of typedef 'u8_t'
/home/wuwx/tmp/simba/src/filesystems/spiffs/config.h:252: note: previous declaration of 'u8_t' was here
/home/wuwx/tmp/simba/src/inet/arch/cc.h:40: error: redefinition of typedef 's8_t'
/home/wuwx/tmp/simba/src/filesystems/spiffs/config.h:255: note: previous declaration of 's8_t' was here
/home/wuwx/tmp/simba/src/inet/arch/cc.h:41: error: redefinition of typedef 'u16_t'
/home/wuwx/tmp/simba/src/filesystems/spiffs/config.h:253: note: previous declaration of 'u16_t' was here
/home/wuwx/tmp/simba/src/inet/arch/cc.h:42: error: redefinition of typedef 's16_t'
/home/wuwx/tmp/simba/src/filesystems/spiffs/config.h:256: note: previous declaration of 's16_t' was here
/home/wuwx/tmp/simba/src/inet/arch/cc.h:43: error: redefinition of typedef 'u32_t'
/home/wuwx/tmp/simba/src/filesystems/spiffs/config.h:254: note: previous declaration of 'u32_t' was here
/home/wuwx/tmp/simba/src/inet/arch/cc.h:44: error: redefinition of typedef 's32_t'
/home/wuwx/tmp/simba/src/filesystems/spiffs/config.h:257: note: previous declaration of 's32_t' was here
make[1]: *** [build/linux/obj/home/wuwx/tmp/simba/src/inet/network_interface/slip.o] Error 1
make: *** [all] Error 2

may because this:

156e0aa#diff-647781977468bf0c06fd2944e09e9380

is that rom size limit ?

#include <simba.h>

int main()
{
    const char* html = ""
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"
        "HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld"

    ;
    printf("%s", html);
    sys_start();
    return (0);
}

$ pio run       
[Fri Sep 23 11:52:06 2016] Processing esp12e (platform: espressif8266, board: esp12e, framework: simba)
------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Collected 0 compatible libraries
Looking for dependencies...
Project does not have dependencies
Compiling .pioenvs/esp12e/src/main.o
Linking .pioenvs/esp12e/firmware.elf
/home/wwx/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: address 0x3fffc518 of .pioenvs/esp12e/firmware.elf section `.bss' is not within region `dram0_0_seg'
/home/wwx/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: address 0x3fffc518 of .pioenvs/esp12e/firmware.elf section `.bss' is not within region `dram0_0_seg'
collect2: error: ld returned 1 exit status
*** [.pioenvs/esp12e/firmware.elf] Error 1
==================================================== [ERROR] Took 1.98 seconds ====================================================

Add assertions to catch errors early

Verify that all input arguments in exported functions have valid values and stop the program otherwise.

Print a message with file, line, condition and an optional description when an error occurs.

Micro Python on Simba

Create a port of Micro Python to execute the program below.

import sys
import time

import simba.pin as pin
import simba.board as board


def main():
    """Main function of the Python blink application.

    """

    print("Python version:", sys.version)

    # Initialize the LED pin and set it high.
    led = pin.Pin(board.PIN_LED, pin.OUTPUT)
    led.write(1)

    # Toggle the LED state periodically.
    while True:
        time.sleep(0.5)
        led.toggle()


if __name__ == "__main__":
    main()

TCP socket_connect has no timeout method

in my main.c code, and try to connect to a invalid ip and port

#include "simba.h"

static struct socket_t socket;
static struct inet_addr_t remote_host_address;
static struct inet_addr_t local_host_address;

int main()
{
    sys_start();

    socket_open_tcp(&socket);
    inet_aton("8.8.8.8", &remote_host_address.ip);
    remote_host_address.port = 80;
    inet_aton("0.0.0.0", &local_host_address.ip);
    local_host_address.port = 6000;
    socket_bind(&socket, &local_host_address);
    socket_connect(&socket, &remote_host_address);

    std_printf("can you see it ?\r\n");
}

the code never run to

std_printf("can you see it ?\r\n");

--- Miniterm on /dev/cu.SLAB_USBtoUART  38400,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---

File system mounted.
Connecting to WiFi with SSID 'MyWiFiSSID'.
Waiting for a connection to WiFi with SSID 'MyWiFiSSID'.
Waiting for a connection to WiFi with SSID 'MyWiFiSSID'.
Waiting for a connection to WiFi with SSID 'MyWiFiSSID'.
Connected to WiFi with SSID 'MyWiFiSSID'. Got IP address '192.168.38.149'.

$ 
$ 
$ 
$ 
$ 
$ 
$ 
$ 
$ 

JSON module

Include the JSON parser JSMN in the slib package. It has an MIT License.

Support bigger set of the regex syntax

The regular expression module supports most commonly used regex syntax, but there are a few important parts missing. Those should be implemented.

  • Beginning ('^') and end ('$')of line.
  • Alternatives ('|').
  • Groups ((...)).
  • Multi line to match beginning and end at every newline.

Also, refactor and remove debug prints to reduce the code size and make the code more readable.

spiffs test unpassed on esp12e board

the result like this:
it's broken on test_read_write

================================== TEST BEGIN ==================================

app:    app_name-8.0.0 built 2016-09-15 17:24 CST by wwx.
board:  ESP-12E Development Board
mcu:    Espressif ESP8266 @ 80 MHz, 82 kB dram, 4 MB flash

enter: test_init
exit: test_init: PASSED

enter: test_format
exit: test_format: PASSED

enter: test_read_write
�@*r��P���K�t�dr�-@��.�Ѫ�½�a �@*r��P���K�t�dr�.@��.�Ѫ�½�a /t�$v'

use this test code:
https://github.com/eerimoq/simba/tree/master/tst/filesystems/spiffs

Improve the socket module readability, correctness and functionality.

Improve the socket module readability, correctness and functionality by calling LwIP functions from the LwIP thread and adding poll functionality for recv() and accept().

  1. UDP sockets is a good first candidate to implement the changes for since they are simple.
  2. Continue with TCP sockets.
  3. And last RAW sockets.

Is the new config system working as expected?

Created a config.h file in root folder with the following content:

ifndef CONFIG_H

define CONFIG_H

/* Default system tick frequency. */

ifndef CONFIG_SYSTEM_TICK_FREQUENCY

define CONFIG_SYSTEM_TICK_FREQUENCY 250

endif

endif

When running the frequency is still 100. Maybe I am missing something.

how can i send and recv udp data use one socket

I try to use the UDP protocol for the communication between the client and the server.
The client sends a message to the server periodically, and the server may also send messages to the UDP port, which is monitored by the client.

The client is behand in a NAT server.

So I used two thrd to carry out this operation, a thrd dedicated users to monitor the UDP port data, another thrd dedicated cycle of sending messages.

At the same time, in order to allow the client to send the port and the server to send the port is the same socket, I put this socket is set to the global variable

At the beginning of a simple client to send a message when quite normal, but once the server to respond to a message, immediately went wrong.

I guess it is because socket_send_to and socket_recvfrom will change the thrd_p element of the socket structure.

Do not know how to achieve this kind of demand is better?

//global
struct socket_t udp;

// thrd_1
socket_open_udp(&udp);
socket_bind(&udp, &local_addr);
while(1) {
        socket_recvfrom(&udp, buf, 31, 0, &remote_server_addr);
}

// thrd_2
while(1) {
        socket_sendto(&udp, buf, strlen(buf), 0,  &remote_server_addr);
        thrd_sleep(10);
}

socket_sendto doesn't work for me

#include "simba.h"

static struct network_interface_wifi_station_espressif_t wifi;
static struct shell_t shell;

int main()
{
    sys_start();

    network_interface_module_init();
    socket_module_init();
    ping_module_init();

    network_interface_wifi_station_espressif_module_init();
    network_interface_wifi_station_espressif_init(&wifi, "SSID", "PASSWORD");
    network_interface_add(&wifi.network_interface);
    network_interface_start(&wifi.network_interface);

    shell_init(&shell, sys_get_stdin(), sys_get_stdout(), NULL, NULL, "admin", "admin");
    shell_main(&shell);

    uint8_t buf[16] = "hello";
    struct socket_t udp;
    struct inet_addr_t local_addr, remote_addr;
    socket_open_udp(&udp);
    inet_aton("192.168.38.149", &local_addr.ip);
    local_addr.port = 8888;
    inet_aton("192.168.38.249", &remote_addr.ip);
    remote_addr.port = 8888;
    socket_bind(&udp, &local_addr);
    for(int i = 0; i < 200; i++) {
        socket_sendto(&udp, buf, 16, 0,  &remote_addr);
        thrd_sleep_us(1000000);
    }
    socket_close(&udp);

    return (0);
}

New board: STM32VLDISCOVERY

Port the kernel and the pin and uart drivers to the STM32VLDISCOVERY board.

The port has already been started, but is far from complete.

is necessary with FSTR in esp12e board

I found esp 12e has defined FSTR to a static char
simba library use many FSTR string, it cost about 10k+ mem
if i change FSTR to empty, the board is also work
so i don't understand why use FSTR

can i ask something about simba elf .text section/segment

in arduino, string are save in .data section/segment
and i use pio run can show how many mem i used
but simba i guess some string are saved in .text section/segment
my question is :

  1. how to gen the link script (ld) file
  2. why simba string is saved in .text section/segment

it just a consult

Preemptive scheduler

Implement a preemptive scheduler to meet hard real time requirements.

Currently a cooperative scheduler is implemented, and it works very well in most cases. Hard real time requirements can be implemented in interrupt context or with interrupts disabled.

ESP8266 AP Mode

Would love to see support for AP mode in ESP8266.

We use AP mode as a captive configuration portal a bunch: i.e., if it can't find the right SSID to connect to, it'll just create an AP. Best practice is of course to periodically scan for the SSID again.

Anyway, I may be volunteering to develop this, but I'm swamped for a few weeks.

Add ESP8266 port

Run Simba in an Espressif FreeRTOS task

Create a task in user_init() and call sys_start() in the task to make it the main simba thread. Call the espressif schedule function so it can schedule it's tasks.

Use a binary semaphore to make FreeRTOS schedule the Simba thread from interrupts. This Simba idle thread will continiously wait for this semaphore to be given by an interrupt handler.

Idle thread and interrupt handling

  1. Simba theread x starts a job towards the hardware.
  2. Simba thread x is suspended.
  3. Simba idle thread is scheduled and will wait for the binary semaphore.
  4. The FreeRTOS Simba thread is swapped out.
  5. The hardware job is completed and the interrupt handler resumes Simba thread x and gives the semaphore.
  6. The FreeRTOS Simba thread is scheduled.
  7. Simba idle thread is scheduled.
  8. Simba thread x is scheduled.

ToDo

  • Write a thread context switch function.

ESP32: sockets

Make sockets work on ESP32. ESP-IDF uses newer version of LwIP and potentially other architectural differences to ESP8266.

Use CMSIS?

Would it simlipy ARM porting if CMSIS is used?

webserver with large http data is not work

I setup a http server with esp12e, listener give stack 2048, http_connection give stack 8192.
if http response a large http data, like 5KB html page.
then the client can't open the page normal.

is that because socket_write size bigger then TCP_SND_BUF ?

SPIFFS data lost on esp12e after reset or reboot

Thank you for this great project of simba !

I use test code (locate on 'tst/filesystems/spiffs/' ) to verify this issue.

I change

BTASSERT(spiffs_format(&fs) == 0);

to

if ( spiffs_mount(&fs, &config, workspace, fdworkspace, sizeof(fdworkspace), cache, sizeof(cache), NULL) == SPIFFS_ERR_NOT_A_FS) {
std_printf("Formatting file system\n");
BTASSERT(spiffs_format(&fs) == 0);
}

in `test_format(struct harness_t *harness_p)' function, and I get this result after reset the ESP.

enter: test_format
Formatting file system
exit: test_format: PASSED

Does SPIFFS need to format file system every time on boot under ESP12E?

HTTP server in one thread

The HTTP server currently has one listener thread and on or more client threads. This is memory consuming and it should be considered to only have one thread that both listens for connections and acts on requests. It's unlikely that more than one client will be active at a time in small systems.

ESP32 port

The ESP32 is the successor to the ESP8266. It is a dual core MCU with lots of RAM and ROM. The SDK runs on FreeRTOS and there are an Arduino core and IoT framework already being developed by Espressif and the ESP community.

https://github.com/espressif/esp-idf
https://github.com/espressif/arduino-esp32

Take the same approach as for ESP8266; run Simba in an FreeRTOS thread. It's the only implementation that can be accomplished in a reasonable amount of time.

Adafruit ESP32 development board (out of stock):

https://www.adafruit.com/products/3269

Steps in porting Simba to the ESP32.

  1. Copy Espressif SDK header files and libraries to 3pp/.
  2. Add ESP32 to mcus/ and boards/.
  3. Implement main() and compile, upload and run. Build system changes will be required.
  4. Run Simba in a FreeRTOS thread.
  5. Adapt the WiFi and socket modules. Is hopefully similar to ESP8266.
  6. Port the pin driver.
  7. First step of the port complete!

How to use static ip address on ESP12e?

I use 'network_interface_set_ip_address()' function to setting ip address for WIFI interface, after this action, I can see the ip address use 'inet/network_interface/list' command in shell, but the network is unreachable.

btw, howto config netmask & gateway address?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.