嵌入式爱好者

查看: 6828|回复: 4

jlink 烧录ok6410 u-boot

[复制链接]

13

主题

75

帖子

368

积分

扫一扫,手机访问本帖
发表于 2013-3-12 09:10:33 | 显示全部楼层 |阅读模式

1. 硬件说明说明

   CPU             s3c6410

   RAM            K4X51163PG  (32M x16 *2 = 128M,起始地址0x50000000)

   Nandflash:        K9F2G08     (256MB)

   网卡:           DM9000      (连接XM0CSN1,地址0x18000000)



2. U-boot烧录

   由于手头有J-link V8,所以关于OK6410开发板u-boot的烧录,我将不按照手册上提供的SD卡方式烧录,而是参考FL2440开发板的烧录方法使用J-link来烧录。该方法的基本思路是:

   S3C6410 CPU内部与S3C2440类似也有一个8KBSRAM(Stepping Stone),系统在上电时,如果配置从Nandflash启动的话,CPU会将Nandflash的前8K代码拷贝到SRAM中运行。在U-boot中,这前面的代码主要是用来初始化CPU和时钟,初始化Nandflash控制器和SDRAM控制器,然后将u-bootNandflash中搬到SDRAM中并初始化堆栈等C语言环境,然后在SDRAM中执行剩下的U-boot C代码。

   而我们使用J-link可以直接操作CPU内部的8KB SRAM和开发板扩展的128MB DDR内存中,但由于SDRAM需要初始化SDRAM控制器后才能使用,所以我们不能将u-boot直接加载到SDRAM中运行。另外,u-boot的大小有100KB,这样虽说SRAM不需要初始化就可以直接使用,但由于大小限制,我们也不能把u-boot下到SRAM中运行。所以我们只能找一个折中的办法:

1) 首先我用汇编写了一个小于8KB的程序,该程序主要用来初始化CPU时钟和外部的DDR SDRAM,我把这个程序叫做bootstrap-s3c6410.bin;

2) 使用J-linkbootstap-s3c6410.bin下载到CPU内部的SRAM(0x0C00 0000)中运行,一旦这个程序运行后,外部的SDRAM将被初始化就可以用了;

3) 使用J-linku-boot-s3c6410.bin下载到外部的SDRAM(0x57E0 0000)中去运行,然后使用u-boot提供的tftpnand命令就可以下载烧录U-bootNandflash上去了;


下面是具体的烧录过程:

Ø 首先把开发板的拨码开关设置成Nandflash启动,具体设置如下:

  S3C6410处理器支持NAND FLASHNOR FLASHSD卡等多种启动方式,通过系统上电时配置引脚的不同状态确定启动和启动方式。OK6410开发板通过配置拨码开关SW2选择启动方式:

SW2引脚号

Pin1

Pin2

Pin3

Pin4

Pin5

Pin6

Pin7

Pin8

引脚定义

GPN13

GPN14

GPN15

OM1

OM2

OM3

OM4

SELNAND

Nandflash启动

X

X

X

1

1

0

0

1

Norflash启动

X

X

X

1

0

1

0

X

SD卡启动

0

0

0

1

1

1

1

X

   注:

   OM0信号为S3C6410芯片时钟源选择信号,当OM0信号为“0”时选择XTlpll:OM0信号为“1”时选择EXTCLKOK6410开发板使用XTlpll所以OM0直接下拉接地。

   SELNAND信号为选择系统FLASH存储器类型,当选择NAND FLASH时必须为高电平,选择ONENAND存储器时为低电平,OK6410开发板使用NAND存储器,直接上接为高。

   EINT13-EINT15IROM启动方式设备选择引脚,当使用IROM启动方式时,S3C6410处理器首先运行片内ROM固化程序,读取EINT15EINT14EINT13三个端口引脚状态,再根本配置的不同状态,从而选择不同的设备启动。OM1-OM4信号为S3C6410处理器启动方式配置引脚。


Ø 将开发板上电,然后运行J-link Command,开始下载并运行bootstrap-s3c6410.bin

SEGGER J-Link Commander V4.10i ('?' for help)

Compiled Jan 25 2010 14:44:16

DLL version V4.10i, compiled Jan 25 2010 14:43:57

Firmware: J-Link ARM V8 compiled Sep  6 2011 16:33:14

Hardware: V8.00

S/N : 20100214

Feature(s) : RDI,FlashDL,FlashBP,JFlash,GDBFull

VTarget = 3.261V

Info: TotalIRLen = 9, IRPrint = 0x0011

Found 2 JTAG devices, Total IRLen = 5:

#0 Id: 0x2B900F0F, IRLen: 04, IRPrint: 0x0, ARM ETB

#1 Id: 0x07B76F0F, IRLen: 05, IRPrint: 0x1, ARM1176 Core

ARM11 identified.

RTCK reaction time is approx. 126ns

Using adaptive clocking instead of fixed JTAG speed.

J-Link>h

J-Link: ARM11 CP15 Settings changed: 0x00451078 from 0x00001002, MMU Off, ICache On, DCache Off

