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

上传人:b****7 文档编号:22199021 上传时间:2023-02-03 格式:DOCX 页数:22 大小:24.60KB
下载 相关 举报
uboot带DMA网卡移植到扬创F移植详细步骤文档格式.docx_第1页
第1页 / 共22页
uboot带DMA网卡移植到扬创F移植详细步骤文档格式.docx_第2页
第2页 / 共22页
uboot带DMA网卡移植到扬创F移植详细步骤文档格式.docx_第3页
第3页 / 共22页
uboot带DMA网卡移植到扬创F移植详细步骤文档格式.docx_第4页
第4页 / 共22页
uboot带DMA网卡移植到扬创F移植详细步骤文档格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

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

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

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

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

[root@localhostutu2440]#vimMakefile

COBJS:

=utu2440.oflash.o

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

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

4测试编译能否成功

1)配置

[root@localhostu-boot-maketekkaman2440_config

Configuringforutu2440board...

注:

(1)如果出现:

[root@localhostu-boot-makeutu2440_config

Makefile:

2497:

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

)。

停止。

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

_config=)armarm920tutu2440NULLs3c24x0)

前加上“Tab”键

2)测试编译

[root@localhostu-boot-

0、修改makefile文件

__LIBS:

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

改为:

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

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

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

#include

#ifdefined(CONFIG_AT91RM9200DK)

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

#endif

......

/*

*theactualstartcode

*/

start_code:

/*

*setthecputoSVC32mode

*/

mrsr0,cpsr

bicr0,r0,#0x1f

orrr0,r0,#0xd3

msrcpsr,r0

blcoloured_LED_init

blred_LED_on

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

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

/*turnoffthewatchdog*/

#ifdefined(CONFIG_S3C2400)

#definepWTCON0x

#defineINTMSK0x/*Interupt-Controllerbaseaddresses*/

#defineCLKDIVN0x/*clockdivisorregister*/

#else

#defineINTMSK0x4A000008/*Interupt-Controllerbaseaddresses*/

#defineINTSUBMSK0x4A00001C

#defineCLKDIVN0x4C000014/*clockdivisorregister*/

#defineCLK_CTL_BASE0x4C000000

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

(1)修改中断禁止部分

#ifdefined(CONFIG_S3C2410)

 

 

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

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

ldrr0,=INTSUBMSK

strr1,[r0]

#ifdefined(CONFIG_S3C2440)

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

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

#ifdefined(CONFIG_S3C2440)

/*FCLK:

HCLK:

PCLK=1:

4:

8*/

ldrr0,=CLKDIVN

movr1,#5

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]

ldr 

r0,=CLKDIVN

mov 

r1,#3

str 

r1,[r0]

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

/*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

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

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

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

#defineNF_BASE0x4e000000

#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)&

25)&

NAND_DETECT_RB;

for(j=0;

j>

wait_idle();

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

#defineCONFIG_S3C2440_NAND_BOOT1

#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_BASE0x

#defineoGPIO_F 

0x50

#defineoGPIO_CON 

0x0/*R/W,Configuresthepinsoftheport*/

#defineoGPIO_DAT 

0x4/*R/W,Dataregisterforport*/

#defineoGPIO_UP 

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

#endif/*__CONFIG_H*/

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

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

#defineB1_BWSCON 

(DW16)

#defineB2_BWSCON 

#defineB3_BWSCON 

(DW16+WAIT+UBLB)

#defineB4_BWSCON 

#defineB5_BWSCON 

#defineB6_BWSCON 

(DW32)

#defineB7_BWSCON 

#defineB2_Tacs 

0x0

#defineB2_Tcos 

#defineB2_Tacc 

0x7

#defineB2_Tcoh 

#defineB2_Tah 

#defineB2_Tacp 

#defineB2_PMC 

……

/*REFRESHparameter*/

#defineREFEN 

0x1 

/*Refreshenable*/

#defineTREFMD 

0x0 

/*CBR(CASbeforeRAS)/Autorefresh*/

#defineTrc 

0x3 

/*7clk*/

#defineTchr 

0x2 

/*3clk*/

#defineTrp 

/*4clk*/

#defineREFCNT 

1265

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

_TEXT_BASE:

.wordTEXT_BASE

.globllowlevel_init

lowlevel_init:

/*memorycontrolconfiguration*/

/*maker0relativethecurrentlocationsothatit*/

/*readsSMRDATAoutofFLASHratherthanmemory!

//ldrr0,=SMRDATA

adrlr0,SMRDATA//editedbyyaoyi

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 

/*Fout=202.8MHz*/

0xA1

0x3

/*Fout=405MHz*/

#defineM_MDIV0x7f 

#defineM_PDIV0x2

#defineM_SDIV0x1

#defineUSB_CLOCK1

#ifUSB_CLOCK==0

#defineU_M_MDIV 

#defineU_M_PDIV 

#defineU_M_SDIV 

#elifUSB_CLOCK==1

0x48

#defineU_M_PD

IV 

#defineU_M_MDIV0x38

#defineU_M_PDIV0x2

0x2

intboard_init(void)

{

......

gpio->

GPFDAT=0xaf;

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

}

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

*HighLevelConfigurationOptions

*(easytochange)

#defineCONFIG_ARM920T 

/*ThisisanARM920TCore 

//#define 

CONFIG_S3C2410 

/*inaSAMSUNGS3C2410SoC 

*/ 

//editedbyyaoyi

//#defineCONFIG_SMDK2410 

/*onaSAMSUNGSMDK2410Board 

#defineCONFIG_utu2440 

1

#defineCONFIG_S3C2440 

.......

#defineCONFIG_CMD_ELF

#defineCONFIG_C

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

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1