• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Help Galaxy; How much RAM? 96MB, 109MB, 128MB, 192MB?

Russ Dill

Member
Jul 31, 2009
94
3
I have a lot of conflicting information about the amount or RAM the i7500 has.

GSM Arena says 128MB:
Samsung I7500 Galaxy - Full phone specifications

kam187 claim's that he has checked himself and it is 192MB.

dmesg on my phone states:
[ 0.009403] Memory: 109MB = 109MB total
[ 0.009436] Memory: 95656KB available (4000K code, 1220K data, 128K init)

busybox free claims:
total used free shared buffers
Mem: 96104 94396 1708 0 1088
Swap: 0 0 0
Total: 96104 94396 1708

which jives with what the kernel reports.

/proc/iomem shows:
10000000-16cfffff : System RAM
10028000-1040ffff : Kernel text
10410000-105411fb : Kernel data

which amounts to 109MB total, 1600kb text, 1220kb data, or total - text - data = 106MB.

For good measure, here is /proc/meminfo
MemTotal: 96104 kB
MemFree: 2112 kB
Buffers: 560 kB
Cached: 16672 kB
SwapCached: 0 kB
Active: 74400 kB
Inactive: 5256 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 36 kB
Writeback: 0 kB
AnonPages: 62456 kB
Mapped: 14640 kB
Slab: 6164 kB
SReclaimable: 1536 kB
SUnreclaim: 4628 kB
PageTables: 4428 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 48052 kB
Committed_AS: 1316184 kB
VmallocTotal: 409600 kB
VmallocUsed: 69872 kB
VmallocChunk: 300028 kB
 
Remember 32mb minimum is used by the radio image. I havnt seen a general release qualcomm MSN7200A image thats less than about 40mb so thats probably more realistic. There's also a bunch used for surfaces and other buffers. So if linux is seeing 109mb there must be AT LEAST 109 + 32 = 141mb + other buffers, and probably 109mb + 40mb = 149mb + other buffers.

The MSM7200A die's come with 64mb or 32mb ram built in. The radio image can only reside in the internal RAM and not the external one. That means the phone must have at least 128mb + 64mb = 192mb of total ram if the radio image is 40mb.
 
Upvote 0
Remember 32mb minimum is used by the radio image. I havnt seen a general release qualcomm MSN7200A image thats less than about 40mb so thats probably more realistic. There's also a bunch used for surfaces and other buffers. So if linux is seeing 109mb there must be AT LEAST 109 + 32 = 141mb + other buffers, and probably 109mb + 40mb = 149mb + other buffers.

The MSM7200A die's come with 64mb or 32mb ram built in. The radio image can only reside in the internal RAM and not the external one. That means the phone must have at least 128mb + 64mb = 192mb of total ram if the radio image is 40mb.

It seems very hackish to not tell kernel about memory reserved for the radio, but I can understand the motivation. But as far as other buffers, the kernel would definitely need to know about them since it would have to read/write to them. A frame buffer (or other buffers) isn't very useful if it can't be written to. A 320x480 screen at 32bits per pixel needs to be backed by a mere 600k.

If some Galaxy's have 192MB total and some have 160MB total, I'd certainly like to know about it. Mine says "CPU: ARMv6-compatible processor [4117b362] revision 2 (ARMv6TEJ), cr=00c5387f"

btw, news of the moment, i7500 unlocked on newegg, 589 w/free shipping (newegg claims 128MB ram incidentally)
 
Upvote 0
PRINT_TITLE()
{
echo "###################################################"
echo " MSM7201A Android Kernel build"
echo " you choose HW_REVISION = $HW_REV "
echo " you choose 7200A MEMORY SIZE = $MEM_SIZE "
echo " ------------------------------------------- "
}

Apparently, there are at least 2 hardware revs. Rev 03 has 32MB on die, Rev 05 has either 32MB or 64MB on die.

build_kernel_Rev03_32M.sh
build_kernel_Rev05_32M.sh
build_kernel_Rev05_64M.sh
 
Upvote 0
PRINT_TITLE()
{
echo "###################################################"
echo " MSM7201A Android Kernel build"
echo " you choose HW_REVISION = $HW_REV "
echo " you choose 7200A MEMORY SIZE = $MEM_SIZE "
echo " ------------------------------------------- "
}

Apparently, there are at least 2 hardware revs. Rev 03 has 32MB on die, Rev 05 has either 32MB or 64MB on die.

build_kernel_Rev03_32M.sh
build_kernel_Rev05_32M.sh
build_kernel_Rev05_64M.sh

how do you know which revision you are on?
 
Upvote 0
Remember the MSM chipset is an all in one app processor. It has baseband, bluetooth, app cpu, wifi baseband etc all built in. (Of course the analogue basebands are external)

The internal memory of the 7200A is used to map various buffers that all these things use. Memory is then attached on an external bus to expand this memory. However the MMU cannot map certain things to this external bus. Its a limitation by design.

When I say framebuffer I am not talking about the buffer exposed to linux but internal buffers used for things like 3d acceleration. For example your 256mb ATI graphics card on your PC doesnt have a 256mb frame buffer :)

