先说明一下整个计划,分成三个部分,
这样自动化方式,在芯片测试上减少重复劳动,并且完善代码生成IDE工具。
下面代码是通过绝对路径来打开Keil工程
import subprocess
import os
main = "C:/Users/siyu/.PyCharmCE2019.1/config/scratches/two/main.uvproj"
if os.path.exists(main):
rc,out= subprocess.getstatusoutput(main)
print (rc)
print ('*'*10)
print (out)
参考:
python中3种调用可执行文件.exe的方法
python实现对windows窗口的操作需要涉及到的库有ctypes 、win32GUI、pywin32、win32con等,这些还需要继续丰富知识。
使用python实现打开工程文件,使用python中的pyautiogui实现对按键的定位
包的安装
pip install pyautogui
import pyautogui
#判定目标截图在系统上的位置,两个方式都可以实现
#location=pyautogui.locateOnScreen(image='autotest.png')
location=pyautogui.locateOnScreen(image='C:/Users/siyu/Pictures/autotest.png')
#输出坐标
print(location)
#利用center()函数获取目标图像在系统中的中心坐标位置
x,y=pyautogui.center(location)
print('center()',x,y)
#对识别出的目标图像进行点击
#参数x,y代表坐标位置,clicks代表点击次数,button可以设置为左键或者右键
pyautogui.click(x=x,y=y,clicks=1,button='left')
这个已近实现了基于GUI上的操作,区别在与点击不同的按键,需要动态增加按钮。
参考代码
使用的
【pyautogui】利用Python进行windows系统上的图像识别与点击(Mac OS系统也可以)
其他
【Python】通过截图匹配原图中的位置(opencv)
pyppeteer(六)–通过opencv查找图片在另一张图片的位置
这个分成三个部分
a)实现工程中添加C文件
b)对C文件中的代码进行更改
C) 优化后GUI的实现
实现步骤:
文本方式打开工程文件 >>>添加文件
实现对工程文件的读取,并且存到str数组中
f = open("main.uvproj","r") #设置文件对象
str = f.read() #将txt文件的所有内容读入到字符串str中
print(str)
f.close() #将文件关闭
实现main字符串的查找,以及输出行号
findMusic="main";
MusicLine=0;
f = open('main.c','r')
for lines in f.readlines():
MusicLine=MusicLine+1;
if lines.find(findMusic)!=-1:
print(lines)
print("find it .........................")
print(MusicLine)
#print(lines,end='')
f.close()
python实现指定行的更改
代码未验证,应该是python2的代码
#coding=utf-8
lines=[]
f=open("d:\\1script\\1.txt",'r') #your path!
for line in f:
lines.append(line)
f.close()
print lines
lines.insert(3,"666\n") #第四行插入666并回车
s=''.join(lines)
f=open("d:\\1script\\1.txt",'w+') #重新写入文件
f.write(s)
f.close()
del lines[:] #清空列表
print lines
参考代码:
python如何打开一个txt文件 实现了读写的两个功能。
python对文件的指定行写入
实现步骤:打开C文件>>>定位需要更改的位置>>>对比修改库,修改代码>>>保存退出
需要库函数实现代码的定位,识别出全部代码含义实现困难,只能生成代码区域禁止编辑,
实现c文件的读取,以及存储到str中
f = open("main.c","r") #设置文件对象
str = f.read() #将txt文件的所有内容读入到字符串str中
print(str)
f.close() #将文件关闭
做成可复制的,
PS:上面提到的Excel输入可以换成GUI界面的输入。以及图片直接识别出映射关系。
实现步骤:
gpio 读取高低电平>>> 将高低电平上传PC>>>PC根据上传的数据,以及代码编写的部分,得知是否满足要求
FPGA 的高速口可以实现GHZ的判断,但是需要确认普通IO口最大的读取速度。
常见接口速度
接口 | 速度 |
---|---|
IIC | 100K、400K、1M、3.4M等 |
SPI | 50M max?\STM32 最大18M |
SATA | 1.0—1.5Gbps \ 2.0—3Gbps \ 3.0—6Gbps |
UART | 一般不超过20K? |
一般测试最高速度则是18M,如果富裕的设计的话50M最大即可。如果有高速的要求,需要重新绘制PCB,或者提前对接特定的接口。
通过USB的协议上传,常见的有使用特定的USB芯片,实现2.0的传输。基本可以满足需求?
USB的速度:
外文名称 | 时间 | 传输速率 | 供电电压 | 供电电流 |
---|---|---|---|---|
USB1.0 | 1996年 | 1.5 Mbps(0.12 MB/s) (Low-Speed) | 5V | 500mA |
USB1.1 | 1998年 | 12 Mbps(1.5 MB/s) (Full-Speed) | 5V | 500mA |
USB2.0 | 2000年 | 480Mbps(60 MB/s)(High-speed) | 5V | 500mA |
USB3.0 | 2008年 | 5.0Gbps(500MB/s )(Super-speed) | 5V | 900mA |
USB3.1 | – | 10.0Gbps(1000MB/s )(Super-speed) | – | – |
USB传输到电脑
小梅哥:USB2.0 CY7C68013 基于小梅哥ACX720 FPGA开发板,采用了芯片厂家推荐的驱动。
正点原子达芬奇FPGA开发板
这个部分需要开发对应的接收工具,基于USB的学习。这个部分暂时没有相对应的知识储备。
FPGA >>>高速连接器>>> 转接板>>>FPGA子板
前两个则是买的现成的撒灵思开发板,后面的转接板则是多层板,
转接板之后可以接实现逻辑分析的FPGA,也可以接现有的电压转换PCB。
PS:可能遇到的问题:
a)电压匹配的问题。现有FPGA输出电压都是1.8V,
b)板子信号衰减的问题