ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
11 июня
1591001 Топик полностью
Связанные сообщения
LuaCh32Ch32VStm32
для меня таки настала новая эра - мульти ядерных микроконтроллеров. с алика приехала muse lab nanoCH32H417. посчупал за вымя.. д...2026-06-08
KGP свежак riscv32 . небеса упали на землю, собрал для масдая... не идет гора к Магомету. акцент на оптимизацию под популярные м...2026-04-22
SysTick есть у всех. Cortex-M он 24-бит, в CH32V - или 32-бит или 64-бит. 24 бит тоже достаточно. А вот 64 бит - наверно не очен...2026-04-17
подпилил openocd для большей поддержки ядра процессора QingKeV4F что стоит в сh32v3xx, показывает только те регистры CSR которые...2025-12-25
Как бы добыть у ST I-CUBE-LRWAN Expansion Package? Не нравится ST страна, через которую я выхожу в интернет, а если организовать...2025-11-29
Китайцы пояснили насчёт остановки таймера в отладке. Есть отладочный регистр dcsr и в нём бит 9 отвечает за остановку СисТика.2025-08-20
для CH32V317 ключи: -mcpu=ch32v317 -mcmodel=medlow -mabi=ilp32f -Os. в данном случае ключ -march=rv32imafc не является не...2025-06-18
свежак KGP для riscv:32 gcc16.0.0 bu2.44.50.20250610 хост x86_64 zenv4 avx512 linux. похоже мне наконец то удалась таки сделать ...2025-06-11
Продолжение про ST-Link v2. Заказал на озоне новый, за смешные 272р. Прибыл на странном чипе MH2103C8T6. Поначалу вроде все ок -...2025-06-01
Вопрос по температуре, измеряемой встроенным датчиком у STM32F030. Как ее правильно вычислить?2025-05-30
Про FLASH в CH32V203. Вкратце: похоже, что при частичной записи страницы, автоматически стирается и перезаписывается вся страниц...2025-04-02
Вот моё творчество:2025-03-09
В приличном обществе принят BOM (Byte Order Mark). 0xEF 0xBB 0xBF в начале файла.2025-03-04
Сборник граблей STM32, по наводке с Хабарки.2025-02-23
Замыслил изобразить DAPLink из blue рill. Полез в пакетик с таблЭткеми и обнаружил вот такую платку, приобретенную в смутное вре...2024-06-25
А вот другой вопрос про STM32 и виртуальный COM-порт. Возможно ли "фейкнуть" FTDI FT2232C (двойной serial port over USB) при пом...2024-05-28
[Мелкие встраиваемые скриптовые и компилируемые языки.] Сводный топик. Лучше пройтись поиском - почти все языки не раз у ...2024-02-26
нашел на китайской версии сайта WCH ннфографику про семество riscv ch32 - сделал картинку. теперь легче понять отличия. удобно ч...2023-12-11
[protodb] Protocol Debugger. Отладка и реверс-инжиниринг протоколов.2023-11-12
[LCD Image Converter] - программа для создания С-файлов из картинок и шрифтов.2023-07-23
[The Dot Factory]: An LCD Font and Image Generator2023-07-23
У меня на STM было сделано так: Вот так на самом деле надо так:2023-07-10
Перевод документации на ИАР на русский, спасибо Петру2023-05-25
тут говорят некоторые что не влетит?2023-04-12
проект выходного дня....вроде заработало! свежак KGP для riscv32-kgp-elf с поддержкой CH32Vxxx (QingKeV4, QingKeV4B, QingKeV4C, ...2023-04-10
[LUA на микроконтроллерах, в RTOS среде] Подборка2022-11-11
[Lua RTOS] - сбыча мечт?2022-11-10
Приветствую, коллеги. Планирую поизучать H7 на отладке NUCLEO-H745ZI-Q. Что скажете насчет этой платы?2022-08-07
До 4х АЦП 16 бит, LuatOS - Lua на борту. Получится, скорей всего, маложручий одноразовый логгер2021-11-10
Lua - странно, что до сих пор не упомянут. можно перенести.2020-11-03
Опишу задачи.2020-10-31
Squirrel забыли. Он вроде как вполне конкурирует с Lua.2020-10-29
Нагуглил, дело не совсем в буте, но в буте тоже дыра есть. Про бутлоадер читал, что его можно дрючить командами с компа и я суть...2020-08-06
git репозиторий тулсов и либ ST2020-06-18
Про библиотеку STM32_USB-Host-Device_Lib_V2.2.0. Выступаю в своем амплуа:2017-02-08
Все по разу по этим граблям прохаживались. А вот индусские программисты, писавшие USB-библиотеку STM32F0x2_USB-FS-Device_Lib V1....2015-10-13
В продолжении темы по ссылке. Я продолжаю ох#$вать теперь уже от USB-библиотеки STM32F0x2_USB-FS-Device_Lib V1.0.0. Скажите, ест...2015-02-13
ST - засранцы. Сел поизучать STM32F1xx. Смотрю, значит, ага: USB, Ethernet... Ну, думаю, отлично. Полез читать про слоки, а там ...2015-01-19
STM32_USB-FS-Device_Lib_V4.0.0 - я в ахуе!!!!2014-12-30
Как подступится к STM32F100 после atmega? Глаза разбегаются от кол-ва мануалов.2013-03-03
измерил на STM32F103 утечки GPIO, токи КЗ2012-02-04
Вопрос по точности АЦП у STM32.2011-04-15
klen (Сегодня, 01:36, просмотров: 194)
удалось портануть lua 5.5.x из транка в ch32v307. Родя Иерусалимский был бы гением если стал бы писать свою нетленку НЕ-на-С.... но не гений. 

портируем все внешние зависимости в свои локальные ( аллокатор памяти, файловый io и gettime и прочая мура перехватывается и реализуется ручками, newlib идет в жеппу. )

нахрен под корень выпиливается все что связано с уобищем под названием "printf/sprinf/fprintf/..... " Родя похоже решил в коде все варианты IO говна вставить- b POSIX API и не POSIX, гдето даже Масдайную чудесатость встретил, тогда как можно было бы обойтись по одной функцией на базовый тип и сделать тонкий иниерфейс... поздно. макароны так хорошо перепутались что распутывать себе дороже.


однако ж собралось и с такой то матерью заработало.


экспериет выглядел так.


в main() создаем Lua стейт , пихаем в него строку в которой реализуется фцнкция решения квадратного уравнения, и вызов этой функции с праметрами.


после отработки строки , сворачиваем Lua стейт взад.

на всех стадиях смотрим сотояние кучи которая прикручена к Lua и сотояние основного стека.


void *port_luaL_alloc (void *ud, void *ptr, size_t osize, size_t nsize)
{
  (void)(ud); (void)(osize);
  if (nsize == 0) {
	  o1heap_mmgr::o1heap1.dealloc(ptr);
    return NULL;
  }
  else
    return o1heap_mmgr::o1heap1.realloc(ptr, nsize);
}



// KGP: move to external user-appliction level int main (int argc, char **argv) { #if 0 int status, result; lua_State *L = luaL_newstate(port_luaL_alloc); /* create state */ if (L == NULL) { l_message(argv[0], "cannot create state: not enough memory"); return EXIT_FAILURE; } lua_gc(L, LUA_GCSTOP); /* stop GC while building state */ lua_pushcfunction(L, &pmain2); /* to call 'pmain' in protected mode */ lua_pushinteger(L, argc); /* 1st argument */ lua_pushlightuserdata(L, argv); /* 2nd argument */ status = lua_pcall(L, 2, 1, 0); /* do the call */ result = lua_toboolean(L, -1); /* get result */ report(L, status); lua_close(L); return (result && status == LUA_OK) ? EXIT_SUCCESS : EXIT_FAILURE; #endif int status, result; lua_State *L ; if ( !(L = luaL_newstate(f)) ) { l_message(argv[0], "cannot create state: not enough memory"); return EXIT_FAILURE; } lua_gc(L, LUA_GCSTOP); /* stop GC while building state */ // // lua_pushcfunction(L, &pmain); /* to call 'pmain' in protected mode */ // lua_pushinteger(L, argc); /* 1st argument */ // lua_pushlightuserdata(L, argv); /* 2nd argument */ // // // status = lua_pcall(L, 2, 1, 0); /* do the call */ luai_openlibs(L); /* open standard libraries */ lua_gc(L, LUA_GCRESTART); /* start GC... */ lua_gc(L, LUA_GCGEN); /* ...in generational mode */ char func[] = "local function solveQuadratic(a, b, c) \ local delta = (b^2) - (4 * a * c) \ print(delta) \ \ if delta < 0 then \ return \"No real roots\" \ elseif delta == 0 then \ local root = -b / (2 * a) \ return root \ else \ local sqrt_delta = math.sqrt(delta) \ local root1 = (-b + sqrt_delta) / (2 * a) \ local root2 = (-b - sqrt_delta) / (2 * a) \ return root1, root2 \ end \ end \ print(solveQuadratic(1, -5, 5)) "; if (luaL_dostring(L, func ) != LUA_OK) { const char *err = lua_tostring(L, -1); fputs(err,0); } char task[] = "v=1051.36 print(v/10000)" ; if (luaL_dostring(L, task ) != LUA_OK) { const char *err = lua_tostring(L, -1); fputs(err,0); } result = lua_toboolean(L, -1); /* get result */ report(L, status); lua_close(L); return (result && status == LUA_OK) ? EXIT_SUCCESS : EXIT_FAILURE; }





получили - после разворачивания L - 2к озу из кучи, на момент работы с строкой 18к после окончания Lua честно все вернуло до байта взад в кучу.

общее использования основного стека как видно из скриншота - около 3кБ




как видно Lua при обработке строки решая урвнение 288 раза тыкалась в кучу, максимальный запрос блока был до 1Кб.

как то так...

зачем это нужно - Lua позволяет запустить машину и программировать ее поведение закидывая ее строками.

фактически - пихать в нее программку на lua-коде и динамически программировать. слово такое похабное есть - скриптование.


скорость наверно не будеть фантастичесской ибо это ж интерпретаор строки... но в больших машинах где нужно таоке и очень быстрое - отказываются от питона и преходят на Lua. очень широко используется в компьтерных играх.