2 * Sample program for Hyper Operating System V4 Advance
5 * @brief %jp{サンプルプログラム}%en{Sample program}
7 * Copyright (C) 1998-2008 by Project HOS
8 * http://sourceforge.jp/projects/hos/
16 #include "kernel_id.h"
17 #include "system/system/system.h"
18 #include "system/sysapi/sysapi.h"
19 #include "system/file/console.h"
20 #include "system/process/process.h"
21 #include "system/command/command.h"
22 #include "driver/serial/jelly/jellyuartdrv.h"
23 #include "driver/console/vt100/vt100drv.h"
24 #include "application//syscmd/shell/shell.h"
25 #include "application//syscmd/commandlist/commandlist.h"
26 #include "application//syscmd/processlist/processlist.h"
27 #include "application/utility/timecmd/timecmd.h"
28 #include "application/utility/memdump/memdump.h"
29 #include "application/utility/memwrite/memwrite.h"
30 #include "application/utility/memtest/memtest.h"
31 #include "application/utility/keytest/keytest.h"
32 #include "application/example/hello/hello.h"
39 long g_SystemHeap[128 * 1024 / sizeof(long)];
40 #define SYSTEM_HEAP_ADDR ((void *)g_SystemHeap)
41 #define SYSTEM_HEAP_SIZE sizeof(g_SystemHeap)
45 #define SYSTEM_HEAP_ADDR ((void *)0x00200000)
46 #define SYSTEM_HEAP_SIZE 0x00100000
51 extern SYSTIM_CPUTIME SysTim_TimeCounter; /* デフォルトのタイマカウンタ */
55 int Boot_Process(VPARAM Param);
58 void Boot_Task(VP_INT exinf)
60 T_SYSTEM_INITIALIZE_INF SysInf;
63 /*************************/
65 /*************************/
68 memset(&SysInf, 0, sizeof(SysInf));
69 SysInf.pSysMemBase = SYSTEM_HEAP_ADDR;
70 SysInf.SysMemSize = SYSTEM_HEAP_SIZE;
71 SysInf.SysMemAlign = 8;
72 SysInf.pIoMemBase = NULL;
73 SysInf.SystemStackSize = 2048;
74 SysInf.pfncBoot = Boot_Process;
75 SysInf.BootParam = (VPARAM)0;
76 SysInf.BootStackSize = 2048;
77 System_Initialize(&SysInf);
82 int Boot_Process(VPARAM Param)
84 T_PROCESS_CREATE_INF ProcInf;
91 /*************************/
93 /*************************/
98 /* Jelly UART デバドラ生成 (/dev/com0 に登録) */
99 hDriver = JellyUartDrv_Create((void *)0xf2000000, 1, 2, 64);
100 File_AddDevice("com0", hDriver);
103 hTty = File_Open("/dev/com0", FILE_OPEN_READ | FILE_OPEN_WRITE);
105 /* シリアル上にコンソールを生成( /dev/con0 に登録) */
106 hDriver = Vt100Drv_Create(hTty);
107 File_AddDevice("con0", hDriver);
110 hCon = File_Open("/dev/con0", FILE_OPEN_READ | FILE_OPEN_WRITE);
113 /*************************/
115 /*************************/
117 Process_SetTerminal(HANDLE_NULL, hTty);
118 Process_SetConIn(HANDLE_NULL, hCon);
119 Process_SetConOut(HANDLE_NULL, hCon);
120 Process_SetStdIn(HANDLE_NULL, hCon);
121 Process_SetStdOut(HANDLE_NULL, hCon);
122 Process_SetStdErr(HANDLE_NULL, hCon);
125 /*************************/
127 /*************************/
128 Command_AddCommand("sh", Shell_Main);
129 Command_AddCommand("ps", ProcessList_Main);
130 Command_AddCommand("help", CommandList_Main);
131 Command_AddCommand("time", TimeCmd_Main);
132 Command_AddCommand("memdump", MemDump_Main);
133 Command_AddCommand("memwrite", MemWrite_Main);
134 Command_AddCommand("memtest", MemTest_Main);
135 Command_AddCommand("keytest", KeyTest_Main);
136 Command_AddCommand("hello", Hello_Main);
139 /*************************/
141 /*************************/
144 "================================================================\n"
145 " Hyper Operating System Application Framework\n"
147 " Copyright (C) 1998-2008 by Project HOS\n"
148 " http://sourceforge.jp/projects/hos/\n"
149 "================================================================\n"
153 /*************************/
155 /*************************/
158 ProcInf.pszCommandLine = "sh -i"; /* 実行コマンド */
159 ProcInf.pszCurrentDir = ""; /* 起動ディレクトリ */
160 ProcInf.pfncEntry = NULL; /* 起動アドレス */
161 ProcInf.Param = 0; /* ユーザーパラメータ */
162 ProcInf.StackSize = 2048; /* スタックサイズ */
163 ProcInf.Priority = PROCESS_PRIORITY_NORMAL; /* プロセス優先度 */
164 ProcInf.hTerminal = Process_GetTerminal(HANDLE_NULL); /* ターミナル */
165 ProcInf.hConIn = Process_GetConIn(HANDLE_NULL); /* コンソール入力 */
166 ProcInf.hConOut = Process_GetConOut(HANDLE_NULL); /* コンソール出力 */
167 ProcInf.hStdIn = Process_GetStdIn(HANDLE_NULL); /* 標準入力 */
168 ProcInf.hStdOut = Process_GetStdOut(HANDLE_NULL); /* 標準出力 */
169 ProcInf.hStdErr = Process_GetStdErr(HANDLE_NULL); /* 標準エラー出力 */
172 hProcess = Process_CreateEx(&ProcInf);
173 Process_WaitExit(hProcess);
174 Process_Delete(hProcess);