It is highly unlikely that there are 32mb and 64mb revisions out there. They will all either be 32mb or 64mb. I just had a look at a firmware image and amss section is 20mb, but that is most likely compressed.

Its possible they are using the 32mb die, but in my opinion very unlikely.

Remember because of the nature of these integrated APP processors ALL memory is shared by the peripherals. Its not dynamic but staticly allocated by the MMU.
It seems very hackish to not tell kernel about memory reserved for the radio, but I can understand the motivation. But as far as other buffers, the kernel would definitely need to know about them since it would have to read/write to them. A frame buffer (or other buffers) isn't very useful if it can't be written to. A 320x480 screen at 32bits per pixel needs to be backed by a mere 600k.

If some Galaxy's have 192MB total and some have 160MB total, I'd certainly like to know about it. Mine says "CPU: ARMv6-compatible processor [4117b362] revision 2 (ARMv6TEJ), cr=00c5387f"

btw, news of the moment, i7500 unlocked on newegg, 589 w/free shipping (newegg claims 128MB ram incidentally)
 
Upvote 0
Remember the MSM chipset is an all in one app processor. It has baseband, bluetooth, app cpu, wifi baseband etc all built in. (Of course the analogue basebands are external)

The internal memory of the 7200A is used to map various buffers that all these things use. Memory is then attached on an external bus to expand this memory. However the MMU cannot map certain things to this external bus. Its a limitation by design.

When I say framebuffer I am not talking about the buffer exposed to linux but internal buffers used for things like 3d acceleration. For example your 256mb ATI graphics card on your PC doesnt have a 256mb frame buffer :)

It is highly unlikely that there are 32mb and 64mb revisions out there. They will all either be 32mb or 64mb. I just had a look at a firmware image and amss section is 20mb, but that is most likely compressed.

Its possible they are using the 32mb die, but in my opinion very unlikely.

Remember because of the nature of these integrated APP processors ALL memory is shared by the peripherals. Its not dynamic but staticly allocated by the MMU.

Still confused though, I'd think that the processor would need a window to read/write to that memory. I suppose I'll have to look more closely at how the msm video driver works. It seems surprising that the platform needs 83MB of memory that the kernel never sees.
 
Upvote 0
Still confused though, I'd think that the processor would need a window to read/write to that memory. I suppose I'll have to look more closely at how the msm video driver works. It seems surprising that the platform needs 83MB of memory that the kernel never sees.

The kernel doesn't see it because the integrated devices take that memory for them selves at start and the kernel has no business mapping out anything there. Everything that is integrated has to use the in-die RAM to function. And there are a lot of integrated parts in the galaxy :)

You don't want to chose whether you want to use GPS and Camera or GPS and Compass. But not all of the 3 together, since there isn't enough free RAM in the die for the components to operate. Galaxy most probably has 192mb of ram.
 
Upvote 0
It doesnt cost that much but ever penny counts when they design phones. A few cents builds up. Remember alot of the final cost includes money to pay for development, marketing, packaging, construction, tax. Also things like RAM and Flash don't have static prices, they fluctuate alot with demand and supply. That makes it extremely dificult, especially when you consider the price of the phone will drop by upto 30% in the first year.

The other thing is after a certain amount of ram you need more address lines to be able to reference it all. This adds routing complexity when you're routing out the PCB.
 
Upvote 0
I think android requires a great deal more RAM than previous Samsung mobile phones. Maybe the person who spec'd this didn't quite understand android?

Or maybe the parts were not available in the design stage. The largest mobile LPDDR part Micron has in production is 2Gb (256MB). I'm not sure if the chip they use is just a single chip, a POP chip, an MCP chip, or an MCP POP chip, but going with those combinations can reduce availability even further.

A quick search of samsungsemi.com clears up the problem. They are not even sampling 2Gb mobile DDR parts. Micron is currently sampling 4Gb parts. I'm guessing that Samsung electronics did not have the options of going with Micron, and thus we are stuck with a 1Gb part.
 
Upvote 0
Yeah, the problem with cutting edge devices that strive to be thiner and thiner is that you have to pick the package at design time. You can't usually footprint multiple parts onto the PCB and then use whatever is available at production time because there just isnt enough space. Its usually easy to say "why didnt they use this part?" and pick some obscure new part. But in reality if that part isnt in mass production, making millions of units of the phone could get very very expensive.
 
Upvote 0
Thats the nice thing about DDR though, the DRAM manufacturers understand this and make pinouts quite stable. Micron's 512Mb part and 4Gb have the same pinout and same number of address lines (13). I think this is just a case of the creators of the Galaxy being tied to a single DRAM manufacturer and that manufacturer not producing a 2Gb part.

So next question, when I order my 4Gb sample from Micron, who is doing reasonably priced BGA re-work and where is the bootloader source so that I can modify it?
 
Upvote 0
lol you're brave :) I havnt seen the inside of the phone, but be very very carefull with reworking on something so small, multi layer and double sided. Make sure you go to someone who works on mobile phones or similar electronics.

I've heard many horror stories where components fall off the other side :p

