#circuitpython-dev
1 messages Β· Page 298 of 1
IIRC you have some automation stuff that builds / deploys things.
Yes I do.
(have access to that circup repos)
Ok. Yeah so go to https://github.com/adafruit/circup/releases and click "Draft a new release"
Once you make a release, that's when the automation kicks in.
So, you want me to do a draft release, or just a regular release (I do releases all the time with other projects / gigs)? Just wanna know I'm doing what's right for you folks.
For the release notes, please include what updates have been made, and you can thank Steven there as well.
Do a regular release, bump it to 0.0.8 to keep up with where you're at
All release notes are in CHANGES.rst
Ah ok, fair enough
π
Well include something in the release notes anyway π
Since I have no idea what it does with empty release notes. Probably fine, but we avoid it.
Perfect! Thank you!
Does this get automagically pushed to PyPI as a pip installable package..?
It should, yes.
Yes that as well goes with any updates.
Stonking stuff... Automate all the things... I, for one, welcome our new automated build script overlords. π
@plucky flint
Right... I'm AFK, helping Mary (my wife) to set up for a remote instrumental lesson she's giving.
@plucky flint Alright, have a wonderful day!
@slender iron there's that array primary_display_t , which has a union-of-busses and a union-of-displays. Is it guaranteed that the i'th bus and i'th display are related?
(and if so, where is that guarantee maintained?)
@lone axle If I make a simple change to Adafruit_CircuitPython_Bitmap_Font can you test it? It's removing 3.0.0 backwards compatibility from the main file.
@idle owl yep I should be able to test it. Probably not until a bit later this evening though.
That works. Thanks. I'll tag CPLibians on the PR and you specifically as well.
Okay cool ty.
All stylistic. Massive amount of work, great!
-mcpu implies -mtune:
https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#ARM-Options
-mcpu=name[+extensionβ¦]
This specifies the name of the target ARM processor. GCC uses this name to derive the name of the target ARM architecture (as if specified by -march) and the ARM processor type for which to tune for performance (as if specified by -mtune). Where this option is used in conjunction with -march or -mtune, those options take precedence over the appropriate part of this opt...
Just delete this if it's not used anywhere.
Is this all commented out because it's TODO?
Ok, huh. This part was inspired by Micropython, I wonder why they use both?
I'm actually working on that already today - whoops
Need advice - what is the proper way to proceed on this failure? Should I perform a dummy commit to have the check restarted? I believe the failure was not related to the code push itself, but rather in setting up the environment to run the pre-commit checks given the failure to connect to azure servers to download packages and similar.
Thanks!
-Brian
@slender iron there's that array
primary_display_t, which has a union-of-busses and a union-of-displays. Is it guaranteed that the i'th bus and i'th display are related?
@onyx hinge No, I don't believe so.
is there a way to declare a static array at a specific memory address? I could relocate my H743 filesystem cache to one of the AHB SRAM banks (128 each) but I don't really get how to do it... Micropython seems to fake it and their implementation is pretty complex.
Can I get some help on making a python program display the contents of a txt file?
@timber mango You will probably find more and better help on #help-with-circuitpython . π
@slender iron I can take notes today
thanks @onyx hinge !
If somebody closes an issue or PR, could you please add a comment saying why this was done? Thank you. Without knowing why this was done it is making me feel like I do not want to bother anymore and feels like a slap in the face.
@timber mango I thought my explanation was pretty clear. I don't think offense is an appropriate reaction but that is your choice. We value all contributions.
@pastel panther I had not seen your last comment yet. I still disagree but it does not matter.
@timber mango it matters if you feel like you've received a slap in the face, and if you disagree with our choices I am happy to discuss it at a later time
@ionic elk let's sync up later and we can chat linker scripts
Hey y'll, gonna be lurking today - as usual.
I may be joining late, and if so, I'll be happily lurking π
I have a conflict, and no real notes. Group hug to all!!
Red text?
I'll be lurking today
lurking
Indeed -- stay safe, do what you can to be happy, and help each other if you can, when you can. 
Indeed -- stay safe, do what you can to be happy, and help each other if you can, when you can. 
Hey y'll, gonna be lurking today - as usual.
I'd better get started listing lurkers in the doc
OK figured it out. Red text = try again. Not sure why it happened in first place.
It's discord -- glitches be abound in times of high usage.
I had the same thing happen -- patience...wait a few, try again π
Hello
Hello! I'll be text only today.
lurking today
Hello I am lurking today
Lurking, working on tomorrow's CircuitPython Newsletter
Thank you π had no idea the "Let's Check" button on the settings page unmuted me in the room.
lurking today thanks
That is probably how I've wound up accidentally un-muted a few times lately. π
Notes doc today?
lurking
Tanks π
@slender iron maybe mention to order adafruit stuff from digikey right now (somebody's adding it to the doc right now)
Notes doc is now in the pinned messages each week
lurking occasionally
Fill Phil's shoes
yay f-strings!
stevenabadie did some of the recent work on circup.
@gilded cradle I have a question from JP: with displayio - it's very slow to switch out a line of text from, say "Wave to start" to "Scrub time: 20" the first time it is used. It's super fast the second time, onward. Is there a pre-load of glyphs or something to be done to make it equally fast the first time?
File an issue on the newsletter repo, submit a PR, or even email us.
@idle owl font.load_glyphs(b'ABC123') ?
Send me things via Twitter at @anne_engineer
Steak of CircuitPython
state of the snake
π I'm always happy to do code reviews
@crimson ferry Possibly? Where does the font come from in that?
@simple pulsar lurking or talking today?
@idle owl font = load_font('ondisk.bdf')
@idle owl you can preload the characters ahead of time and it won't seem so slow. JP can look at the Apple Media Service example I collab'd with him on for an example.
@idle owl thanks
I'll get back on task
https://docs.google.com/spreadsheets/d/1FdapBL3wIJf5T_LqwEcglIMMMRelu_9UjnY62IaQBFA/edit?usp=sharing
I'm better at reviewing Python than C. π
Just lurking, with a bit of eating and bit of guide authoring.
@simple pulsar did you want to review my midi library changes? (or did you already?)
@idle owl if using with adafruit_display_text need to be sure to also include M for spacing:
https://github.com/adafruit/Adafruit_CircuitPython_Display_Text/blob/master/adafruit_display_text/label.py#L112
@tidal kiln Not sure how it's being done - so thanks, I'll pass that on in case that's how.
@zinc thistle are you lurking?
Yup...discord newb
@zinc thistle we're happy to have you listen in
@zinc thistle feel free to drop back into the voice chat
@zinc thistle No worries π We all were at some point.
haha...thank you...I'll drop back in for a min...
@slender iron looks ok
@slender iron About FPGA, I have a TinyFPGA BX and an Icebreaker "collecting dust", so I would love to make some use of it. Don't hesitate to share CircuitPython FPGA stuff.
@half sedge nice! I just got an icebreaker. are you on the 1bitsquared discord?
Nope, but I have a very low attention span for the moment. π¦
As a counterpart to "keep it up", remember to share the load, which means to take a break when you need it.
@onyx hinge Exactly. That's the best part about having a team. We can back each other up when needed.
?
Aw dang now I have to get animal crossing
I got it last night and have been liking it
π
Is the process to update the bootloader well documented for a typical user?
Controling the @Pimoroni LED SHIM from @CircuitPython on an @adafruit CLUE. All interconnected via BIT:2:Pi from @4tronix_uk
You can address the 28 RED, GREEN and BLUE LED with brightness control.
Might need more decoration code than this PoC:
https://t.co/07fb99JUCN https:...
@tulip sleet I have been trying to get a BLE oxymeter, but found none in stock with reasonable delivery time. But advise on product with CP potential are welcome.
@half sedge The BM1000C models (maybe BM1000E also?) are what work well. But the US stockers of these are sold out, so the ebay vendors that claim to have them are all in China. EU may be different, but probably also sold out.
I am stable but in a country that only test severe case. So just staying home, waiting and monitoring my health.
The CMS50D-BT is very flaky.
@simple pulsar for updating the bootloader there is usually a uf2 that you can drag over to update it
ShenZhen IO and Oxygen Not Included also come to mind
More good games that are like work but harder and you have to pay for them π
@tulip sleet Probably sold out too or delivered in 6-8 weeks where I hope not to need that anymore!
@ionic elk NinjaFlex is supposed to work well in the e3D Hemera hotend on just about any printer
Currently unavailable due to COVID-19 supply issues. Returning soon. NUUUU
dag nabbit dangit
Aww, ok.
@ionic elk It's definitely not the cheapest option but I have a Lulz Bot Mini and have had good luck using the "FlexyStruder" tool head with it to print ninjaflex.
@ionic elk check with noe and Pedro. They use that filaments
MacBook Pro ESC keys
who are noe and pedro
first photo is some veggie broth
Noe and Pedro do 3D printing for Adafruit. They have a show on it Thursdays
I like the lego castle case
also ask in #help-with-3dprinting
@ionic elk I have a FlashForge Finder that the Ruiz bros (Noe and Pedro) say works well with NinjaFlex (I have not tried it). It does not have a heated bed. I bought it good-as-new from somebody on craiglist who checks and refurbs Amazon returns of FlashForge printers, bought from someone else (!) on craiglist, both are local
Thank you @idle owl for all your work on the weekly videos
CATALINAAAAA
@ionic elk Pretty much. :sigh:
I will update some devices tonight to 5.1.0 rc0
@turbid radish You're welcome. Thanks for your help with uploading it. JP was a huge help.
Great meeting. Keep safe to all.
Thank you. Stay safe!
@turbid radish clocks https://discordapp.com/channels/327254708534116352/327298996332658690/694255638062301185
Perfect thanks jeff
(I don't know if those internal links really work, I've had mixed luck -- try https://youtu.be/5wBRmIr8cD4 too)
Test of CircuitPython modular Clock Builder code. Simultaneous output to REPL, LED display, and displayio-based screen.
Sad that Europe has gone daylight savings, being an hour closer was nice the last couple weeks
do you have a link to the calendar?
For awhile there it was only 5 hours ahead of to New York, so nice π
@lone axle does the flexystruder come with the lulzbot or is it separate?
It is separate (and a few hundred $ iirc)
I'm leaning toward the Lulzbot mini 2 or the FlashForge 3D Printer Creator Pro, but I'm open to other suggestions
the stock extruder has the drive gear a little bit too far away from the hot end. So flexible filament can loop over and start coming out the side instead of getting forced down into the hot end.
The flexy struder changes the design a bit to move the drive gear basically as close as it can get to the hod end so that the fillament cant go anywhere but down and in to the hot end.
I've got a Lulz Bot mini 1 but I've seen the 2 in use and def have eyeballed it a few times. The belt driven axis's make it way quieter and a fair bit faster moving in the Z orientation.
On closer inspection it doesn't appear the mini 2 even has a flexystruder attachmetn
Hmm it says it just prints them out of the box though I guess
Definitely not the cheapest machines (especially now adays). But I really like them for their "Plug and Play" nature. I was printing my first print within 10 minutes of unboxing. And even all these years later with the Lulz Bot mini 95% + of my prints are load it up click print and come back later to a finished part.
@tulip sleet Is BLE_iBBQ ready for the bundle?
sure, thanks, jp hasn't tried it yet, but it works fine for me, and we can always update it as necessary.
@tulip sleet Alright. Thanks.
I've got a few other printers as well, and have experience with several that aren't mine and I find that most of them require lots more tweaking and tinkering in order to get them working properly.
@tulip sleet helper or driver
same as heart_rate, etc. (I forgetwhich)
ok I'll check thanks
Oh nice, I didn't realize the 2 has a tool head that does flexy out of the box. That is cool. Definitely do heed the caution about the PEI build sheet + ninja flex though. Ninja flex sticks EXTREMELY well (too well in fact) to the PEI build plate. You definitely need to either use plain glass, or give it a good smear of PVA glue on top to act as a layer inbetween
@lone axle guess the Lulzbots are out of stock pretty much everywhere though
@tulip sleet I tagged you as a reviewer on the PR. Obvs it needs to go through the checks.
@ionic elk darn, I could see that though, they recently got taken over by a new company in North Dakota I believe. Moving their operations from CO. If you have a Microcenter nearby you might check there, my local one has usually got Lulzbots in stock.
I originally ordered it from Amazon I think. Though it was long ago, not sure if they still sell them or whether the recent takeover would have affected their supply.
oh right. Release.
@tulip sleet It's failing Run actions/checkout@v1 with git checkout --progress --force d310cce85d178b1b4e69005219f1d84788cfeef0 ##[error]fatal: reference is not a tree: d310cce85d178b1b4e69005219f1d84788cfeef0 Removed matchers: 'checkout-git' ##[error]Git checkout failed with exit code: 128 ##[error]Exit code 1 returned from process: file name '/home/runner/runners/2.165.2/bin/Runner.PluginHost', arguments 'action "GitHub.Runner.Plugins.Repository.v1_0.CheckoutTask, Runner.Plugins"'.
This is one I've never run into.
re-running, that might be temporary
I tried. I'll give it a few minutes and try again.
are you up-to-date from upstream?
fetch and merge from adafruit/master
@ionic elk don't order from digikey yet. what imx rt boards do you have handy?
ok, you'll need to make another order then. π get a 1010, 1050, and 1060. once we have an stm32f7 foundation we'll have you swap to imx
It passes on my fork. Sigh. Rerunning again.
@tulip sleet Still failing. I don't understand. It passes on my fork of the bundle.
I'll trash the PR and recreate it. I guess see if that works.
@tulip sleet That worked apparently.
i am baffled
the issue supposedly fixed in checkout@v2, but we had trouble with that in circuitpython. We could try it in other places that put less stress on the github actions system
@onyx hinge If you feel there's a specific thing to complain about for checkout@v2, an issue in https://github.com/actions/checkout would probably be helpful to them
@tulip sleet In the end the failures were just so weird I didn't even understand them. I'll try to characterize it better if I try again someday.
@ionic elk ready when you are
@idle owl when you have a chance can you share your meeting notes template with me. I don't think you have yet
@slender iron Oh. Yeah for sure.
thanks!
I should have asked a long time ago
Here is the notes document for next Mondayβs CircuitPython Weekly meeting. Everyone is encouraged to attend! Please add your hug reports and status updates even if youβll be attending the meeting - itβs super helpful! If you are unable to attend but would still like to include updates, feel free to include them in the notes and weβll read them off during the meeting. Hope to see you there! <@&356864093652516868> https://docs.google.com/document/d/1YZYYrODJwUpKD4PWWzjpPhzBAvf5Mf196r4z7uo6dns/edit?usp=sharing
@slender iron shoot sorry I closed my discord tab without realizing it and missed your pijng
I'm around now
np, works for me. want to video or just audio?
Just audio is ok unless there was something you wanted to pull up
#define PLACE_IN_DTCM_DATA(name) name __attribute__((section(".dtcm_data." #name )))
STATIC uint8_t _flash_cache[0x20000] __attribute__((aligned(4)));
@onyx hinge I am here now.
hello
Peek-a-boo.
So, the question is, whether both ** and power should be implemented.
Or one of them will suffice.
Then you can't factor it out, because it will be a method of ndarray.
array([ 0, 1, 4, 9, 16])
``` _cough_
okay, then make it power(), I was choosing ** not for any particular reason
3, 3 ways to take a power in numpy
** is more elegant, and I see arguments in favour. The question really is, whether it is worth the extra 1.5 kB.
** costs 1.5kB more than power?
arctan2 cost around 1.5 kB, and the structure of the problem is very similar.
or just in general either one costs 1.5kB
No, what I meant is that it would cost around 1.5 kB, and if it is **, then you can't switch it off.
I think either way will be fine in circuitpython. just a matter for documentation.
I need to go afk
I think we're mostly on the same page. @dhalbert has a pending PR to the bootloader to validate the power on start as you suggest: https://github.com/adafruit/uf2-samdx1/pull/111/files#diff-803c5170888b8642f2a97e5e9423d399R181
I don't think we need a configuration setting for this though because everyone should want it. It makes no sense to start when power is unreliable.
The only other bit is to ensure that the brown out doesn't lead to a safe mode on start up. We could do this by wri...
Looks like the timing issues were caused by the code being in flash, moving it to ITCM and making sure no flash functions are called in the timing-critical section fixed the issue :)
Closes #2476
listening to today's meeting: i play a fair bit of Destiny 2 these days. hmu for Steam friending.
I think that adding new defines are worth the savings from the risk forever more. Just have one place such as mpconfigport.h that defines CIRCUITPY_STM32F4 based on STM32F4 and then use the CIRCUITPY_ version everywhere else. That way it's not CFLAGS.
Do the STM32HAL files have these values? I took a different approach for iMX RT because it's SDK didn't have the info (and flash size is board dependent.)
I'd rather not remove the internal flash filesystem for non-Express boards because we then risk not having a block device to show as CIRCUITPY when an SD card is not present. We could do a better job supporting libraries loaded from SD card though.
Am I interpreting your suggestion right? Removing internal flash and requiring an SD card.
I've never run across a script quite like this: https://github.com/adafruit/Adafruit_CircuitPython_Bitmap_Font/blob/master/examples/bitmap_font_simpletest.py
it is accessing sys.argv[1] and other things that make it seem like it's for CPython, and not CircuitPython... Is that the case?
@lone axle I think it is for CPython
Oh, no, no. I do not suggest removing the flash in favor of the SD card. I just want to add the SD card as an alternative to flash for loading scripts and libraries. For instance, I have two Feather M0 RFM69 boards that I would really like to use with Circuitpython, but there is not enough flash left after loading Circuitpython. I would like to be able to add either a wired up SD card breakout or an Adalogger FeatherWing so I could load scripts and libraries from the SD card.
An empty commit is fine. We're having CI issues so the retry I tried to manually do failed anyways. For this, I'll just merge. It looks fine. Thanks!
Thank you
I really like the idea of combining various modules with an MCU on the same Feather, such as the Feather M0 RFM69 and M0 WiFi. I really hope there might be M4 versions of some of these in the works at some point. π
There are radio 'Wings for a lot of the variants.
I could go for a CircuitPython-capable LTE FONA (preferably Feather form factor).
The ESP32 S2 is likely to facilitate a single-board CP MCU+WiFi.
So the internal flash filesystem is too small for you? You should be able to mount an SD card using a breakout already: https://github.com/adafruit/Adafruit_CircuitPython_SD/blob/master/examples/sd_read_simpletest.py
(It does take memory itself though.)
Looks good to me. Thanks!
We'll be able to use SysTick shortly for this too once I swap time keeping to the RTC.
Looks great! Thanks for swapping to the ITCM stuff. I hope it helps with speed.
Oh, we should make sure we build for litex in our CI. I think we'll need to update: https://github.com/adafruit/circuitpython/blob/master/tools/build_board_info.py#L15
and https://github.com/adafruit/circuitpython/blob/master/.github/workflows/build.yml#L123
Close! Let me know if you have issues with this. I want to make sure we minimize the likelihood that we break it.
- Better manage the life time of the connection handle used for the PacketBuffer.
- Fix Connection so it propagates writes onwards.
Yes. On a Feather M0 RFM69, I have 26.1 kb of storage left with Circuitpython 4.x.x loaded. I have not updated those boards to 5.x.x yet because they are really not usable with Circuitpython at this time. I realize the M0 also has a memory limit with just 32 kb RAM too, but the flash is just not enough storage.
I have tried following the suggestions of Radomir, but have not been successful. I end up with a MAKECODE drive instead of the CIRCUITPY drive with current.uf2 with no date. There is a SPIFLASH folder which is empty. When all the lights are green, there is no drive listed in File Explorer. When I single click reset, the led next to the "On" LED is bright red for a few seconds, then switches to green and I then see the MAKECODE drive. Copying the adafruit-circuitpython-circuitplayground_express-en_US-5.0.0.UF2 file to the MAKECODE drive I see the file on the MAKECODE drive. I was expecting the drive to disappear at that point based on the directions, but that does not happen? I am missing some understanding and I am not sure what questions to ask now?
@bitter bronze What happens when you double-click the reset button?
Double clicking reset shows redlight for a few seconds and then the same light is green. Drive listed is MAKECODE.
@bitter bronze If you are running Makecode, just single click to get into the bootloader. Then you should see CPLAYBOOT. Drag the .uf2 to that.
Sorry, didn't realize MAKECODE had different behavior.
it's confusing that it's different
As far as I can tell, MAKECODE is not running. When disconnecting and reconnecting the CPX again, all the lights are green and no drive is seen either MAKECODE or CPX. Clicking reset once brings up the MAKECODE drive.
What Windows version, and did you need to install drivers? https://learn.adafruit.com/adafruit-circuit-playground-express/adafruit2-windows-driver-installation
I am running Windows 10. I was wrong. MAKECODE was running. Stopping MAKECODE, unplugging CPX and plugging CPX in again (all green lights), clicking reset, I again see the MAKECODE drive.
if you single press reset, do all the neopixels go green?
as opposed to double-click
i have a vanilla CPX here, not seeing MAKECODE with a simple MAKECODE program. I wonder if yours has an odd bootloader for some reason. What files do you see in the MAKECODE drive?
i see CPLAYBOOT if I single-click, or if i plug in the board fresh
yes single click, all green, and MAKECODE drive disappears. I am sure that I am doing some thing the wrong order but I can't figure out what. DIsconnect CPX, reconnect CPX, all lights come on green, sigle click reset, shows one bright red light for a few seconds and then it turns to led red (I am color limited, so she said that it is red and not green as I stated earlier. It is next to GND, The smaller led nearer the edge is green.
when you single-click, is there a pulsing led to the right of the usb connector (with usb at top)?
just yes or no is fine
single click results in the D13 light slowly pulsing red (I think).
all other lights are green
ok, good, so that's the bootloader, but you're not seeing CPLAYBOOT for some reason, so let's debug that. Are you running any third-party disk utilities like Acronis backup, Hard Drive Sentinel, or are you using Kaspersky antivirus?
I am running Kaspersky and NovaBACKUP.
Kaspersky can mess up the BOOT drive. https://learn.adafruit.com/welcome-to-circuitpython/troubleshooting#cplayboot-trinketboot-featherboot-or-gemmaboot-drive-not-present-20-5 https://learn.adafruit.com/welcome-to-circuitpython/troubleshooting#windows-explorer-locks-up-when-accessing-boardnameboot-drive-20-12
do you have another machine you could try this on that's not running kaspersky?
also if you have a really old version of our drivers installed on the machine, that could be an issue, as described in the link above
but it would be several years old
OK, I will look at the links. I will try that later on another machine this evening. Need to go now. Thanks again.
sure, good luck!
I think being able to use the SD card to run your code.py off of would be handy even for an M4 if you wanted to change between programs easily.
It is already possible to import code on the sd card. It would be something like this:
import busio
import digitalio
import board
import storage
import sys
import adafruit_sdcard
SD_CS = board.SD_CS # setup for M0 Adalogger; change as needed
# Connect to the card and mount the filesystem.
spi = board.SPI()
cs = digitalio.DigitalInOut(SD_CS)
sdcard = adafruit_sdcard.SDCard(spi, cs)
vfs = storage.VfsFat(sdcard)
storage.mount(vfs, "/sd")
# add /sd to the end of ...
Oh, OK! I was not aware that we could do that. There is no need for this issue then, so I will close it now.
Now, I just need to get a few SD card breakout boards and/or AdaLogger FeatherWings. Not anytime soon though. π¦
In trying to add support for Fomu, I found a script called dfu.py that seems to indicate that it can be used to create standard USB DFU images. However, the output does not appear to be valid.
For comparison with the standard dfu tools:
$ cp firmware.bin firmware-dfu-suffix.dfu
$ dfu-suffix -a firmware-dfu-suffix.dfu -p 70bl -v 1209
$ ../../../tools/dfu.py -b 0:firmware.bin -D 0x1209:0x70b1 firmware-python.dfu
$ ls -l *.dfu
-rwxrwxrwx 1 xobs xobs 307000 Mar 31 10:38 firmw...
Looks good! Does CharacteristicBuffer need some of the same improvements?
I've added it to the CI list, but then I noticed we were generating UF2 files instead of DFU files, which made me remember something.
I've been using the .bin files and manually generating .dfu files from those, because the dfu.py script produces invalid images that don't work with dfu-util. Since this is getting upstreamed, I've opened #2742. I can manually call dfu-suffix, but it seems like it would be better to use the built-in dfu.py.
In looking closer, it looks like dfu.py uses generates nonstandard DFU versions. The bcdDFU field is 01.1a, whereas the standard defines the bcdDFU field should be 01.00, at least according to the most recent spec I can find: https://www.usb.org/sites/default/files/DFU_1.1.pdf
Additionally, there is a lot of extra stuff that gets added.
With this patch I can get dfu.py to generate the same file as dfu-suffix:
diff --git a/tools/dfu.py b/tools/dfu.py
index 54b602...
I added dfu-suffix.py in c91d364a58118100871acd5a195b73c3bbbe5141 that addresses this.
It looks like the build failed because it couldn't connect to Azure:
0 upgraded, 26 newly installed, 0 to remove and 23 not upgraded.
Need to get 188 MB of archives.
After this operation, 1,046 MB of additional disk space will be used.
Err:1 http://azure.archive.ubuntu.com/ubuntu xenial/main amd64 libunistring0 amd64 0.9.3-5.2ubuntu1
Could not connect to azure.archive.ubuntu.com:80 (52.177.174.250), connection timed out
Err:2 http://security.ubuntu.com/ubuntu xenial-security/ma...
None of the existing ports use DFU so how about just replacing the existing dfu.py? We just inherited it from MicroPython.
I'm not sure why the build is flaky. If it does it again and your branch passes, then I'm happy to merge it in.
Looks like it finished the second time.
Except I just got an email with a link to https://github.com/xobs/micropython/runs/547702808 which failed because again it couldn't connect to azure.archive.ubuntu.com:80
@atomic summit nice esp-idf video! I too would love to understand cmake π
I think you want DFU here so that the .dfu files are uploaded to S3 and releases.
One more thing! Thanks for the quick turn. I'm headed to bed now and will look tomorrow.
Cheers @slender iron - CMake seems unnecessarily verbose and totally awkward, and the general docs, including those specific to the IDF are PANTS!
I hope the term PANTS is something you use in the US. If not...
PANTS means "Rubbish" or "Trousers" or "Underpants"
Yes, good catch. I'm not sure if it should be DFU, or BIN_DFU. Fomu certainly prefers DFU, but other litex projects may prefer BIN. I'll add definitions for both, but for now I'll set litex to be dfu.
@atomic summit I've never heard of a system for controlling the software build process that is universally liked. The ones in wide use must each have their strengths, I figure, so I try to be positive about them.
sometimes it hurts that C/C++ don't have a unified "story" for building software like so many newer languages have.
but at this point I don't think it can be fixed for C
these actions failures are really frustrating. Unable to connect to azure.archive.ubuntu.com:http:
PANTS means "Rubbish" or "Trousers" or "Underpants"
@atomic summit I like it! I also like the Aussie terms of "stuffed up" (not working) and "fallen over" (completely SNAFU)." π π You may know me as hybotics on Twitter and elsewhere. π
@onyx hinge The only reason make hangs around is that it has been there forever from the Bell Labs days of UNIX. π
@onyx hinge The only reason make hangs around is that it has been there forever from the Bell Labs days of UNIX. π
@timber mango so have I π
-536 bytes free in flash firmware space out of 253440 bytes (247.5kB).
OK now we get the real errors. Looks like select boards will need Protomatter disabled, but that's not unexpected.
@slender iron if I find I need to selectively enable FramebufferDisplay then it needs to go into its own module, right? Do we want displayio.framebuffer.FramebufferDisplay now that we can properly do submodules?
or just framebufferdisplay as a parallel top level module
I did try out 5.1.0.rc0 on a few devices last night and did not run into any trouble. I have a few more I intend to try but might not get to them until tomorrow. I'm teaching programming fundamentals remotely starting tonight so it will take a good chunk out of my evening.
Fixes #393. This only shows the installation instructions when they are available.
@slender iron Do we want displayio.framebuffer.FramebufferDisplay now that we can properly do submodules?
@onyx hinge I would go with this in order to keep the associations and connections clear. One can always dopython from displayio.framebuffer import FramebufferDisplay
@tulip sleet i was thinking about the safemode issue (I;m having it rn w/ the watch when it runs out of battery (prototype)). i think a good solution might be running a different script when it boots on safemode instead of the normal one. that way the coder could choose to just run the normal script or run some sort of error reporting script or a check to see if anything is broken script.
thoughts?
@timber mango that was more or less my thinking, I'm happy we're on the same wavelength
or just framebufferdisplay as a parallel top level module
@onyx hinge This looks good to me. we can't enforce correct submodule import so best to avoid it
ie, you can use microcontroller.pin by just import microcontroller
true
we just fixed it so import microcontroller.pin works too
maybe someday we'll fix the other part π
Note to self: if git fetch is taking ages, git clone will not be any faster. π
git clone --show=True? π
Ah crap I did forget to call show!
I'll be out for an hour or two. it's grocery shopping day
@slender iron I sent you an email regarding RTD, so you're aware. No rush on it, my priorities are elsewhere at the moment.
May the odds be in your favor!
we just did our grocery shopping too. our local grocery has stuff pretty much in stock so that's nice
I have a question, is it really necessary to have a neopixel LED on custom designed CP boards ?
@obsidian compass It's not necessary, no. It is handy to have a status LED though.
Some of our boards use DotStars if that's any help.
But it's not required to have a status LED to be considered a CircuitPython compatible board.
Yes i have thought about that but can't find that via any local distributor here in India
Understandable.
Thanks @idle owl π
yes it's a "dumb" RGB LED
So I am guessing we need to change the type of LEDs while compiling the bootloader for the custom board and we will be good to go?
though there are some problems with the status LED on the particle boards, https://github.com/adafruit/circuitpython/issues/2707
@marble hornet Thanks! A safemode.py is an interesting and simple solution. I'm going to get an issue discussion going more after I finish some bootloader stuff.
I set my two Feather M0 RFM69 boards up with Circuitpython 5.0.0 and a few libraries I need. There is no 'time' library though, which I need for timing functions.
@timber mango should be built in https://circuitpython.readthedocs.io/en/5.0.x/shared-bindings/time/__init__.html
I posted in #help-with-radio that time is present on mine
thanks @solar whale for confirming and moving to the right place π
@tulip sleet I tried it on a different machine and I was able to get it working. Thanks.
@bitter bronze great!
@tulip sleet are there any plans to work with Kaspersky or look into a work around for this problem. I have sent a message to Kaspersky letting them know about this problem and suggesting how they could support your work. I requested that they look into the issue and possibly provide a work around or code in their software.
I filed a ticket with them or something like that a long time ago. Some other utility software mfrs were more responsive, e.g. AIDA64.
i would make sure it's Kaspersky by disabling or temporarily uninstalling. It could also be something else like the backup program.
the previous issues we had with Kaspersky were a hang, not just the drive being invisible
Thanks. I will try turning off Kaspersky. The backup program is only started when I want to do a full dump once a week. I restarted the system after the last backup and it is not running now, but I still can't see the CPX drive. I have not had any hangs.
do you have AIDA64? you might have installed it a long time ago and forgotten about it. Also Hard Drive sentinel and other HDD monitoring programs
I do not have it, but looked it up after you mentioned it. I do not have the Hard Drive Sentinel or other explicit monitoring programs.
@slender iron
Traceback (most recent call last):
File "../../tools/build_memory_info.py", line 71, in <module>
ram_region = regions["RAM"]
KeyError: 'RAM'
any ideas?
I don't have a RAM region on the H743 - how did you get around this on the imx, which also lacks said region?
Also, I'm embarrassed to admit that the closer I look at the i.mx linker file the more confused I get. I've been hacking at it all morning and feel even more lost than I was when I started...
Why are DTCM and ITCM 32kb, despite the datasheet saying they're 128k? How can you fit the instruction code in the ITCM if it's either of those sizes? Is the DTCM being used for more than the stack? Why would the stack even have a data/bss section if not? How is it determined what gets put in the DTCM data/bss vs the normal region?
And am I right that the i.mx autogenerated most of that reset-handler code? STM has a startup file written in assembly and a system file in c, but neither of them even reference dtcm, even though the default STM32H7 linker appears to use dtcm for both the stack and heap.
@onyx hinge Jeff, I have implemented the ** operator, and binary operands can now be swapped, i.e., a = array([1, 2, 3]); a + 1; 1 + a are valid. Could you, please, look at the changes: https://github.com/v923z/micropython-ulab/tree/power .
@onyx hinge Relational operators cannot be turned around, so 1 < a won't work. These are not implemented in micropython, so if you want to support those, we would have to request upsteam modifications. I am not against that, but perhaps there is a strong reason for the missing implementation, which I don't see at the moment.
And I haven't the foggiest idea as to why the test fails with the slices... I haven't changed anything there.
@ionic elk back from grocery shopping and lunch. want to voice chat?
Looked up and added dates to all downloads and added Date sorting. Also fixed an issue with sorting where selecting A-Z and then back to downloads didn't change results. Updated Feather Sense text as well.
Looks good to me! Thanks!
First part of this is done: downloads via #437.
Next up is the Blinka boards.
Closing because we have something in place. @ndGarage, if you want to improve it with better info, please submit a PR.
I'll create a hidden stub for this so it doesn't show up on the website as unknown for now.
Since there's no info that I can add, I'll create a hidden stub for this so it doesn't show up on the website as unknown for now.
This will hide the Unknown boards until their authors want to provide some information.
@lapis hemlock I would like to take a look but it will most likely be tomorrow. thanks as always for the updates
@onyx hinge No problem. I think I could locate the error, I am working on a fix.
@lapis hemlock I would like to take a look but it will most likely be tomorrow. thanks as always for the updates
@onyx hinge After the fix, tests pass. Are you very busy at the moment?
Glad you found the fix
I had a question about github actions, but it is not urgent at all, we can defer it.
okay, I am trying to finish up a part of this protomatter project and then call it quits for the day π
OK, then some other time.
false, // pixels_i|n_byte_share_row (unused for depths > 8)
this typo crept in a LOT of copy paste places
Added date Sorting for Blinka boards. Fixes #299. Went through and added "data_added" using initial GitHub PR dates. Cleaned up some console.log statements. This also fixes the PocketBeagle Name. Also fixes a Javascript error I found when loading Blinka page on live site.
@onyx hinge Am I reading right, f-strings are enabled for everything but SAMD21? or am I conflating things
@idle owl right. there may be some other very full board it was also disabled for, but it's sure off for the M0s
Ok good enough
and it's supposed to be on for all the newfangled boards like stm32 and such
right on. Thanks
@zpowellman here's the PR for adding the board definition CircuitPython. Perhaps that will give you enough info. Closing since this issue is not circuitpython.org relate.
@jwcooper I like your suggestion for the "best option". :)
I believe that generally speaking the code works at this point and it is ready for style review, though before it's done-done we need to get the protomatter changes merged upstream and add support for nRF on our end.
I should explain that the test changes are not really related, see https://github.com/micropython/micropython/issues/4000 for background.
@slender iron Hi sorry I missed you today, got pulled into a project and then cooking. Would you have some time tomorrow morning?
@ionic elk I should but not sure of the timing
Ok I'll check back with you then
kk, I have to check with Becca about it
wowow I missed the fomu port landing. π₯
yup! merged it earlier
welcome @half geyser
and then updated my lower_power branch and needed to update the litex port for my changes
Yay! Thanks. Super happy to have circuitpython for Fomu built upstream.
π
my test code.py:
import digitalio
import neopixel_write
import time
import microcontroller.pin
# This pin should be in board. The microcontroller.pin should be the FPGA's name
# for the IO.
d = digitalio.DigitalInOut(microcontroller.pin.TOUCH1)
while True:
neopixel_write.neopixel_write(d, b"\x00\x88\x00")
time.sleep(1)
neopixel_write.neopixel_write(d, b"\x88\x00\x00")
time.sleep(1)
@half geyser I added a short README.rst with instructions too
@slender iron is the general term for this kind of LCD panel interface we were discussing "LVDS"?
no, I don't think so
LVDS is a differential signal I believe
I think the ones we were looking at are TTL
ok it must be different than what I was reading about raspberry pi displays that use a ribbon connector then
ya, probably. I haven't looked too much into it
looks lke the evk has a 565 RGB interface (there's spots for 888 on the 40-pin connector, but the low pins are just GNDed) and some clock/sync signals
π
@slender iron i'm having the following error building any version of the low power module. looking into fixing it now
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
make: *** No rule to make target `extmod/ulab/code/create.c', needed by `build-TG-Watch02A/genhdr/qstr.i.last'. Stop.```
@marble hornet update the submodule(s)? looks like it doesn't have the files in ulab.
@raven canopy i downloaded instead of cloned. do you know how to clone a specific branch from someone's fork? specifically https://github.com/tannewt/circuitpython/tree/lower_power
i tried --single-branch
and googling it
git clone -b <branch name> <url> should work.
thnx
@slender iron expect an estimation of battery power draw difference by the end of tomorrow
Since lower_power is the last discussion, I'm also having issue compiling it.
(cloned https://github.com/tannewt/circuitpython.git)
git checkout lower_power git submodule sync; git submodule --init; git submodule update --recursive make V=1 SD=s140 SERIAL=/dev/tty.usbmodem1411 BOARD=feather_nrf52840_express all make: *** No rule to make target 'extmod/ulab/code/create.c', needed by 'build-feather_nrf52840_express/genhdr/qstr.i.last'. Stop.
@spice crypt you need to make sure the submodules have been populated.
git submodule sync
git submodule update --init
yes, I have.
oh...just saw that. my bad. π
oh. try with out the submodule update --recursive. we've stopped using that i think.
Okay, do I have to delete anything beforehand?
i would use a clean again. (the ulab submodule is a fork, which i think recursive causes confusion)
Success!
yay! π
Looks like submodules are cloned all over, so probably no easy way to "refresh"
the two submodule commands should track with the current working tree.
@spice crypt thanks for the sponsorship!
π
Having the same compatibility issue (like several days ago) when I flash the lower_power build over my present 5.0.0 libraries. If this has something to do with ble --> _ble rename, how do I mitigate this?
main.py output: Traceback (most recent call last): File "main.py", line 87, in <module> File "adafruit_ble/__init__.py", line 275, in name AttributeError: 'Adapter' object has no attribute 'name'
Second problem that might be related to Circuit Python or NeoTrellis hardware or maybe something else. I have adapted John Park's code to connect NeoTrellis keys through AutoHotKey to supply character streams to Emacs, Windows Command Prompt and other programs. It works for varying periods of time and then the NeoTrellis stops working until I unplug the USB cable and then plug it in again? Is this an unusual occurrence for NeoTrellis or CircuitPython. Are there any timeout issues for the hardware or CircuitPython? Thanks.
@bitter bronze I'm not certain that I understand 100% but I do think it may be unusually. I have several Circuit Python devices around the house that are plugged into various computers sending HID key and mouse events to the host computer. They run for days or weeks at a time without needing any sort of unplug / re-plug.
if you can go ahead and post a link here to your code on gist or somewhere online if possible.
@idle owl I can work on making the change for that Bitmap Font PR later today if it can be helpful to take that one off of your plate.
@lone axle That would be brilliant. Thank you.
@spice crypt I'll look into that today
It is used, but on the H7 specifically they actually include it in the HAL (and not for any other chips). Docs say something about porting interrupt code. Luckily it lines up with the macro that is usually defined here.
They need to be modified with custom bootloader code and other stuff too - they aren't from a git submodule but are generated by CubeMX, so I don't have a specific commit to point to.
@tannewt is there a way to automate the merging of the translations files? Going into each one and changing that single date that always conflicts is a bit of a chore.
I'm still kind of confused here. So, mpconfigport has a set of duplicate defines, that it sets to 1 or 0 based on the CFLAG ifdef? How does it help the compiler to have a 1 or 0 define in other files if they just started from a CFLAG ifdef in the first place?
@slender iron Latest push to PR has commented out itcm and dtcm code that failed, if you'd like to take a look
If we could get rid of the date entirely in the .po translation files, I think that might be just fine, since the files are tracked by git already.
@dhalbert I was thinking the same thing, it's not a very useful line to include and it always prevents clean merges if you forget to pull from master beforehand.
I'm really stuck on it because STMCube's linker file also plainly makes use of the itcm and dtcm sections, but it has no reference to them anywhere else - not in the startup file, not the system file, nowhere. So I have nothing to base it off of like i.mx
I went ahead and created an RSS feed that contains all the CP boards and Blinka boards. This is dependent on #439 being merged in first though because it uses the dates from those and the RSS reader should sort by those dates, otherwise it won't work.
I submitted PR #440 for this and used the url circuitpython.org/feed.rss, but if we want it different than that, I can change it to whatever. It's dependent on the PR #439 being merged first as @jwcooper had mentioned in #299.
Ok, after dabbling more with the site, I think the intermediate option would probably be the best one. Another option not mentioned is a hybrid of the minimum and full monty which gets around the challenge of the filtering options. If we went with the Full Monty as you proposed, we could combine the list of modules if we wanted to have the filtering and then the user could choose a build that has the module they want. They may just be out of luck if they are looking for multiple features and ...
@ionic elk I'm free for the next 3.5 hours and can chat whenever you can
k, I'm free too
@foamguy Thanks. Just knowing it is not a known problem helps me know where to look. It is not a critical issue and I will unplug it and plug it back in to get it to work again. I will do some testing on a second machine to see if it might be related to other software running on the first machine. I have not had any experience with posting code, so I will have to research that. I will also clean up the code before posting. By the way what code editor do you use? I have tried Mu but it is a bit crufty, I have also have used the cumbersome Python IDLE. And a few others. Thanks again.
@bitter bronze I'm pretty flexible with IDE / Editors. If am working directly on a CIRCUITPY device I tend to use Mu so that the serial pane is together with the editor. If I am editing code thats local on my PC and not on a CIRCUITPY device yet I'll use either Notepad++ or Atom (I'm trying to decide which I like better atm) especially if it's just a quick look or small edit within a file. If it's a full project that is in a git repo and I intend to push changes and make a PR from it then I use PyCharm typically because it has lots of fancy utilities built-in that make git easier to understand and use for me.
@spice crypt what is in your main? I just printed the adapter name through a BLERadio object and it worked just fine
Ok @jepler, this is ready for a more thorough review.
I'll need to do testing of PulseIn and FrequencyIn on each platform that has it before merge though.
Thanks for the report! We will no longer use SysTick time keeping once #2685 is merged (we'll use the RTC instead.) So, closing this since it'll be obsolete soon.
@slender iron
`from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
import time
import board
import digitalio
import analogio
import displayio
import terminalio
from adafruit_st7789 import ST7789
from busio import I2C
import adafruit_ds3231
from adafruit_bitmap_font import bitmap_font
from pulseio import PWMOut
import neopixel
import storage
import json
#from supervisor import reload, runtime
from adafruit_display_text import label
from adafruit_display_shapes.rect import Rect
#from adafruit_display_shapes.circle import Circle
from adafruit_display_shapes.roundrect import RoundRect
#from adafruit_display_shapes.triangle import Triangle
from adafruit_display_shapes.line import Line
Bluetooth Init
ble = BLERadio()
ble.name = "nrf52840ex"
uart = UARTService()
advertisement = ProvideServicesAdvertisement(uart)`
The problem really extends beyond that. Last time I almost down this rabbit hole (for me), even when I comment out that, othe errors come up
Let me go get my device, brb
kk, which device is it? I can grab the same
It's based on the NRF52840_express
I'm testing on a circuitplayground bluefruit
My device also happened to get corrupted! Maybe a sign of other things. copying over files now after formatting
Ok, back up and running
and still having troubles?
Yes, even with barebone code
care to share your test code?
`from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
import time
import board
Bluetooth Init
ble = BLERadio()
#ble.name = "nrf52840ex"
uart = UARTService()
#advertisement = ProvideServicesAdvertisement(uart)`
from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
import time
import board
Bluetooth Init
ble = BLERadio()
#ble.name = "nrf52840ex"
uart = UARTService()
#advertisement = ProvideServicesAdvertisement(uart)
`from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
import time
import board
Bluetooth Init
ble = BLERadio()
#ble.name = "nrf52840ex"
uart = UARTService()
#advertisement = ProvideServicesAdvertisement(uart)`
main.py output:
Traceback (most recent call last):
File "main.py", line 11, in <module>
File "adafruit_ble/services/nordic.py", line 57, in init
File "adafruit_ble/services/init.py", line 50, in init
TypeError: cannot create 'Service' instances
FYI. My adafruit_ble library is from adafruit-circuitpython-bundle-5.x-mpy-20200228
what version? there should be a __version__ on the module
I believe I'm using something later. Its pulled from my copy of the bundle repo
I didn't find version but I did find this in the bundle root in VERSIONS.txt
https://github.com/adafruit/Adafruit_CircuitPython_BLE/releases/tag/5.2.0
ah, that works too
for version you'd do python import adafruit_ble print(adafruit_ble.__version__)
and you are using my lower_power branch? do you have your own copy with your own board define?
5.2.0
Yes, your branch. Default nrf52840_express board config
I'm using the feather
is the REPL version: Adafruit CircuitPython 5.1.0-rc.0-104-g77562a2ac on 2020-04-01 with a different date?
Adafruit CircuitPython 5.0.0-alpha.1-8-g9fb635b60 on 2020-03-31; Adafruit Feather nRF52840 Express with nRF52840
from yesterday
Built with: make V=1 SD=s140 SERIAL=/dev/tty.usbmodem1411 BOARD=feather_nrf52840_express all
you are on my master branch
which is not my lower_power branch
my master is 9fb635b60dd681331a6e8a7c1f38d30cd1cd5f83 from September 2019
hmm!
tstr@tstr-VirtualBox:~/CP_lowpower/circuitpython/ports/nrf$ git branch
- lower_power
master
Must have copied the wrong UF2
lower_power is your branch name
what is the first line of git log?
mine is commit 77562a2acde3c82e5949096533535b211f747c6d (HEAD -> lower_power, tannewt/lower_power)
haha, was already getting that
`commit 77562a2acde3c82e5949096533535b211f747c6d (HEAD -> lower_power, origin/lower_power)
Author: Scott Shawcroft scott@tannewt.org
Date: Tue Mar 31 18:27:55 2020 -0700
Update the supported ports
`
that looks right
cp ./build-feather_nrf52840_express/firmware.uf2 ~/shared_tmp/
that's the UF2 I copied
my make command is: make -j 17 BOARD=circuitplayground_bluefruit
I think I copied the wrong UF2, there's and -s140 appended to another folder
let me update again
my folder doesn't have the -s140
Hmm. anyway, things look better so far
great!
π no problem
Is it expected for the flash contents to be corrupted after UF2 updates?
It's happened the last two times
Didn't before IIRC
we did change something in 5.0.0 betas that could have caused it. It generally doesn't.
Ok, will report if happens consisently, obviously. Trying my full code shortly
so as far as expecting the nrf52 to go into sleep mode. I should expect it during a time.sleep()? How to utilize a GPIO toggle to do the same?
it will only do it during time.sleep with this PR.
external interrupt support will come later
(I have to decide on an API)
I have a nice DMM on loan, I'll note what I see.
cool cool. sleep is only idling the CPU so its not a huge improvement. the main work was getting time keeping moved onto the RTC
everything counts in large amounts
ya, definitely an improvement
huh, weird
I see that too
time.monotonic should work
time.time has some mechanics around the RTC source
I need to look into that tomorrow
That'll work for me. The extra resolution is nice sometimes. I have a actual offboard RTC for my project
it should be 30.15 us resolution
monotonic_ns will always be precise but causes an allocation if the number is > 2**30
This is a very broad question, but should displayio elements be expected to take a long time to initialize? I have 3 screens with 5-10 elements and they all take ~15seconds to initialize
I think I have tried in the past. I don't .show() the global group until all the inits have finished
Same effect?
what do you mean by inits then? it should be fast to fill a group that isn't shown
if it's not on a screen then I'd expect it to be fast
Good to know
though python is only so fast π
if you are printing anything and the display are inited then you will be slowed by the prints
false, // pixels_in_byte_share_row (unused for depths > 8)
We should have those test changes integrated already. Do you think we just messed up the merge?
(I still have a bunch of review to do on this.)
@slender iron I'm confused about the write-synchronization for BOD33. It has a B33SRDY bit (other write-sync'd regs have a SYNCBUSY bit). The datasheet says:
The BOD33 register is Enable-Protected, meaning that they can only be written when the BOD is disabled (BOD33.ENABLE=0 and STATUS.B33SRDY=0). As long as he Enable bit is '1', any writes to Enable-Protected registers will be discarded, and an APB error will be generated. The Enable bits are not Enable-Protected.
the bit docs for it says it isn't enable protected
I thought I needed to spin on B33SRDY until it's 1
which thing isn't enable protected?
ENABLE isn't enable protected
right, so I sent ENABLE to 0, and then I need to wait for B33SRDY to go to 1 or to 0?
the doc says 1 is sync complete
and when I set ENABLE to 1, do I need to wait similarly?
but the quote above says you need STATUS.B33SRDY=0, I would have thought =1
ya...
i've been looking for some examples. I found maybe one on the whole www
where is the quote from?
right, so maybe the first quote is wrong
also note that paragrph only talks about writing 1 to enable
i guess it's simple enough to try; it will hang if I get it wrong π
there is no sample code or driver that actually does this, it appears
Bit 2 β B33SRDY BOD33 Synchronization Ready Interrupt Enable
----------------------------------
Writing a '0' to this bit has no effect.
Writing a '1' to this bit will clear the BOD33 Synchronization Ready Interrupt Enable bit, which disables the BOD33 Synchronization Ready interrupt.
that's about interrupt enable; i'm not doing interrupts
this is BOD33.B33SRDY
there are interrupts galore for all these bits
yay interrupts π
i'll just try it; this peripheral is unlike all the others
ahhh. sorry about the noise Dan. love that they all use the same register name. π
np, I searched and found the same thing and got confused at least twice. it just comes before the real description
Is there something I could do to fix an actions error with build docs like this?
@lone axle add the module to the automock in docs/conf.py
Thank you
i always forget the actual variable name. :D
autodoc_mock_imports.
https://github.com/adafruit/Adafruit_CircuitPython_Bitmap_Font/blob/master/docs/conf.py#L24
it's kind of funny that when I google the main code examples that come up are the code I already wrote π
so you know the code is correct! search results you can trust. haha
ya, that's happening to me more and more
weird, I was trying to eradicate those... or did I somehow create them?
There were a couple of tests that succeed with Python 3.5 and fail with 3.8. See https://github.com/micropython/micropython/issues/4000 -- I've cherry-picked them, and upgraded the Python version used by github actions.
@tannewt remarked on #2706 that he expected these changes to be included by merging micropython. Unless we did this recently, these commits are not in our history. They appear to first be in micropython v1.10 and our release notes say we are based on MicroPython 1.9.4.
Is the CircuitPlayground library baked in to the firmware for that CPX?
@lone axle yep. here's the full list:
https://github.com/adafruit/circuitpython/blob/master/ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.mk#L22
Neat, thank you.
@slender iron thanks for trying to raise the issue about the CI troubles we're seeing. https://github.community/t5/GitHub-Actions/Install-dependencies-in-Ubuntu-flakes-several-times-a-wekk/td-p/51785
we could try apt... || apt... || apt... and maybe it would succeed on try 2 or 3 .. we could switch out the mirror manually, but it might be rude to use canonical's bandwidth.
I don't think it's canonical's bandwidth since the url has azure in it
I assume that actions runs on azure and is configured to a local server
@slender iron i got about an extra 1/2 to an hour out of the lower_power changes
nice! the display probably takes a lot of the battery
yes it does. and it dipped power a bit before it died so it went into safe mode and stopped running code for near the end. wasn't a perfect test. but the safemode.py change should fix that issue.
I don't think it's canonical's bandwidth since the url has azure in it
I assume that actions runs on azure and is configured to a local server
i actually spent some time last night trying to dig into that. (i think it was last night. what's today?) looked through both the actions/runner and actions/virtual-environments repos, and didn't get any closer to finding anything.
i also tried to match up the listed update timestamps on the archive to the failed actions. didn't see any correlation.
what safemode.py change? I didn't see anything about that go by in my email
The SPI flash on current Fomu firmware is slow. Circuitpython runs
XIP from SPI flash, and so execution time can also be slow. Ordinarily
this isn't a problem, however certain operations are time-sensitive.
In particular, USB function needs to be handled quickly in order to
prevent the host from re-enumerating the device.
Place several critical TinyUSB structures into RAM, as well as several
hot functions that are frequently called. This reduces execution time
at the expense of ...
@slender iron I don't know for certain but I think I saw someone mention the idea of having safemode.py get launched when the device boots in safemode so people can choose more specifically what happens as compares to normal boot up.
thank you sommersoft
I thought a safemode.py running after a safe-mode error would be a simple, practical, and powerful solution to unavoidable brownouts.
For some reason, Travis CI does not seem reliable. It seems to fail about 5% of the time during the Install deps phase:
Could not connect to azure.archive.ubuntu.com:80 (52.177.174.250), connection timed out
Err:2 http://security.ubuntu.com/ubuntu xenial-security/main amd64 gettext amd64 0.19.7-2ubuntu3.1
Unable to connect to azure.archive.ubuntu.com:http:
Ign:3 http://security.ubuntu.com/ubuntu xenial-security/main amd64 libasprintf-dev amd64 0.19.7-2ubuntu3.1
Ign:4 http:/...
@slender iron If I use custom bdf fonts w/ displayIO, my rendering (initialization) time goes up significantly. What gives? I even have auto_refresh disabled until all the groups, label, and shapes are set.
3x bdf fonts: 23seconds
terminalio.FONT only: 3 seconds
from adafruit_bitmap_font import bitmap_font font_arial = bitmap_font.load_font("/fonts/Arial.bdf") font_arial_16 = bitmap_font.load_font("/fonts/Arial-16.bdf") font_helvetica_bold_16 = bitmap_font.load_font("/fonts/Helvetica-Bold-16.bdf")
@spice crypt Are you preloading the glyphs? `font_arial.load_glyphs(b'ABC123.,:')
No
That should save time later
I actually just stumbled upon that. I think I tried before but will again. Thanks.
@slender iron yeah I'm not sure how it works, some of the URLs are azure, some are not, but all of the errors say azure. After this operation, 6,707 kB of additional disk space will be used. Err:1 http://azure.archive.ubuntu.com/ubuntu xenial/main amd64 libunistring0 amd64 0.9.3-5.2ubuntu1 Could not connect to azure.archive.ubuntu.com:80 (52.177.174.250), connection timed out Err:2 http://security.ubuntu.com/ubuntu xenial-security/main amd64 gettext amd64 0.19.7-2ubuntu3.1 Unable to connect to azure.archive.ubuntu.com:http:
BTW, our CI is now Github Actions, not Travis. I think the actual problem leading to the "unable to connect" / "could not connect" message may be some kind of capacity/reliability problem of azure.
Because of other problems with Github Actions infrastructure, even project maintainers get no love when they use the "re-run all jobs" button, because when you re-run a PR job it just errors at the checkout phase. This non-working re-run button is a bug (an acknowledged bug, I think) in action...
Thanks, I'm not sure why I thought it was Travis. My mistake. I somehow thought it was backed by Travis. I'm learning new things all the time.
The error in #2725 looks like it may be because you're only fetching tags and refs, which won't fetch dangling references that have no tags (for example, if a later commit rebased). My recipe is usually git fetch; git checkout [ref].
Us users don't have access to a "Re-run job" button.
If Azure is unreliable, is it possible to add a diff...
and to add more clarification, or confusion, the apt source is clearly a mirror. although it isn't on Cannonical's official ubuntu mirror list that i can see.
# run from an Actions workflow...
> Run ping -R -c 3 azure.archive.ubuntu.com
PING archive-lb.eastus2.cloudapp.azure.com (52.177.174.250) 56(124) bytes of data.
--- archive-lb.eastus2.cloudapp.azure.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2029ms
subsequent curl step is successful, so take the ping failure as a false positive.
and, an additional post was made on the issue, to which a "reported to the engineers" response was made.
https://github.community/t5/GitHub-Actions/sudo-apt-get-install-fails-with-Could-not-connect-to-azure/m-p/52300#M8479
Hello, recently I've been trying to add Linux CI to the project, but it repeatedly fails with the error mentioned in the title. There is a ~20% chance that a build will end up on a machine that for unknown reasons fails to connect to the azure.archive.ubuntu.com repository sto...
@tulip sleet @slender iron There are several ulab bugfixes since 5.1.0-rc.0. If I want to pull these in, that entails making a rc.1, right?
@tulip sleet I'm running into issues with this HAL function: https://github.com/hathach/st_driver/blob/3fc2e0f3db155b33177bb0705e0dd65cadb58412/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h#L845
compiler is throwing a shadow variable warning for tmpreg, but isn't the UNUSED(var) => (void)var supposed to counteract that?
do you have any ideas? This seems completely contained in this one HAL file, and if I don't figure it out I'm going to have to turn off the variable shadowing warning
Nevermind, Thach had to turn it off so I assume I do too.
@onyx hinge right, rc.1, but it doesn't have to soak that long if those are the only changes
I was about to download rc.0 to have a play. Is it worth waiting for rc1?
^^ @onyx hinge are you going to do rc.1 imminently?
I"m working to complete some protomatter stuff first.
No rush here, i was wondering what one to go for. Are all the ulab bugs noted in GitHub in case I run across them?
I haven't even tested that updating the ulab submodule works as expected (probability is high, however)
micropython-ulab has its own github issue tracker https://github.com/v923z/micropython-ulab
These fixes would be incorporated: ```0d5dc6b Merge pull request #78 from v923z/argmax
411a5ff Merge pull request #81 from v923z/unistd
26d740e Merge pull request #80 from v923z/copy
272685d Merge pull request #79 from v923z/sort
ac3f03c Merge pull request #70 from v923z/testfix
3ec9f5a Merge pull request #69 from jepler/boolean-cpy
@onyx hinge are they fixes or adding more stuff? remember we can always release 5.1.0 now and update ulab in 5.2.0 beta or whatever
@slender iron a couple are bugfixes -- sort, boolean-cpy, argmax. not all are.
I think they're minor, so we could toss it under "known problems"
that's fine with me. I'd just like to see something new released
selecting just elements from an array that match a condition, a[a>1] is broken. And something about sorting is broken, but I think it only affects sorting 2d matrices which is a weird operation
I would like to do an unstable release as well
so anything in master would be released too
how does that interact with making 5.1.0 final?
it would make the rc disappear from the website which would be inconvenient I guess
right, I can't make a new unstable until 5.1.0 is released or 5.1.0-rc.2 incorporates everything from master
hmmm
taking that at face value, it makes more sense to release 5.1.0 and add to the known problems section. I'll wrap up my current task and draft release notes...
k thanks!
Automated website update for release 5.1.0 by Blinka.
@lone axle So the new PR you created includes the fix from the PR I created on Bitmap_Font?
@idle owl correct. I forked from yours changed the import and changed the mock import in docs. Then created my PR from that.
Perfect. I'll close my PR. Thanks
Yep you're welcome.
@slender iron some of the actions failed at "install deps" for the 5.1.0 release. Can I use the "re-run" button once it becomes available or do I need to take different action?
@onyx hinge It's been doing that lately. Rerun all jobs.
It's been doing that lately across the board.
I've had to do it a few times every so often.
to libraries as well?
Yes.
well now what. The button isn't where I expect to see it.
It's not?
at https://github.com/adafruit/circuitpython/runs/555487221?check_suite_focus=true or just generally?
This is what it says it failed on New boards check 1s ##[error]Process completed with exit code 1. Run python3 -u ci_new_boards_check.py Boards missing in .github/workflows/build.yml: nucleo_f767zi ##[error]Process completed with exit code 1.
the first one is the 5.1.0 release
Oh hmm
@tulip sleet any ideas?
not getting the button there either.
?
wait that's not right either but I got there via the release link on the Actions main page
I can try that one. one of them is the one that would upload to circuitpython.org (errr well s3), if I understand correctly
or maybe between those two runs things are okay? I checked one board which failed in each run (aramcon_badge_2019 and xinabox cc03) and they both have UF2s, possibly from the other run? The failures were different in each run.
Not sure about that.
I wish I were more confident. I feel like I should wait and let someone else take a poke at it.
they'll see the mentions in due time
I don't think rerunning it will break anything. But you've got me second guessing as well at this point.
@onyx hinge you won't break anything π
I just wait to blog and update the website until I'm sure most assets are where they should be
@slender iron these builds are still missing, it seems. ```electronut_labs_blip HTTP/1.1 404 Not Found
espruino_pico HTTP/1.1 404 Not Found
espruino_wifi HTTP/1.1 404 Not Found
feather_stm32f405_express HTTP/1.1 404 Not Found
makerdiary_nrf52840_mdk HTTP/1.1 404 Not Found
makerdiary_nrf52840_mdk_usb_dongle HTTP/1.1 404 Not Found
meowbit_v121 HTTP/1.1 404 Not Found
pyb_nano_v2 HTTP/1.1 404 Not Found
pyboard_v11 HTTP/1.1 404 Not Found
spresense HTTP/1.1 404 Not Found
stm32f411ce_blackpill HTTP/1.1 404 Not Found
stm32f411ve_discovery HTTP/1.1 404 Not Found
stm32f412zg_discovery HTTP/1.1 404 Not Found
stm32f4_discovery HTTP/1.1 404 Not Found
oh some of those come in .hex form though
blip is there (hex), espruino pico is there (bin), stm32f405 (bin), makerdiary (hex)
ya, that looks like all of the stms
then it's just my quick checking script that's broken and probably they're all there after all
is the website update merged? I'll need to follow up with a download count update
oh right, I missed that
@slender iron ok you can update your download count thing now I think?
will do forum & blog after lunch
ya, think so
Thanks! 5.0.0 work has gone by so fast I haven't groked how long it's been since we merged. Will need to do that this year sometime.
@onyx hinge what issue hung you up with checkout v2? v1 doesn't work for reruns which would help with the azure server issue
@slender iron sometimes, when fetching tags for submodules, the command would report that there was no "origin" remote. e.g., this particular run https://github.com/adafruit/circuitpython/pull/2725/checks?check_run_id=533702449
I wonder if that was a github issue
actions@v2 seems to prioritize fetching as little as possible, which is understandable given that some repos contain a LOT of data. but it breaks the very sensible practice we follow, of auto-identifying via git-describe
right
I had something in travis to handle that too
I'm sad that contributors like xobs are frustrated especially since we're largely powerless to fix transient github issues
ya, I think we should just be more lenient until it's fixed
his PR is for fomu only so it's ok to just merge
it's my PRs you need to worry about π
(and 1%-chance-per-job issues will hit us 2/3 of the time due to the large number of jobs)
yup
until kattni mentioned that libs were seeing the apt-get problem too I wondered if we were hitting another possibly-undocumented rate limit.
ya, that could be it. or it could just be the cloud creaking as we all use it more than we used to
sounds like it finally got escalated though
forum post made, 5.1.0-rc.0 post un-stickied.
thanks!
I've had noise issues with the Itsy Bitsy M0 Express and have boiled it done to attaching the MSA301 Accelerometer. I can attach neopixels, buttons, etc. but as soon as I attach the accelerometer I get random loud noise. I've also tried different speakers and audio boards with no change in the noise. The noise can occur right when I turn it on or it may wait 3-4 sec before starting.
Here is the simplified code:
# Import libraries
import board
from digitalio import DigitalInOut, Dir...
I wonder if it's time to do the great merge of 2020 after the lower_power stuff is in
blorg post is scheduled
Is that any relation to the BORG?
@slender iron what's the big merge? micropython?
ya
what are the big features that'd get added
I think mpy files get smaller
but don't know of that many things
mainly to just get us closer to them. jeff just backported a test fix for us
@lone axle Do you have a few minutes to take care of some PRs for me? They're simple link updates.
@ionic elk we're based on micropython 1.9.4, so anything major in their changelogs since then would be potential improvements.
Thanks for taking this on! I've add a number of comments. I like the directions you are going by using a "framebuf as a bus". I think there is some work to do on the Framebuf stuff to slim it down and simplify it. I think having brightness on it makes sense but it should then delegate to the framebuffer provider to implement it. A 24bit TTL display will have a backlight pin but a protomatter display will need to adjust what it outputs.
//| len(rgb_pins) // 3 * 2 ** len(address_pins). With 6 RGB pins and 4
Does this free the framebuffer?
I'd still add a common_hal get_paused for this. As is, it leaks the protomatter struct contents into shared_bindings.
Hi @slender iron - I saw in the CP Weekly notes that you have been working on some BLE MIDI stuff. Any docs or projects public, yet? This is interesting on a couple of levels. Thanks!
@old smelt the libraries are public and the fixes are checked into CP
The Python API versions must return mp_obj_t, but the protocol versions don't deal in objects so they return void.
john park's project next week will use it if it works for him
someone on the forum was having trouble getting it going
but I haven't been able to debug it with them
Did you have a specific piece of hardware in mind when doing the devleopment?
I tested on an nrf52840
Protomatter doesn't. I can remove them (and hard code at 0) until something does.
Ok. So a CPB would work?
yup!
should work
π
Nice. I brought that home in my boxes and stacks o' office stuff.
Thanks!
At least some will apply to other framebuffers we anticipate. For instance, 1/2/3/4 bytes per pixel are all possible in i.mx lcds from my reading. I didn't see grayscale / pixels_in_byte_share_row or reverse_xxx being needed yet, can remove them until needed if you desire.
Real reason: copypasta from Display
Possible justification: this is guaranteed to be in RGB888 format, while the framebuffer is in some internal format and might not be readable from raw python code (if it's a real hardware framebuffer like imx anyway)
This was modeled after STATIC mp_int_t array_get_buffer's conditional though confusingly I swapped the order of the two conditions. I don't think there's a macro to encapsulate it.
method:: swapbuffers(), it doesn't take an argument. more docs out of sync with code.
more docs out of sync with code
As far as the backlight, it can delegate to the underlying framebuffer (a protocol function that is permitted to be NULL), or it can use a pin as now as a fallback. protomatter uses 0 to mean pause, nonzero to mean not paused; it doesn't scale RGB values to emulate intermediate brightness levels. I have a feeling that adding a fixed off time might give better results, so if that's important we should talk to @PaintYourDragon about it.
If we thought at least 2 framebuffers would do back...
Hi, IΒ΄m collaborate with Electronic Cats team. I update the Escornabot Makech images in their correct format.
Thanks
@slender iron I'm getting a hard crash as soon as I run the OCRAM copy loop in Reset_handler - it's a regular hardfault handler exception, not MPU related.
double check that the pointer bounds are ok
@idle owl not atm sorry. But if you send them to me I can probably do it later tonight if that is helpful.
@lone axle I got it covered, thank you so much for the offer!
No, good catch. Seems like common_hal_protomatter_protomatter_deinit should zero out the internal framebuffer and bufinfo structures, and supervisor-free bufinfo.buf if applicable; if the framebuffer was originally passed in, this would lead to it being freed at GC time. Make sense?
@slender iron Cannot access memory at address 0x24000000 interesting.
Obviously this shouldn't happen with the assembly code...
what was the variable name?
that's just the flash RAM. but yikes this actually applies past reset to reverted code... It applies even after the chip is reset, and the code reverted to a previously stable build.
welp I bricked my board
so much for the MPU
eek nobody likes to hear that
Β―_(γ)_/Β―
that's just the flash. but yikes this actually applies past reset to reverted code...
@ionic elk Is this a poem?
Rephrased: the memory access issue applies when I revert my commit to one that was previously tested successfully, using the stm32 defaults.
@onyx hinge Thanks for checking out the code. I have found another bug in the sorting routine. I have fixed that, in case you have to pull it.
It also persists past full chip erases and power reset
@lapis hemlock as you may have seen we decided to go ahead with 5.1.0 without those recent bugfixes. I am not fully familiar with how we do releases, but I think this still leaves us open to incorporating bugfixes from ulab in 5.1.1.
IE, something on the chip has locked this memory, possibly permanently, and normal code cannot unlock it. I'll give ST's official utility a shot, sometimes it manages to "super erase" better than Jlink and texane/stlink
@lapis hemlock as you may have seen we decided to go ahead with 5.1.0 without those recent bugfixes.
@onyx hinge No, I haven't seen that. I have seen the release candidate only.
So, should I expect higher issue activity in the coming days?
Hopefully people will start using it more. I'm not sure whether our users will start by filing issues against circuitpython or ulab. I will tag you in anything that seems relevant.
I will tag you in anything that seems relevant.
@onyx hinge OK, thanks!
A different question: how can you develop/test github actions?
I mean, private users have an allowance of 2000 minutes per month.
by pushing over and over again until it's not broken π
So there is really no test platform for that.
I am not aware of one.
the 2000 minutes per month limit I think applies to private repositories on the free plan. I didn't think a minutes-per-month restriction applied to public repos, no matter the plan. I could be wrong, of course.
GitHub Actions usage is free for public repositories. For private repositories, each GitHub account receives a certain amount of free minutes and storage, depending on the product used with the account. For more information, see "About billing for GitHub Actions." [https://help.github.com/en/actions/getting-started-with-github-actions/about-github-actions]
I didn't even know that you can have free private repositories. People used to scramble their code, so that they can push it to github without actually making the content public.
search turns up some possibilities for at least partially replicating github actions locally: https://github.com/nektos/act https://github.com/phishy/wflow https://stackoverflow.com/questions/59241249/how-to-run-github-actions-workflows-locally
hum no github pages are loading for me this second
@lapis hemlock The free private repos is a recent thing.
@onyx hinge GitHub is experiencing issues.
Welcome to GitHub's home for real-time and historical data on system performance.
ah it must be thursday
write as much as possible in CI-agnostic way (BASH scripts, PowerShell scripts, Gradle scripts, NPM scripts, Dockerfiles, Ansible scripts - anything you know)
Well relatively recent anyway.
One could, of course, have one's own worker, working somewhere else.
this is good advice
Well relatively recent anyway.
@idle owl Thanks for the info!
You're welcome!
I am not sure I want to hide anything, though... I am a totally open-source chap.
Also fair π
Occasionally I try to convince my spouse that we should use a private github to track household issues ... she doesn't believe me.
kitchen needs swept? you should have filed an issue. I check those first thing in the morning everyday
I can see the skepticism in her face from here.
@onyx hinge "write as much as possible in CI-agnostic way (BASH scripts, PowerShell scripts, Gradle scripts, NPM scripts, Dockerfiles, Ansible scripts - anything you know)" while I agree with this, it is actually not the scripting that is hard, but the triggers. What triggers what and when and under what conditions.
true
@onyx hinge "kitchen needs swept? you should have filed an issue. I check those first thing in the morning everyday" π€£
but would you get up and sweep then?
but would you get up and sweep then?
@slender iron No, he would look for an assignee.
@onyx hinge No offence meant, Jeff!
ttyl
thanks @lapis hemlock have a good night!
π
@lapis hemlock its not exactly a perfect solution, but when Actions was still in beta I actually created a repo purely for testing various things, so i can keep the noise outside of projects. https://github.com/sommersoft/actions_testing
having actions/checkout (even with its flaws) makes it easy to pull in outside projects to setup a similar environment.
Here is a testing checklist for myself:
- [ ] PulseIn on SAMD21
- [ ] PulseIn on SAMD51
- [ ] PulseIn on nRF
- [ ] PulseIn on STM
- [ ] FrequencyIn on SAMD51
- [ ] NeoPixel on iMX RT
I also need to enable and test RTC on:
- [ ] SAMD21
- [ ] SAMD51
- [ ] nRF
- [ ] STM
- [ ] iMX
GitHub's back up apparently.
π
Can someone confirm if this can be used to program/ flash CP bootloader on ATSAM and NRF chips ?
@obsidian compass probably, but I can't find any documentation on it
@ivory yew right, but it's quite cheap so I think I should take my chances π
If doesn't work I'll buy the expensive sega j-link π€
Oops I meant segger, but my keyboard like sega
I mean, I'm a huge sega fan, so if Sega made a j-link that's the one I'd have.
Yup, I loved your talk from supercon on Sega Inspired synths π
@turbid radish Possible topic for "news from around the web" in the newsletter: Circuit Brains Deluxe is available for backing / pre-order on Crowd Supply. https://www.crowdsupply.com/null-byte-labs/circuitbrains-deluxe (let me know if there is a better way to send you stuff for the newsletter)
I backed this so fast my keyboard broke
im super excited about the CircuitBrains.
@ivory yew Are you getting 1, 2, or 3 of them?
2
Tomorrow is my payday... π I think I will go for 2. I really want to see this succeed!! π π
me too
i went for just 1 for starters, but might bump it up to 2
Even numbers ROCK! Just DO it! π π
alright. second one ordered xD
There ya go! You are now a member of the Two-Fer Circuitbrains Deluxe Club! π I will be joining soon!
I bet if each of us Circuitpython people backed this by getting two that we could get this funded in no time!
looks like his MOQ goal is 150.
I think we can do that!
I have the non-deluxe circuitbrains and it's great (& SO tiny)
@lapis hemlock its not exactly a perfect solution, but when Actions was still in beta I actually created a repo purely for testing various things, so i can keep the noise outside of projects. https://github.com/sommersoft/actions_testing
@raven canopy Thanks! I think you are right, this is the way to go.
@ivory yew What is "MOQ?"
I guess, minimum order quantity.
I found https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/10-useful-tips-to-using-the-floating-point-unit-on-the-arm-cortex--m4-processor last night. I thought tip 8 was interesting, "Turn off the FPU if not used". I'd imagine that's rather tricky for CircuitPython to do?
There's some intriguing hacky techniques in the comments by Jens Bauer about borrowing the FP registers for other things.
Gaa -- "alternate use" of the FP registers was something done long ago on a SPARC system I worked with -- it was clever, but it sure caused some confusion ...
@slender iron why is the stack top forced to equal the heap top in stack.c even after i.MX? Does that need reworking?
@ionic elk can you link me to the context you are referring to?
@tannewt I've made changes for many of your review comments, and addressed some of the others inline. Please take another look when you have a chance.
@slender iron https://github.com/adafruit/circuitpython/blob/e6f11947cb053fc4a9da844a3689c6af5881590d/supervisor/shared/stack.c#L49 forces the port_stack_get_limit function in port.c to return the _ld_heap_start, even though in both the H7 and i.mx case they're in completely different memory regions and have no relation to each other.
@ionic elk I don't think it forces it. it just exempts the stack from the supervisor managed allocations
it's ok for it to return there
Oh, so the following code isn't really necessary when the stack and heap aren't in the same RAM region?
@slender iron why do you set it to be the heap start in i.mx then?
uint32_t *port_stack_get_limit(void) {
return &_ld_heap_start;
}
k
that function isn't actually called by anything in the mimx port
@slender iron just got back from lunch
Oh I see what you mean I mixed them up but that doesn't actually affect anything
@slender iron or @tulip sleet, Micropython makes reference to some object files as SRC_O, but they don't actually exist? Do you know what's up with that? They only exist as uncompiled S or C versions
the makefile will build them automatically based on default rules
but I don't know why they're called SRC_O
if there's a rule like .c.o: then that will implicitly be used when referencing the .o. But what are you trying to build? What's your make command? I'll try too
or .s.o:
@ionic elk I made PYBV11 from the tip of micropython master successfully
sorry I had to step out for a sec to help my brother with something
@tulip sleet I'm trying to get my makefile to reference this default assembly file in the st drivers:
st_driver/CMSIS/Device/ST/STM32$(MCU_SERIES)xx/Source/Templates/gcc/startup_$(MCU_VARIANT).s so I don't have to have a bit long list of startup files in my boards directory
Right now I have SRC_S = supervisor/cpu.s boards/startup_$(MCU_VARIANT_LOWER).s which works file
but if I swap that second part to the long st_driver path above, it doesn't work
says it "can't find the object file". And it won't find it if I add the SRC_O and build rules for it either
error: build-nucleo_h743zi_2/st_driver/CMSIS/Device/ST/STM32H7xx/Source/Templates/gcc/startup_STM32H743xx.o: No such file or directory
@ionic elk use find to see if it built startup_STM32H743xx.o somewhere else besides the path you gave
Hi there, I have a question. I am trying to load a small project on my Feather Express M0 board with circuitpython. This involves a oled dislay (shield ssd1306) and a temp pressure sensor BMP280. I recently upgraded to CircuitPython5.0 and now the project no longer works. In python REPL i have loaded the script step by step and then encountered a memory issue. Which appears to be my issue. I really only have the bare essential libs on the device, and the program is really smal. It feels like some of the board memory is blocked or leaked away. Is there a way where I could completely prime the device, formatting it so to say? And if this is possible. What would be the procedure? I am curious if this is a known issue.
@timber mango moved to #help-with-circuitpython
@tulip sleet no dice. What's funny is I also can't find a cpu.o for supervisor/cpu.s. But if that wasn't being generated, wouldn't it mess up the whole build? That's used to fetch registers for the stack allocation.