uboot带DMA网卡移植到扬创F移植详细步骤.docx

上传人:b****2 文档编号:690306 上传时间:2023-04-29 格式:DOCX 页数:23 大小:25KB
下载 相关 举报
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第1页
第1页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第2页
第2页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第3页
第3页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第4页
第4页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第5页
第5页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第6页
第6页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第7页
第7页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第8页
第8页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第9页
第9页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第10页
第10页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第11页
第11页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第12页
第12页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第13页
第13页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第14页
第14页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第15页
第15页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第16页
第16页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第17页
第17页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第18页
第18页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第19页
第19页 / 共23页
uboot带DMA网卡移植到扬创F移植详细步骤.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

uboot带DMA网卡移植到扬创F移植详细步骤.docx

《uboot带DMA网卡移植到扬创F移植详细步骤.docx》由会员分享,可在线阅读,更多相关《uboot带DMA网卡移植到扬创F移植详细步骤.docx(23页珍藏版)》请在冰点文库上搜索。

uboot带DMA网卡移植到扬创F移植详细步骤.docx

uboot带DMA网卡移植到扬创F移植详细步骤

uboot1.3.4(带DM9000A网卡)移植到扬创2440-F的移植详细步骤

扬创utu2440板子uboot1.3.4(带DM9000A网卡)的移植详细步骤

注明:

本篇文章,绝大部分都是来源与tekkaman的移植U-Boot.1.3.1到S3C244和S3C2410,原文链接

一、在U-Boot中建立自己的开发板类型,并测试编译。

我为开发板取名叫:

utu2440

1进入U-Boot目录,修改Makefile

[root@localhostu-boot-1.3.4]$vimMakefile

#为utu2440建立编译项

smdk2410_config:

unconfig

@$(MKCONFIG)$(@:

_config=)armarm920tsmdk2410NULLs3c24x0

utu2440_config:

unconfig

@$(MKCONFIG)$(@:

_config=)armarm920tutu2440NULLs3c24x0

各项的意思如下:

arm:

CPU的架构(ARCH)

arm920t:

CPU的类型(CPU),其对应于cpu/arm920t子目录。

utu2440:

开发板的型号(BOARD),对应于board/utu2440/目录,我将smdk2410覆盖了

NULL:

开发者/或经销商(vender)。

s3c24x0:

片上系统(SOC)。

设置环境变量

[root@localhostu-boot-1.3.4]#vim/root/.bash_profile

在PATH一行后添加/usr/local/arm/3.3.2/bin:

PATH

2在/board子目录中建立自己的开发板utu2440目录

[root@localhostu-boot-1.3.4]$cdboard

[root@localhostboard]#cp-rafsmdk2410/utu2440

[root@localhostboard]#cdutu2440

[root@localhostutu2440]#mvsmdk2410.cutu2440.c

还要记得修改自己的开发板tekkaman2440目录下的Makefile文件,不然编译时会出错:

[root@localhostutu2440]#vimMakefile

COBJS:

=utu2440.oflash.o

3在include/configs/中建立配置头文件

[root@localhostu-boot-1.3.4]#cpinclude/configs/smdk2410.hinclude/configs/utu2440.h

4测试编译能否成功

1)配置

[root@localhostu-boot-1.3.4]#maketekkaman2440_config

Configuringforutu2440board...

注:

(1)如果出现:

[root@localhostu-boot-1.3.4]#makeutu2440_config

Makefile:

2497:

***遗漏分隔符(您的意思是用TAB代替8个空格?

)。

停止。

请在U-boot的根目录下的Makefile的

@$(MKCONFIG)$(@:

_config=)armarm920tutu2440NULLs3c24x0)

前加上“Tab”键

2)测试编译

[root@localhostu-boot-1.3.4]$make

0、修改makefile文件

__LIBS:

=$(subst$(obj),,$(LIBS))$(subst$(obj),,$(LIBBOARD))

改为:

__LIBS:

=$(subst$(obj),,$(LIBBOARD))$(subst$(obj),,$(LIBS))

二、进行移植,修改uboot代码

1、修改/cpu/arm920t/start.S

#include

#include

#ifdefined(CONFIG_AT91RM9200DK)

#include/*这是针对AT91RM9200DK开发板的。

#endif

......

/*

*theactualstartcode

*/

start_code:

/*

*setthecputoSVC32mode

*/

mrsr0,cpsr

bicr0,r0,#0x1f

orrr0,r0,#0xd3

msrcpsr,r0

#ifdefined(CONFIG_AT91RM9200DK)

blcoloured_LED_init

blred_LED_on

#endif

(0)修改寄存器地址定义

#ifdefined(CONFIG_S3C2400)||defined(CONFIG_S3C2410)||defined(CONFIG_S3C2440)

/*turnoffthewatchdog*/

#ifdefined(CONFIG_S3C2400)

#definepWTCON0x15300000

#defineINTMSK0x14400008/*Interupt-Controllerbaseaddresses*/

#defineCLKDIVN0x14800014/*clockdivisorregister*/

#else

#definepWTCON0x53000000

#defineINTMSK0x4A000008/*Interupt-Controllerbaseaddresses*/

#defineINTSUBMSK0x4A00001C

#defineCLKDIVN0x4C000014/*clockdivisorregister*/

#defineCLK_CTL_BASE0x4C000000

#defineMPLLCON4/*MPLLCON的偏移地址*/

#endif

......

(1)修改中断禁止部分

#ifdefined(CONFIG_S3C2410)

  ldrr1,=0x7ff/*根据2410芯片手册,INTSUBMSK有11位可用,

                vivi也是0x7ff,U-Boot一直没改过来。

*/

  ldrr0,=INTSUBMSK

  strr1,[r0]

#endif

#ifdefined(CONFIG_S3C2440)

  ldrr1,=0x7fff/*根据2440芯片手册,INTSUBMSK有15位可用*/

  ldrr0,=INTSUBMSK

  strr1,[r0]

#endif