Info: CP15.0.0: 0x410FB766: ARM, Architecture Unknown architecture

Info: CP15.0.1: 0x1D152152: ICache: 16kB (4*128*32), DCache: 16kB (4*128*32)

DIDR: 6 Breakpoints available and 2 Watchpoints available.

J-Link>setpc 0

J-Link>loadbin C:\Users\USER\Downloads\bootstrap-s3c6410.bin 0x0C000000

Loading binary file... [C:\Users\USER\Downloads\bootstrap-s3c6410.bin]

Writing bin data into target memory @ 0x0C000000.

J-Link>setpc 0x0C000000

J-Link>g

J-Link>


Ø 使用J-link下载u-bootSDRAM中并运行

J-Link>h

J-Link: ARM11 CP15 Settings changed: 0x00451078 from 0x00450078, MMU Off, ICache On, DCache Off

Info: CP15.0.0: 0x410FB766: ARM, Architecture Unknown architecture

Info: CP15.0.1: 0x1D152152: ICache: 16kB (4*128*32), DCache: 16kB (4*128*32)

DIDR: 6 Breakpoints available and 2 Watchpoints available.

J-Link>loadbin C:\Users\USER\Downloads\u-boot-s3c6410.bin 0x57e00000

Loading binary file... [C:\Users\USER\Downloads\u-boot-s3c6410.bin]

Writing bin data into target memory @ 0x57E00000.

J-Link>setpc 0x57e00000

J-Link>g


Ø 串口上可以看到u-boot开始运行,我们使用tftpnand命令烧录:

U-Boot 2010.09 (Mar 11 2013 - 23:24:01) by guowenxue<QQ:281143292>



CPU:     S3C6410@533MHz

         Fclk = 533MHz, Hclk = 133MHz, Pclk = 66MHz (ASYNC Mode)

Board:   OK6410

DRAM:  128 MiB

NAND:  256 MiB

*** Warning - bad CRC, using default environment


In:    serial

Out:   serial

Err:   serial

Net:   dm9000

Hit any key to stop autoboot:  0

[ s3c6410@guowenxue ]# tftp 50000000 u-boot-s3c6410.bin

dm9000 i/o: 0x18000300, id: 0x90000a46

DM9000: running in 16 bit mode

MAC: 08:00:60:26:0a:6b

operating at 100M full duplex mode

Using dm9000 device

TFTP from server 192.168.1.2; our IP address is 192.168.1.246

Filename 'u-boot-s3c6410.bin'.

Load address: 0x50000000

Loading: ###########

done

Bytes transferred = 149940 (249b4 hex)

[ s3c6410@guowenxue ]# nand write 50000000 0 40000


NAND write: device 0 offset 0x0, size 0x40000

262144 bytes written: OK

[ s3c6410@guowenxue ]# reset

resetting ...



U-Boot 2010.09 (Mar 11 2013 - 23:24:01) by guowenxue<QQ:281143292>



CPU:     S3C6410@533MHz

         Fclk = 533MHz, Hclk = 133MHz, Pclk = 66MHz (ASYNC Mode)

Board:   OK6410

DRAM:  128 MiB

NAND:  256 MiB

*** Warning - bad CRC, using default environment


In:    serial

Out:   serial

Err:   serial

Net:   dm9000

Hit any key to stop autoboot:  0

[ s3c6410@guowenxue ]#






该会员没有填写今日想说内容.
回复

使用道具 举报

0

主题

972

帖子

900

积分

i.MX6Q通行证i.MX6UL通行证TCU通行证AM335x通行证

发表于 2013-3-12 16:34:08 | 显示全部楼层
使用体验怎么样?
技术支持电话:0312-3119192
技术支持邮箱:Hardware@forlinx.com
点评回复 支持 反对

使用道具 举报

13

主题

75

帖子

368

积分

 楼主| 发表于 2013-3-13 11:49:44 | 显示全部楼层
飞凌-peacelove 发表于 2013-3-12 16:34
使用体验怎么样?

没用你们的源码,自己移植,教学用的!
该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

天使的呼噜 该用户已被删除
发表于 2013-4-19 23:18:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

110

主题

1358

帖子

1443

积分

A40i/T3/T507/T527通行证i.MX6Q通行证i.MX6UL通行证i.MX8MM通行证i.MX8MP通行证RK3568通行证RK3588通行证RK3399通行证LS1028A通行证G2L通行证LS1012A通行证LS1043A\46A通行证TCU通行证FDU产品通行证FCU1401通行证FCU1301通行证FCU11xx通行证FCU1201通行证FCU2201通行证FCU2301/FCU2302通行证FCU2401通行证5G转接卡通行证FCU3001通行证AM5718通行证Hi3519A通信证AM335x通行证i.MX RT通行证XX18通行证AM62x资料下载FDU070K02\FDU101K02通行证i.MX9352通行证

发表于 2013-5-21 08:47:03 | 显示全部楼层
楼主,您的开发板确定没问题吗?您可以试试看看你的开发板能不能正常启动,我感觉应该是您的jlink挂了!!
该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-12-23 07:02

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表