在嵌入式开发过程中用的比较多的是jlink烧写程序,有时需要通过jlink直接读取芯片内的数据
因此借用python工具去获取,并可以抓取任何想要的数据,就是直接读取地址就可以获取到。
电脑安装的jlink可以直接打开用
通过对应的命令既可以控制jlink读写数据
import pylink
import re, threading,time
from tkinter import filedialog # 路径选择
from tkinter import *
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure
import numpy as np
import tkinter
import os
from tkinter.messagebox import *
pwd = os.getcwd()
main_path=pwd + '\\save_wave\\'#文件保存路径,如果不存在就会被重建
if not os.path.exists(main_path):#如果路径不存在
os.makedirs(main_path)
'''参数'''
print('参数解析')
if 1:
filepath = r'param.log'
logfile = open(filepath, 'r',encoding="utf-8")
line = logfile.readline()
print(line)
SN = re.findall(r"SN:([0-9]+)", line)[0]
line = logfile.readline()
print(line)
dev_id = re.findall(r"DEV:([-a-zA-Z0-9_]+)", line)[0]
line = logfile.readline()
print(line)
show_num = int(re.findall(r"SHOWNUM:([0-9]+)", line)[0])
line = logfile.readline()
print(line)
addr_32 = int(re.findall(r"ADDR_32:([a-zA-Z0-9]+)", line)[0],16)
line = logfile.readline()
print(line)
up_limit = int(re.findall(r"UP:([-0-9]+)", line)[0])
line = logfile.readline()
print(line)
down_limit = int(re.findall(r"DOWN:([-0-9]+)", line)[0])
line = logfile.readline()
print(line)
judge_32 = int(re.findall(r"JUDGE_32:([a-zA-Z0-9]+)", line)[0],16)
line = logfile.readline()
print(line)
judge_cmd = re.findall(r"JUDGE_CMD:(.+)", line)[0]
print("SN {} DEV {} shownum = {} addr32 = {} judge_32 {} up_limit {} down_limit {} judge_cmd {}".format(SN,dev_id,show_num,addr_32,judge_32,up_limit,down_limit,judge_cmd))
logfile.close()
root = Tk() # 创建窗口对象的背景色
root.title("JlinkCapture")
root.geometry('700x500')
# root.iconbitmap('Jlink.ico')
#按钮
# button = Button(root,text='选择文件',bg='lightblue',width=10,command=get_xl)
# button.place(x=400,y=1)
'''jlink'''
myJLINK = pylink.JLink()
'''59800879 59701276 4294967295'''
# myJLINK.open('59800879')
myJLINK.open(SN)
myJLINK.set_tif(pylink.enums.JLinkInterfaces.SWD)
myJLINK.connect(dev_id)
f = Figure(figsize=(1, 1), dpi=100)
fig1=f.add_subplot(211)
fig2=f.add_subplot(212)
canvas = FigureCanvasTkAgg(f, master=root)
canvas.get_tk_widget().pack(side=tkinter.BOTTOM, # 上对齐
fill=tkinter.BOTH, # 填充方式
expand=tkinter.YES) # 随窗口大小调整而调整
toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
canvas._tkcanvas.pack(side=tkinter.TOP, # get_tk_widget()得到的就是_tkcanvas
fill=tkinter.BOTH,
expand=tkinter.YES)
flag_start = True
show_data = []
show_data2 = []
t = []
time_record = []
max_show_num = 1000000
lock = threading.Lock() # 申请一把锁
def is_number(s):
try:
float(s)
return True
except ValueError