关于BF561 uClinux下使用B核的问题
使用bf561的开发板,在板子上移植了uClinux系统,但是uClinux系统只用了bf561的一个A核,现在我想使用另外一个B核,在官网上找到的编译另外一个B核心的应用程序命令是:
1.bfin-elf-gcc –mcpu=bf561-0.3 –mmulticore –mcoreb –c test_c.c –o test_c.o
2.bfin-elf-gcc –mcpu=bf561-0.3 –mmulticore –mcoreb test_c.o –o test_c
在编译我写的程序时,在Ubuntu 10.10下用gcc命令编译通过,有警告。但是执行上述第一步命令时就报错。错误如下:
TestRead.c:3:20: 错误:sys/ipc.h:没有那个文件或目录
TestRead.c:4:20: 错误:sys/shm.h:没有那个文件或目录
TestRead.c: 在函数‘main’中:
TestRead.c:13: 错误:‘IPC_CREAT’未声明(在此函数内第一次使用)
TestRead.c:13: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
TestRead.c:13: 错误:所在的函数内也只报告一次。)
TestRead.c:16: 警告:隐式声明与内建函数‘exit’不兼容
TestRead.c:19: 警告:赋值时将整数赋给指针,未作类型转换
TestRead.c:22: 警告:隐式声明与内建函数‘exit’不兼容
TestRead.c:31: 警告:隐式声明与内建函数‘exit’不兼容
我的程序TestRead.c代码如下:
#include
#include
#include
#include
#define BUF_SIZE 1024
#define MYKEY 25
int main()
{
int shmid;
char *shmptr;
if((shmid = shmget(MYKEY,BUF_SIZE,IPC_CREAT))==-1)
{
printf("shmget error!\n");
exit(1);
}
if((shmptr = shmat(shmid,0,0))==(void*)-1)
{
printf("shmat error!\n");
exit(1);
}
while(1)
{
printf("string:%s\n",shmptr);
sleep(3);
}
exit(0);
}
我的问题如下:
1. 请问一下上述的问题是怎么回事,是编译工具的问题还是我代码的问题呢?
2. 或者是另外一个B核心的应用程序代码是不能含有linux系统的头文件的?
3. 我可不可以用bfin-elf-gcc这个命令编译B核应用程序,在B核上运行,然后和A核上的uClinux系统上运行的别的程序之间采用共享内存方式进行数据交换呢?
我的想法是用共享内存的方式在A核的应用程序和B核的应用程序之间传递数据
我的想法是用共享内存方式在A核的应用程序和B核的应用程序之间传递数据