Open main menu

DAVE Developer's Wiki β

Changes

Memory organization (Naon)

934 bytes added, 14:12, 14 December 2018
SPI NOR Flash
{{InfoBoxTop}}
{{AppliesToNaon}}
{{Applies To Maya}}
{{AppliesToDido}}
{{InfoBoxBottom}}
== Introduction ==
Naon memory organization and mapping is quite complex, due to DM8148's multiprocessor nature and the availability of several memory devices on connected to the processor. This section will provide an overview of such architecture while following sections will describe in more detail memory map for each device. Please refer to [[Naon_SOM#Module_overview:Category:Naon|Naon block diagram]].
About system RAM, DM8148 provides two controllers. Each one can be interfaced to one SDRAM bank through a physical interface called EMIF (EMIF0 and EMIF1). EMIF0 is connected to 32-bit DDR2 SDRAM bank (up to 512 MByte). EMIF1 is not connected to any device, hence is permanently disabled.
This memory map is statically defined in various places, so the user has a limited options in changing this. Anyway it's useful to know how this memory is shared between the various processors to develop correctly the end-user multimedia application and to know exactly how much memory a processor can use.
Please download the [http://www.dave.eu/download/restricted/naon/nelk/1.0.0/doc/reserved-area NAON-Memory-Map.xls ods] spreadsheet to view the memory map. The region are named exactly as in [http://processors.wiki.ti.com/index.php/EZSDK_Memory_Map EZSDK Memory Map]
{{Board Specific Information|text=Memory map spreadsheet also include non-volatile memory mapping: it also ease resize operation of those memories}}
|-
|80000
|30724096|300000400000
|Linux Kernel
|-
|380000480000|512028160|5000001B80000
|FREE
|}
|-
|0
|0,25125|4000020000
|U-boot 1st stage
|-
|4000020000
|0,25
|40000
|U-boot 2nd stage
|-
|8000060000|0,25125|4000020000
|U-Boot env1
|-
|C000050000|0,25125|4000020000
|U-boot env2
|-
|100000A0000|2,54|280000400000
|Linux Kernel
|-
|3800004A0000|127123,375|7F000007B60000
|File System (small)
|-
|82800008000000
|896
|38000000
|File System (big)
|}
 
=== Kernel Command Line parameters ===
 
Some parameters should be passed to the Linux kernel via command line. Here is a brief explanation of them and their an example of use (taken from the current default memory map):
 
* <code>mem=xxxM</code> set the maximum memory given to Linux kernel. In this way the kernel does not use all the memory found and leave memory for Cortex-M3. E.g. <code>mem=176M</code>. In the Naon Memory Map is called ''LINUX_MEM_1''.
* <code>vram=xxxM</code> set the size of memory reserved for video ram (framebuffers). E.g <code>vram=46M</code>. See the [[Memory organization (Naon)#Change_FB_size|Change FB size]] section below.
* <code>notifyk.vpssm3_sva=address</code> address of notify memory for HDVPSS. E.g <code>notifyk.vpssm3_sva=0xBF900000</code>In the Naon Memory Map is called ''HDVPSS_NOTIFY_MEM''
 
Always refer to the Naon Memory Map for the correct value to use.
=== User Options ===
Without rebuilding Media Controller Firmware (which needs NDA from TI or Dave '''DAVE Embedded Systems''' support) user can change some memory map parameter on the fly.
==== Change FB size ====
Current LELK NELK support up to 3 Frame Buffers. See [[Frame Buffer Management -Naon-]] for more information regarding NELK Frame Buffers.
User can choose how much of Linux kernel memory give to the frame buffer driver and how to divide this memory into the 3 available frame buffer.
E.g. to use 46MiB of RAM for 3 frame buffer, divided in 24MiB for fb0, 16MiB for fb1 and 6MiB for fb2, use:
* <code>vmemvram=46M</code> as command line parameter
* <code>modprobe ti81xxfb vram=0:24M,1:16M,2:6M</code> command to load fb module
User that needs more Linux user space memory and needs only one frame buffer, can, for example, use 6MiB of RAM used only by the first FB, so:
* <code>vmemvram=6M</code> as command line parameter
* <code>modprobe ti81xxfb vram=0:6M</code> command to load fb module
Please note that <code>ti81xxfb</code> is usually loaded at startup from <code>/etc/init.d/load-hd-firmware.sh</code>: user that would like to change the default configuration should change this file.
dave_user
66
edits