Skip to content

Commit b6213f0

Browse files
Initial
1 parent 5504708 commit b6213f0

21 files changed

+1436
-0
lines changed

Flasher.h

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
//------------------------------------------------------------------------
2+
// Copyright(c) 2024 Dad Design.
3+
//
4+
// Utility for flashing QSPIFlash memory from a PC
5+
// Memory structure and transmission blocks
6+
//-----------------------------------------------------------------------
7+
#pragma once
8+
#include <stdint.h>
9+
10+
namespace Dad {
11+
12+
#define QSPI_SIZE 8388608 // Size of the QSPI flash memory 8M = 8 * 1024 * 1024
13+
#define QSPI_PAGE_SIZE 4096 // 4K per page
14+
#define QSPI_PAGE_COUNT 2048 // Number of QSPI pages for the flasher 2024 * 4096 4MB
15+
#define QSPI_ADRESSE 0x90000000
16+
17+
//#define TRANS_BLOCK_COUNT 4 // Number of Blocks to transmit per QSPI page (1,2,4,8,16,32)
18+
#define TRANS_BLOCK_SIZE 1024 // Size of a transmission block
19+
20+
#define MAX_ENTRY_NAME 40 // Number of pages reserved at the beginning of QSPI Flash
21+
#define DIR_FILE_COUNT 20 // Number of entries in the Directory
22+
23+
// Directory structure
24+
typedef struct stFile {
25+
char Name[MAX_ENTRY_NAME];
26+
uint32_t Size;
27+
uint32_t DataAddress;
28+
} Directory[DIR_FILE_COUNT];
29+
30+
// Structure of the memory area in QSPI used by the flasher
31+
typedef uint8_t Page[QSPI_PAGE_SIZE];
32+
struct stQSPI {
33+
Page Data[QSPI_PAGE_COUNT]; // Pages used by file data
34+
};
35+
static_assert(sizeof(stQSPI) <= QSPI_SIZE, "Memory used > QSPI Flash memory size");
36+
37+
// Structure of a transmission block on the server side
38+
struct Bloc {
39+
char StartMarker[4]; // Block start delimiter "BLOC"
40+
uint16_t NumBloc; // Block number
41+
uint8_t _CRC; // Checksum
42+
uint8_t _EndTrans; // End of transmission identifier
43+
uint8_t Data[TRANS_BLOCK_SIZE]; // Data
44+
char EndMarker[3]; // Block end delimiter "END"
45+
};
46+
47+
// Structure of a transmission block on the client side
48+
struct MsgClient {
49+
char StartMarker[4]; // Block start delimiter "BLOC", "STOP"
50+
uint16_t NumBloc; // Expected block number
51+
};
52+
53+
} //Dad

FlasherServer.cpp

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
2+
// FlasherServer.cpp : définit les comportements de classe de l'application.
3+
//
4+
5+
#include "pch.h"
6+
#include "framework.h"
7+
#include "FlasherServer.h"
8+
#include "FlasherServerDlg.h"
9+
10+
#ifdef _DEBUG
11+
#define new DEBUG_NEW
12+
#endif
13+
14+
15+
// CFlasherServerApp
16+
17+
BEGIN_MESSAGE_MAP(CFlasherServerApp, CWinApp)
18+
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
19+
END_MESSAGE_MAP()
20+
21+
22+
// Construction de CFlasherServerApp
23+
24+
CFlasherServerApp::CFlasherServerApp()
25+
{
26+
// prend en charge le Gestionnaire de redémarrage
27+
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
28+
29+
// TODO: ajoutez ici du code de construction,
30+
// Placez toutes les initialisations significatives dans InitInstance
31+
}
32+
33+
34+
// Le seul et unique objet CFlasherServerApp
35+
36+
CFlasherServerApp theApp;
37+
38+
39+
// Initialisation de CFlasherServerApp
40+
41+
BOOL CFlasherServerApp::InitInstance()
42+
{
43+
// InitCommonControlsEx() est requis sur Windows XP si le manifeste de l'application
44+
// spécifie l'utilisation de ComCtl32.dll version 6 ou ultérieure pour activer les
45+
// styles visuels. Dans le cas contraire, la création de fenêtres échouera.
46+
INITCOMMONCONTROLSEX InitCtrls;
47+
InitCtrls.dwSize = sizeof(InitCtrls);
48+
// À définir pour inclure toutes les classes de contrôles communs à utiliser
49+
// dans votre application.
50+
InitCtrls.dwICC = ICC_WIN95_CLASSES;
51+
InitCommonControlsEx(&InitCtrls);
52+
53+
CWinApp::InitInstance();
54+
55+
56+
AfxEnableControlContainer();
57+
58+
// Créer le gestionnaire de shell, si la boîte de dialogue contient
59+
// des contrôles d'arborescence ou de liste de shell.
60+
CShellManager *pShellManager = new CShellManager;
61+
62+
// Active le gestionnaire visuel "natif Windows" pour activer les thèmes dans les contrôles MFC
63+
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
64+
65+
// Initialisation standard
66+
// Si vous n'utilisez pas ces fonctionnalités et que vous souhaitez réduire la taille
67+
// de votre exécutable final, vous devez supprimer ci-dessous
68+
// les routines d'initialisation spécifiques dont vous n'avez pas besoin.
69+
// Changez la clé de Registre sous laquelle nos paramètres sont enregistrés
70+
// TODO: modifiez cette chaîne avec des informations appropriées,
71+
// telles que le nom de votre société ou organisation
72+
SetRegistryKey(_T("Applications locales générées par AppWizard"));
73+
74+
CFlasherServerDlg dlg;
75+
m_pMainWnd = &dlg;
76+
INT_PTR nResponse = dlg.DoModal();
77+
if (nResponse == IDOK)
78+
{
79+
// TODO: placez ici le code définissant le comportement lorsque la boîte de dialogue est
80+
// fermée avec OK
81+
}
82+
else if (nResponse == IDCANCEL)
83+
{
84+
// TODO: placez ici le code définissant le comportement lorsque la boîte de dialogue est
85+
// fermée avec Annuler
86+
}
87+
else if (nResponse == -1)
88+
{
89+
TRACE(traceAppMsg, 0, "Avertissement : échec de création de la boîte de dialogue, par conséquent, l'application s'arrête de manière inattendue.\n");
90+
TRACE(traceAppMsg, 0, "Avertissement : si vous utilisez les contrôles MFC de la boîte de dialogue, vous ne pouvez pas exécuter #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS.\n");
91+
}
92+
93+
// Supprimer le gestionnaire de shell créé ci-dessus.
94+
if (pShellManager != nullptr)
95+
{
96+
delete pShellManager;
97+
}
98+
99+
#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS)
100+
ControlBarCleanUp();
101+
#endif
102+
103+
// Lorsque la boîte de dialogue est fermée, retourner FALSE afin de quitter
104+
// l'application, plutôt que de démarrer la pompe de messages de l'application.
105+
return FALSE;
106+
}
107+

