[Microbit-Python] another maximum size of program thread

Jeff Young jeff at perfectmotion.co.uk
Thu Jun 30 12:12:33 EDT 2016


Ok reporting back on modularising....

Moved 4 functions out of the main script into a files called support1.py
Renamed main script to main.py

So in a dos box we have...
30/06/2016  16:54             1,559 support1.py
30/06/2016  16:54             1,898 main.py

Loaded runtime only onto the microbit
Ufs put 2 files.
Ufs ls to check.
Reset.

Traceback (most recent call last):
  File "__main__", line 3, in <module>
MemoryError: memory allocation failed, allocating 1960 bytes
MicroPython v1.7-9-gbe020eb on 2016-04-18; micro:bit with nRF51822
Type "help()" for more information.

Line 3 of main.py is

1: from microbit import *
2: import random
3: from support1 import TakeUpSpace,make,move,update

Am I doing something stupid ?



-----Original Message-----
From: Microbit [mailto:microbit-bounces+jeff=perfectmotion.co.uk at python.org]
On Behalf Of Nicholas H.Tollervey
Sent: 30 June 2016 16:36
To: microbit at python.org
Subject: Re: [Microbit-Python] another maximum size of program thread

Correct. :-)

N.

On 30/06/16 16:30, Jeff Young wrote:
> Just on the subject of modularising the code.  
> Do I break the file up into 2 or 3 .py files one of which I call main.py.
> Setup the imports in main.py etc.
> Flash the microbit with a blank file.
> Then 'ufs put'the 3 files over to the microbit Hit reset and it will 
> load main.py ?
> 
> -----Original Message-----
> From: Microbit 
> [mailto:microbit-bounces+jeff=perfectmotion.co.uk at python.org]
> On Behalf Of Nicholas H.Tollervey
> Sent: 30 June 2016 15:38
> To: microbit at python.org
> Subject: Re: [Microbit-Python] another maximum size of program thread
> 
> I believe there is a max file length due to the constraints of the 
> device (Mark Shannon will be able to confirm this). Perhaps you're hitting
that?
> Why not modularise your code and import it as required in main.py..?
> 
> Just guessing out loud here... YMMV.
> 
> :-)
> 
> N.
> 
> On 30/06/16 15:35, Jeff Young wrote:
>> Good idea.  I gave it a try...
>>
>> Installed microfs on my PC with a 'pip install microfs'
>> Flashed the microbit from the mu editor with a blank file. ( 
>> installed
>> runtime)
>> Uploaded the first test script to the microbit with 'ufs  put main.py'
>> Hit the restart button.
>> It worked perfectly with this basic script ( main.py )
>>
>> from microbit import *
>> while True:
>>     display.scroll('Hello, World!')
>>     display.show(Image.HEART)
>>     sleep(2000)
>>
>> Tried with my problem script getting smaller and smaller...
>>
>> ufs put memory.py
>> MemoryError: memory allocation failed, allocating 3381 bytes
>>
>> ufs put main.py
>> MemoryError: memory allocation failed, allocating 3087 bytes
>>
>> ufs put main.py
>> MemoryError: memory allocation failed, allocating 2756 bytes
>>
>> I even got past the point where the SAME code loads and runs from mu ! 
>> i.e If I take the 2756bytes version above and load it into Mu and 
>> flash it works.
>>
>> Close but no cigar...
>>
>> -----Original Message-----
>> From: Microbit
>> [mailto:microbit-bounces+jeff=perfectmotion.co.uk at python.org]
>> On Behalf Of Nicholas H.Tollervey
>> Sent: 30 June 2016 14:55
>> To: microbit at python.org
>> Subject: Re: [Microbit-Python] another maximum size of program thread
>>
>> Jeff,
>>
>> A quick thought. If it's script length that's the problem, you could 
>> just use the file-system. Viz:
>>
>> https://microbit-micropython.readthedocs.io/en/latest/tutorials/stora
>> g
>> e.html
>> #mainly-main-py
>>
>> Hope this helps,
>>
>> N.
>>
>> On 30/06/16 14:47, Jeff Young wrote:
>>> Hi All
>>>
>>>  
>>>
>>> First time posting here.  Checked the archives and found my exact 
>>> problem outlined in a thread titled 'Maximum Size of Microbit Python 
>>> Program' from Jun '16.
>>>
>>> I've tried a few things and I'm hitting the 'size of script' memory 
>>> problem as outlined in a post from Nicholas Tollervey.  Runtime 
>>> memory is fine.
>>>
>>>  
>>>
>>> The program never starts and I just see;
>>>
>>>  
>>>
>>> MemoryError: memory allocation failed, allocating 3688 bytes
>>>
>>> MicroPython v1.7-9-gbe020eb on 2016-04-18; micro:bit with nRF51822
>>>
>>>  
>>>
>>> The thread doesn't really reach any solutions so I was wondering if 
>>> anyone had found a workround ?  I've tried Mu and online editors.
>>> Same result.  I'm seeing the messages via REPL in Mu
>>>
>>>  
>>>
>>> My program is 127 lines working but add in another 8 lines and it 
>>> breaks.  No comments in the code ;-)
>>>
>>>  
>>>
>>> As an aside I originally wrote it using python classes and objects 
>>> but found I quickly hit the runtime error limit after about 3 or 4
> objects.
>>> Rewrote with simple lists and we're up to 20 objects before hitting 
>>> the runtime limit.  I'm thinking classes/objects consume a lot of
memory.
>>> Also lists-of-lists seem quite memory hungry.
>>>
>>>  
>>>
>>> It would be great to be able to see how much memory is being 
>>> consumed/free during runtime.  Great to be able to see the size of 
>>> objects etc in memory.
>>>
>>>  
>>>
>>> I'm also wondering it there is some way to re-balance the memory 
>>> partitioning between the block of memory that holds the code and the 
>>> runtime memory ? ie take a few kb from the run time partition and 
>>> add it to the code partition ?
>>>
>>>  
>>>
>>> Thanks
>>>
>>>  
>>>
>>> Jeff
>>>
>>>  
>>>
>>>  
>>>
>>>
>>>
>>> _______________________________________________
>>> Microbit mailing list
>>> Microbit at python.org
>>> https://mail.python.org/mailman/listinfo/microbit
>>>
>> are you in a meeting @be
>>
>>
>> _______________________________________________
>> Microbit mailing list
>> Microbit at python.org
>> https://mail.python.org/mailman/listinfo/microbit
>>
> 
> 
> 
> _______________________________________________
> Microbit mailing list
> Microbit at python.org
> https://mail.python.org/mailman/listinfo/microbit
> 





More information about the Microbit mailing list