Skip to content

在main.py中定义函数不识别、最新版本固件太大的问题 #356

@AirCity456

Description

@AirCity456

1. 主函数不识别问题

现在我在main.py定义函数时,存在识别不到所定义函数的问题。具体问题代码如下(已经是全部代码,最小化测试):

import PikaStdLib

def blinkTest():
    print("blink tick")


def statTest():
    print("stat tick")


def initTimer():
    print("timer started")

blinkFunc = blinkTest
statFunc = statTest
initTimerFunc = initTimer

错误现象,比如这个,报错信息为blinkTest没定义,其实都已经定义了的,具体运行报错信息如下:

pikascript-core==v1.11.8 (2022/12/03 19:05:57)
PikaStdLib==v1.11.8
===========================================

~~~/ POWERED BY \~~~
~  pikascript.com  ~
~~~~~~~~~~~~~~~~~~~~
NameError: name 'blinkTest' is not defined
 -> REF blinkTest               (#102)

目前做过的尝试:

  1. 修改函数名(无效)。
  2. 直接调用函数,而不用对象把函数装起来(无效)。
  3. 调换函数定义顺序(有时有效)。

Pikascript和pikastdlib版本号都是1.11.8,运行在nano模式。
平台为ch203cbt6(128k flash 32k ram),m3核,主频72m。

补充:在Pikascript和pikastdlib版本号都为1.13.4上也测试了存在此问题。

2. Flash空间大小问题

目前我在平台为ch203cbt6(128k flash 32k ram),m3核,主频72m上对Pikascript和pikastdlib版本号都为1.13.4的源码进行编译,编译配置如下:

  1. 编译器版本为AC6.22.
  2. 不使用微库。
  3. PIKA_NANO_ENABLE=1。
  4. 工程只有串口驱动,main.py中为prinf("Hello world")的简单测试代码。
  5. 编译时为-Oz + LTO + One ELF Section Per Function。
    在这种情况下,如果代码如下:
void App_Init(void)
{
		// PikaObj * pikaMain = pikaScriptInit();
    
    return;
}

此时编译占用的ROM为3.31kB。

如果:

void App_Init(void)
{
		PikaObj * pikaMain = pikaScriptInit();
    
    return;
}

此时ROM占用为95.20kB。

请问这个空间占用是否正常?我看到官方文档有说到nano模式下可以在64k Flash的单片机上运行,要如何配置才能将该工程控制在64k以内?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions