История изменений
Исправление Serbis, (текущая версия) :
Идея си очень заманчивая, я довольно много думал о об этом, но у этой концепции есть два очень непростых вопроса.
- Набор инструкций arm на парктике не универсален даже в рамках одной линейки архитектур. Т е если вы возьмете напримерм набор инструкций Cortex-M3 и Cortex-M4 то обнаружите что M3 оперирует урезанным набором инструкций относительно M4. Т е код скомпилиный под М4 скорее всего не будет работать под M3. Я конено не берусь утверждать об этом на 100% так как не было опыта в виде таскания кусокв кода с одного камня на другой без перекомпиляции, но все же скорее всего работать оно не будет и придется каждый раз перекомпилировать код под конкретный мк.
- Второй аспект гораздо серьезнее, это безопасность. Этот по сути сторонний код будет иметь полный доступ ко всему адрессному пространству мк, т е он может сделать по сути что угодно. Для того что бы запретить ему лезть туда куда не надо, придется задействовать MPU, который есть далеко не на всех мк. При этом если его подключить, появляется несколько других проблем. Во первых это то что теперь хип так называемого скрипта должен быть изолирован он хипа ОС и располагаться в заданном пространсте - т е нужно разделение памяти на уровне образа прошивки. Во второных поскольку теперь код не может сходить куда хочет, нужна таблица системных вызовов уровня скрипта, находящаяся за зоной протекции MPU. При этом она явна будет иметь жестко фиксированное положение, так же как и хип. И далее мы выходим на уровнеь компиляции, нужно будет определить эти функции, задать им смещение в памяти мк. В общем задача приобретает настолько сильный оттенок красноглазия, что проще уж тогда все прошивку целиком заменять каждый раз, чем делать в рантайме франкенштейна из разных кусков кода.
Ну а касаемо того что памяти нет, спорный вопрос. Lua работает со всеми своими наворотами требует всего 15кб памяти. Минимальный объем хипа на котором luaшные скрипты будут себя комфортно чуствовать (что бы работали вещи вроде библиотеки string) составляет 100-150кб. Т е 200кб sram по сути гоночный болид для lua.
Исправление Serbis, :
Идея си очень заманчивая, я довольно много думал о об этом, но у этой концепции есть два очень непростых вопроса.
- Набор инструкций arm на парктике не универсален даже в рамках одной линейки архитектур. Т е если вы возьмете напримерм набор инструкций Cortex-M3 и Cortex-M4 то обнаружите что M3 оперирует урезанным набором инструкций относительно M4. Т е код скомпилиный под М4 скорее всего не будет работать под M3. Я конено не берусь утверждать об этом на 100% так как не было опыта в виде таскания кусокв кода с одного камня на другой без перекомпиляции, но все же скорее всего работать оно не будет и придется каждый раз перекомпилировать код под конкретный мк.
- Второй аспект гораздо серьезнее, это безопасность. Этот по сути сторонний код будет иметь полный доступ ко всему адрессному пространству мк, т е он может сделать по сути что угодно. Для того что бы запретить ему лезть туда куда не надо, придется задействовать MPU, который есть далеко не на всех мк. При этом если его подключить, появляется несколько других проблем. Во первых это то что теперь хип так называемого скрипта должен быть изолирован он хипа ОС и располагаться в заданном пространсте - т е нужно разделение памяти на уровне образа прошивки. Во второных поскольку теперь код не может сходить куда хочет, нужна таблица системных вызовов уровня скрипта, находящаяся за зоной протекции MPU. При этом она явна будет иметь жестко фиксированное положение, так же как и хип. И далее мы выходим на уровнеь компиляции, нужно будет определить эти функции, задать им смещение в памяти мк. В общем задача приобретает настолько сильный оттенок красноглазия, что проще уж тогда все прошивку целиком заменять каждый раз, чем делать в ратайме франкенштейн из разных кусков кода.
Ну а касаемо того что памяти нет, спорный вопрос. Lua работает со всеми своими наворотами требует всего 15кб памяти. Минимальный объем хипа на котором luaшные скрипты будут себя комфортно чуствовать (что бы работали вещи вроде библиотеки string) составляет 100-150кб. Т е 200кб sram по сути гоночный болид для lua.
Исходная версия Serbis, :
Идея си очень заманчивая, я довольно много думал о об этом, но у этой концепции есть два очень непростых вопроса.
- Набор инструкций arm на парктике не универсален даже в рамках одной линейки архитектур. Т е если вы возьмете напримерм набор инструкций Cortex-M3 и Cortex-M4 то обнаружите что M3 оперирует урезанным набором инструкций относительно M4. Т е код скомпилиный под М4 скорее всего не будет работать под M3. Я конено не берусь утверждать об этом на 100% так как не было опыта в виде таскания кусокв кода с одного камня на другой без перекомпиляции, но все же скорее всего работать оно не будет и придется каждый раз перекомпилировать код под конкретный мк.
- Второй аспект гораздо серьезнее, это безопасность. Этот по сути сторонний код будет иметь полный доступ ко всему адрессному пространству мк, т е он может сделать по сути что угодно. Для того что бы запретить ему лезть туда куда не надо, придется задействовать MPU, который есть далеко не на всех мк. При этом если его подключить, появляется несколько других проблем. Во первых это то что теперь хип так называемого скрипта должен быть изолирован он хипа ОС и располагаться в заданном пространсте - т е нужно разделение памяти на уровне образа прошивки. Во второных поскольку теперь код не может сходить куда хочет, нужна таблица системных вызовов уровня скрипта, находящаяся за зоной протекции MPU. При этом она явна будет иметь жестко фиксированное положение, так же как и хип. И далее мы выходим на уровнеь компиляции, нужно будет определить эти функции, задать им смещение в памяти мк. В общем задача приоюретает настолько сильный оттенок красноглазия, что проще уж тогда все прошивку целиком заменять каждый раз, чем делать в ратайме франкенштейн из разных кусков кода.
Ну а касаемо того что памяти нет, спорный вопрос. Lua работает со всеми своими наворотами требует всего 15кб памяти. Минимальный объем хипа на котором luaшные скрипты будут себя комфортно чуствовать (что бы работали вещи вроде библиотеки string) составляет 100-150кб. Т е 200кб sram по сути гоночный болид для lua.