Loader용 코드를 추가할 폴더를 최상위에 생성한다.
이름은 Loader로 입력한다.
아래와 같이 폴더가 추가된것을 확인한다.
Dev_Info.h, Dev_Info.c 파일을 Loader 폴더에 추가한다.
#define MCU_FLASH 1
#define NAND_FLASH 2
#define NOR_FLASH 3
#define SRAM 4
#define PSRAM 5
#define PC_CARD 6
#define SPI_FLASH 7
#define I2C_FLASH 8
#define SDRAM 9
#define I2C_EEPROM 10
#define SECTOR_NUM 10 // Max Number of Sector types
struct DeviceSectors
{
unsigned long SectorNum; // Number of Sectors
unsigned long SectorSize; // Sector Size in Bytes
};
struct StorageInfo
{
char DeviceName[100]; // Device Name and Description
unsigned short DeviceType; // Device Type: ONCHIP, EXT8BIT, EXT16BIT, ...
unsigned long DeviceStartAddress; // Default Device Start Address
unsigned long DeviceSize; // Total Size of Device
unsigned long PageSize; // Programming Page Size
unsigned char EraseValue; // Content of Erased Memory
struct DeviceSectors sectors[SECTOR_NUM];
};
#include "Dev_Inf.h"
/* This structure containes information used by ST-LINK Utility to program and erase the device */
#if defined (__ICCARM__)
__root struct StorageInfo const StorageInfo = {
#else
struct StorageInfo const StorageInfo = {
#endif
"W25Q128J_STM32H7-GFX", // Device Name + EVAL Borad name
SPI_FLASH, // Device Type
0x90000000, // Device Start Address
0x1000000, // Device Size in Bytes (16MBytes)
0x100, // Programming Page Size 256Bytes
0xFF, // Initial Content of Erased Memory
// Specify Size and Address of Sectors (view example below)
{{256, 64 * 1024}, // Sector Num : 512 ,Sector Size: 64KBytes
{0x00000000, 0x00000000}},
};
Dev_Inf.c에 표시할 이름을 입력한다. 언더바(_) 뒤에 보드 이름을 입력한다.
아래와 같이 Loader 폴더 밑에 2개의 파일이 있어야 한다.
Loader_Src.c 파일을 Loader 폴더에 추가한다.
Loader_Src.c에는 구현해야 할 함수들이 있고 향후에 이 함수들을 구현해야 한다.
int Init (void)
{
return 1;
}
int Write (uint32_t Address, uint32_t Size, uint8_t* buffer)
{
return 1;
}
int SectorErase (uint32_t EraseStartAddress ,uint32_t EraseEndAddress)
{
return 1;
}
int Read (uint32_t Address, uint32_t Size, uint8_t* Buffer)
{
return 1;
}
int MassErase (uint32_t Parallelism )
{
return 1;
}
함수는 정상인 경우 1을 리턴하고 그렇지 않으면 0을 리턴한다.