built-in openocd support
parent
5846bda565
commit
dff847ff44
@ -0,0 +1,2 @@
|
|||||||
|
source [find interface/stlink.cfg]
|
||||||
|
source [find target/stm32l4x.cfg]
|
@ -0,0 +1,113 @@
|
|||||||
|
#include "imgui.h"
|
||||||
|
#include "ImGuiFileDialog.h"
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
void log(const std::string& str);
|
||||||
|
|
||||||
|
static bool showDownloadFirmware = false;
|
||||||
|
static bool showHelp = false;
|
||||||
|
static std::string firmwareFile;
|
||||||
|
|
||||||
|
static void helpDownloadThread();
|
||||||
|
|
||||||
|
void helpRenderMenu()
|
||||||
|
{
|
||||||
|
if (ImGui::BeginMenu("Help")) {
|
||||||
|
if (ImGui::MenuItem("Open wiki...")) {
|
||||||
|
#ifdef STMDSP_WIN32
|
||||||
|
system("start "
|
||||||
|
#else
|
||||||
|
system("xdg-open "
|
||||||
|
#endif
|
||||||
|
"https://code.bitgloo.com/clyne/stmdspgui/wiki");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGui::MenuItem("Download firmware...")) {
|
||||||
|
showDownloadFirmware = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::Separator();
|
||||||
|
if (ImGui::MenuItem("About")) {
|
||||||
|
showHelp = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::EndMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void helpRenderDialog()
|
||||||
|
{
|
||||||
|
if (showDownloadFirmware) {
|
||||||
|
showDownloadFirmware = false;
|
||||||
|
ImGuiFileDialog::Instance()->OpenModal(
|
||||||
|
"ChooseFileFW", "Choose Firmware File", ".hex", ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGuiFileDialog::Instance()->Display("ChooseFileFW",
|
||||||
|
ImGuiWindowFlags_NoCollapse,
|
||||||
|
ImVec2(460, 540)))
|
||||||
|
{
|
||||||
|
if (ImGuiFileDialog::Instance()->IsOk()) {
|
||||||
|
firmwareFile = ImGuiFileDialog::Instance()->GetFilePathName();
|
||||||
|
#ifdef STMDSP_WIN32
|
||||||
|
size_t i = 0;
|
||||||
|
while ((i = firmwareFile.find('\\', i)) != std::string::npos) {
|
||||||
|
firmwareFile.replace(i, 1, "\\\\");
|
||||||
|
i += 2;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::thread(helpDownloadThread).detach();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGuiFileDialog::Instance()->Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (showHelp) {
|
||||||
|
ImGui::Begin("help");
|
||||||
|
|
||||||
|
ImGui::Text("stmdspgui\nCompiled on " __DATE__ ".\n\nWritten by Clyne Sullivan.\n");
|
||||||
|
|
||||||
|
if (ImGui::Button("Close")) {
|
||||||
|
showHelp = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!firmwareFile.empty()) {
|
||||||
|
ImGui::Begin("Downloading");
|
||||||
|
|
||||||
|
ImGui::Text("Downloading firmware to device...");
|
||||||
|
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void helpDownloadThread()
|
||||||
|
{
|
||||||
|
std::string command (
|
||||||
|
#ifdef STMDSP_WIN32
|
||||||
|
"openocd\\bin\\openocd.exe"
|
||||||
|
#else
|
||||||
|
"openocd"
|
||||||
|
#endif
|
||||||
|
" -f openocd.cfg -c \"program $0 reset exit\"");
|
||||||
|
|
||||||
|
command.replace(command.find("$0"), 2, firmwareFile);
|
||||||
|
|
||||||
|
std::cout << "Run: " << command << std::endl;
|
||||||
|
|
||||||
|
if (system(command.c_str()) == 0) {
|
||||||
|
log("Programming finished.");
|
||||||
|
} else {
|
||||||
|
log("Error while programming device!");
|
||||||
|
}
|
||||||
|
|
||||||
|
firmwareFile.clear();
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue