1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<HTML> 3<HEAD> 4<META http-equiv="Content-Type" content="text/html; charset=windows-1252"> 5<META http-equiv="Content-Style-Type" content="text/css"> 6<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 7.0.1.0 for Windows"> 7<BASE target="main"> 8<TITLE>System Configuration</TITLE> 9<LINK rel="stylesheet" href="../css/nitro.css" type="text/css"> 10</HEAD> 11<BODY> 12<H1>System Configuration (SCFG) Overview <IMG src="../image/TWL.gif" width="24" height="12" border="0" align="middle"></H1> 13<P>The TWL system has features that can be configured for each hardware block. You can control the existence of a clock supply, compatibility with the Nintendo DS system, and other settings.</P> 14<P>Because NITRO hardware does not include a system configuration (SCFG) block, these functions are generally <FONT color="#ff0000">assumed to be called to run on TWL hardware</FONT>. However, the <A href="scfg/SCFG_GetCpuSpeed.html"><CODE>SCFG_GetCpuSpeed</CODE></A> function has been designed to return the correct value regardless of the environment in which it is called.</P> 15<H2>System ROM Settings</H2> 16 17<BLOCKQUOTE>The TWL system provides 64 KB of ARM9 system ROM for the TWL CPU and 8 KB of ARM9 system ROM for the NITRO CPU. This is switched by the ARM7. The ARM9 can determine which of these settings is in effect.</BLOCKQUOTE> 18<BLOCKQUOTE>This is obtained with the <A href="scfg/SCFG_GetSystemRomType.html" target="_self"><CODE>SCFG_GetSystemRomType</CODE></A> function.</BLOCKQUOTE> 19<H2>Secure ROM Settings</H2> 20<BLOCKQUOTE>You can determine if ARM9 secure ROM is accessible from AHB. This is configured by the ARM7.</BLOCKQUOTE> 21<BLOCKQUOTE>This is obtained with the <A href="scfg/SCFG_IsSecureRomAccessible.html" target="_self"><CODE>SCFG_IsSecureRomAccessible</CODE></A> function.</BLOCKQUOTE> 22<H2>Clock Control for New Blocks</H2> 23<P>The TWL system can control the clock supply to the blocks below.</P> 24<P><B>Camera CAM_CKI</B></P> 25<BLOCKQUOTE>This is set by the <A href="scfg/SCFG_SetCameraCKIClock.html" target="_self"><CODE>SCFG_SetCameraCKIClock</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsCameraCKIClockEnable.html" target="_self"><CODE>SCFG_IsCameraCKIClockEnable</CODE></A> function.</BLOCKQUOTE> 26<P><B>New WRAM (WRAM-A/B/C) Blocks</B></P> 27<BLOCKQUOTE>The <A href="scfg/SCFG_IsClockSuppliedToWram.html" target="_self"><CODE>SCFG_IsClockSuppliedToWram</CODE></A> function gets the state.<BR>This setting is configured by the ARM7 and fixed at startup and cannot be changed.</BLOCKQUOTE> 28<P><B>Camera I/F Block</B></P> 29<BLOCKQUOTE>This is set by the <A href="scfg/SCFG_SupplyClockToCamera.html" target="_self"><CODE>SCFG_SupplyClockToCamera</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsClockSuppliedToCamera.html" target="_self"><CODE>SCFG_IsClockSuppliedToCamera</CODE></A> function.</BLOCKQUOTE> 30<P><B>DSP Block</B></P> 31<BLOCKQUOTE>This is set with the <A href="scfg/SCFG_SupplyClockToDSP.html" target="_self"><CODE>SCFG_SupplyClockToDSP</CODE></A> function, and the state is obtained with the <A href="scfg/SCFG_IsClockSuppliedToDSP.html" target="_self"><CODE>SCFG_IsClockSuppliedToDSP</CODE></A> function.</BLOCKQUOTE> 32<H2>ARM9 Operating Frequency</H2> 33<BLOCKQUOTE>The TWL console can switch the operating frequency for the ARM9 processor to one of the following.<BR><BR>- 67.03 MHz (equal to NITRO) <BR>- 134.06 MHz (double speed) <BR> <BR> This is set by the <A href="scfg/SCFG_SetCpuSpeed.html" target="_self"><CODE>SCFG_SetCpuSpeed</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_GetCpuSpeed.html" target="_self"><CODE>SCFG_GetCpuSpeed</CODE></A> function.</BLOCKQUOTE> 34<BLOCKQUOTE>This is switched safely by running code with necessary empty loops on the ITCM.</BLOCKQUOTE> 35<BLOCKQUOTE>In TWL mode, the frequency becomes double-speed when the process enters the <CODE>NitroMain</CODE> function, and this setting is not changed even by the <A href="../os/init/OS_Init.html"><CODE>OS_Init</CODE></A> function.</BLOCKQUOTE> 36<H2>Access Settings</H2> 37<P><B>System Configuration Block</B></P> 38<BLOCKQUOTE>You can control the SCFG library's access to the system configuration blocks. Access is disabled by the <A href="scfg/SCFG_SetConfigBlockInaccessible.html" target="_self"><CODE>SCFG_SetConfigBlockInaccessible</CODE></A> function.<BR><BR> <FONT color="#ff0000">Once it has been disabled, all configuration blocks (including this access control) become inaccessible. Applications should not normally set this to be disabled.</FONT>Call the <A href="scfg/SCFG_IsConfigBlockAccessible.html" target="_self"><CODE>SCFG_IsConfigBlockAccessible</CODE></A> function to get the current state.</BLOCKQUOTE> 39<P><B>New WRAM (WRAM-A/B/C)</B></P> 40<BLOCKQUOTE>Controls access to the new WRAM (WRAM-A/B/C). This is configured by the ARM7. The ARM9 can get the state with the <A href="scfg/SCFG_IsWramAccessible.html" target="_self"><CODE>SCFG_IsWRamAccessible</CODE></A> function, but cannot change it.</BLOCKQUOTE> 41<P><B>New DMA</B></P> 42<BLOCKQUOTE>Controls access to the new DMA block.<BR>This is set by the <A href="scfg/SCFG_SetNDmaAccessible.html" target="_self"><CODE>SCFG_SetNDmaAccessible</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsNDmaAccessible.html" target="_self"><CODE>SCFG_IsNDmaAccessible</CODE></A> function.<BR>This is set to be accessible in TWL mode by default.</BLOCKQUOTE> 43<P><B>Camera</B></P> 44<BLOCKQUOTE>Controls access to the camera I/F block.<BR>This is set by the <A href="scfg/SCFG_SetCameraAccessible.html" target="_self"><CODE>SCFG_SetCameraAccessible</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsCameraAccessible.html" target="_self"><CODE>SCFG_IsCameraAccessible</CODE></A> function.<BR>This is set to be accessible in TWL mode by default.</BLOCKQUOTE> 45<P><B>DSP</B></P> 46<BLOCKQUOTE>Controls access to the DSP block.<BR>This is set by the <A href="scfg/SCFG_SetDSPAccessible.html" target="_self"><CODE>SCFG_SetDSPAccessible</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsDSPAccessible.html" target="_self"><CODE>SCFG_IsDSPAccessible</CODE></A> function.<BR>This is set to be accessible in TWL mode by default.</BLOCKQUOTE> 47<H2>Extended Feature Settings</H2> 48<P><B>INTC Circuit</B></P> 49<BLOCKQUOTE>The ARM9 interrupt controller can be configured to use extensions.<BR>This is set by the <A href="scfg/SCFG_SetIntcExpanded.html" target="_self"><CODE>SCFG_SetIntcExpanded</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsIntcExpanded.html" target="_self"><CODE>SCFG_IsIntcExpanded</CODE></A> function.<BR>Extensions are used in TWL mode by default.</BLOCKQUOTE> 50<P><B>LCDC Circuit</B></P> 51<BLOCKQUOTE>The LCDC circuit can be configured to use extensions (INI loads).<BR>This is set by the <A href="scfg/SCFG_SetLCDCExpanded.html" target="_self"><CODE>SCFG_SetLCDCExpanded</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsLCDCExpanded.html" target="_self"><CODE>SCFG_IsLCDCExpanded</CODE></A> function.<BR>Extensions are used in TWL mode by default.</BLOCKQUOTE> 52<P><B>VRAM Access</B></P> 53<BLOCKQUOTE>VRAM access can be configured to use extensions (per-byte writes and word access without wait states).<BR>This is set by the <A href="scfg/SCFG_SetVramExpanded.html" target="_self"><CODE>SCFG_SetVramExpanded</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsVramExpanded.html" target="_self"><CODE>SCFG_IsVramExpanded</CODE></A> function.<BR>Extensions are used in TWL mode by default.</BLOCKQUOTE> 54<H2>PSRAM Access Boundaries</H2> 55<BLOCKQUOTE> 56<P>PSRAM access boundaries can be configured. The available choices are 4 MB, 16 MB, and 32 MB.<BR> This is set by the <A href="scfg/SCFG_SetPsramBoundary.html" target="_self"><CODE>SCFG_SetPsramBoundary</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_GetPsramBoundary.html" target="_self"><CODE>SCFG_GetPsramBoundary</CODE></A> function. <FONT color="#ff0000">You should not change this setting.</FONT></P> 57</BLOCKQUOTE> 58<H2>NITRO Block Circuit Revisions</H2> 59<P><B>Old DMA Circuit</B></P> 60<BLOCKQUOTE>You can use a revised version of the old NITRO DMA circuit.<BR>This is set by the <A href="scfg/SCFG_SetDmacFixed.html" target="_self"><CODE>SCFG_SetDmacFixed</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsDmacFixed.html" target="_self"><CODE>SCFG_IsDmacFixed</CODE></A> function.<BR>Revisions are not used by default.</BLOCKQUOTE> 61<P><B>Geometry Circuit</B></P> 62<BLOCKQUOTE>You can use a revised version of the NITRO geometry circuit.<BR>This is set by the <A href="scfg/SCFG_SetGeometryFixed.html" target="_self"><CODE>SCFG_SetGeometryFixed</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsGeometryFixed.html" target="_self"><CODE>SCFG_IsGeometryFixed</CODE></A> function.<BR>Revisions are not used by default.</BLOCKQUOTE> 63<P><B>Renderer Circuit</B></P> 64<BLOCKQUOTE>You can use a revised version of the NITRO renderer circuit.<BR>This is set by the <A href="scfg/SCFG_SetRendererFixed.html" target="_self"><CODE>SCFG_SetRendererFixed</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsRendererFixed.html" target="_self"><CODE>SCFG_IsRendererFixed</CODE></A> function.<BR>Revisions are not used by default.</BLOCKQUOTE> 65<P><B>2D Engine Circuit</B></P> 66<BLOCKQUOTE>You can use a revised version of the NITRO 2D engine circuit.<BR>This is set by the <A href="scfg/SCFG_Set2DEngineFixed.html" target="_self"><CODE>SCFG_Set2DEngineFixed</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_Is2DEngineFixed.html" target="_self"><CODE>SCFG_Is2DEngineFixed</CODE></A> function.<BR>Revisions are not used by default. </BLOCKQUOTE> 67<P><B>Division Circuit</B></P> 68<BLOCKQUOTE>You can use a revised version of the NITRO divider circuit.<BR>This is set by the <A href="scfg/SCFG_SetDividerFixed.html" target="_self"><CODE>SCFG_SetDividerFixed</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsDividerFixed.html" target="_self"><CODE>SCFG_IsDividerFixed</CODE></A> function.<BR>Revisions are not used by default. </BLOCKQUOTE> 69<P><B>Memory Card I/F Circuit</B></P> 70<BLOCKQUOTE>You can use a revised version of the NITRO memory card I/F circuit.<BR>This is set by the <A href="scfg/SCFG_SetCardFixed.html" target="_self"><CODE>SCFG_SetCardFixed</CODE></A> function, and its state is obtained with the <A href="scfg/SCFG_IsCardFixed.html" target="_self"><CODE>SCFG_IsCardFixed</CODE></A> function.<BR>Revisions are not used by default.</BLOCKQUOTE> 71<P><BR> 72</P> 73<H2>See Also</H2> 74<P><A href="list_scfg.html">SCFG Function List</A></P> 75<H2>Revision History</H2> 76<P>2009/01/19 Added an explanation about ARM9 operating frequency.<BR> 2008/07/15 Added <B>See Also</B> and <B>Revision History</B>.<BR> 2007/09/06 Initial version.</P> 77<P> 78</P> 79<hr><p>CONFIDENTIAL</p></body> 80</HTML> 81