L4Re/L4Android specify RAM size on Beagleboard

giowck giowckln at googlemail.com
Wed Sep 14 14:09:01 CEST 2011


Hi,

On 08.09.2011 23:50, Adam Lackorzynski wrote:
> Hi,
>
> On Wed Sep 07, 2011 at 09:01:16 +0200, giowck wrote:
>> when running L4Linux/L4Android on the Beagleboard (rev. C4), only 128MB of
>> 256MB RAM are detected by the bootstrap process.
>>
>> Here [1] you write that the older Beagleboard has only 128MB, so this is
>> default setting.
>>
>> As described in that thread, I tried to create the Makeconf.boot file, and it
>> works so far (image is build with 256MB RAM),
>> but still only 128MB are actualy detected (limited by scan):
>
> I suppose u-boot is saying 256MB?
>
>> L4 Bootstrapper
>>   Build: #30 Di 6. Sep 14:38:47 CEST 2011, 4.5.1
>>   Scanning up to 256 MB RAM
>>   Memory size is 128MB (Limited by Scan) (80000000 - 88000000)
>>   RAM: 0000000080000000 - 0000000087ffffff: 131072kB
>>   Total RAM: 128MB
>>
>> Please see [2] for the full bootstrap log.
>>
>> I already tried to adjust manually the support.h and startup.cc file in the
>> src/l4/pkg/bootstrap/server/src directory, resulting
>> exactly the same issue.
>
> What did you change? You removed the scan-function and hard-coded 256?
>

Now I got it working, thanks to Michael Weiß from the Fraunhofer AISEC, 
who gave me the following patch, addressed to 
src/l4/pkg/bootstrap/server/src/platform/omap.cc:

--- omap.cc            2011-06-22 16:44:06.000000000 +0200
+++ omap.bb256.cc    2011-09-09 09:13:04.012093265 +0200
@@ -18,9 +18,24 @@
  #include "support.h"
  #include <l4/drivers/uart_omap35x.h>

+#define BB_256
+
  namespace {
+#ifdef BB_256
+class Platform_arm_omap : public Platform_base
+{
+  void setup_memory_map(l4util_mb_info_t *,
+                        Region_list *ram, Region_list *)
+  {
+    ram->add(Region::n((unsigned long long) 0x80000000,
+                       (unsigned long long) 0x90000000,
+                       ".ram", Region::Ram));
+  }
+#else
  class Platform_arm_omap : public Platform_single_region_ram
  {
+#endif
+
    bool probe() { return true; }

    void init()


>> By the way, I think this is causing L4Android to fail during boot, since memory
>> is not correctly allocated:
>> android | l4x_setup_memory: Can't get main memory of 256MB!
>
> Even if the overall system would have 256MB of RAM, how could a single
> program/VM alone get that amount?

Yes, you're right. Indeed changing the boot args for l4android solved 
the issue.


>
> Adam

Thanks
Giorgio




More information about the l4-hackers mailing list