(2)修改时钟设置(2440的主频为405MHz。

#ifdefined(CONFIG_S3C2440)

  /*FCLK:

HCLK:

PCLK=1:

4:

8*/

  ldrr0,=CLKDIVN

  movr1,#5

  strr1,[r0]

  

  mrcp15,0,r1,c1,c0,0/*readctrlregister*/

  orrr1,r1,#0xc0000000/*Asynchronous*/

  mcrp15,0,r1,c1,c0,0/*writectrlregister*/

  /*now,CPUclockis405.00Mhz这边直接copy了vivi的部分代码*/

  mov    r1,#CLK_CTL_BASE

      @ldr  r2,mpll_value            @clockdefault

      ldr    r2,=0x7f021  @mpll_value_USER

      str    r2,[r1,#MPLLCON]

#else

  ldr  r0,=CLKDIVN

  mov  r1,#3

  str  r1,[r0]

  mrcp15,0,r1,c1,c0,0/*readctrlregister*/

  orrr1,r1,#0xc0000000/*Asynchronous*/

  mcrp15,0,r1,c1,c0,0/*writectrlregister*/

  /*now,CPUclockis202.8Mhz*/

  movr1,#CLK_CTL_BASE

  movr2,#MDIV_200/*mpll_200mhz*/

  addr2,r2,#PSDIV_200/*mpll_200mhz*/

  strr2,[r1,#0x04]

#endif

#endif  /*CONFIG_S3C2400||CONFIG_S3C2410||CONFIG_S3C2440*/

      /*

      *wedosys-criticalinitsonlyatreboot,

      *notwhenbootingfromram!

      */

#ifndefCONFIG_SKIP_LOWLEVEL_INIT

      bl    cpu_init_crit

#endif

  movr1,#GPIO_CTL_BASE

  addr1,r1,#oGPIO_F

  ldrr2,=0x55aa

  strr2,[r1,#oGPIO_CON]

  movr2,#0xff

  strr2,[r1,#oGPIO_UP]

  movr2,#0x0

  strr2,[r1,#oGPIO_DAT]  /*时钟以及内存配置配置好后灯全亮*/

(3)将从Flash启动改成从NANDFlash启动。

注释掉以下U-Boot的重定向语句

#ifdef  CONFIG_AT91RM9200

#ifndefCONFIG_SKIP_RELOCATE_UBOOT

relocate:

          /*relocateU-BoottoRAM    */

  adr  r0,_start      /*r0#endif

然后copyvivi中从nand启动的代码

#ifdefCONFIG_S3C2440_NAND_BOOT

  @resetNAND

  movr1,#NAND_CTL_BASE

  ldrr2,=((7

在“ldr  pc,_start_armboot”之前加入:

  movr1,#GPIO_CTL_BASE

  addr1,r1,#oGPIO_F

  movr2,#0xc0

  strr2,[r1,#oGPIO_DAT]

在“  _start_armboot:

  .wordstart_armboot  ”后加入:

.align2

DW_STACK_START:

.wordSTACK_BASE+STACK_SIZE-4

2  在board/utu2440加入NANDFlash读函数文件,拷贝vivi中的nand_read.c文件到board/utu2440/即可不需要作任何改动:

#include

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

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

#defineNF_BASE0x4e000000

#ifdefined(CONFIG_S3C2440)

#defineNFCONF__REGi(NF_BASE+0x0)

#defineNFCONT__REGi(NF_BASE+0x4)

#defineNFCMD__REGb(NF_BASE+0x8)

#defineNFADDR__REGb(NF_BASE+0xC)

#defineNFDATA__REGb(NF_BASE+0x10)

#defineNFSTAT__REGb(NF_BASE+0x20)

//#defineGPDAT__REGi(GPIO_CTL_BASE+oGPIO_F+oGPIO_DAT)

#defineNAND_CHIP_ENABLE(NFCONT&=~(1>9)&0xff。

      NFADDR=(i>>17)&0xff。

      NFADDR=(i>>25)&0xff。

      NAND_DETECT_RB。

      for(j=0。

j>9)&0xff。

    NFADDR=(i>>17)&0xff。

    NFADDR=(i>>25)&0xff。

    wait_idle()。

    for(j=0。

j3修改board/utu2440/Makefile文件

......

OBJS:

=utu2440.onand_read.oflash.o

......

4修改include/configs/utu2440.h文件,添加如下内容:

......

/*

*NandflashBoot

*/

#defineSTACK_BASE0x33f00000

#defineSTACK_SIZE0x8000

//#defineUBOOT_RAM_BASE0x33f80000

/*NANDFlashController*/

#defineNAND_CTL_BASE0x4E000000

#definebINT_CTL(Nb)__REG(INT_CTL_BASE+(Nb))

/*Offset*/

#defineoNFCONF0x00

#ifdefined(CONFIG_S3C2440)

#defineCONFIG_S3C2440_NAND_BOOT1

/*Offset*/

#defineoNFCONT0x04

#defineoNFCMD0x08

#defineoNFADDR0x0c

#defineoNFDATA0x10

#defineoNFSTAT0x20

#defineoNFECC0x2c

#definerNFCONF(*(volatileunsignedint*)0x4e000000)

#definerNFCONT(*(volatileunsignedint*)0x4e000004)

#definerNFCMD(*(volatileunsignedchar*)0x4e000008)

#definerNFADDR(*(volatileunsignedchar*)0x4e00000c)

#definerNFDATA(*(volatileunsignedchar*)0x4e000010)

#definerNFSTAT(*(volatileunsignedint*)0x4e000020)

#definerNFECC(*(volatileunsignedint*)0x4e00002c)

/*GPIO*/

#defineGPIO_CTL_BASE0x56000000

#defineoGPIO_F  0x50

#defineoGPIO_CON  0x0/*R/W,Configuresthepinsoftheport*/

#defineoGPIO_DAT  0x4/*R/W,Dataregisterforport*/

#defineoGPIO_UP  0x8/*R/W,Pull-updisableregister*/

#endif

#endif/*__CONFIG_H*/

5修改board/utu2440/lowlevel_init.S文件

  依照开发板的内存区的配置情况,修改board/utu2440/lowlevel_init.S文件,我利用友善之臂提供的vivi源码里的信息做了如下更改:

......

#defineB1_BWSCON      (DW16)

#defineB2_BWSCON      (DW16)

#defineB3_BWSCON      (DW16+WAIT+UBLB)

#defineB4_BWSCON      (DW16)

#defineB5_BWSCON      (DW16)

#defineB6_BWSCON      (DW32)

#defineB7_BWSCON      (DW32)

......

#defineB2_Tacs        0x0

#defineB2_Tcos        0x0

#defineB2_Tacc        0x7

#defineB2_Tcoh        0x0

#defineB2_Tah        0x0

#defineB2_Tacp        0x0

#defineB2_PMC        0x0

#endif

……

/*REFRESHparameter*/

#defineREFEN        0x1  /*Refreshenable*/

#defineTREFMD        0x0  /*CBR(CASbeforeRAS)/Autorefresh*/

#defineTrc        0x3  /*7clk*/

#defineTchr        0x2  /*3clk*/

#ifdefined(CONFIG_S3C2440)

#defineTrp        0x2  /*4clk*/

#defineREFCNT        1265

#endif

/**************************************/

_TEXT_BASE:

.wordTEXT_BASE

.globllowlevel_init

lowlevel_init:

/*memorycontrolconfiguration*/

/*maker0relativethecurrentlocationsothatit*/

/*readsSMRDATAoutofFLASHratherthanmemory!

*/

//ldrr0,=SMRDATA

adrlr0,SMRDATA//editedbyyaoyi20090312

ldrr1,_TEXT_BASE

//subr0,r0,r1

ldrr1,=BWSCON/*BusWidthStatusController*/

addr2,r0,#13*4

0:

ldrr3,[r0],#4

strr3,[r1],#4

cmpr2,r0

bne0b

6修改/board/utu2440/utu2440.c

修改其对GPIO和PLL的配置(请参阅开发板的硬件说明和芯片手册):

......

#defineFCLK_SPEED1

#ifFCLK_SPEED==0      /*Fout=203MHz,Fin=12MHzforAudio*/

#defineM_MDIV  0xC3

#defineM_PDIV  0x4

#defineM_SDIV  0x1

#elifFCLK_SPEED==1      

#ifdefined(CONFIG_S3C2410)

/*Fout=202.8MHz*/

#defineM_MDIV  0xA1

#defineM_PDIV  0x3

#defineM_SDIV  0x1

#endif

#ifdefined(CONFIG_S3C2440)

/*Fout=405MHz*/

#defineM_MDIV0x7f      

#defineM_PDIV0x2

#defineM_SDIV0x1

#endif

#defineUSB_CLOCK1

#ifUSB_CLOCK==0

#defineU_M_MDIV  0xA1

#defineU_M_PDIV  0x3

#defineU_M_SDIV  0x1

#elifUSB_CLOCK==1

#ifdefined(CONFIG_S3C2410)

#defineU_M_MDIV  0x48

#defineU_M_PD

IV  0x3

#endif

#ifdefined(CONFIG_S3C2440)

#defineU_M_MDIV0x38

#defineU_M_PDIV0x2

#endif

#defineU_M_SDIV  0x2

#endif

......

intboard_init(void)

{

  ......

  gpio->GPFDAT=0xaf。

//板子初始化完后,亮灯

  ......

}

7为了实现NANDFlash的读写,再次修改/include/configs/utu2440.h

......

/*

*HighLevelConfigurationOptions

*(easytochange)

*/

#defineCONFIG_ARM920T      1  /*ThisisanARM920TCore  */

//#define  CONFIG_S3C2410      1  /*inaSAMSUNGS3C

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2