No.80136 作者:liufengzhong 邮件:l_fz@sina.com ID:149522 登陆:12次 文章数:695篇 最后登陆IP:183.13.93.245 最后登陆:2015/6/16 17:02:27 注册:2014/7/29 21:51:15 财富:3671 发帖时间:2014/8/30 18:34:17 发贴者IP:111.221.200.181 标题:liufengzhong:[转帖]如何在XMOS禁用编译器不相交性检查变量 摘要:No.80136[转帖]如何在XMOS禁用编译器不相交性检查变量 我想运行键盘,并使用任务通信显示并行。无论是键盘和显示器沟通,XMOS与I2C协议。所以根据平行线的规则,我们不能够在键盘和显示器的两个线程使用I2C端口。所以我想禁用编译器的不相交规则检查。可以吗?如果是的话怎么办?如果没有,请告诉我另一种方式... 回答: 总之,你无法禁用编译器脱节检查用一个开关。解决他们的大多数方法,,经常使用内联汇编器或移动到C,但你很快会得到一个很大的麻烦,当你解决并行使用/脱节检查。所以不建议,除非你喜欢裸机,知道内而外的架构! 有达到你想要的更安全合理的方式。例如,有一个“共享”的I2C元件可在这里,适用于相同的tile中不同的内核访问单个I2C主机。  它使用硬件锁来保护访问I2C端口,以确保您永远不会有冲突时,两个不同的内核正试图获得访问权限。如果I2C已经忙,其他的任务等待,直到它是空闲的的。它基本上是一个C包装与调用I2C简单的锁码。 有很多其他的方法来安全地做到这一点,甚至可以穿过tile(如果你有一个多tile的系统)通过使用接口,工具13功能.. 但是,如果你是在一个单一的tile,我建议用module_i2c_shared开始 回复; 谢谢您的回答,但我有一个XK 1A发展节板。我会尝试所有的I2C模块从github上像i2c_master,i2c_simple,i2c_singlePort但他们没有工作,甚至单键盘或单一显示。于是我想,是由于在网站中的XK 1A项目温度计的代码。温度计给出了I2C代码工作。我修改温度计代码为我的应用程序和它的工作。但我想运行键盘的两个线程,并行显示。所以现在帮我,我怎么能使用共享I2C端口。 回答: 如果您使用的是XK-1A那么这个共享的I 2 C成分是完美的,因为你有一个单一的tile。 我不知道为什么github上的I2C模块不工作 - 它们被广泛应用于我们的refernce设计和客户,所以都核实工作。 所以,你可以: - 了解为什么XMOS的IP没有工作(带瞄准镜检查端口和看到,如果你看到正常的I2C活动),然后用module_i2c_shared - 以module_i2c_shared包装,并把它应用到你确实有工作I2C模块。 - 制定自己的协议传递两个核心之间通过I2C拥有令牌(确保相互排斥),使用信道。 任何一种方式将实现你想要什么,尽管我reccomend第一的最少的努力 - 有注定是一个简单的道理,为什么I2C如预期没有工作。也许,如果你被卡住,发布您的代码在论坛上。 回复: #include <stdio.h> #include <xs1.h> #include <print.h> #include "i2c.h" struct r_i2c i2cPorts = { XS1_PORT_1F, //SCL XS1_PORT_1E, //SDA }; //:: port p32a = XS1_PORT_32A; unsigned Digits[32]={0xAF,0x28,0x9D, ......
>>返回讨论的主题
|