|
Could be for reassurance - when ours gets worried he tends to be a lot closer than he normally is. Cats don't show pain, they tend to hide in the dark, get angry when you look for them, and hope it goes away instead. Is he eating?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
He's eating a bit, moving OK. I managed to grope him all over this morning without any unusual reaction. He's not hiding out, but definitely not his usual lively self. (But then neither am I right now!)
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|
|
Peter_in_2780 wrote: smashing a concrete garden tub You must be more careful than that!!!
No reason to vandalize the tub
I hope you are all good...
"The only place where Success comes before Work is in the dictionary." Vidal Sassoon, 1928 - 2012
|
|
|
|
|
All good in the morning, thanks. Don't tell herself, but I never did like that tub, particularly in that location.
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|
|
The ESP32 is a little SoC with wifi and bluetooth, (usually) dual cores, and about 320kB of usable RAM, plus 4MB of flash for programs and data.
That's all well and good, and if you use FreeRTOS with it, you get multithreading and other more advanced features.
Great. However, the bluetooth software stack is relatively large. Using it, plus WiFi, plus Over The Air update support leaves basically no room for program code, so usually you have to choose between OTA and Bluetooth.
So Espressif, the folks that make this little widget went and released the WROVER model which i thought had 8MB instead of 4MB of program storage.
Nope.
It has 4MB of program storage, and (get this!) about 300+kB of core RAM + 4MB of PSRAM usable as RAM but a separate memory module and mem controller mapped over one of the SPI buses.
What is the point of having more RAM than non-volatile storage? Especially on a system where you already have to disable features to fit all of your program and data stuff into flash.
And who needs 4MB of RAM on a system like this anyway? The only real use case I can think of is an off screen frame buffer for graphics but it doesn't transfer fast enough from RAM to the display to make that worthwhile.
I'm at a loss. Why didn't they just map an extra 4MB of program storage instead of tying up a bus and giving us 4MB of RAM I have no earthly idea what to do with?
I only bought this little monster vs. the standard model because it comes with an integrated JTAG debug probe but i could do without the 4MB of RAM. I'll never use it.
Real programmers use butterflies
|
|
|
|
|
Ehr..
4 Mb is nothing?
And under Windows, there's virtual memory, meaning as much swap as there is discspace? Insert USB of 32 Gb.
The only real usage I can think for of 4 Mb is an ancient machine that should be torched. Please explain why it is important? In simpler terms?
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
This is an embedded system. It's a tiny system-on-a-chip meant for driving IoT creations.
It doesn't need 4MB of RAM. In fact I can't think of really any scenario where you'd need more RAM than non-volatile storage space on most any system. This WROVER kit has 4MB of program/data storage and just over 4MB of RAM
It's just silly, and if nothing else - lopsided. 8MB of flash + 4MB of RAM might be reasonable for certain scenarios but 4MB of flash + 4MB of RAM, what can anyone even do with that?
Real programmers use butterflies
|
|
|
|
|
Quote: In fact I can't think of really any scenario where you'd need more RAM than non-volatile storage space on most any system.
Data logging is such a scenario. One of my applications needed to log GPS positions of an asset for a long time until a technician would come and download the data.
Mircea
|
|
|
|
|
I mean, my current device does that, but it logs to flash, not RAM.
Real programmers use butterflies
|
|
|
|
|
I suppose you have analyzed the number of write operations and you aren’t wearing down your flash.
Mircea
|
|
|
|
|
The flash uses wear leveling. It should be fine.
Real programmers use butterflies
|
|
|
|
|
At 4MB capacity it's probably using NOR flash on a huge process size and has zillions of rewrites before it will go bad.
The 32MB(??) SPI flash I used a half dozen years ago was on a process chunky enough that ECC was optional not mandatory (although enough extra bytes/block were provided to allow easy implementation of the algorithm provided on the data sheet); and was IIRC rated for 100k or 1M rewrites.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
--Zachris Topelius
Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies.
-- Sarah Hoyt
|
|
|
|
|
Quote: At 4MB capacity it's probably using NOR flash
Good point!
Mircea
|
|
|
|
|
4 Mb is a lot for a normal application; if you discount the .net runtime. Delphi 3 here.
honey the codewitch wrote: It doesn't need 4MB of RAM. In fact I can't think of really any scenario where you'd need more RAM than non-volatile storage space on most any system. Well; if you'd need to load the debug info..
honey the codewitch wrote: It's just silly, and if nothing else - lopsided. 8MB of flash + 4MB of RAM might be reasonable for certain scenarios but 4MB of flash + 4MB of RAM, what can anyone even do with that? We flew to the moon on less than 1 Mb.
The device does not support SSD? Sockets?
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
It does not support SSD. Bus speed is around 40Mhz on a good day. Sometimes 80Mhz with a multiplier and dedicated I/O hardware
Real programmers use butterflies
|
|
|
|
|
Even a modern watch does more.
What device?
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
It's an ESP32. The chip itself can operate up to 240Mhz but its external SPI buses (of which it has 2) are limited to clock multipliers of 40MhZ, up to I think 80Mhz at 2x clock multiplier, but don't quote me. I'm pretty sure 80Mhz is the max under normal circumstances, but I've heard scuttlebutt on some forums about hacking it to go faster.
Also, the ESP32 has some dedicated MMC and "High Speed" SD reader dedicated hardware so i think if you use the right reader modules (the kind with 4 data pins) you can get higher than 80Mhz effective transfer rates.
This is all pieced together from memory and what I've picked up here and there online so again, don't quote me.
It's not very fast though. With my non-fancy SD reader I was only getting like 75kBps throughput.
I know it can go a lot faster than that though. MB/s with the right setup and doing raw sector writes to the SD instead of using a filesystem, but I've never done it.
Real programmers use butterflies
|
|
|
|
|
honey the codewitch wrote: It's an ESP32 So not up to the task.
Invest more in your hardware. And I come from the Amiga-period. Half a megabyte was a luxury.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
It depends on the task. Honestly as IoT devices go, it's plenty capable. That's one of the reasons I use it.
Real programmers use butterflies
|
|
|
|
|
honey the codewitch wrote: It depends on the task. Honestly as IoT devices go, it's plenty capable. That's one of the reasons I use it. More capable devices available.
Not buying. Not even the story. And show the task? We could help?
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
I'm not going to present proprietary device stuff here, especially since I don't need help with it.
It works fine.
The WROVER more just leaves me scratching my head in terms of why they configured it the way they did. I have no problem using it.
As far as you not buying it? Don't. No skin off my nose. The device is used in several commercial applications. Not everything is arm, and frankly, arms aren't that impressive to begin with.
Real programmers use butterflies
|
|
|
|
|
honey the codewitch wrote: 4MB of flash + 4MB of RAM, what can anyone even do with that? 8051 was a quite nice embedded CPU.
When I started working on the 8051, the first application I programmed (in c - we never used c++) - for running a number of tests on the radio peripheral - filled 1103 bytes. I had been given a budget of 1200 bytes: If I exceeded that, the the system would have to be shipped without the radio test software, which would be very unfortunate. (We are talking about Bluetooth LE, Direct Test Mode - DTM.)
Sure: This is 11 years ago. Yet we are talking about a factor of almost 4000. Then I find the question "what can anyone even do with that?" sort of ... let me call it "out of place".
Now, although DTM was run as a standalone application, it was activated through special input hardware input signals. The rest of the 16 bit address space was occupied by the "normal" IoT application (even thought the IoT term wasn't invented then). This 8051 actually had a huge address space: The upper 16 Ki could be bank switched among 4 banks, so the total code space was 48 + 4*16 Ki byte, 112 Kibyte total. So you might say that calling it a factor of 36 in available code space would be more correct, even though the DTM application filled less than a percent of the available space.
|
|
|
|
|
I'm sorry I wasn't more clear. It isn't the total space that's irksome to me but rather the ratio of RAM to non-volatile storage. I run out of flash to store my program code in practice. I don't run out of RAM. And I'm far from the only one. One of the most frequent complaints around on the forums is not having enough flash to store code that uses all of the features of the ESP32 chip. IOW, the software stack necessary to support the entire hardware stack will not fit on the flash.
Hence my issue. Why did they add 4MB of RAM when people really need another 4MB of flash instead!
Real programmers use butterflies
|
|
|
|
|
Couldn't you simply pretend that half of the RAM isn't there?
Right now, my desktop PC uses less than 3 GiByte out of 16 GiB RAM - more than 80% is unused. Half of my disk space is currently unused. Except in a few extreme cases, over any one-hour interval, my Internet connection is used less than one percent. It doesn't bother me.
If your real problem is lack of flash space, then forget everything about RAM and focus on the flash. Either, switch to a larger device, or revise your system architecture.
In another post, you tell that you do data logging to flash - so you are not running out of code space, but of data space. To answer your headline question: 'They' were thinking that flash is for code, RAM is for data. Actually, that is a quite common approach! For persistent storage, one commonly uses external devices, not CPU internal code space. Maybe you should consider thinking the same way.
|
|
|
|
|
Unfortunately not. There are a finite amount of external buses and general purpose I/O pins.
The PSRAM ties up a bus and several pins. The bus particularly, is a major loss.
Real programmers use butterflies
|
|
|
|