Chinaunix首页 | 论坛 | 博客
  • 博客访问: 227994
  • 博文数量: 30
  • 博客积分: 509
  • 博客等级: 一等列兵
  • 技术积分: 802
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-22 12:32
文章分类

全部博文(30)

文章存档

2013年(14)

2012年(16)

分类: LINUX

2012-12-09 16:41:20

    我自己有一个Mini2440的板子,我学习了Bootloader这一节,想做一下实验。
    很可惜,我只有笔记本电脑,不带并口的。不过我有一个JLinkV8,听网友们说可以有它来下载程序。
 
    网上有不少的文章讲如何使用JLink烧程序到Mini2440,我总结了一下,主要的步聚如下:
    (1)下载init.bin文件,并运行。它能将SDRAM配置好。
    (2)下载u-boot.bin文件到SDRAM内存地址上,并运行它。
    (3)使用u-boot命令将自身写到NandFlash或NorFlah。
 
    首先要安装JLink驱动,然后就是正确的连线,最后是给Mini2440上电。
打开J-Link Commander。
    
    以上显示,是正常连接的。
 
    我在网上下载了一个init.bin文件。 init.zip  提取其init.bin文件。
    下面我简单讲一下,我用到的几个jlink命令:
  • r -- reset, 复位命令
  • h -- halt, 停机,也有暂停的功能
  • loadbin
    -- 下载filename文件到地址上address
  • setpc
    -- 设置PC的值
 
在执行J-Link命令之前,先执行:
     > speed 12000
     提高通信速度,不然后面下载程序会很慢。
 
(1)下载init.bin文件,在J-Link Commander执行以下命令:
     > r
     > h
     > loadbin e:\init.bin 0x40000000
     > setpc 0x40000000
     > g
     执行完上述命令之后,我们的目标板就从0x40000000地址上开始执行。如果看到Mini2440板子上的4个LED开始闪烁,那就说明init.bin程序在目标板中运行起来了。
    这里我有一个问题,为什么要下载到0x40000000地址上呢?既然不是SDRAM,这个地址上是什么存储器?请大师解答
 
(2)然后下载我们的u-boot.bin文件到SDRAM中进行运行。
     > h
     > loadbin e:\u-boot.bin 0x33f80000
     > setpc 0x33f80000
     > g
     这里我说明一下为什么是0x33f80000,因为在U-Boot中已定义了U-Boot终端是运行在这个地址。执行完J-Link命令之后,我们就听到一声蜂鸣器声,并可以在Mini2440连出来的串口终端上看到U-Boot输出的信息:
    
     这已说明刚下载的U-Boot已经运行起来了。
 
(3)接下来,就是用U-Boot将自己写入NandFlash或NorFlash
     首先,重新导入u-boot.bin文件到0x30000000地址上。
     > h
     > loadbin e:\u-boot.bin 0x30000000
     > g
 
     然后,就是在串口终端中输入Uboot命令,将0x30000000内存的数据分别写入NandFlash或NorFlash。
 
     我只完成了将U-Boot烧入NandFlash的操作,至于NorFlash遇到了点麻烦。
     我先讲NandFlash。如下图所示,输入命令:
     
 
     然后拔了J-Link,选择NandFlash,重新启动。就会在串口终端看到NandFlash的启动信息。
     
 
    以上是NandFlash的烧录,下面我讲述一下烧写NorFlash的过程。与NandFlash的烧录过程差不多,只有U-Boot命令不一样:
    
    错误应该出现在“erase 0 3ffff”命令上。看网友执行的结果不是这样的。请大师指点一下……
 
    虽然没有完全成功,但还要学到了如何烧到NandFlash,也算是一点小成说。
阅读(18009) | 评论(1) | 转发(3) |
0

上一篇:CSDN博客

下一篇:调试U-Boot笔记(一)

给主人留下些什么吧!~~

盛装舞步开始2014-06-04 15:12:41

loadbin e:\init.bin 0x40000000 关于这个0x4000 0000不知道可不可以这样理解:
首先并不是所有的时候都是0x4000 0000的, 应该是nor启动的时候下载到0x4000 0000. 而在nand启动的时候是下载到0x0的. 因为在nor启动的时候 片内的sram被映射到0x4000 0000, 而nand启动的时候sram被映射到0x0, 在下载init.bin之前存储控制器并没有初始化, 需要先下载到sram中运行.所以这里的地址就是两种启动模式下sram的0地址所在的位置