參考資訊:
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
https://www.ee.torontomu.ca/~courses/ee8205/Data-Sheets/Tornado-VxWorks/vxworks/ref/pipeDrv.html#pipeDevCreate
main.c
#include <sysLib.h>
#include <pipeDrv.h>
int create_pipe(void)
{
pipeDrv(10);
pipeDevCreate("/pipe/hello", 10, 100);
return OK;
}
app.c
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char **argv)
{
char buf[100] = {0};
int fd = open("/pipe/hello", O_RDWR);
if (fd > 0){
buf[0] = 0x12;
buf[1] = 0x34;
write(fd, buf, sizeof(buf));
memset(buf, 0, sizeof(buf));
read(fd, buf, sizeof(buf));
printf("Read 0x%x, 0x%x\n", buf[0], buf[1]);
close(fd);
}
return 0;
}
編譯
$ wr-cc app.c -o app $ wr-cc main.c -o main -dkm
執行
-> ld < main
-> create_pipe
-> devs
drv refs name
4 [ 5] /pipe/hello
-> cmd
[vxWorks *]# app
Read 0x12, 0x34
[vxWorks *]# C
-> unld "main"