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>Although 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