用keil jlinkK下载u-boot.bin到NOR flash

&>&&>&&>&&>&使用JLink烧写uboot.bin到Mini2440的NandFlash
使用JLink烧写uboot.bin到Mini2440的NandFlash
上传大小:163KB
使用JLink烧写uboot.bin到Mini2440的NandFlash
嵌到我的页面
<input type="text" value="">
综合评分:0(0位用户评分)
所需积分:1
下载次数:9
审核通过送C币
创建者:nigelyq
创建者:scaulaughter
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
使用JLink烧写uboot.bin到Mini2440的NandFlash
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:用Jlink烧写bootloader到mini2440的Nor flash
14:22:43来源: eefocus
J-Flash ARM的配置。
一般说来file-->open project里面会找到一些*.j的配置文件,加载他们就行了,但是没找到适合S3C2440的。所以自己建了一个.jflash,手动进行配置:
j-link设置
1. 打开J-Flash ARM,并进入菜单:Options-->Project settings
2.主要设置CPU选项和Flash选项
Core --> ARM9, Little endian
Use target RAM(faster)-->Addr:KB(不选很慢;从 flash启动时内部Boot SRAM的地址和大小,参考S3C2440A的芯片手册)
初始化序列(Init sence)按下面的填,简单做了下注释。
##-------Action-----Value0------Value1
1)&&Disable MMU
2)&&Write 32bit 0xx ; pWTCON , 看门狗定时器控制寄存器
3)&&Write 32bit 0x4AxFFFFFFFF ; INTMSK , 中断屏蔽寄存器
4)&&Write 32bit 0x4A0007FF ; INTSUBMSK , 针对INTMAK具体化的一个中断请求屏蔽寄存器
5)&&Write 32bit 0xx ; pWTCON , 看门狗定时器控制寄存器
6)&&Write 32bit 0xx000055AA ; rGPFCON , Port F control
7)&&Write 32bit 0x4Cx ; CLKDIVN , CPU时钟分频控制寄存器
8)&&Write 32bit 0x4Cx00FFFFFF ; LOCKTIME , 锁时计数寄存器
9)&&Write 32bit 0x4Cx ; MPLLCON , MPLL寄存器
10)&Write 32bit 0x4Cx ; UPLLCON , UPLL寄存器
11)&Write 32bit 0xx ; Bus width & wait status
12)&&Write 32bit 0xx00002F50 ; Boot ROM control
13)&&Write 32bit 0xx ; BANK1 control
14)&Write 32bit 0xx ; BANK2 control
15)&Write 32bit 0xx ; BANK3 control
16)&Write 32bit 0xx ; BANK4 control
17)&Write 32bit 0xx0007FFFC ; BANK5 control
18)&Write 32bit 0xx ; BANK6 control
19)&Write 32bit 0xx ; BANK7 control
20)&Write 32bit 0xx008E0459 ; DRAM/SDRAM refresh
21)&Write 32bit 0xx ; Flexible Bank Size
22)&Write 32bit 0xx ; Mode register set for SDRAM
23)&Write 32bit 0xx ; Mode register set for SDRAM&
取消"Automatically detect flash memory",然后"Select Flash Device"。
mini2440的Flash型号是:AM29LV160DB或SST39VF1601,选中之后不要改写任何数值。
如果没有对应Flash型号,选中Automatically detect flash memory
4. 烧写.bin文件(若二进制文件扩展名不是.bin改成xxx.bin即可)
1)打开.bin文件():File ->Open data file
2)Target -> Connect
3)Target ->Erase chip
4)Target -> Program
关键字:&&&&&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
TTI携TE传感器样片与你相见,一起传感未来
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。1395人阅读
bootloader(49)
硬件平台:tq2440开发环境:Ubuntu-3.11u-boot版本:2014.10本文允许转载,请注明出处:去除nor flash写保护在已经运行起来的u-boot命令行去除nor flash写保护:TQ2440 # flinfo
Bank # 1: EON EN29LV160AB flash (16 x 16)
Size: 2 MB in 35 Sectors
AMD Legacy command set, Manufacturer ID: 0x1C, Device ID: 0x2249
Erase timeout: 30000 ms, write timeout: 100 ms
Sector Start Addresses:
带有RO标识的块使能了写保护,是u-boot自己给这些块写保护的。通过下面的命令将所有的块解保护,不过重启又会有:TQ2440 # protect off all
Un-Protect Flash Bank # 1
TQ2440 # flinfo
Bank # 1: EON EN29LV160AB flash (16 x 16)
Size: 2 MB in 35 Sectors
AMD Legacy command set, Manufacturer ID: 0x1C, Device ID: 0x2249
Erase timeout: 30000 ms, write timeout: 100 ms
Sector Start Addresses:
TQ2440 # 如果没有norflash的读者可以跳过这里,u-boot从nor flash启动之前先尝试使用norflash的操作,如同对sdram的操作。nor flash写操作将0x33F80000起始的16bytes写到nor flash的0地址中去:TQ2440 # cp.b 33f如果你没有关闭DEBUG定义,会有下面的信息:flash_is_busy: 0fwc addr 00000aaa cmd aa 00aa 16bit x 16 bitfwc addr
cmd 55 0055 16bit x 16 bitfwc addr 00000aaa cmd a0 00a0 16bit x 16 bit不用管这个信息。norflash比较操作TQ2440 # cmp.b 0 33f80000 10
Total of 16 byte(s) were the samesame说明写进去了。norflash读操作TQ2440 # md.b 33f80000
33f8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
33f8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
33f8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
33f8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
TQ2440 #你会很奇怪,怎么都是0呢?我不是都把代码拷贝到0x33F80000这个位置了吗?怎么都会是0呢?我们仔细发现u-boot打印的信息,发现u-boot做了重定向:U-Boot code: 33F80000 -& 33FAA0E0 &BSS: -& 33FAF838 &u-boot的code段加上BSS段长度为194616bytes,大约190K。。。。。。ramsize:
& SDRAM空间64MTLB table from 33ff0000 to 33ff4000 TLB重定向到了33ff4000向上移动了0x4000(16K)Top of RAM usable for U-Boot at: 33ff0000 & u-boot可以用的空间顶点位置在33ff0000上面还有1M的预留空间(hide mem)Reserving 190k for U-Boot at: 33fc0000 将u-boot重定位到了0x33FC0000位置Reserving 4160k for malloc() at: 33bb0000 堆的首地址是在0x33BB0000位置,加上4160K为堆的顶点地址,即是0x33FC0000,也就是u-boot代码的首地址。Reserving 28 Bytes for Board Info at: 33baffe4Reserving 160 Bytes for Global Data at: 33baff44New Stack Pointer is: 33baff38也就是说u-boot代码被重新定位到了0x33FC0000位置,后面4160K做了堆,堆中的字节被清0了,所以我们在读0x33f80000位置的字节时,它们都为0。读0x33FC0000 - 0x10起始地址的内容:TQ2440 # md.b 33FBFFF0
33fbfff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
33fc0000: be 00 00 ea 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5
................
33fc 9f e5 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5
................
33fc f8 33 c0 00 f8 33 20 01 f8 33 80 01 f8 33
`..3...3 ..3...3可见从0x33FC0000开始才是u-boot 的代码的起始位置。我们修改一下tq2440.h文件中CONFIG_SYS_TEXT_BASE的值,让代码直接从重定向的位置运行,这样u-boot就不需要重定向操作了:#define CONFIG_SYS_TEXT_BASE
0x33FC0000编译、烧录、运行。注意烧录和运行地址也要变。u-boot打印的信息是和上面一样的:U-Boot 2014.10 (Nov 08 2014 - 17:39:09)U-Boot code: 33FC0000 -& 33FEA0E0 &BSS: -& 33FEF838CPUID: FCLK: &405.600 MHzHCLK: &101.400 MHzPCLK: & 50.700 MHzmonitor len: ramsize: TLB table from 33ff0000 to 33ff4000Top of RAM usable for U-Boot at: 33ff0000Reserving 190k for U-Boot at: 33fc0000Reserving 4160k for malloc() at: 33bb0000Reserving 28 Bytes for Board Info at: 33baffe4Reserving 160 Bytes for Global Data at: 33baff44New Stack Pointer is: 33baff38RAM Configuration:Bank #0:
MiB。。。。。。u-boot烧录到nor flash中去:1、解写保护2、擦出TQ2440 # erase all3、将0x33FC0000地址开始的190K字节大小的内容复制到nor flash的0地址开始处。flash写的好慢,等了N久......等了N久后我突然想到J-link好像可以直接向Nor flash中写,这样写的就是干净的代码了。不过我还是要等这边写完,看看会有什么现象。等了半个小时还是不见停止,算了我还是将其中断吧!根据文档操作:写的速度跟蜗牛有得一比,Nor flash啊!在你和nand flash之间,叫我怎么爱你?看来我错了,我把这个频率设置的太低,所以写的很慢。我把它烧录到nor flash中,没有成功启动。什么原因呢?明天继续。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:555035次
积分:8454
积分:8454
排名:第1836名
原创:235篇
转载:89篇
评论:117条
(1)(2)(3)(3)(6)(3)(6)(6)(11)(12)(4)(1)(4)(5)(4)(9)(2)(1)(4)(3)(5)(4)(6)(2)(9)(14)(21)(6)(4)(36)(47)(7)(7)(65)(6)
文章:28篇
阅读:92324
点击它俩和我交谈
点击它给我发邮件下次自动登录
现在的位置:
& 综合 & 正文
JLINK烧写BIN文件到nand、norflash、SDRAM
1. 简要说明
JLink的调试功能、烧写Flash的功能都很强大,但是对于S3C2410、S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢;烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点。
本文使用一个间接的方法来实现对S3C2410、S3C2440开发板的Nor、Nand Flash的烧写。原理为:JLink可以很方便地读写内存、启动,那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来烧写。
2. 操作步骤
2.1连接好jlink,启动Jlink GDB server。启动开发板。
2.2 运行J-Link commander
2.3 下载运行特制的程序
对于S3C6410处理器,它们内部有8K的SRAM,当使用Nor Flash启动时,norflash的物理地址是0x,启动是通过映射到地址0;当使用Nand Flash启动时,地址为0。
对于S3C6410开发板,一般都外接128M的SDRAM。SDRAM能被使用之前,需要经过初始化。
所以,先把一个init.bin下载到内部SRAM去运行,它执行SDRAM的初始化;然后再下载一个比较大的程序,比如u-boot到SDRAM去动行,它将实现对Nor、Nand Flash的操作。
以下是在J-Link commander里的命令,假设init.bin、u-boot.bin在e:盘下。
1. speed 12000
//设置TCK为12M,下载程序时会很快
2. 下载并运行init.bin,这是用来初始化SDRAM的
2.1 如果是NAND启动:
loadbin e:/init.bin 0
2.2 如果是Nor启动:
loadbin e:/init.bin 0x
3. 下载特制的uboot:
loadbin e:/u-boot.bin 0x57f80000
setpc 0x57f80000
//这个地址128MB的SDRAM地址范围是0x - 0x57ffffff.下载到0x57f80000,还有512KB容量可以用,所以不溢出
u-boot已经启动了,以后就可以通过网络、串口下载文件,然后使用u-boot里的命令进行烧写。
2.4 使用u-boot烧写Flash
以例子为例,假设需要烧写一个名为leds.bin的程序到Nor、Nand Flash,那么请参考:
(1).通过Jlink下载:
在J-Link commander里执行,将程序放到SDRAM中运行:
loadbin e:/leds.bin 0x
注意leds.bin的大小
(2).通过u-boot烧写到Nor Flash:
在u-boot里执行:
protect off all
erase 30000
// 擦除从地址开始的大小为0x30000的NOR Flash扇区(大小为可擦除块的整数倍,可以运行flash info命令查看)
// 把前面下载到0x的程序烧写到NOR去
(3).通过u-boot烧写到Nand Flash:
在u-boot里执行:
nand erase 0 30000
// 擦除从0地址开始的大小为0x30000的Nnad Flash扇区
nand write.jffs2
// 把前面下载到0x的程序烧写到Nand去
注意,上面用的30000等数字是192K,如果你的程序比较小,请自行设置。
&&&&推荐文章:
【上篇】【下篇】

我要回帖

更多关于 keil jlink 的文章

 

随机推荐