【源码分享】python开发的高通平台fastboot刷机工具

本文分享了一款使用Python编写的Windows版高通平台Fastboot刷机工具,该工具简化了模块烧录流程,适用于日常开发调试。在Win7和Win10系统上测试通过,支持msm8909平台。源码包括两个Python文件:fastboot_tool.py(GUI界面)和fastboot_cmd.py(命令执行)。提供了打包后的exe文件下载链接以及烧录的镜像文件列表。
摘要由CSDN通过智能技术生成

     用python开发的windows版本高通平台fastboot刷机工具, 点击按钮即可单独烧录模块或者全部烧录,方便日常

的开发调试工作,在win7、Win10系统中测试烧录msm8909平台正常。开发工具为JetBrains PyCharm 2019.1.1,

源码工程包含两个py文件,分别是fastboot_tool.py和fastboot_cmd.py ,打包好的exe文件下载地址如下。

https://download.csdn.net/download/hismee/16335703

软件界面:

打包好后的烧录工具目录结构:

烧录的镜像文件列表:

   boot.img
   cache.img
   emmc_appsboot.mbn
   logo.raw
   persist.img
   recovery.img
   system.img
   userdata.img

 

源码:

1、fastboot_tool.py   #GUI主界面

# -*- coding: UTF-8 -*-
from tkinter import *
from fastboot_cmd import *

import configparser
import threading
import os
import tkinter.filedialog
import time


# ------------------define global variate-----------------------
btn_select_image_dir = None
btn_download_boot = None
btn_download_aboot = None
btn_download_system = None
btn_download_logo = None
btn_download_userdata = None
btn_download_all = None
btn_reboot_device = None
btn_sn_write = None
btn_sn_read = None

image_file_path = None
download_running_flag = None

login_top = None
login_ok_flag = None
# ------------------define function-----------------------
def Log(str):
    print(str)
    log_text.insert(END, '\n' + str)
    log_text.see(END)
    if ('ErrorFFFF' in str) and ('error' in str):
        index = log_text.get('1.0', 'end').count('\n')
        #print index
        index1 = '%d.0' %index
        index2 = '%d.end' %index
        log_text.tag_add('tag1', index1, index2 )
        log_text.tag_config('tag1',foreground='red')

def LogE(str):
    print(str)
    star = int(float(log_text.index(END)))
    log_text.insert(END, '\n' + str)
    log_text.see(END)
    end = int(float(log_text.index(END)))

    for i in range(star, end, 1):
        index1 = '%d.0' %i
        index2 = '%d.end' %i
        log_text.tag_add('tag_red', index1, index2 )
        #print("LogE:%d" %i )
    log_text.tag_config('tag_red', foreground='red')

def LogB(str):
    print(str)
    star = int(float(log_text.index(END)))
    log_text.insert(END, "\n" + str)
    log_text.see(END)
    end = int(float(log_text.index(END)))
    for i in range(star, end, 1):
        index1 = '%d.0' %i
        index2 = '%d.end' %i
        log_text.tag_add('tag_blue', index1, index2 )
    log_text.tag_config('tag_blue', foreground='blue')


def Log_dot():
    print('.',)
    log_text.insert(END, ".")
    log_text.see(END)


def set_button_onoff(onoff):
    if onoff == "on":
        btn_select_image_dir.config(state="normal")
        btn_download_boot.config(state="normal")
        btn_download_aboot.config(state="normal")
        btn_download_system.config(state="normal")
        btn_download_logo.config(state="normal")
        btn_download_userdata.config(state="normal")
        btn_download_all.config(state="normal")
        btn_reboot_device.config(state="normal")
        if (login_ok_flag == 1):
            btn_sn_write.config(state="normal")
            btn_sn_read.config(state="normal")
        pass
    if onoff == "off":
        btn_select_image_dir.config(state="disabled")
        btn_download_boot.config(state="disabled")
        btn_download_aboot.config(state="disabled")
        btn_download_system.config(state="disabled")
        btn_download_logo.config(state="disabled")
        btn_download_userdata.config(state="disabled")
        btn_download_all.config(state="disabled")
        btn_reboot_device.config(state="disabled")
        if (login_ok_flag == 1):
            btn_sn_write.config(state="disabled")
            btn_sn_read.config(state="disabled")
        pass

def btn_select_image_dir_click():
    options = {}
    options['initialdir'] = text_path.get(0.0, END).strip()
    dir_name=tkinter.filedialog.askdirectory(**options)
    #Log(dir_name)
    if dir_name != "":
        text_path.config(state=NORMAL)
        text_path.delete(1.0,END)
        text_path.insert(END, dir_name)
        text_path.config(state=DISABLED)
        Log("\nSelect directory:\n" + text_path.get(0.0, END))
        config_save('image_file_path', dir_name)
        global image_file_path
        image_file_path = dir_name

# ----------------------------------------------------------------
def progress_bar_thread_fun():
    time.sleep(2)
    if download_running_flag:
        Log('')
    for i in range(0,40):
        if download_running_flag:
            Log_dot()
            time.sleep(2)
        else:
            break

def thread_check_fastboot_mode_and_download_fun(func, path):
    time.sleep(0.3)
    set_button_onoff('off&#
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值