76 lines
1.9 KiB
C
76 lines
1.9 KiB
C
|
|
#include <stdint.h>
|
|
|
|
// -----------------------------------------------------
|
|
// Funktionen zum Setzen einzelner Registerwerte
|
|
// -----------------------------------------------------
|
|
void setRdGenRun(volatile uint32_t *pBaseAddr, uint8_t run)
|
|
{
|
|
pBaseAddr[0] = (pBaseAddr[0] & 0xFFFFFF7F) | ((run&1)<< 7);
|
|
}
|
|
|
|
void setRdGenPipelining(volatile uint32_t *pBaseAddr, uint8_t pl)
|
|
{
|
|
pBaseAddr[0] = (pBaseAddr[0] & 0xFFFFFFBF) | ((pl&1)<< 6);
|
|
}
|
|
|
|
void setRdGenTriggerOutput(volatile uint32_t *pBaseAddr, uint8_t tr)
|
|
{
|
|
pBaseAddr[0] = (pBaseAddr[0] & 0xFFFFFFDF) | ((tr&1) << 5);
|
|
}
|
|
|
|
void setRdGenBurstLen(volatile uint32_t *pBaseAddr, uint8_t bl)
|
|
{
|
|
if (bl<1) bl = 1;
|
|
if (bl>16) bl = 16;
|
|
pBaseAddr[0] = (pBaseAddr[0] & 0xFFFFFFE0) | bl;
|
|
}
|
|
|
|
void setRdGenARCACHE(volatile uint32_t *pBaseAddr, uint8_t arc)
|
|
{
|
|
pBaseAddr[0] = (pBaseAddr[0] & 0xFFFF00FF) | ((arc&15) << 8);
|
|
}
|
|
|
|
void setRdGenPauseCycles(volatile uint32_t *pBaseAddr, uint16_t pc)
|
|
{
|
|
pBaseAddr[0] = (pBaseAddr[0] & 0x0000FFFF) | (pc << 16);
|
|
}
|
|
|
|
void setRdGenAddress(volatile uint32_t *pBaseAddr, uint32_t memaddr)
|
|
{
|
|
pBaseAddr[1] = memaddr;
|
|
}
|
|
|
|
// -----------------------------------------------------
|
|
// Funktion zum Setzen von Parametern des Lesezugriffs
|
|
// -----------------------------------------------------
|
|
|
|
void setRdGenDefaults(volatile uint32_t *pBaseAddr)
|
|
{
|
|
setRdGenRun (pBaseAddr,0);
|
|
setRdGenTriggerOutput (pBaseAddr,1);
|
|
setRdGenPauseCycles (pBaseAddr,50);
|
|
setRdGenBurstLen (pBaseAddr,8);
|
|
setRdGenPipelining (pBaseAddr,0);
|
|
}
|
|
|
|
|
|
|
|
int main()
|
|
{
|
|
int i;
|
|
volatile uint32_t* HP[4] = {(uint32_t*)0x43c00000,(uint32_t*)0x43c10000,
|
|
(uint32_t*)0x43c20000,(uint32_t*)0x43c30000};
|
|
|
|
// Parameter für alle HP-Ports gleich setzen ...
|
|
for (i=0;i<4;i++) setRdGenDefaults(HP[i]);
|
|
|
|
// ... und dann das IP aktivieren (bzw. auch nicht)
|
|
setRdGenRun(HP[0],1);
|
|
//setRdGenRun(HP[1],1);
|
|
//setRdGenRun(HP[2],1);
|
|
//setRdGenRun(HP[3],1);
|
|
|
|
return 0;
|
|
}
|