I don't expect the bootloader source is open source.
 
Upvote 0
lol you're brave :) I havnt seen the inside of the phone, but be very very carefull with reworking on something so small, multi layer and double sided. Make sure you go to someone who works on mobile phones or similar electronics.

I've heard many horror stories where components fall off the other side :p

I don't expect the bootloader source is open source.

Its of course tongue in check. I would like to get some high res pics of the innards to satisfy my curiosity though.
 
Upvote 0
Just to clarify this now that I have checked exactly how/where everything is mapped -

There are 3 memories in the Samsung.

- SMI, 8 Mb on-die stacked memory. When present this memory bank is used for a high speed shared memory interface. When not present regular RAM is used. This is currently ALL allocated to GPU0
Code:
SMI (Internal RAM, 8Mb?)
00100000->00800000 GPU0 (8 Mb)

- SMI64, 64 Mb of RAM internal to the MSM7200A application processor. This is alllocated as follows (in the current kernel)
Code:
SMI64 (Internal RAM, 64Mb)
00000000->01F00000 AMSS?  (31 Mb)  
01F00000->02000000 SHARED  (1 Mb)   (Shared between ARM9/ARM11)
02000000->02800000 MDP    ( 8 Mb)
02800000->03500000 ADSP   (13 Mb)
03500000->04000000 CAMERA (11 Mb)
Its unclear what is in the lower 32 Mb, but it is almost certainly the Radio Bootloader and the AMSS (Baseband)

- EBI, 128 Mb of RAM externally connected to the MSM7200A.
Code:
EBI (External RAM)
10000000->10028000 Kernel
10028000->1040ffff : Kernel text
10410000->105611fb : Kernel data
105611fb->10700000 Kernel (+some free space to make page boundry)
10700000->10F00000 GPU1 (8 Mb)
10F00000->11000000 FB   (1 Mb)
11000000->16D00000 FREE
16D00000->16E00000 SHARED? (1Mb)
16E00000->18000000 AMSS ?(18mb)

The top 1 + 18mb of the EBI are not usable. I think there is another copy of the AMSS here (why?!??!!). So the total usable memory is 0x6D00000 or 109Mb. 8Mb gets allocated to GPU1 and 1Mb to the Framebuffer. 7Mb is used for the kernel, and approx another Mb for Kernel panic buffer, console buffer etc. This leaves us with about 96 Mb of free memory for the Androind syste.

We (Me and Drakaz) are working on rearanging this memory to give us 105Mb of memory available for the system :)

Short answer

The Samsung has 192Mb of Memory + 8Mb of fast memory.

8Mb fast memory is allocated to graphics GPU0
8Mb RAM is allocated to graphics GPU1
32Mb RAM is allocated for Camera, Media processor etc
1 Mb is allocated to the framebuffer (screen buffer)
2 Mb is mapped to be shared
19 + 32Mb is used by the baseband (AMSS)
7 Mb is used by the kernel
96Mb is left usable in android.
 
Upvote 0
All from the kernel sources, cat /proc/iomem, devmem and looking in the AMSS.

The wierd thing is that on other MSM implementations the AMSS is EITHER loaded into low 31Mb SMI64 _OR_ upper EBI. Samsung seem to have done both. I have no idea why!

We should really be able to use all of the 128Mb, and use the lower 31Mb of SMI64 for the baseband. We should also be able to use 2Mb of that 31Mb that is empty because the baseband size is only 19mb + 10mb for bootloaders.

Unfortunatly the kernel can't seem to read the EBI above the 109Mb boundry or the Lower 31Mb of SMI. This might take some findling with the MPU/MMU :(
 
Upvote 0
Oh and i guess people will ask...

MDP - This handles stuff like video playback, MPEG4 playback etc. Decreasing it too much will affect video decoding
ADSP - This will handle digital signal processing, audio etc
CAMERA - I assume this is mostly used for buffering while recording video

We can change these values around and increase GPU memory. We did a few tests and just rough values

GPU1, FPS in neocore
8mb ~ 24fps
16mb ~ 26.6 fps
32mb ~ 27.8 fps

We're doing some tests to see what a good balance is, and then expect a super fast kernel and loads of ram :)
 
Upvote 0
I think whats happened is the bootloader and AMSS have 'protected' the SMI and upper EBI memory. The kernel isnt allowed to read it. We can 'deprotect' it and reuse one of the copies of AMSS, whichever they are not using.

I think you're right, they have used some stock/sample AMSS/bootloader/kernel files and modded them till it 'works'. Crazy!
 
Upvote 0
No it is. The AMSS is stored on the NAND in a partition. It gets loaded into RAM and executed from there.

So Samsung copy it to SMI (0 to 31Mb space), AND also to the top 18mb of EBI. Obviously only one is being executed. We can rellocate one of these areas of RAM as 'free', and see if the radio crashes :p If it does we picked the running copy! We can then use the other copy instead.

The bootloader does the copying, so by the time the kernel gets run, that area is totally unused. However its still left protected because the MPU is still on.

If we configure the kernel to turn off the MPU at start we have access to all RAM again.
 
Upvote 0

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones