Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在x86 gpio上应用SWIM协议?_Linux_X86_Driver_Gpio - Fatal编程技术网

Linux 如何在x86 gpio上应用SWIM协议?

Linux 如何在x86 gpio上应用SWIM协议?,linux,x86,driver,gpio,Linux,X86,Driver,Gpio,这是一个奇怪的塞纳里奥。我们使用x86 soc作为主机,使用stm8s MCU作为客户端。它们通过2根电线连接在GPIO(sOC侧)和RST和SWIM(MCU侧)之间。因此,通过这种方式,我们可以通过SWIM协议刷新MCU固件 问题就在这里。进入SWIME模式后(通过低频gpio操作,输入序列很容易上升/下降),我们需要向MCU发送数据。但该协议需要以高频(16M时钟)发送数据。我尝试了一个简单的gpio操作,没有延迟: for(i=0; i<10; i++) { gpio_set

这是一个奇怪的塞纳里奥。我们使用x86 soc作为主机,使用stm8s MCU作为客户端。它们通过2根电线连接在GPIO(sOC侧)和RST和SWIM(MCU侧)之间。因此,通过这种方式,我们可以通过SWIM协议刷新MCU固件

问题就在这里。进入SWIME模式后(通过低频gpio操作,输入序列很容易上升/下降),我们需要向MCU发送数据。但该协议需要以高频(16M时钟)发送数据。我尝试了一个简单的gpio操作,没有延迟:

for(i=0; i<10; i++) {
    gpio_set_value(SWIM, 0);
    gpio_set_value(SWIM, 1);
}

for(i=0;我非常依赖于什么
gpio\u set\u值()
事实上是这样。谢谢J,gpio_set_value做了很多判断和验证工作。但是x86是一件复杂的事情,我不认为控制gpio寄存器是一个好主意。我找到了一些用于SWIM的示例。但是它们都在实时系统上运行。它们在STM32上使用DMA+定时器。我们可以使用这种方法来实现高gpio频率吗?