(toppers-users 2717) fi4をredhat linux release 9へ移植してみました
ynym
ynym @ mail.wind.ne.jp
2008年 1月 16日 (水) 17:46:44 JST
米山です。
fi4を利用したシステム構築を試みています。
手始めにfi4をlinuxで動かしてみました、タスクの動的な生成も見てみたかったので
sample1を修正しました。
正しい変更かどうかも分からないので、参考にもならないと思いますが、とりあえず
変更点を投稿します。
オリジナルからの改造点
1.オリジナルの解凍後
jspのconfig/linuxフォルダをfi4のconfig下へコピー
2.config/linux/cpu_config.c
jsp_をfi4_へ変更
#include "jsp_kernel.h" -> #include
"fi4_kernel.h"
ファイルの最後にダミー関数を定義
void
isr_interrupt(VW vw)
{
}
BOOL
check_undefined_inh(INHNO inhno)
{
return TRUE; /* dummy */
}
3.config/linux/start.c
jsp_をfi4_へ変更
#include "jsp_kernel.h" -> #include
"fi4_kernel.h"
4.config/linux/sys_config.c
jsp_をfi4_へ変更
#include "jsp_kernel.h" -> #include
"fi4_kernel.h"
5.config/linux/tool_config.h
足りない定義を追加
#define LOG_ALM_ENTER(almcb)
#define LOG_ALM_LEAVE(almcb)
#define LOG_CRE_TSK_ENTER(tskid)
#define LOG_CRE_TSK_LEAVE(ercd)
#define LOG_ACRE_TSK_ENTER()
#define LOG_ACRE_TSK_LEAVE(ercd)
#define LOG_DEL_TSK_ENTER(tskid)
#define LOG_DEL_TSK_LEAVE(ercd)
#define LOG_STA_TSK_ENTER(tskid)
#define LOG_STA_TSK_LEAVE(ercd)
#define LOG_EXD_TSK_ENTER()
#define LOG_REF_TSK_ENTER(tskid)
#define LOG_REF_TSK_LEAVE(ercd)
#define LOG_REF_TST_ENTER(tskid)
#define LOG_REF_TST_LEAVE(ercd)
#define LOG_DEF_TEX_ENTER(tskid)
#define LOG_DEF_TEX_LEAVE(ercd)
#define LOG_REF_TEX_ENTER(tskid)
#define LOG_REF_TEX_LEAVE(ercd)
#define LOG_CRE_SEM_ENTER(semid)
#define LOG_CRE_SEM_LEAVE(ercd)
#define LOG_ACRE_SEM_ENTER()
#define LOG_ACRE_SEM_LEAVE(ercd)
#define LOG_DEL_SEM_ENTER(semid)
#define LOG_DEL_SEM_LEAVE(ercd)
#define LOG_REF_SEM_ENTER(semid)
#define LOG_REF_SEM_LEAVE(ercd)
#define LOG_CRE_FLG_ENTER(flgid)
#define LOG_CRE_FLG_LEAVE(ercd)
#define LOG_ACRE_FLG_ENTER()
#define LOG_ACRE_FLG_LEAVE(ercd)
#define LOG_DEL_FLG_ENTER(flgid)
#define LOG_DEL_FLG_LEAVE(ercd)
#define LOG_REF_FLG_ENTER(flgid)
#define LOG_REF_FLG_LEAVE(ercd)
#define LOG_CRE_DTQ_ENTER(dtqid)
#define LOG_CRE_DTQ_LEAVE(ercd)
#define LOG_ACRE_DTQ_ENTER()
#define LOG_ACRE_DTQ_LEAVE(ercd)
#define LOG_DEL_DTQ_ENTER(dtqid)
#define LOG_DEL_DTQ_LEAVE(ercd)
#define LOG_REF_DTQ_ENTER(dtqid)
#define LOG_REF_DTQ_LEAVE(ercd)
#define LOG_CRE_MBX_ENTER(mbxid)
#define LOG_CRE_MBX_LEAVE(ercd)
#define LOG_ACRE_MBX_ENTER()
#define LOG_ACRE_MBX_LEAVE(ercd)
#define LOG_DEL_MBX_ENTER(mbxid)
#define LOG_DEL_MBX_LEAVE(ercd)
#define LOG_REF_MBX_ENTER(mbxid)
#define LOG_REF_MBX_LEAVE(ercd)
#define LOG_CRE_MTX_ENTER(mtxid)
#define LOG_CRE_MTX_LEAVE(ercd)
#define LOG_ACRE_MTX_ENTER()
#define LOG_ACRE_MTX_LEAVE(ercd)
#define LOG_DEL_MTX_ENTER(mtxid)
#define LOG_DEL_MTX_LEAVE(ercd)
#define LOG_LOC_MTX_ENTER(mtxid)
#define LOG_LOC_MTX_LEAVE(ercd)
#define LOG_LOC_MTX_ENTER(mtxid)
#define LOG_LOC_MTX_LEAVE(ercd)
#define LOG_PLOC_MTX_ENTER(mtxid)
#define LOG_PLOC_MTX_LEAVE(ercd)
#define LOG_TLOC_MTX_ENTER(mtxid)
#define LOG_TLOC_MTX_LEAVE(ercd)
#define LOG_UNL_MTX_ENTER(mtxid)
#define LOG_UNL_MTX_LEAVE(ercd)
#define LOG_REF_MTX_ENTER(mtxid)
#define LOG_REF_MTX_LEAVE(ercd)
#define LOG_CRE_MBF_ENTER(mbfid)
#define LOG_CRE_MBF_LEAVE(ercd)
#define LOG_ACRE_MBF_ENTER()
#define LOG_ACRE_MBF_LEAVE(ercd)
#define LOG_DEL_MBF_ENTER(mbfid)
#define LOG_DEL_MBF_LEAVE(ercd)
#define LOG_SND_MBF_ENTER(mbfid)
#define LOG_SND_MBF_LEAVE(ercd)
#define LOG_SND_MBF_ENTER(mbfid)
#define LOG_SND_MBF_LEAVE(ercd)
#define LOG_TSND_MBF_ENTER(mbfid)
#define LOG_TSND_MBF_LEAVE(ercd)
#define LOG_RCV_MBF_ENTER(mbfid)
#define LOG_RCV_MBF_LEAVE(ercd)
#define LOG_RCV_MBF_ENTER(mbfid)
#define LOG_RCV_MBF_LEAVE(ercd)
#define LOG_TRCV_MBF_ENTER(mbfid)
#define LOG_TRCV_MBF_LEAVE(ercd)
#define LOG_REF_MBF_ENTER(mbfid)
#define LOG_REF_MBF_LEAVE(ercd)
#define LOG_ACRE_POR_ENTER()
#define LOG_ACRE_POR_LEAVE(ercd)
#define LOG_CRE_POR_ENTER(porid)
#define LOG_CRE_POR_LEAVE(ercd)
#define LOG_DEL_POR_ENTER(porid)
#define LOG_DEL_POR_LEAVE(ercd)
#define LOG_REF_POR_ENTER(porid)
#define LOG_REF_POR_LEAVE(ercd)
#define LOG_REF_RDV_ENTER(rdvno)
#define LOG_REF_RDV_LEAVE(ercd)
#define LOG_CRE_MPF_ENTER(mpfid)
#define LOG_CRE_MPF_LEAVE(ercd)
#define LOG_ACRE_MPF_ENTER()
#define LOG_ACRE_MPF_LEAVE(ercd)
#define LOG_DEL_MPF_ENTER(mpfid)
#define LOG_DEL_MPF_LEAVE(ercd)
#define LOG_REF_MPF_ENTER(mpfid)
#define LOG_REF_MPF_LEAVE(ercd)
#define LOG_REF_MPF_ENTER(mpfid)
#define LOG_REF_MPF_LEAVE(ercd)
#define LOG_CRE_MPL_ENTER(mpfid)
#define LOG_CRE_MPL_LEAVE(ercd)
#define LOG_ACRE_MPL_ENTER()
#define LOG_ACRE_MPL_LEAVE(ercd)
#define LOG_DEL_MPL_ENTER(mpfid)
#define LOG_DEL_MPL_LEAVE(ercd)
#define LOG_GET_MPL_ENTER(mpfid, blksz, p_blk)
#define LOG_GET_MPL_LEAVE(ercd, blk)
#define LOG_PGET_MPL_ENTER(mpfid, blksz, p_blk)
#define LOG_PGET_MPL_LEAVE(ercd, blk)
#define LOG_TGET_MPL_ENTER(mpfid, blksz, p_blk,
tmout)
#define LOG_TGET_MPL_LEAVE(ercd, blk)
#define LOG_REL_MPL_ENTER(mpfid, blk)
#define LOG_REL_MPL_LEAVE(ercd)
#define LOG_REF_MPL_ENTER(mpfid)
#define LOG_REF_MPL_LEAVE(ercd)
#define LOG_REF_MPL_ENTER(mpfid)
#define LOG_REF_MPL_LEAVE(ercd)
#define LOG_CRE_CYC_ENTER(cycid)
#define LOG_CRE_CYC_LEAVE(ercd)
#define LOG_ACRE_CYC_ENTER()
#define LOG_ACRE_CYC_LEAVE(ercd)
#define LOG_DEL_CYC_ENTER(cycid)
#define LOG_DEL_CYC_LEAVE(ercd)
#define LOG_REF_CYC_ENTER(cycid)
#define LOG_REF_CYC_LEAVE(ercd)
#define LOG_CRE_ALM_ENTER(almid)
#define LOG_CRE_ALM_LEAVE(ercd)
#define LOG_ACRE_ALM_ENTER()
#define LOG_ACRE_ALM_LEAVE(ercd)
#define LOG_DEL_ALM_ENTER(almid)
#define LOG_DEL_ALM_LEAVE(ercd)
#define LOG_STA_ALM_ENTER(almid)
#define LOG_STA_ALM_LEAVE(ercd)
#define LOG_STP_ALM_ENTER(almid)
#define LOG_STP_ALM_LEAVE(ercd)
#define LOG_REF_ALM_ENTER(almid)
#define LOG_REF_ALM_LEAVE(ercd)
#define LOG_DEF_OVR_ENTER()
#define LOG_DEF_OVR_LEAVE(ercd)
#define LOG_STA_OVR_ENTER(tskid)
#define LOG_STA_OVR_LEAVE(ercd)
#define LOG_STP_OVR_ENTER(tskid)
#define LOG_STP_OVR_LEAVE(ercd)
#define LOG_REF_OVR_ENTER(tskid)
#define LOG_REF_OVR_LEAVE(ercd)
#define LOG_DEF_INH_ENTER(inhno)
#define LOG_DEF_INH_LEAVE(ercd)
#define LOG_CRE_ISR_ENTER(isrid)
#define LOG_CRE_ISR_LEAVE(ercd)
#define LOG_ACRE_ISR_ENTER()
#define LOG_ACRE_ISR_LEAVE(ercd)
#define LOG_DEL_ISR_ENTER(isrid)
#define LOG_DEL_ISR_LEAVE(ercd)
#define LOG_REF_ISR_ENTER(isrid)
#define LOG_REF_ISR_LEAVE(ercd)
#define LOG_REF_SYS_ENTER()
#define LOG_REF_SYS_LEAVE()
#define LOG_DEF_EXC_ENTER(excno)
#define LOG_DEF_EXC_LEAVE(ercd)
6.include/itron.h
size_tがコンパイル環境で見つからないので、UINTへ変更
typedef size_t SIZE; -> typedef UINT SIZE;
7.kernle/interrupt.c
宣言を追加
extern void isr_interrupt(VW);
8.sample/sample1.c
動的生成用サンプルタスクmytask追加
void mytask(VP_INT exinf)
{
INT n = 0;
INT tskno = (INT) exinf;
char *graph[] = { "|", "
+", " *" , " x"};
ena_tex();
while (1) {
syslog(LOG_NOTICE,
"I'm MYTASK. task%d is running (%03d). %s",
tskno, ++n, graph[tskno-1]);
syscall(dly_tsk(1000));
}
}
void task(VP_INT exinf)のループを遅くするためにdly_tskを一行
追加
syslog(LOG_NOTICE, "task%d is running (%03d).
%s",
tskno, ++n, graph[tskno-1]);
syscall(dly_tsk(1000));
<- この行を追加
for (i = 0; i < task_loop; i++);
void main_task(VP_INT exinf)に動的生成タスク処理を追加
T_CTSK pk_ctsk={TA_HLNG, (VP_INT)4, mytask,
MID_PRIORITY, STACK_SIZE, NULL};
syscall(ercd = cre_tsk( 4, &pk_ctsk ));
syslog(LOG_NOTICE, "TASK4 creation return
val.(%d)\n",ercd);
if(!ercd)
act_tsk(4);
ファイルの最後にsoftware_term_hookを追加
#define ATEXIT_MAX (32 + 1)
static void (*atexit_table[ATEXIT_MAX])(void);
static int atexit_num;
void software_term_hook(void)
{
int i;
for (i = atexit_num - 1; i >= 0; i--)
(*atexit_table[i])();
}
9.sample/sample1.cfgに下記を追加
VAID_TSK(1);
VRID_TSK(4);
VDEF_KMB(65536);
10.OBJディレクトリを作成して移動後に
../configure -C linux
make
../jsp
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/users/attachments/20080116/5a71c2fb/attachment.html>