在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式Linux開(kāi)發(fā)環(huán)境的搭建之:U-Boot移植

            嵌入式Linux開(kāi)發(fā)環(huán)境的搭建之:U-Boot移植

            作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/257139.htm

            (4)memsetup.S

            這個(gè)文件是用于配置開(kāi)發(fā)板參數(shù)的,如下所示:

            /*memsetup.c*/

            /*memorycontrolconfiguration*/

            /*maker0relativethecurrentlocationsothatit*/

            /*readsSMRDATAoutofFLASHratherthanmemory!*/

            ldrr0,=SMRDATA

            ldrr1,_TEXT_BASE

            subr0,r0,r1

            ldrr1,=BWSCON /*BusWidthStatusController*/

            addr2,r0,#52

            0:

            ldrr3,[r0],#4

            strr3,[r1],#4

            cmpr2,r0

            bne0b

            /*everythingisfinenow*/

            movpc,lr

            .ltorg

            5.2.4主要步驟

            (1)建立自己的開(kāi)發(fā)板類(lèi)型。

            閱讀makefile文件,在makefile文件中添加兩行,如下所示:

            fs2410_config:unconfig

            @./mkconfig$(@:_config=)armarm920tfs2410

            其中“arm”為表示處理器體系結(jié)構(gòu)的種類(lèi),“arm920t”表示處理器體系結(jié)構(gòu)的名稱(chēng),“fs2410”為主板名稱(chēng)。

            在board目錄中建立fs2410目錄,并將smdk2410目錄中的內(nèi)容(cp–asmdk2410/*fs2410)復(fù)制到該目錄中。

            n 在include/configs/目錄下將smdk2410.h復(fù)制到(cpsmdk2410.hfs2410.h)。

            n 修改ARM編譯器的目錄名及前綴(都要改成以“fs2410”開(kāi)頭)。

            n 完成之后,可以測(cè)試配置。

            $makefs2410_config;make

            (2)修改程序鏈接地址。

            在board/s3c2410中有一個(gè)config.mk文件,它是用于設(shè)置程序鏈接的起始地址,因?yàn)闀?huì)在U-Boot中增加功能,所以留下6MB的空間,修改33F80000為33A00000。

            為了以后能用U-Boot的“go”命令執(zhí)行修改過(guò)的用loadb或tftp下載的U-Boot,需要在board/s3c2410的memsetup.S中標(biāo)記符”0:”上加入5句:

            movr3,pc

            ldrr4,=0x3FFF0000

            andr3,r3,r4(以上3句得到實(shí)際代碼啟動(dòng)的內(nèi)存地址)

            aadr0,r0,r3(用go命令調(diào)試u-boot時(shí),啟動(dòng)地址在RAM)

            addr2,r2,r3(把初始化內(nèi)存信息的地址,加上實(shí)際啟動(dòng)地址)

            (3)將中斷禁止的部分應(yīng)該改為如下所示(/cpu/arm920t/start.S):

            #ifdefined(CONFIG_S3C2410)

            ldrr1,=0x7ff

            ldrr0,=INTSUBMSK

            strr1,[r0]

            #endif

            (4)因?yàn)樵趂s2410開(kāi)發(fā)板啟動(dòng)時(shí)是直接從NandFlash加載代碼,所以啟動(dòng)代碼應(yīng)該改成如下所示(/cpu/arm920t/start.S):

            #ifdefCONFIG_S3C2410_NAND_BOOT@START

            @resetNAND

            movr1,#NAND_CTL_BASE

            ldrr2,=0xf830@initialvalue

            strr2,[r1,#oNFCONF]

            ldrr2,[r1,#oNFCONF]

            bicr2,r2,#0x800@enablechip

            strr2,[r1,#oNFCONF]

            movr2,#0xff@RESETcommand

            strbr2,[r1,#oNFCMD]

            movr3,#0@wait

            nand1:

            addr3,r3,#0x1

            cmpr3,#0xa

            bltnand1

            nand2:

            ldrr2,[r1,#oNFSTAT]@waitready

            tstr2,#0x1

            beqnand2

            ldrr2,[r1,#oNFCONF]

            orrr2,r2,#0x800@disablechip

            strr2,[r1,#oNFCONF]

            @getreadtocallCfunctions(fornand_read())

            ldrsp,DW_STACK_START@setupstackpointer

            movfp,#0@nopreviousframe,sofp=0

            @copyU-BoottoRAM

            ldrr0,=TEXT_BASE

            movr1,#0x0

            movr2,#0x20000

            blnand_read_ll

            tstr0,#0x0

            beqok_nand_read

            bad_nand_read:

            loop2:bloop2@infiniteloop

            ok_nand_read:

            @verify

            movr0,#0

            ldrr1,=TEXT_BASE

            movr2,#0x400@4bytes*1024=4K-bytes

            go_next:

            ldrr3,[r0],#4

            ldrr4,[r1],#4

            teqr3,r4

            bnenotmatch

            subsr2,r2,#4

            beqstack_setup

            bnego_next

            notmatch:

            loop3:bloop3@infiniteloop

            #endif@CONFIG_S3C2410_NAND_BOOT@END

            在“_start_armboot:.wordstart_armboot”后加入:

            .align2

            DW_STACK_START:.wordSTACK_BASE+STACK_SIZE-4

            (5)修改內(nèi)存配置(board/fs2410/lowlevel_init.S)。

            #defineBWSCON0x48000000

            #definePLD_BASE0x2C000000

            #defineSDRAM_REG0x2C000106

            /*BWSCON*/

            #defineDW8 (0x0)

            #defineDW16(0x1)

            #defineDW32(0x2)

            #defineWAIT(0x12)

            #defineUBLB(0x13)

            /*BANKSIZE*/

            #defineBURST_EN(0x17)

            #defineB1_BWSCON(DW16+WAIT)

            #defineB2_BWSCON(DW32)

            #defineB3_BWSCON(DW32)

            #defineB4_BWSCON(DW16+WAIT+UBLB)

            #defineB5_BWSCON(DW8+UBLB)

            #defineB6_BWSCON(DW32)

            #defineB7_BWSCON(DW32)

            /*BANK0CON*/

            #defineB0_Tacs0x0/*0clk*/

            #defineB0_Tcos0x1/*1clk*/

            #defineB0_Tacc0x7/*14clk*/

            #defineB0_Tcoh0x0/*0clk*/

            #defineB0_Tah0x0/*0clk*/

            #defineB0_Tacp0x0/*pagemodeisnotused*/

            #defineB0_PMC0x0/*pagemodedisabled*/

            /*BANK1CON*/

            #defineB1_Tacs0x0/*0clk*/

            #defineB1_Tcos0x1/*1clk*/

            #defineB1_Tacc0x7/*14clk*/

            #defineB1_Tcoh0x0/*0clk*/

            #defineB1_Tah0x0/*0clk*/

            #defineB1_Tacp0x0/*pagemodeisnotused*/

            #defineB1_PMC0x0/*pagemodedisabled*/

            ……

            /*REFRESHparameter*/

            #defineREFEN0x1/*Refreshenable*/

            #defineTREFMD0x0/*CBR(CASbeforeRAS)/Autorefresh*/

            #defineTrp0x0/*2clk*/

            #defineTrc0x3/*7clk*/

            #defineTchr0x2/*3clk*/

            #defineREFCNT1113/*period=15.6us,HCLK=60Mhz,(2048+1-15.6*60)*/

            ......

            .word((B6_MT15)+(B6_Trcd2)+(B6_SCAN))

            .word((B7_MT15)+(B7_Trcd2)+(B7_SCAN))

            .word((REFEN23)+(TREFMD22)+(Trp20)+(Trc18)+(Tchr16)+REFCNT)

            .word0x32

            .word0x30

            .word0x30

            (6)加入NandFlash讀函數(shù)(創(chuàng)建board/fs2410/nand_read.c文件)。

            #includeconfig.h>

            #define__REGb(x)(*(volatileunsignedchar*)(x))

            #define__REGi(x)(*(volatileunsignedint*)(x))

            #defineNF_BASE0x4e000000

            #defineNFCONF__REGi(NF_BASE+0x0)

            #defineNFCMD__REGb(NF_BASE+0x4)

            #defineNFADDR__REGb(NF_BASE+0x8)

            #defineNFDATA__REGb(NF_BASE+0xc)

            #defineNFSTAT__REGb(NF_BASE+0x10)

            #defineBUSY1

            inlinevoidwait_idle(void)

            {

            Inti;

            while(!(NFSTATBUSY))

            {

            for(i=0;i10;i++);

            }

            }

            /*lowlevelnandreadfunction*/

            intnand_read_ll(unsignedchar*buf,unsignedlongstart_addr,intsize)

            {

            inti,j;

            if((start_addrNAND_BLOCK_MASK)||(sizeNAND_BLOCK_MASK))

            {

            return-1;/*invalidalignment*/

            }

            /*chipEnable*/

            NFCONF=~0x800;

            for(i=0;i10;i++);

            for(i=start_addr;i(start_addr+size);)

            {

            /*READ0*/

            NFCMD=0;

            /*WriteAddress*/

            NFADDR=i0xff;

            NFADDR=(i>>9)0xff;

            NFADDR=(i>>17)0xff;

            NFADDR=(i>>25)0xff;

            wait_idle();

            for(j=0;jNAND_SECTOR_SIZE;j++,i++)

            {

            *buf=(NFDATA0xff);

            buf++;

            }

            }

            /*chipDisable*/

            NFCONF|=0x800;/*chipdisable*/

            return0;

            }

            修改board/fs2410/makefile文件,以增加nand_read()函數(shù)。

            OBJS:=fs2410.oflash.onand_read.o

            c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


            linux相關(guān)文章:linux教程




            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