The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
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
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.
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.
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?
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?
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
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.
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!
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.
Last Visit: 31-Dec-99 18:00 Last Update: 14-Apr-21 21:25