Most recent activity
-
PS: I take old 2v22 thus modern versions compiles into ELF file with broken LMA/VMA table but I don't have time to fix it (all source code debug info bounded to zero address etc)
That looks related to your previous conversation https://forum.espruino.com/conversations/401187/
There is nothing wrong at having the code linked to address 0. It is not broken as already explained there. If for some reason you want to have it at 0x08000000 it is possible and was described there how to do that - the NUCLEOF401RE board uses such configuration.I just compiled STM32F4DISCOVERY target which is linked to address zero too and in the lst file I see
bin/espruino_2v25.20_stm32f4discovery.elf: file format elf32-littlearm bin/espruino_2v25.20_stm32f4discovery.elf architecture: armv7e-m, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED start address 0x00000c01 Program Header: LOAD off 0x00001000 vaddr 0x00000000 paddr 0x00000000 align 2**12 filesz 0x0006cf90 memsz 0x0006cf90 flags r-x LOAD off 0x0006e000 vaddr 0x20000000 paddr 0x0006cf90 align 2**12 filesz 0x0000011c memsz 0x00012c5c flags rw- private flags = 0x5000200: [Version5 EABI] [soft-float ABI] Sections: Idx Name Size VMA LMA File off Algn 0 .isr_vector 00000188 00000000 00000000 00001000 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA 1 .ARM 00000008 00000188 00000188 00001188 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 2 .text 0006ce00 00000190 00000190 00001190 2**3 CONTENTS, ALLOC, LOAD, READONLY, CODE 3 .data 0000011c 20000000 0006cf90 0006e000 2**3 CONTENTS, ALLOC, LOAD, DATA 4 .bss 00012b3c 20000120 0006d0b0 0006e11c 2**3 ALLOC 5 .ARM.attributes 0000002e 00000000 00000000 0006e11c 2**0 CONTENTS, READONLY
and it looks like both VMA and LMA are correct, they point to 0 where the code really is, so there is nothing to fix with VMA/LMA. If you still have some issue with that, then maybe continue in that previous conversation you created.
-
What I need is enabling block allocation mode but build fw with three precompiled blocks:
So you don't actually need resizable vars with its dynamic memory allocation, you need just 3 fixed separate blocks right from the start.
sbrk
is method to allocate memory (maybe malloc calls it internally?) - you don't need this to solve your problem?I don't think there is a solution for this combination but it could be useful. I'd like to have something similar on nrf52 too, currently the most simple way used for nrf52 and stm32 is (one) big static
jsVars
array which is put randomly somewhere by the linker just like any static variable. What I used before with nrf52 is to put it into fixed memory area - not malloc'ed but also not static array variable. What you want is advanced variation of this with 3 blocks. it could be implemented like RESIZABLE_JSVARS blocks but still fixed and all 3 created at startup instead of allocating dynamically. -
Can you think of any other communications methods you'd want (or just Web Serial/Bluetooth?).
Well in addition to WebRTC as mentioned above, the SWD/RTT one over dapjs/rtt https://github.com/ARMmbed/dapjs/blob/master/examples/rtt/rtt.js could be one more in future, if it is not solved in hardware dongle by translating to plain usb serial. Integrating connection via rtt.js into IDE would allow unmodified SWD debug probes work with SWDCON console without any complicated setups (like running openocd + espruino command line IDE proxy). And having only IDE working but not the app loader is only half of the solution.
For some reason I hadn't considered using the Web IDE's communications libraries before.
Do you know why? Currently Gadgetbridge has builtin app loader integrated that is reusing the connection. It would also make similar sense from PC side - having Web IDE (or the command line espruino) connected and launch app loader from that and reuse the same connection.
-
I've seen some slight difference indoors, one more wall/few meters more works with RSSI over 100.
So for now advertising over coded phy should work and I think there is no way to improve range more in software.
However there are some other missing features see https://github.com/espruino/Espruino/issues/2465
- connections over coded phy do not work
- extended advertising - advertise more data than 31 bytes (there is no scan response possible over coded phy so less data fits - only 31 instead of 31+31)
for both SD140 6.1.x is needed
- connections over coded phy do not work
-
additionally it would be nice if apploader shared the same code/library as the IDE itself for making the connection so it could use also serial/usb (for non-BLE espruinos like stm32) and possibly also the newly added SWD console (for Bangle 2 over cable) that could use dapjs/webusb or also usb serial (via translation in SWD debug dongle)
-
I'm thinking to buy a hot air gun as well
there are very cheap ones that don't even have temperature control nor air flow control, then the next level is something like this
https://www.aliexpress.com/item/4000525251154.html
I have it, it works, I used it few times without issues. It has three types of nozzles and turns automatically off when you put it into holder/stand and has both temperature and air flow control. It may not be professional for daily use, but for hobbyist it may be enough (=not sure about longevity of the heater element if used frequently). I got it 2 years ago for US $23.38 (with some aliexpress discount code).
EDIT: I see now it is cheaper from other sellers, e.g. https://www.aliexpress.com/item/1005002350207714.html -
OK, so maybe you could test one of those two to see which one it is?
I am attaching them directly, they are unpacked from artifacts linked above and renamed. I'd start with nodcdc, if that works no need to try the other one. I really don't know but just guess that if 32kHz crystal was missing it would just freeze and reboot later by watchdog.
Also, at present the battery drained to about 20% in a little over four days, and every time I switch a screen the percentage will change a little bit both up and down. I fully charged it yesterday afternoon and it is now at 84% after probably 20 hours of wear. Is that normal or related to the issues I'm having?
It really depends how much you use it. If you are testing it then maybe you use it more now than average user would. I think just wearing it connected to phone could last a week or more. If HR sensor or GPS is used then maybe less.
Battery going a bit up and down is normal. If there is big power draw by enabling something like GPS or even running some app that is heavily using CPU the battery voltage goes down and then recovers a bit when watch is idle. The percentage is just computed from voltage.
-
And fanoush that firmware you made - that's just disabling the 32kHz oscillator and DC-DC converter?
yes, I just disabled both. Then I made another two for disabling each one but not sure @user159420 tried those. The builds on github are now expired but direct links to artifacts still work.
As I understand it the standard firmware just reboots in a loop with LOCKUP message and the one with those two features disabled works. It came with standard firmware, then @user159420 tried to update firmware to fix the reboot loop and for a while got BANK0 INVALID due to bad update, then managed to update correctly so the message is gone but still got reboots and then firmware with disabled DC/DC+32kHz crystal finally helped to get out of the loop.
-
Short the RST to GND 2x and the drive appears.
As mentioned (in a bit cryptic way) you can also run
poke32(0x4000051c,0x57)
from Espruino to reboot into bootloader when you plan to update. Or possibly something likesetTimeout(()=>{poke32(0x4000051c,0x57)},5000);
if one wants some time to properly disconnect.Just tried and when USB is not connected it reboots back to Espruino after few seconds, but when it is plugged to USB it stays in bootloader and drive appears.
That's a builtin class, not module https://www.espruino.com/Reference#Graphics