參考資訊:
https://zhuanlan.zhihu.com/p/597577575
https://studies.ac.upc.edu/doctorat/ENGRAP/VxWorks-device-drivers.htm
https://forums.windriver.com/t/vxworks-software-development-kit-sdk/43
https://mail.prz-rzeszow.pl/~ssamolej/vxworks/vxworks_kernel_programmers_guide_6.6.pdf
https://d13321s3lxgewa.cloudfront.net/downloads/wrsdk-vxworks7-docs/2309/README_qemu.html
https://learning.windriver.com/path/vxworks7-essentials-workbench-and-tools/vxworks-kernel-shell
main.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iosLib.h>
#include <vxWorks.h>
#include <sysLib.h>
#include <wdLib.h>
#define SEC 1
static int val = 0;
static WDOG_ID wid = NULL;
int wdg_handler(void *param)
{
val += 1;
wdStart(wid, sysClkRateGet() * SEC, wdg_handler, 0);
return OK;
}
int start_dkm(void)
{
wid = wdCreate();
wdStart(wid, sysClkRateGet() * SEC, wdg_handler, 0);
return OK;
}
int get_val(void)
{
printf("%d\n", val);
return OK;
}
int stop_dkm(void)
{
wdCancel(wid);
return OK;
}
編譯
$ wr-cc main.c -o main -dkm
執行
-> ld < main -> start_dkm -> get_val 4 -> get_val 8 -> stop_dkm -> get_val 12 -> get_val 12 -> unld "main"