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