Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.
SysLink MMU Support
This article describes how users of various devices can enable slave-side MMU when using SysLink. It applies to the 2.00.00.78 GA release and compatible.
Default MMU settings
In SysLink 2.x, the default MMU enable settings vary per device:
- OMAP3 - the DSP MMU is enabled
- TI816X - L2 MMU is disabled, DEMMU (also known as the System MMU) is disabled
- TI814X - L2 MMU is disabled, DEMMU (also known as the System MMU) is disabled
- OMAP-L138 - the DSP doesn't have an MMU (so it's disabled and can't be changed)
Changing the Default
To modify the default setting, you must assign the
SysLink_params variable (a String var defined in SysLink.h) prior to the first app's call to
SysLink_setup(). Typically, slaveloader (or similar) is used to load slaves, and is the first app to call
SysLink_setup(), so this change is done in slaveloader. To enable an MMU on a device where the default is disabled, you would modify slaveloader like this:
#include <ti/syslink/SysLink.h> /* Enable the L2 MMU on TI81XX devices */ SysLink_params = "ProcMgr.proc[VPSS-M3].mmuEnable=TRUE;"; SysLink_setup();
Modifying the Virt/Phys Memory Map
To add virt/phys memory map regions, the
ProcMgr_unmap() APIs are provided.
The slaveloader example provides a nice feature to provide this virt/phys map via a well-formed text file - commonly referred to as 'memmap.txt' - though it can be named anything.
The syntax for memmap.txt is described in the examples included in the slaveloader example directory. As you can see, it closely reflects the underlying
# Comments are ok, with a '#' as the first char in a line # Addresses and masks are typically set in hexidecimal # Format is "procName, slaveVirt, slavePhys, mastPhys, size, mask, cache" # # mask values can be a bitwise OR of these values: # * 0x1 - MasterKnlVirt # * 0x2 - MasterUsrVirt # * 0x4 - SlaveVirt # # cache value can be 0 or 1. It is only used when mask bits 0x1 or 0x2 are # set, and it indicates whether the region will have the cached enabled # on the Master processor. (The slave processor's cacheability of each region # is typically set via the slave OS's configuration scripts) # * 0 - non-cached # * 1 - cached # DDR (code/data) - 8 MB, MasterKnlVirt | SlaveVirt, noncached VIDEO-M3, 0x8F000000, 0x8F000000, 0x8F000000, 0x700000, 0x5, 0 # SR#0 - 16 MB, MasterKnlVirt | SlaveVirt, noncached VIDEO-M3, 0x8E000000, 0x8E000000, 0x8E000000, 0x1000000, 0x5, 0 # SR#1 - 12 MB, MasterKnlVirt | SlaveVirt, noncached VIDEO-M3, 0x8D000000, 0x8D000000, 0x8D000000, 0xC00000, 0x5, 0 # PRCM on L3 - 64 KB, MasterKnlVirt | SlaveVirt, noncached VIDEO-M3, 0x480C0000, 0x480C0000, 0x480C0000, 0x10000, 0x5, 0 # DDR (code/data) - 8 MB, MasterKnlVirt | SlaveVirt, noncached VPSS-M3, 0x8F800000, 0x8F800000, 0x8F800000, 0x700000, 0x5, 0 # SR#0 - 16 MB, MasterKnlVirt | SlaveVirt, noncached VPSS-M3, 0x8E000000, 0x8E000000, 0x8E000000, 0x1000000, 0x5, 0 # SR#1 - 12 MB, MasterKnlVirt | SlaveVirt, noncached VPSS-M3, 0x8D000000, 0x8D000000, 0x8D000000, 0xC00000, 0x5, 0 # PRCM on L3 - 64 KB, MasterKnlVirt | SlaveVirt, noncached VPSS-M3, 0x480C0000, 0x480C0000, 0x480C0000, 0x10000, 0x5, 0
Open Issues and Notes
- While SysLink's slaveloader example provides the ability to pass a 'memmap.txt' file, SysLink users that don't use slaveloader will have to explicitly call
ProcMgr_map()- potentially inventing their own memmap.txt-like parsers. If there's enough interest, slaveloader's memmap.txt parsing may be promoted into a formal SysLink API (e.g.
- In the 2.00.00.78 GA release, the slaveloader app must be modified and rebuilt to change the enable/disable setting from the platform-specific defaults. In the 2.00.01.79 GA release, the SL_PARAMS environment variable can be set to override the built it
SysLink_paramsvariable, removing this modify/rebuild step. This was tracked as SDOCM00082640.
- As of SysLink 2.20, enabling the TI81XX DEMMU (also known as the System MMU, used by the DSP) is not supported. This is tracked as SDOCM00080419, which is not currently planned.