I have an embedded board with 512MB of RAM running Linux 2.6.29 and UBoot bootloader. But the kernel is able to utilize only 128MB of RAM.

I tried changing the value of XCODE_MEMSIZE, which I think determines how much RAM the kernel uses.

When I set it to 512, the kernel crashes while booting up. Is there any other configuration parameter that needs to be changed?

  • Can you be more specific regarding the crash you mention? What do you see on screen? Any errors? – Straphka Sep 26 '11 at 8:47
  • And what board is it? – Gilles 'SO- stop being evil' Sep 26 '11 at 23:27
  • Really need to provide more details about 'only able to use 128MB'. It sounds like something has been limited somewhere (stack size per user, etc). – polynomial Oct 2 '11 at 4:43
  • how much memory is u-boot detecting? Does it detect the whole of 512MB? – freethinker Dec 8 '11 at 8:22
  • What does cat /proc/cmdline tell you on your board? – Ankur Agarwal May 25 '12 at 2:00

Without more specific knowledge of your embedded board two things come to mind.

  1. Try kernel mem= boot parameter. (I think sometimes the memory might be available from non-continous address so you might have to use something like this, but the addresses will be have to be checked per you mobo.

    mem=512M@0 mem=256M@0x80000000 mem=256M=0xc0000000

  2. Do you have embedded graphics card? That might take out a chunk of your available ram. If you can get to the bios or equivalent, check that.

@see Kernel paramters for more information on mem=

| improve this answer | |
  • You may need to specify a value less than 512M - perhaps there's a device or something at or near physical address 0x20000000 (512M) in the board's memory map, which, you should get a copy of to know where the RAM lives on your board. – LawrenceC Sep 18 '12 at 19:32

I guess you should increase RAM Disk size in your kernel.

| improve this answer | |

In addition to the other posts about being more specific, I would also suggest unmounting /dev/shm if it is mounted. That is a ramdisk filesystem and eats into your ram.

Also take a look at the sysctl command in linux. Doing something like sysctl -w kernel.shmmax="<some number>" changes the kernel while it's running.

| improve this answer | |
  • 4
    /dev/shm uses barely any memory if its empty. It will only start using ram once files are loaded into it. – Patrick Jan 6 '12 at 0:35
  • /dev/shm is nothing but implementation of traditional shared memory concept. It is an efficient means of passing data between programs. One program will create a memory portion, which other processes (if permitted) can access. This will result into speeding up things on Linux. – Satish Jan 3 '13 at 16:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.