2017-03-21 4 views
1

ESP8266에서 일하고 있는데 전체 프로젝트에 Lua를 사용하고 싶지는 않지만 wifi/sd 카드에서받은 루아 코드 조각을 실행하고 싶습니다. 루아 환경을 시작하고 스크립트를 실행하면 결국 저레벨 작업을위한 네이티브 함수가 호출됩니다. 다시 말해서, 나는 Lua를 동적 인 동작을 구현하기위한 단순한 스크립팅 언어로 사용하고자한다. 가능한가? arduino 용 lualib 빌드가 있습니까?ESP8266 - C에서 루아를 실행할 수 있습니까 (전체 NodeMCU 환경 아님)?

미리 감사드립니다.

답변

1

좋아, 나는 두 가지 대답을 모두 내 프로젝트에 코드를 포함시킬 수 있다고했지만, 약간의 변경을해야한다는 것을 알았습니다. , os, io : 나는 here 가능한 프로젝트를 작업 예제를 만들어 변화의 다음 목록은 만들 수 있었다 :

  • 플래그 LUA_32BITSLUA_USE_LONGJMP (C 예외 처리는) 다음 라이브러리는 제외 하였다
  • 수있게되었다 package,
  • 다음과 같은 기능 coroutine는 C의 API에서 제거되었습니다 : luaL_fileresult, luaL_execresult, luaL_loadfile, luaL_loadfilex, luaL_dofile, luaB_loadfile, luaB_dofile
  • 루아 출력 메시지는 직렬 인터페이스로 리디렉션됩니다, tinylua.h, tinylua.cpplauxlib.h이 동작이 도움이

희망을 변경 확인!

0

예를 들어, extlibs/폴더에 Lua를 간단하게 임베드하고 프로그램을 컴파일 할 때 Lua에 링크 할 수 있습니다. 기존의 Lua 바이너리가 있지만 직접 제작하는 것이 쉽고 (멀티 플랫폼이기 때문에) 쉽습니다.

0

ESP8266에는 최대 4MB의 프로그램 저장 공간이 있습니다. 이론적으로 데이터 시트가 지정하는대로 최대 16MB까지 얻을 수 있습니다.

내가 기억 하듯이, Lua의 합병 된 버전 (모든 소스는 하나의 파일에 있음)을 컴파일하는 것은 100kb 미만을 차지합니다.

그래서 Arduino IDE를 사용하는 경우에도 Lua 라이브러리를 컴파일하여 esp8266에서 필요에 따라 사용할 수 있습니다.

Wiki, 시리얼, SD, 포트를 제어 할 수있는 멋진 라이브러리가 필요하지 않습니다 ... C에서 제공하거나 필요에 따라 NodeMCU 코드를 사용해야합니다.

Lua에서 직접 LuaJIT를 시도하고 C 코드에 액세스하여 라이브러리 작성의 필요성을 없앨 수 있습니다. 나는 이것을 당신이 Esp8266에 어떻게 컴파일 할 것인지, 또는 누군가 이것을 전에 시도했는지는 모르지만, 당신은 그것을 "과학적으로"할 수 있으며 그것이 어떻게 밝혀 졌는지 말해 줄 수 있습니다.