Init qspi flash

This commit is contained in:
L-diy
2023-11-13 13:29:36 +01:00
parent 598ec19127
commit 81b7377f1b
2 changed files with 17 additions and 146 deletions

View File

@@ -23,9 +23,10 @@
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#define LOGGER_LEVEL_ALL
#include "../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_qspi.h"
#include "../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_lcd.h"
#include "log.h"
#include "llfs.h"
#include "../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_lcd.h"
#include "lcd_api.h"
/* USER CODE END Includes */
@@ -113,154 +114,18 @@ int main(void)
MX_LWIP_Init();
MX_QUADSPI_Init();
/* USER CODE BEGIN 2 */
/* Initialize QSPI */
BSP_QSPI_Init();
BSP_QSPI_MemoryMappedMode();
WRITE_REG(QUADSPI->LPTR, 0xFFF);
/* Initialize the LCD */
lcd_init(true);
/* Initialize the filesystem */
llfs_init();
FILE *f = fopen("test.txt", "rw");
if (f == NULL) {
LOG_INFO(TAG, "File not found test.txt");
return 1;
} else {
LOG_INFO(TAG, "File found test.txt");
}
// Test POSIX file operations
// fgetc
int c;
printf("Printing file:\n");
while ((c = fgetc(f)) != EOF) {
printf("%c", c);
}
LOG_INFO(TAG, "File printed");
// fseek
fseek(f, 0, SEEK_SET);
LOG_INFO(TAG, "File seeked to start");
// ftell
long pos = ftell(f);
LOG_INFO(TAG, "File position: %d", pos);
// fread
char buf[100];
size_t bytes_read = fread(buf, 1, 100, f);
LOG_INFO(TAG, "Read %d bytes from file", bytes_read);
printf("Read from file:\n");
for (int i = 0; i < bytes_read; i++) {
printf("%c", buf[i]);
}
// Rewind the file
LOG_INFO(TAG, "Before File rewinded, pos: %d", ftell(f));
rewind(f);
LOG_INFO(TAG, "File rewinded, pos: %d", ftell(f));
// Get the file size fstat
struct stat st;
fstat(fileno(f), &st);
LOG_INFO(TAG, "File size: %d", st.st_size);
// Get a list of all files with the .bmp extension
llfs_file_t file_list[10];
size_t num_files = llfs_file_list(file_list, 10, "*.bmp");
LOG_INFO(TAG, "Found %d files with the .bmp extension", num_files);
for (int i = 0; i < num_files; i++) {
LOG_INFO(TAG, "File %d: %s", i, file_list[i].name);
}
// Get a list of files with .txt or .html
num_files = llfs_file_list(file_list, 10, "*.txt");
LOG_INFO(TAG, "Found %d files with the .txt or .html extension", num_files);
for (int i = 0; i < num_files; i++) {
LOG_INFO(TAG, "File %d: %s", i, file_list[i].name);
}
// Loop over all files using the iterator
LOG_INFO(TAG, "Looping over all files, using the iterator");
void *mem = NULL;
llfs_file_t *file;
while ((file = llfs_next_file(&mem, NULL)) != NULL) {
LOG_INFO(TAG, "File: %s", file->name);
}
// Loop over all files with the .bmp extension using the iterator
LOG_INFO(TAG, "Looping over all files with the .bmp extension, using the iterator");
mem = NULL;
while ((file = llfs_next_file(&mem, "*.bmp")) != NULL) {
LOG_INFO(TAG, "File: %s", file->name);
}
// Get the number of files in the filesystem
size_t num_files_in_fs = llfs_file_count();
LOG_INFO(TAG, "Number of files in the filesystem: %d", num_files_in_fs);
fclose(f);
// Try opening multiple files
LOG_INFO(TAG, "Opening an closing multiple files");
FILE * f1 = fopen("test.txt", "rw");
if (f1 == NULL) {
LOG_INFO(TAG, "File not found f1");
return 1;
} else {
LOG_INFO(TAG, "File found f1");
}
// Get the fileno
int fd = fileno(f1);
LOG_INFO(TAG, "File descriptor f1: %d", fd);
FILE * f2 = fopen("test.txt", "rw");
if (f2 == NULL) {
LOG_INFO(TAG, "File not found f2");
return 1;
} else {
LOG_INFO(TAG, "File found f2");
}
// Get the fileno
fd = fileno(f2);
LOG_INFO(TAG, "File descriptorf2: %d", fd);
LOG_INFO(TAG, "Closing f1");
fclose(f1);
FILE * f3 = fopen("test.txt", "rw");
if (f3 == NULL) {
LOG_INFO(TAG, "File not found f3");
return 1;
} else {
LOG_INFO(TAG, "File found f3");
}
// Get the fileno
fd = fileno(f3);
LOG_INFO(TAG, "File descriptor f3: %d", fd);
LOG_INFO(TAG, "Closing f2");
fclose(f2);
LOG_INFO(TAG, "Closing f3");
fclose(f3);
// Try opening a file multiple times, until it fails
int i = 0;
LOG_INFO(TAG, "Opening a file multiple times, until it fails");
while (1) {
f = fopen("test.txt", "rw");
LOG_INFO(TAG, "File descriptor: %d", fileno(f));
if (f == NULL) {
LOG_INFO(TAG, "File not found test.txt");
break;
} else {
LOG_INFO(TAG, "File found test.txt");
}
i++;
}
LOG_INFO(TAG, "File opened %d times", i);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */