XMOS学习笔记之xC语言

一、xC概念

xC作为一种多核语言,是在C语言的基础上进行的扩展。扩展的部分有基于任务的并行机制、通信机制、精确的时钟、I/O以及安全的存储空间管理功能。xC与C语言之间可以交叉编程,只不过,xC不支持goto、位域、函数指针等功能。编译平台为xTIME Studio ,由XMOS官网免费提供。

二、xC语法

这里只是介绍与C语言不同的部分,其他大部分特征与C语言相同。

  1. <:用于给端口赋值、发送数据;:>接收数据。
  2. 通过par{}语句建立平行任务。
    par ( size_t i = 0; i < 4; i ++)
        task (i);
    等价于
    par {
        task (0) ;
        task (1) ;
        task (2) ;
        task (3) ;
        }

     

  3. 任务可以对事件做出中断响应,其关键字为select{case xxx:   break; . . .},其语法类似于C语言中的switch语句。该结构同一时间只能执行一个event。
  4. xC只支持整数算术类型,所以要用到小数就直接化成分数的形式比如0.25就是1/4,需要同时传递两个整数。

三、调用关系

  1. xC调用C中的函数时候,需要在xC中申明其函数:
    extern "c" {
        extern int f(); // 这个函数是在某个C文件中定义的
    }
    
    void g() {
        par {
            f();
            f();
            }
    }

     

  2. 当从C调用到xC时,xC中的一些新类型在C中不可用,但是可以使用在编译链接时能够转换为xC类型的C类型。               例如,可以将一个xC中的chanend传递给一个C中接受int或unsigned int参数的函数。xTIMEcomposer套件中包含的xccompat.h头文件包含有用的宏和typedef,它们在其他语言中可自动扩展为正确的类型。

四、多核的运行机制

多任务在main函数中以平行的方式定义:

int main ( void ) {
    par {
        task1 (... 参数 ...) ;
        task2 (... 参数 ...) ;
        task3 (... 参数 ...) ;
        }
}

其中task1、task2等函数名可以任意命名,一般这些任务函数无返回值,其基本结构如下:

void task1 (... 参数 ...) {
    ... 初始化代码...
    while (1) {
    ... 主循环 ...
    }
}

1. 任务间的通信方式

a.显式通信:

(1)一般的通信方式:task1准备通信→task2进入查询task1状态→task2接受task1传递过来的数据→传递完成→task1和task2各自运行各自的程序。

(2)共享存储空间:task之间不能通过共享公共变量来通信(比如全局变量),所以那些互锁、互斥、信号量之类的就不能使用了。所以,当task1和task3之间需要同步信号或者通信,就需要一个“中介任务”——task2,task2中有一段data,可以同时让task1和task3访问,这种访问方式和共享内存一样快。

(3)异步通信:通过buffer可以实现异步通信,task1将要通信的数据放入buffer中,无阻塞的执行其它工作去了,task2需要的时候从buffer中提取数据即可。实现的具体方法有两种:内部通知机制,task1向task2发出notifications(“通知”)后,干其他事去了,一旦task2收到通知,会给task1一个回馈;“中介任务”方式,使用task3作为一个管理FIFO的任务,task1、task2都与task3通信。

b.基于事件的通信

2. 底层硬件结构

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xmos driver指的是适用于XMOS处理器的驱动程序。XMOS是一种多核多线程的处理器架构,它强调实时性和低延迟性能。 xmos driver的作用是连接XMOS处理器和外部设备,使它们能够互相通信和协同工作。驱动程序通常由硬件厂商或第三方开发者编写,它们提供了一个接口,使操作系统或其他应用程序能够与XMOS处理器进行交互。 xmos driver通常具备以下功能: 1. 设备初始化和配置:驱动程序可以初始化XMOS处理器的各种资源,如IO口、定时器、中断等。通过配置这些资源,外部设备可以与XMOS处理器进行通信和交互。 2. 数据传输和处理:驱动程序可以提供数据传输的功能,使数据能够在XMOS处理器和外部设备之间进行传输。同时,驱动程序还可以对数据进行处理、加工和转换,以满足特定的需求。 3. 状态监测和错误处理:驱动程序可以监测XMOS处理器和外部设备的状态,以及错误的发生。一旦出现错误或异常情况,驱动程序可以进行相应的处理,如错误提示、自动修复等。 4. 驱动程序更新和升级:由于硬件和软件的不断发展,驱动程序也需要不断更新和升级。驱动程序可以提供自动更新的功能,以保证系统的稳定性和兼容性。 综上所述,xmos driver是一种专门为XMOS处理器设计的驱动程序,它能够实现XMOS处理器与外部设备之间的通信和协同工作。驱动程序具备设备初始化和配置、数据传输和处理、状态监测和错误处理、驱动程序更新和升级等功能。通过使用xmos driver,可以充分发挥XMOS处理器的实时性和低延迟性能,满足各种应用场景的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值