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