1 /*---------------------------------------------------------------------------*
2   Project:  TwlSDK - OS - demos - simple-1
3   File:     main.c
4 
5   Copyright 2003-2008 Nintendo. All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law. They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Date:: 2008-07-01#$
14   $Rev: 6953 $
15   $Author: yada $
16  *---------------------------------------------------------------------------*/
17 #ifdef SDK_TWL
18 #include <twl.h>
19 #else
20 #include <nitro.h>
21 #endif
22 
23 
24 void writeTest( void* address );
25 
26 //================================================================================
27 /*---------------------------------------------------------------------------*
28   Name:         TwlMain / NitroMain
29 
30   Description:  Main.
31 
32   Arguments:    None.
33 
34   Returns:      None.
35  *---------------------------------------------------------------------------*/
36 #ifdef SDK_TWL
TwlMain(void)37 void TwlMain(void)
38 #else
39 void NitroMain(void)
40 #endif
41 {
42     void   *addrLo;
43     void   *addrHi;
44 
45 	OS_EnableMainExArena();
46     OS_Init();
47 
48     OS_Printf("==== sample start\n");
49 
50 	//---- Display each arena info
51 	OS_DumpAllArenaInfo();
52 
53     //---- Try allocating from the arena
54     OS_Printf("---- allocate 0x100 byte from arena hi and lo.\n");
55     //---- Main memory arena
56     addrLo = OS_GetArenaLo(OS_ARENA_MAIN);
57     addrHi = OS_GetArenaHi(OS_ARENA_MAIN);
58     OS_Printf("---- MainRAM: Lo:%x Hi:%x\n", addrLo, addrHi);
59     addrLo = OS_AllocFromArenaLo(OS_ARENA_MAIN, 0x100, 8);
60     addrHi = OS_AllocFromArenaHi(OS_ARENA_MAIN, 0x100, 8);
61 	OS_DumpArenaInfo( OS_ARENA_MAIN, TRUE );
62 	writeTest( addrLo );
63 
64     //---- Extended main memory arena
65     addrLo = OS_GetArenaLo(OS_ARENA_MAINEX);
66     addrHi = OS_GetArenaHi(OS_ARENA_MAINEX);
67 	OS_Printf("---- Extended MainRAM: Lo:%x Hi:%x\n", addrLo, addrHi);
68 	addrLo = OS_AllocFromArenaLo(OS_ARENA_MAINEX, 0x100, 8);
69 	addrHi = OS_AllocFromArenaHi(OS_ARENA_MAINEX, 0x100, 8);
70 	OS_DumpArenaInfo( OS_ARENA_MAINEX, TRUE );
71 	writeTest( addrLo );
72 
73     //---- ITCM arena
74     addrLo = OS_GetArenaLo(OS_ARENA_ITCM);
75     addrHi = OS_GetArenaHi(OS_ARENA_ITCM);
76     OS_Printf("---- ITCM: Lo:%x Hi:%x\n", addrLo, addrHi);
77     addrLo = OS_AllocFromArenaLo(OS_ARENA_ITCM, 0x100, 8);
78     addrHi = OS_AllocFromArenaHi(OS_ARENA_ITCM, 0x100, 8);
79 	OS_DumpArenaInfo( OS_ARENA_ITCM, TRUE );
80 	writeTest( addrLo );
81 
82     //---- DTCM arena
83     addrLo = OS_GetArenaLo(OS_ARENA_DTCM);
84     addrHi = OS_GetArenaHi(OS_ARENA_DTCM);
85 	OS_Printf("---- DTCM: Lo:%x Hi:%x\n", addrLo, addrHi);
86 	addrLo = OS_AllocFromArenaLo(OS_ARENA_DTCM, 0x100, 8);
87 	addrHi = OS_AllocFromArenaHi(OS_ARENA_DTCM, 0x100, 8);
88 	OS_DumpArenaInfo( OS_ARENA_DTCM, TRUE );
89 	writeTest( addrLo );
90 
91     //---- Shared region arena
92     addrLo = OS_GetArenaLo(OS_ARENA_SHARED);
93     addrHi = OS_GetArenaHi(OS_ARENA_SHARED);
94     OS_Printf("---- Shared Memory: Lo:%x Hi:%x\n", addrLo, addrHi);
95     addrLo = OS_AllocFromArenaLo(OS_ARENA_SHARED, 0x100, 8);
96     addrHi = OS_AllocFromArenaHi(OS_ARENA_SHARED, 0x100, 8);
97 	OS_DumpArenaInfo( OS_ARENA_SHARED, TRUE );
98 	writeTest( addrLo );
99 
100     //---- WRAM arena
101     addrLo = OS_GetArenaLo(OS_ARENA_WRAM_MAIN);
102     addrHi = OS_GetArenaHi(OS_ARENA_WRAM_MAIN);
103     OS_Printf("---- WorkRAM: Lo:%x Hi:%x\n", addrLo, addrHi);
104     addrLo = OS_AllocFromArenaLo(OS_ARENA_WRAM_MAIN, 0x100, 8);
105     addrHi = OS_AllocFromArenaHi(OS_ARENA_WRAM_MAIN, 0x100, 8);
106 	OS_DumpArenaInfo( OS_ARENA_WRAM_MAIN, TRUE );
107 	writeTest( addrLo );
108 
109     OS_Printf("==== Finish sample.\n");
110     OS_Terminate();
111 }
112 
113 /*---------------------------------------------------------------------------*
114   Name:         writeTest
115 
116   Description:  Try to write.
117 
118   Arguments:    address: Address to write
119 
120   Returns:      None.
121  *---------------------------------------------------------------------------*/
writeTest(void * address)122 void writeTest( void* address )
123 {
124 	if ( address )
125 	{
126 		*(u32*)address = 1;
127 	}
128 }
129 
130 /*====== End of main.c ======*/
131