📄 lpec.c
字号:
/* * Copyright (C) 2004 Tobias Lorenz * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. *//* lpec-p2001 specific functions */#include <stdio.h>#include "debug.h"#include "memory.h"#define Adr_Timer12_PreDiv 0x0011000CU#define Adr_Timer12_PreDiv_WATCHDOG_DISABLE (1<<30)#define Adr_Timer12_PreDiv_WATCHDOG_RESET (1<<31)#define Adr_SDRAM_Ctrl 0x00100010U#define Adr_SDRAM_Ctrl_CLKENEN (1<<30)#define Adr_SDRAM_Ctrl_SDRAMCTRLEN (1<<31)#define Adr_TOP 0x00100020U#define Adr_TOP_LED2 (1<<0)void lpec_change_reg(unsigned long addr, unsigned long data){ unsigned long regdata; memory_read(addr, ®data, 1); printf("%8.8x: %8.8x --> ", addr, regdata); regdata = data; memory_write(addr, ®data, 1); printf("%8.8x", regdata); if (regdata != data) printf(" != %8.8x", data); printf("\n");}void lpec_configure(void){ lpec_change_reg(0x00100010, 0xee4f0027); // SDRAM Init lpec_change_reg(0x00100014, 0x00000009); // Flash = 16Bit, FPGA = 32Bit lpec_change_reg(0x00100018, 0x00000045); // Flash und FPGA Waitstates lpec_change_reg(0x0012002c, 0x00000003); // FPGA Reset beenden}void lpec_disable_watchdog(void){ unsigned long before, after; printf("Disabling watchdog on lpec...\n"); memory_read(Adr_Timer12_PreDiv, &before, 1); lpec_change_reg(Adr_Timer12_PreDiv, 0x40bb00bb); memory_read(Adr_Timer12_PreDiv, &after, 1); printf( (before & Adr_Timer12_PreDiv_WATCHDOG_DISABLE) ? "disabled" : "enabled" ); printf(" --> "); printf( (after & Adr_Timer12_PreDiv_WATCHDOG_DISABLE) ? "disabled\n" : "enabled\n" );}void lpec_disable_ints(void){ lpec_change_reg(0x00130000, 0); lpec_change_reg(0x00130004, 0);}void lpec_init(void){ lpec_configure(); lpec_disable_watchdog(); lpec_disable_ints();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -