【1. Pika现在支持多线程吗?】
目前还不支持
【2. 可以动态加载py文件吗】
目前能动态加载单文件,可以参考examples里面的main.py,是支持动态加载的。
【3. 现在这个Python脚本编译后是需要编译进固件吗?是否可以单独写到FLASH或者内存中,用vm来动态调用,是否支持直接更新解析后的字节码?】
Python脚本可以直接编译进固件中,也可以写入到FLASH中,PikaScript读取字符串形式的Python脚本即可运行。Pika将Python脚本解析为字节码的过程可以在MCU上完成,也可以在PC上完成,解析后的字节码同样以字符串形式,即可交给VM执行。
在PC上解析字节码可以使用pikascript/tools/pikaByteCodeGen工具。
【4. PikaScript目前只支持单文件的Python脚本吗?】
是的,Python脚本只支持单文件,C模块已支持多文件。
【5. pikaStdDevice模块是用来干什么的?为什么不能直接调用?】
pikaStdDevice模块是用来统一外设的API的,是一个抽象的模块,不能直接调用。在编写具体的模块时,先从pikaStdDevice中继承,再重写平台实现。
比如stm32和esp32,驱动实现肯定不一样,但是如果他们的驱动模块都从pikaStdDevice中的类里面继承,再重写平台实现,用户再用esp32和stm32时,就感觉是一套api。这是一个跨MCU架构的标准驱动计划。
离线
【6. 有没有想过PikaScrip会用在什么领域】
目前用在小资源的单片机中,一般是cotex-m4以下的内核。
应用领域例如集成在屏幕驱动中,可以使用python脚本驱动屏幕。
或者集成在传感器、电机、智能小车、机器人等教育套件中。
还有通讯模块等小模块中,支持python配置设备。
【7. 会考虑直接在py源码文件中支持json吗】
pikascript目前的语法界定在python的子集,暂时没有超出python语法标准的计划。
【8. 现在PikaScript支持List、字典这种数据类型了吗】
目前还没有,但是会在近期(大概三个月内)提供支持,pikascript的数据结构基础是对象,目前仍在加强对象的功能。list、字典等数据结构后续会基于对象模拟出来。
【9. 如何选择可以运行pikascript的MCU】
如果是arm内核,考虑到拓展模块的资源占用,最低应该配备64k flash和8k ram。
如果是risc-v内核,则需要128k flash和8k ram, 因为risc-v内核的gcc优化以及代码密度等问题,代码体积比arm内核大很多。
【10. python脚本解析为字节码的过程在MCU内部进行,比较影响性能,有办法在PC端直接解析成字节码吗?】
可以的,在PC上解析字节码可以使用pikascript/tools/pikaByteCodeGen工具。
离线
【11. python脚本不能直接解释运行吗?是否还是要预编译吗?】
python脚本可以直接解释运行,也支持交互式运行,需要预编译的是c模块。
【12. micropython 可以直接插USB识别为U盘,把代码拷贝进去就行,不知道PikaScript支不支持】
目前支持的形式是通过串口助手发送main.py文件。发送完就能运行。
【13. 绑定C库的教程有没有?】
文档:编写新的PikaScript模块
https://www.yuque.com/liang-mltek/pikascript/usacrp
离线
【14.想了解一下是否支持在多任务的RTOS上同时在多个task中跑基于pikascript开发的不同功能?如果支持那要怎么做呢?】
pikascipt是可以在不同的线程里面跑各自的解释器的,可以在各个线程,用newRootObj新建各自的根对象,然后用obj_run运行。各个线程的内存空间都是独立的,不会有影响。 通过Python API新建线程是后续支持的功能,目前还没有做好。
离线
【8. 现在PikaScript支持List、字典这种数据类型了吗】
目前还没有,但是会在近期(大概三个月内)提供支持,pikascript的数据结构基础是对象,目前仍在加强对象的功能。list、字典等数据结构后续会基于对象模拟出来。
【回复更新】:列表和字典已经可以使用了,使用时引入PikaStdData模块,可以使用get和set方法访问元素,目前还不支持中括号'[]'索引。
离线
【1. Pika现在支持多线程吗?】
目前还不支持
【回复更新】:目前有两种方式支持多线程:
1. Pika自己跑一个线程,其他任务跑其他的线程(rt-thread软件包的默认模式)。
2. 在多个线程中启动各自独立的Pika引擎。
3. 还未支持使用Python API创建线程。
离线