亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1228 | 回復(fù): 0
打印 上一主題 下一主題

u-boot1.1.5-nandflash [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-09-17 13:52 |只看該作者 |倒序?yàn)g覽

                                                                u-boot1.5移植
系統(tǒng)環(huán)境:
    windows XP pro2002 pack2
    VMware workstation 5.5.2
    linux 9.0(全安裝)
編譯環(huán)境:
    cross-2.95.3
原文件
    u-boot-1.1.4.tar.bz2
    下載地址:[color="#0080ff"]ftp://ftp.denx.de/pub/u-boot/
移植過(guò)程:
1、參照u-boot1.5移植一文。
2、在fs2410.c修改代碼
開(kāi)頭增加如下代碼:
#include
#include
[color="#ff0000"]#include
最后增加如下代碼:
[color="#ff0000"]/*
* NAND flash initialization.
*/
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
extern ulong
nand_probe(ulong physadr);
static inline void NF_Reset(void)
{
    int i;
    NF_SetCE(NFCE_LOW);
    NF_Cmd(0xFF);                /* reset command */
    for(i = 0; i NFCONF = (1> 20);
}
#endif
3、在board/fs2410文件夾中[color="#ff0000"]增加nand_read.c文件(參照VIVI)
代碼如下:
#include
#define __REGb(x)        (*(volatile unsigned char *)(x))
#define __REGi(x)        (*(volatile unsigned int *)(x))
#define NF_BASE                0x4e000000
#define NFCONF                __REGi(NF_BASE + 0x0)
#define NFCONT                __REGi(NF_BASE + 0x4)
#define NFCMD                __REGb(NF_BASE + 0x8)
#define NFADDR                __REGb(NF_BASE + 0xC)
#define NFDATA                __REGb(NF_BASE + 0x10)
#define NFSTAT                __REGb(NF_BASE + 0x20)
//#define GPDAT                __REGi(GPIO_CTL_BASE+oGPIO_F+oGPIO_DAT)
#define NAND_CHIP_ENABLE  (NFCONT &= ~(1> 9) & 0xff;
                NFADDR = (i >> 17) & 0xff;
                NFADDR = (i >> 25) & 0xff;
                NAND_DETECT_RB;
                for(j=0; j
4、編輯board/fs2410/Makefile
LIB        = $(obj)lib$(BOARD).a
COBJS        := fs2410.o [color="#ff0000"]nand_read.o flash.o
SOBJS        := lowlevel_init.o
5、增加include/[color="#ff0000"]nand.h文件
編輯代碼如下:
#include
extern int  mem_test(unsigned long start, unsigned long ramsize,int mode);
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
typedef enum {
        NFCE_LOW,
        NFCE_HIGH
} NFCE_STATE;
static inline void NF_Conf(u16 conf)
{
        S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
        nand->NFCONF = conf;
}
static inline void NF_Cmd(u8 cmd)
{
        S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
        nand->NFCMD = cmd;
}
static inline void NF_CmdW(u8 cmd)
{
        NF_Cmd(cmd);
        udelay(1);
}
static inline void NF_Addr(u8 addr)
{
        S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
        nand->NFADDR = addr;
}
static inline void NF_SetCE(NFCE_STATE s)
{
        S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
        switch (s) {
                case NFCE_LOW:
                        nand->NFCONF &= ~(1NFCONF |= (1NFSTAT & (1NFDATA = data;
}
static inline u8 NF_Read(void)
{
        S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
        return(nand->NFDATA);
}
static inline void NF_Init_ECC(void)
{
        S3C2410_NAND * const nand = S3C2410_GetBase_NAND();
        nand->NFCONF |= (1NFECC);
}
#endif
6、編輯cpu/arm920t/start.S文件,增加nand boot 代碼
        ……………………
/* FCLK:HCLK:PCLK = 1:2:4 */
        /* default FCLK is 120 MHz ! */
        ldr        r0, =CLKDIVN
        mov        r1, #3
        str        r1, [r0]
        /* END stuff after relocation */
#endif
[color="#ff0000"]#ifdef CONFIG_S3C2440_NAND_BOOT
        bl        copy_myself
#if 1
        mov        r1, #GPIO_CTL_BASE
        add        r1, r1, #oGPIO_F
        mov        r2, #0x00
        [color="#ff0000"]str        r2, [r1, #oGPIO_DAT]
#endif
        @ jump to ram
        ldr        r1, =on_the_ram
        add        pc, r1, #0
        nop
        nop
1:        b        1b                @ infinite loop
on_the_ram:
#endif
        ldr        pc, _start_armboot
_start_armboot:        .word start_armboot
……………………
……………………
ldr        pc, _start_armboot
_start_armboot:        .word start_armboot
[color="#ff0000"]#ifdef CONFIG_S3C2440_NAND_BOOT
copy_myself:
        mov        r10, lr
        @ reset NAND
        mov        r1, #NAND_CTL_BASE
        ldr        r2, =( (7
文件最后添加:
[color="#ff0000"]#ifdef CONFIG_S3C2410_NAND_BOOT
.align        2
DW_STACK_START:
        .word        STACK_BASE+STACK_SIZE-4
#endif
7、編輯include/configs/fs2410.h文件
修改
#define CONFIG_COMMANDS \
                             (CONFIG_CMD_DFL         | \
                              CFG_CMD_CACHE         | \
                              [color="#ff0000"]CFG_CMD_NAND         | \
                              /*CFG_CMD_EEPROM |*/ \
                              /*CFG_CMD_I2C         |*/ \
                              /*CFG_CMD_USB         |*/ \
                              CFG_CMD_REGINFO  | \
                              CFG_CMD_DATE         | \
                              CFG_CMD_ELF)
[color="#ff0000"]//#define        CFG_ENV_IS_IN_FLASH        1
[color="#ff0000"]//#define CFG_ENV_SIZE                0x10000         
[color="#ff0000"]#define        CFG_ENV_IS_IN_NAND        1
#define CFG_ENV_OFFSET                0x020000
#define CFG_NAND_BASE    0x4E000000
#define CMD_SAVEENV
#define CFG_NAND_LEGACY
#define CFG_ENV_SIZE                0x10000
文件[color="#ff0000"]最后的#endif之前增加如下代碼:
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
#define CONFIG_S3C2410_NAND_BOOT 1
#define CFG_MAX_NAND_DEVICE        1        /* Max number of NAND devices                */
#define SECTORSIZE 512
#define ADDR_COLUMN 1
#define ADDR_PAGE 2
#define ADDR_COLUMN_PAGE 3
#define NAND_ChipID_UNKNOWN         0x00
#define NAND_MAX_FLOORS 1
#define NAND_MAX_CHIPS 1
#define NAND_WAIT_READY(nand)        NF_WaitRB()
#define NAND_DISABLE_CE(nand)        NF_SetCE(NFCE_HIGH)
#define NAND_ENABLE_CE(nand)        NF_SetCE(NFCE_LOW)
#define WRITE_NAND_COMMAND(d, adr)        NF_Cmd(d)
#define WRITE_NAND_COMMANDW(d, adr)        NF_CmdW(d)
#define WRITE_NAND_ADDRESS(d, adr)        NF_Addr(d)
#define WRITE_NAND(d, adr)                NF_Write(d)
#define READ_NAND(adr)                        NF_Read()
/* the following functions are NOP's because S3C24X0 handles this in hardware */
#define NAND_CTL_CLRALE(nandptr)
#define NAND_CTL_SETALE(nandptr)
#define NAND_CTL_CLRCLE(nandptr)
#define NAND_CTL_SETCLE(nandptr)
#define CONFIG_MTD_NAND_VERIFY_WRITE        1
#define CONFIG_MTD_NAND_ECC_JFFS2        1
/*define NAND BOOT*/
#define UBOOT_RAM_BASE   0x33f80000
#define STACK_BASE      0x33f00000
#define STACK_SIZE      0x8000
#define NAND_CTL_BASE                0x4E000000
#define bINT_CTL(Nb)                __REG(INT_CTL_BASE + (Nb))
#define oNFCONF                        0x00
#define oNFCMD                        0x04
#define oNFADDR                        0x08
#define oNFDATA                        0x0c
#define oNFSTAT                        0x10
#define oNFECC                        0x14
#endif
#endif
8、確認(rèn)存在以下文件:
[color="#ff0000"]drivers/nand_legacy/nand_legacy.c
include/linux/mtd/nand_ids.h
include/linux/mtd/nand.h

9、編輯include/linux/mtd/nand_ids.h文件
{"Samsung K9K1216Q0C",    NAND_MFR_SAMSUNG, 0x46, 26, 0, 3, 0x4000, 1},
        [color="#ff0000"]{"Samsung K9F1208U0M",    NAND_MFR_SAMSUNG, 0xf6, 26, 0, 4, 0X4000, 0},
{ NULL,}
編譯過(guò)程:
1、編輯Makefile 中的交叉編譯環(huán)境
ifeq ($(ARCH),arm)
CROSS_COMPILE = [color="#ff0000"]/usr/local/arm/2.95.3/bin/arm-linux-
endif
2、編譯配置文件
make fs2410_config
3、編譯u-boot
make all ARCH=ARM
4、u-boot根目錄下編譯完成的u-boot.bin文件可以下載到fs2410板的nandflash上。。
               
               
               
               
               
               
               
               
               
               
               
               

本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/64539/showart_1200104.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP