Thread 中讨论的其他器件:SYSBIOS、 TMDSEVM6678
操作系统:Linux CentOS
SDK 版本:PSDK 6.00.00.07,包括所有相关软件包、NDK、PDK、BIOS 和 IPC 等
CCS:8.3.
我正在尝试迁移我们的软件以使用 MCSDK2.1中的最新处理器 SDK。 我已使用 PSDK 中的所有软件包成功编译我们的软件。 我在这一过程中遇到了一些问题、但我已解决了所有编译错误。 我有一个抱怨是、我在 CSL 中看到了许多毫无意义的 API 更改、基本上只是在 API 中添加或删除"undie"。
现在真正的问题是、当我在 POSIX Pthread 中使用 BSD 套接字调用时、我会看到套接字创建错误。 我们软件中的大多数线程是使用 POSIX API 创建的 POSIX Pthread、而不是 TI 任务或 NDK 任务。 在我们的软件中、我们在 main 函数中创建一个任务、该任务会创建运行所有生产软件的所有 pthread。 在其中的一些线程中、我通过调用 BSD 套接字 API 来创建套接字。 这适用于旧的工具链,也称为 MCSDK2.x 我们的软件相当复杂、因此我修改了 NIMU_emacExample_EVMC6678C66BiosExampleProject、又称为 NDK hellworld 示例、以跟踪导致套接字调用错误的原因。
在代码的 main 函数中、我创建了一个任务来创建一个运行函数的 pthread、该函数使用网络服务 BSD 头文件中的 BSD 套接字 API 创建套接字。 我遇到相同的错误、套接字调用始终在以下代码中返回-1。
extern "C" int dtask_udp_hello2 (void)
{
while (!networkStackStarted)
{
Task_sleep(1000);
}
fdOpenSession (((void *) pthread_self ());
int skt;
skt =(int) socket (AF_iNet、SOCK_DGRAM、0);
if (skt=1)
{
printf ("套接字创建失败。\n");
}
fdCloseSession (pthread_self);
返回0;
}
我还尝试在 SYSBIOS 配置文件中将 autoOpenCloseFd 设置为 true、并删除了 fdOpenSession 和 fdCloseSession 函数调用。 这也不起作用。 此时我需要一些帮助。
我要附加示例项目。 要构建项目、请将变量"ns_install_path"更改为指向网络服务模块(ns_2_60_00_07)的安装位置。 此变量在"Project"->"Properties"->"CCS Build"->"Variables"选项卡中定义。
