aboutsummaryrefslogtreecommitdiffhomepage
path: root/AT91SAM7S256/Source/c_loader.c
diff options
context:
space:
mode:
authorNicolas Schodet2023-03-06 17:36:31 +0100
committerNicolas Schodet2023-03-06 17:36:31 +0100
commitd383f2bcdb6ff13cc562fce1ff55d826035debad (patch)
treef5cd0440869b8ba823fd254b361cdefe95e153b4 /AT91SAM7S256/Source/c_loader.c
parent8fce63fda48a6593870ffd3c584c9dd0808bc2c2 (diff)
Simplify source tree
Now just use make in the root directory to build.
Diffstat (limited to 'AT91SAM7S256/Source/c_loader.c')
-rw-r--r--AT91SAM7S256/Source/c_loader.c464
1 files changed, 0 insertions, 464 deletions
diff --git a/AT91SAM7S256/Source/c_loader.c b/AT91SAM7S256/Source/c_loader.c
deleted file mode 100644
index 995c920..0000000
--- a/AT91SAM7S256/Source/c_loader.c
+++ /dev/null
@@ -1,464 +0,0 @@
-//
-// Date init 14.12.2004
-//
-// Revision date $Date:: 12-03-08 15:28 $
-//
-// Filename $Workfile:: c_loader.c $
-//
-// Version $Revision:: 5 $
-//
-// Archive $Archive:: /LMS2006/Sys01/Main_V02/Firmware/Source/c_load $
-//
-// Platform C
-//
-
-#include "stdconst.h"
-#include "modules.h"
-#include "c_loader.iom"
-#include "c_ioctrl.iom"
-#include "d_loader.h"
-#include "c_loader.h"
-
-static IOMAPLOADER IOMapLoader;
-static VARSLOADER VarsLoader;
-static HEADER **pHeaders;
-
-const HEADER cLoader =
-{
- 0x00090001L,
- "Loader",
- cLoaderInit,
- cLoaderCtrl,
- cLoaderExit,
- (void *)&IOMapLoader,
- (void *)&VarsLoader,
- (UWORD)sizeof(IOMapLoader),
- (UWORD)sizeof(VarsLoader),
- 0x0000 //Code size - not used so far
-};
-
-UWORD cLoaderFileRq(UBYTE Cmd, UBYTE *pFileName, UBYTE *pBuffer, ULONG *pLength);
-UWORD cLoaderGetIoMapInfo(ULONG ModuleId, UBYTE *pIoMap, UWORD *pIoMapSize);
-UWORD cLoaderFindModule(UBYTE *pBuffer);
-void cLoaderGetModuleName(UBYTE *pDst, UBYTE *pModule);
-
-void cLoaderInit(void* pHeader)
-{
-
- IOMapLoader.pFunc = &cLoaderFileRq;
- VarsLoader.IoMapHandle = FALSE;
- pHeaders = pHeader;
- dLoaderInit();
- IOMapLoader.FreeUserFlash = dLoaderReturnFreeUserFlash();
-}
-
-void cLoaderCtrl(void)
-{
-}
-
-
-
-UWORD cLoaderFileRq(UBYTE Cmd, UBYTE *pFileName, UBYTE *pBuffer, ULONG *pLength)
-{
- UWORD ReturnState;
-
- ReturnState = SUCCESS;
-
- switch(Cmd)
- {
- case OPENREAD:
- {
- ReturnState = dLoaderOpenRead(pFileName, pLength);
- if (0x8000 <= ReturnState)
- {
- dLoaderCloseHandle(ReturnState);
- }
- }
- break;
- case OPENREADLINEAR:
- {
- ReturnState = dLoaderGetFilePtr(pFileName, pBuffer, pLength);
- if (0x8000 <= ReturnState)
- {
- dLoaderCloseHandle(ReturnState);
- }
-
- }
- break;
- case OPENWRITE:
- {
-
- /* This is to create a new file */
- ReturnState = dLoaderCreateFileHeader(*pLength, pFileName, (UBYTE) NONLINEAR, SYSTEMFILE);
- if (0x8000 <= ReturnState)
- {
- dLoaderCloseHandle(ReturnState);
- }
- else
- {
- IOMapLoader.FreeUserFlash = dLoaderReturnFreeUserFlash();
- }
- }
- break;
- case OPENWRITELINEAR:
- {
- ReturnState = dLoaderCreateFileHeader(*pLength, pFileName, (UBYTE) LINEAR, SYSTEMFILE);
- if (0x8000 <= ReturnState)
- {
- dLoaderCloseHandle(ReturnState);
- }
- else
- {
- IOMapLoader.FreeUserFlash = dLoaderReturnFreeUserFlash();
- }
- }
- break;
- case OPENWRITEDATA:
- {
-
- ReturnState = dLoaderCreateFileHeader(*pLength, pFileName, (UBYTE) NONLINEAR, DATAFILE);
- if (0x8000 <= ReturnState)
- {
- dLoaderCloseHandle(ReturnState);
- }
- else
- {
- IOMapLoader.FreeUserFlash = dLoaderReturnFreeUserFlash();
- }
- }
- break;
- case OPENAPPENDDATA:
- {
- ReturnState = dLoaderOpenAppend(pFileName, pLength);
- if (LOADER_ERR(ReturnState) != SUCCESS)
- {
- dLoaderCloseHandle(ReturnState);
- }
- }
- break;
- case CLOSE:
- {
- ReturnState = dLoaderCloseHandle(*pFileName);
- }
- break;
- case CROPDATAFILE:
- {
- ReturnState = dLoaderCropDatafile(*pFileName);
- IOMapLoader.FreeUserFlash = dLoaderReturnFreeUserFlash();
- }
- break;
- case READ:
- {
- ReturnState = dLoaderRead(*pFileName, pBuffer, pLength);
- }
- break;
- case WRITE:
- {
- ReturnState = dLoaderWriteData(*pFileName, pBuffer, (UWORD*)pLength);
- }
- break;
- case FINDFIRST:
- {
- ULONG DataLength;
-
- ReturnState = dLoaderFind(pFileName, pBuffer, pLength, &DataLength, (UBYTE) SEARCHING);
- if (0x8000 <= ReturnState)
- {
- dLoaderCloseHandle(ReturnState);
- }
- }
- break;
- case FINDNEXT:
- {
- UWORD Handle;
- ULONG DataLength;
-
- Handle = *pFileName;
- ReturnState = dLoaderFindNext(Handle, pBuffer, pLength, &DataLength);
- }
- break;
- case DELETE:
- {
- ReturnState = dLoaderDelete(pFileName);
- IOMapLoader.FreeUserFlash = dLoaderReturnFreeUserFlash();
-
- }
- break;
- case DELETEUSERFLASH:
- {
- dLoaderDeleteAllFiles();
- IOMapLoader.FreeUserFlash = dLoaderReturnFreeUserFlash();
-
- }
- break;
-
- case FINDFIRSTMODULE:
- {
- if (FALSE == VarsLoader.IoMapHandle)
- {
- VarsLoader.IoMapHandle = TRUE;
- VarsLoader.ModSearchIndex = 0;
- dLoaderInsertSearchStr(VarsLoader.ModSearchStr, pFileName, &(VarsLoader.ModSearchType));
- ReturnState = cLoaderFindModule(pBuffer);
- }
- else
- {
- ReturnState = NOMOREHANDLES;
- }
- }
- break;
-
- case FINDNEXTMODULE:
- {
- ReturnState = cLoaderFindModule(pBuffer);
- }
- break;
-
- case CLOSEMODHANDLE:
- {
- VarsLoader.IoMapHandle = FALSE;
- ReturnState = SUCCESS;
- }
- break;
-
- case IOMAPREAD:
- {
-
- UBYTE *pIoMap;
- ULONG Ptr;
- UWORD IoMapSize;
- UBYTE Tmp;
-
- pIoMap = NULL;
- ReturnState = cLoaderGetIoMapInfo((*(ULONG*)(pFileName)),(UBYTE*)(&pIoMap), &IoMapSize);
-
- /* Did we have a valid module ID ?*/
- if (SUCCESS == LOADER_ERR(ReturnState))
- {
-
- /* This is the offset */
- Ptr = pBuffer[0];
- Ptr |= (UWORD)pBuffer[1] << 8;
-
- /* is the offset within the limits of the iomap size? */
- if ((Ptr + *pLength) <= IoMapSize)
- {
-
- /* Add the offset to the pointer */
- pIoMap += Ptr;
-
- for (Tmp = 0; Tmp < *pLength; Tmp++)
- {
- pBuffer[Tmp + 2] = *pIoMap;
- pIoMap++;
- }
- }
- else
- {
-
- /* Error - not within the bounderies */
- ReturnState = OUTOFBOUNDERY;
- *pLength = 0;
- }
- }
- else
- {
-
- /* Error - not a valid module id */
- *pLength = 0;
- }
- }
- break;
-
- case IOMAPWRITE:
- {
- UBYTE *pIoMap;
- ULONG Ptr;
- UWORD IoMapSize;
- UWORD Tmp;
-
-
- pIoMap = NULL;
- ReturnState = cLoaderGetIoMapInfo(*((ULONG*)pFileName), (UBYTE*)&pIoMap, &IoMapSize);
-
- if (LOADER_ERR(ReturnState) == SUCCESS)
- {
-
- /* This is the offset */
- Ptr = *pBuffer;
- pBuffer++;
- Tmp = *pBuffer;
- Ptr |= Tmp << 8;
- pBuffer++;
-
- if ((Ptr + *pLength) <= IoMapSize)
- {
-
- pIoMap += Ptr;
- for (Tmp = 0; Tmp < *pLength; Tmp++)
- {
- *pIoMap = pBuffer[Tmp];
- pIoMap++;
- }
- }
- else
- {
-
- /* Error - not within the bounderies */
- ReturnState = OUTOFBOUNDERY;
- *pLength = 0;
- }
- }
- else
- {
-
- /* Error - not a valid module id */
- *pLength = 0;
- }
- }
- break;
-
- case RENAMEFILE:
- {
- UBYTE FoundName[FILENAME_LENGTH + 1];
-
- /* Check for file exists*/
- ReturnState = dLoaderFind(pBuffer, FoundName, pLength, pLength, (UBYTE) SEARCHING);
- dLoaderCloseHandle(LOADER_HANDLE(ReturnState));
- if (FILENOTFOUND == LOADER_ERR(ReturnState))
- {
- ReturnState = dLoaderFind(pFileName, FoundName, pLength, pLength, (UBYTE) SEARCHING);
- if (ReturnState < 0x8000)
- {
- ReturnState = dLoaderCheckFiles((UBYTE) ReturnState);
- if (ReturnState < 0x8000)
- {
- dLoaderRenameFile((UBYTE) ReturnState, pBuffer);
- }
- }
- dLoaderCloseHandle(LOADER_HANDLE(ReturnState));
- }
- else
- {
- if (SUCCESS == LOADER_ERR(ReturnState))
- {
- ReturnState |= FILEEXISTS;
- }
- }
- }
- break;
-
- default:
- {
- }
- break;
- }
- return (ReturnState);
-}
-
-UWORD cLoaderGetIoMapInfo(ULONG ModuleId, UBYTE *pIoMap, UWORD *pIoMapSize)
-{
- UBYTE Tmp;
- UBYTE Exit;
- UWORD RtnVal;
-
- RtnVal = SUCCESS;
- Tmp = 0;
- Exit = FALSE;
- while((Tmp < 32) && (Exit == FALSE))
- {
- if ((*(pHeaders[Tmp])).ModuleID == ModuleId)
- {
- Exit = TRUE;
- }
- else
- {
- Tmp++;
- }
- }
-
- /* Did we have a valid module ID ?*/
- if (TRUE == Exit)
- {
- /* Get the pointer of the module io map */
- *((ULONG *)pIoMap) = (ULONG)((*(pHeaders[Tmp])).pIOMap);
- *pIoMapSize = (*(pHeaders[Tmp])).IOMapSize;
- }
- else
- {
- RtnVal = MODULENOTFOUND;
- }
-
- /* To avoid a warning - this is optimized away */
- *pIoMap = *pIoMap;
- return(RtnVal);
-}
-
-UWORD cLoaderFindModule(UBYTE *pBuffer)
-{
- UBYTE Tmp;
- UWORD RtnVal;
- UBYTE ModuleName[FILENAME_SIZE];
-
- RtnVal = MODULENOTFOUND;
-
- for (Tmp = VarsLoader.ModSearchIndex; Tmp < 32; Tmp++)
- {
- if (pHeaders[Tmp] != 0)
- {
-
- cLoaderGetModuleName(ModuleName, ((*(pHeaders[Tmp])).ModuleName));
- if (SUCCESS == dLoaderCheckName(ModuleName, VarsLoader.ModSearchStr, VarsLoader.ModSearchType))
- {
-
- dLoaderCopyFileName(pBuffer, ModuleName);
-
- pBuffer[FILENAME_SIZE] = (UBYTE) ((*(pHeaders[Tmp])).ModuleID);
- pBuffer[FILENAME_SIZE + 1] = (UBYTE)(((*(pHeaders[Tmp])).ModuleID) >> 8);
- pBuffer[FILENAME_SIZE + 2] = (UBYTE)(((*(pHeaders[Tmp])).ModuleID) >> 16);
- pBuffer[FILENAME_SIZE + 3] = (UBYTE)(((*(pHeaders[Tmp])).ModuleID) >> 24);
-
- pBuffer[FILENAME_SIZE + 4] = (UBYTE)(((*(pHeaders[Tmp])).ModuleSize));
- pBuffer[FILENAME_SIZE + 5] = (UBYTE)(((*(pHeaders[Tmp])).ModuleSize) >> 8);
- pBuffer[FILENAME_SIZE + 6] = (UBYTE)(((*(pHeaders[Tmp])).ModuleSize) >> 16);
- pBuffer[FILENAME_SIZE + 7] = (UBYTE)(((*(pHeaders[Tmp])).ModuleSize) >> 24);
-
- pBuffer[FILENAME_SIZE + 8] = (UBYTE) ((*(pHeaders[Tmp])).IOMapSize);
- pBuffer[FILENAME_SIZE + 9] = (UBYTE)(((*(pHeaders[Tmp])).IOMapSize) >> 8);
-
- RtnVal = SUCCESS;
- (VarsLoader.ModSearchIndex) = Tmp + 1;
- Tmp = 32;
- }
- }
- }
- return(RtnVal);
-}
-
-void cLoaderGetModuleName(UBYTE *pDst, UBYTE *pModule)
-{
- UBYTE Tmp;
-
- for(Tmp = 0; Tmp < FILENAME_SIZE; Tmp++)
- {
- if (0 != pModule[Tmp])
- {
- pDst[Tmp] = pModule[Tmp];
- }
- else
- {
- pDst[Tmp++] = '.';
- pDst[Tmp++] = 'm';
- pDst[Tmp++] = 'o';
- pDst[Tmp++] = 'd';
- pDst[Tmp] = '\0';
- Tmp = FILENAME_SIZE;
- }
- }
-}
-
-void cLoaderExit(void)
-{
-}
-
-