FlasherServer.h

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
// FlasherServer.h : fichier d'en-tête principal de l'application PROJECT_NAME
3+
//
4+
5+
#pragma once
6+
7+
#ifndef __AFXWIN_H__
8+
#error "incluez 'pch.h' avant d'inclure ce fichier pour PCH"
9+
#endif
10+
11+
#include "resource.h" // symboles principaux
12+
13+
14+
// CFlasherServerApp :
15+
// Consultez FlasherServer.cpp pour l'implémentation de cette classe
16+
//
17+
18+
class CFlasherServerApp : public CWinApp
19+
{
20+
public:
21+
CFlasherServerApp();
22+
23+
// Substitutions
24+
public:
25+
virtual BOOL InitInstance();
26+
27+
// Implémentation
28+
29+
DECLARE_MESSAGE_MAP()
30+
};
31+
32+
extern CFlasherServerApp theApp;

FlasherServer.rc

13 KB
Binary file not shown.

FlasherServer.sln

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.10.35004.147
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FlasherServer", "FlasherServer.vcxproj", "{05CEF717-8EAE-4B7D-AE1A-A7C303CA2DE8}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|x64 = Debug|x64
11+
Debug|x86 = Debug|x86
12+
Release|x64 = Release|x64
13+
Release|x86 = Release|x86
14+
EndGlobalSection
15+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
16+
{05CEF717-8EAE-4B7D-AE1A-A7C303CA2DE8}.Debug|x64.ActiveCfg = Debug|x64
17+
{05CEF717-8EAE-4B7D-AE1A-A7C303CA2DE8}.Debug|x64.Build.0 = Debug|x64
18+
{05CEF717-8EAE-4B7D-AE1A-A7C303CA2DE8}.Debug|x86.ActiveCfg = Debug|Win32
19+
{05CEF717-8EAE-4B7D-AE1A-A7C303CA2DE8}.Debug|x86.Build.0 = Debug|Win32
20+
{05CEF717-8EAE-4B7D-AE1A-A7C303CA2DE8}.Release|x64.ActiveCfg = Release|x64
21+
{05CEF717-8EAE-4B7D-AE1A-A7C303CA2DE8}.Release|x64.Build.0 = Release|x64
22+
{05CEF717-8EAE-4B7D-AE1A-A7C303CA2DE8}.Release|x86.ActiveCfg = Release|Win32
23+
{05CEF717-8EAE-4B7D-AE1A-A7C303CA2DE8}.Release|x86.Build.0 = Release|Win32
24+
EndGlobalSection
25+
GlobalSection(SolutionProperties) = preSolution
26+
HideSolutionNode = FALSE
27+
EndGlobalSection
28+
GlobalSection(ExtensibilityGlobals) = postSolution
29+
SolutionGuid = {E55537A7-E21A-422C-865B-A67F72483B1A}
30+
EndGlobalSection
31+
EndGlobal

0 commit comments

Comments
 (0)