我对Python和测试相当陌生。我无法理解嵌入式系统可以用Python进行测试。
1)我不明白Python是如何与嵌入式系统的底层硬件通信的。
2) Python如何与C进行通信,以便Python可以开始模拟环境(启动SPI comm。)并从嵌入式系统接收信息?
3) C是一种更接近硬件的低级语言,所以对我来说,我们可以在嵌入式系统上控制外围设备是有意义的。Python是一种高级语言,是从硬件中抽象出来的,所以我们不是无法控制外围设备吗?
4)如果我们使用像Robot framework这样的测试框架,那么我们不是仍然必须在Python中建立某种形式的与计算机和嵌入式系统的通信(可能使用Pyserial)吗?
感谢您的帮助!
发布于 2021-10-21 14:55:11
我想我知道你是从哪里来的,就像我在你的情况下一样。嵌入式系统是一个很好的“为什么”的来源,你可以很快进入“兔子洞”。我将给你一些简短的答案和一些链接,以扩大你的好奇心。
Q0:我不明白Python是如何与嵌入式系统的底层硬件通信的。
A0:这取决于您是从运行python的外部操作系统与嵌入式系统通信,还是直接在嵌入式系统上运行python。
在第一种情况下,
python
Q1:如何与C进行通信,以便Python可以开始模拟环境(启动SPI comm。)并接收来自嵌入式系统的信息
A1:这个问题非常广泛。Python可以与C通信,因为它可以与编译的C例程共享内存,然后C例程可以对python对象进行操作,参见"Glue it all together“。
对您的问题的另一种解释是,如何使用python运行嵌入式系统的模拟。可以使用专用库(来自处理器供应商)、qemu或HDL级别(您可以看到的细节级别差别很大)来模拟系统。通常这些库是用C编写的,可执行文件是从python加载的,它向被模拟的系统公开了“对话”的函数,作用于在现实世界中很难做到的东西。您可以打开和关闭一个按钮数千次,读取和写入寄存器在飞行中,等等。
Q2:C是一种更接近硬件的低级语言,所以对我来说,我们可以控制嵌入式系统上的外围设备是有意义的。Python是一种高级语言,是从硬件中抽象出来的,所以我们不是无法控制外围设备吗?
A2:这个问题唯一有意义的情况是Q0的场景2,在这个场景中,linux或其他一些操作系统正在运行。虽然python确实是一种比C语言更高级的语言,但大多数情况下,当您与外围设备交谈时,您使用的系统调用归结为与C语言使用的完全相同的函数。如果我没记错的话,例如,serial.open() python函数只是fopen("/dev/tty") C函数的包装器(类似于)。两种语言都将发出系统调用,操作系统将通过设置串行端口驱动程序来完成此工作。
相反,使用裸机C是另一回事,在与总线和外围设备交谈时,您将负责每一个小细节。如果你有python,那么根据定义你就有一个操作系统,因此最好让它来处理这些细节。
Q3:如果我们使用像机器人框架这样的测试框架,那么我们不是仍然需要在Python语言(可能使用Pyserial)中建立某种形式的与计算机和嵌入式系统的通信吗?
A3:我简单地看了一下机器人框架,似乎所有的通信都是通过超文本传输协议完成的,尽管你可能想要理解答案0,1和2,然后回到这里,问一些更清楚的问题。此外,机器人框架似乎与网络测试有关,与嵌入式系统无关。
https://stackoverflow.com/questions/62473608
复制相似问题