📄 sbc2410.h
字号:
/* * (C) Copyright 2002 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> * Marius Groeger <mgroeger@sysgo.de> * Gary Jennejohn <gj@denx.de> * David Mueller <d.mueller@elsoft.ch> * * Configuation settings for the SAMSUNG SMDK2410 board. * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#ifndef __CONFIG_H#define __CONFIG_H/* * High Level Configuration Options * (easy to change) */#define CONFIG_ARM920T 1 /* This is an ARM920T Core */#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board *//* add %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */#define CONFIG_S3C2410_NAND_BOOT 1#define STACK_BASE 0x33f00000#define STACK_SIZE 0x8000#define UBOOT_RAM_BASE 0x33f80000/* add %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% *//* input clock of PLL */#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */#define USE_920T_MMU 1#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff *//* * Size of malloc() pool */#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data *//* * Hardware drivers */#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */#define CS8900_BASE 0x19000300#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts *//* * select serial console configuration */#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 *//************************************************************ * RTC ************************************************************/#define CONFIG_RTC_S3C24X0 1/* allow to overwrite serial and ethaddr */#define CONFIG_ENV_OVERWRITE#define CONFIG_BAUDRATE 115200/* * BOOTP options */#define CONFIG_BOOTP_BOOTFILESIZE#define CONFIG_BOOTP_BOOTPATH#define CONFIG_BOOTP_GATEWAY#define CONFIG_BOOTP_HOSTNAME/* * Command line configuration. */#include <config_cmd_default.h>#define CONFIG_CMD_CACHE#define CONFIG_CMD_DATE#define CONFIG_CMD_ELF/* add %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */#define CONFIG_CMD_REGINFO#define CONFIG_CMD_NAND#define CONFIG_CMD_PING#define CONFIG_CMD_DLF#define CONFIG_CMD_ENV/* add %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */#define CONFIG_BOOTDELAY 3#define CONFIG_BOOTARGS "root=ramfs devfs=mount console=ttySA0,115200" #define CONFIG_ETHADDR 08:00:3e:26:0a:5b #define CONFIG_NETMASK 255.255.255.0#define CONFIG_IPADDR 202.198.137.105#define CONFIG_SERVERIP 10.0.0.1202.198.137.107#define CONFIG_BOOTFILE "uImage" #define CONFIG_BOOTCOMMAND "tftp; bootm" #if defined(CONFIG_CMD_KGDB)#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port *//* what's this ? it's not used anywhere */#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */#endif/* * Miscellaneous configurable options */#define CFG_LONGHELP /* undef to save memory */#define CFG_PROMPT "YYS2410 # " /* Monitor Command Prompt */#define CFG_CBSIZE 256 /* Console I/O Buffer Size */#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */#define CFG_MAXARGS 16 /* max number of command args */#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */#define CFG_MEMTEST_START 0x30000000 /* memtest works on */#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */#define CFG_LOAD_ADDR 0x33000000 /* default load address *//* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need *//* it to wrap 100 times (total 1562500) to get 1 sec. */#define CFG_HZ 1562500/* valid baudrates */#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }/*----------------------------------------------------------------------- * Stack sizes * * The stack sizes are set up in start.S using the settings below */#define CONFIG_STACKSIZE (128*1024) /* regular stack */#ifdef CONFIG_USE_IRQ#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */#endif/*----------------------------------------------------------------------- * Physical Memory Map */#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */#define CFG_FLASH_BASE PHYS_FLASH_1/*----------------------------------------------------------------------- * FLASH and environment organization */#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */#if 0#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */#endif#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */#ifdef CONFIG_AMD_LV800#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */#endif#ifdef CONFIG_AMD_LV400#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */#endif/* timeout values are in ticks */#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */#define CFG_ENV_IS_IN_NAND 1 /* modify%%%%%%%%%%%%%% *///#define CFG_ENV_SIZE 0x10000 /* Total Size of Environment Sector *//* add %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */#define CFG_ENV_SIZE 0x4000 /* Total Size of Environment Sector */#define CFG_ENV_OFFSET (0x80000-0x4000)#define CONFIG_ARCH_SMDK2410 1#define CFG_NAND_BASE 0x4E000000 /* Nand Flash控制器在SFR区中起始寄存器地址 */#define CFG_MAX_NAND_DEVICE 1 /* 支持的最在Nand Flash数据 */#define SECTORSIZE 512 /* 1页的大小 */#define NAND_SECTOR_SIZE SECTORSIZE#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1) /* 页掩码 */#define ADDR_COLUMN 1 /* 一个字节的Column地址 */#define ADDR_PAGE 2 /* 3字节的页块地址, A9A25*/#define ADDR_COLUMN_PAGE 3 /* 总共4字节的页块地址 */#define NAND_ChipID_UNKNOWN 0x00 /* 未知芯片的ID号 */#define NAND_MAX_FLOORS 1#define NAND_MAX_CHIPS 1/* Nand Flash命令层底层接口函数 */#define WRITE_NAND_COMMAND(d, adr) do {rNFCMD = d;} while(0)#define WRITE_NAND_ADDRESS(d, adr) do {rNFADDR = d;} while(0)#define WRITE_NAND(d, adr) do {rNFDATA = d;} while(0)#define READ_NAND(adr) (rNFDATA)#define NAND_WAIT_READY(nand) {while(!(rNFSTAT&(1<<0)));}#define NAND_DISABLE_CE(nand) {rNFCONF |= (1<<11);}#define NAND_ENABLE_CE(nand) {rNFCONF &= ~(1<<11);}/* 下面一组操作对Nand Flash无效 */#define NAND_CTL_CLRALE(nandptr)#define NAND_CTL_SETALE(nandptr)#define NAND_CTL_CLRCLE(nandptr)#define NAND_CTL_SETCLE(nandptr)/* 允许Nand Flash写校验 */#define CONFIG_MTD_NAND_VERIFY_WRITE 1#ifdef CONFIG_S3C2410_NAND_BOOT#define rNFCONF (*(volatile unsigned int *)0x4e000000)#define rNFCMD (*(volatile unsigned char *)0x4e000004)#define rNFADDR (*(volatile unsigned char *)0x4e000008)#define rNFDATA (*(volatile unsigned char *)0x4e00000c)#define rNFSTAT (*(volatile unsigned int *)0x4e000010)#define rNFECC (*(volatile unsigned int *)0x4e000014)#define rNFECC0 (*(volatile unsigned char *)0x4e000014)#define rNFECC1 (*(volatile unsigned char *)0x4e000015)#define rNFECC2 (*(volatile unsigned char *)0x4e000016)/* 操作的函数实现 * 1. 发送命令 */#define NF_CMD(cmd) {rNFCMD=cmd;}/* 2. 写入地址 */#define NF_ADDR(addr) {rNFADDR=addr;}/* 3. Nand Flash芯片选中 */#define NF_nFCE_L() {rNFCONF&=~(1<<11);}/* 4. Nand Flash芯片不选中 */#define NF_nFCE_H() {rNFCONF|=(1<<11);}/* 5. 初始化ECC */#define NF_RSTECC() {rNFCONF|=(1<<12);}/* 6. 读数据 */#define NF_RDDATA() (rNFDATA)/* 7. 写数据 */#define NF_WRDATA(data) {rNFDATA=data;}/* 8. 获取Nand Flash芯片状态 */#define NF_WAITRB() {while(!(rNFSTAT&(1<<0)));}/* 0/假: 表示Nand Flash芯片忙状态 * 1/真:表示Nand Flash已经准备好 */#endif/* add %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */#endif /* __CONFIG_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -