当前位置: 代码迷 >> 驱动开发 >> uboot、Linux内核、busybox烧写有关问题
  详细解决方案

uboot、Linux内核、busybox烧写有关问题

热度:580   发布时间:2016-04-28 09:59:22.0
uboot、Linux内核、busybox烧写问题
假设我有一块S3C3440开发板,但是板子是纯硬件无任何系统和软件在上面,如果此时我要烧写Linux内核、uboot、busybox:
1、它们的烧写顺序应该是怎样的?我的看法是烧写一般要终端,所以先烧写uboot,然后是linux内核和busybox,不知道是否正确?或者说这三个烧写没什么顺序?
2、Linux内核、uboot、busybox这三个如果有一个烧写失败,会不会导致其他烧写失败?
3、如何删除烧写在开发板上flash或Nand上的文件?

望知道的回答一下,谢谢!!

------解决思路----------------------
标准的arm的复位地址是0,也就是说复位之后,pc指向0地址,而此刻的0地址必须是cpu可以直接读取的内容,比如nor flash。在此处的代码会有对cpu的第一个初始化过程,并且会有系统所支持的UBOOT外部存储类型的驱动以及相应的文件系统的简单支持,比如说你的系统支持sd卡烧录的uboot,在bootloader中就会有sd卡的驱动。
------解决思路----------------------
引用:
用的是J-LINK,烧写步骤如下:
1、loadbin  init.bin  0x00000000
2、SetPC 0x00000000
3、g
4、h
5、loadbin  u-boot.bin 0x33f80000
6、SetPC 0x33f80000
7、g
开发板是固定nand flash启动。

开发板从什么地方启动时可以调的,我以前用的是三星的板子,里面有段代码就三星固化好的,存在于IROM  板子上电之后首先运行IROM里面的代码 (因为板子上电CPU会首先执行0地址的代码,并且IROM掉电不会丢失,所以就把IROM内存映射到0地址) 然后根据拨码开关的状态(启动方式 NandFlash、SD、USB)再所选的方式中寻找启动程序。
所以你应该先通过USB下载init.bin 而且下载的地址要注意。给你一个S5PV210的板子烧写过程作参考  基本上没多大区别。
烧写开发板
   1)跳转拨码开关
      4 -> on 从USB读取启动数据 
    
   2)启动dnw0.6C.exe //这是个烧写程序的软件    
      配置该软件
          COM1
          115200
          0xD0020010 (为什么下载到该位置?) 
   3) 启动开发板
      按住白色按钮安装USB设备驱动
            x210 usb Driver
   4)下载x210_usb.bin (初始化外接的DRAM)
       usb port
           ->transmit 
   5) 修改dnw的配置文件
          0x23e00000 (外接的DDRAM?)
   6)  下载u-boot.bin
      usb port
           ->transmit 
   注意: 4 5 6 要保证在usb:OK的状态下执行 
          4 5 6 要在一次usb:ok的过程中完成       
   7)将u-boot.bin烧写到nandflash中去
      通过网络下载u-boot.bin到开发板的RAM
      a) tftp服务端 tftpd32.400.rar
          解压启动 tftpd32.exe
             current directory:"F:\1411\ARM\res\tftpd32.400\tftpd32.400"
          拷贝要下载的(u-boot.bin) 到tftp服务器主目录下去      
      b) tftp客户端
         在串口终端执行
         命令   下载位置     下载文件名称
         tftp   0x20008000  u-boot.bin 
        
        如果下载不成功?
            修改连接开发板的网卡的IP地址
            在串口终端中执行ping 192.168.1.8
            如果显示为“host 192.168.1.8 is alive”说明网络连通
      c)  烧写u-boot.bin到nand 0地址  ***********(注意这里和你说的不一样)************
        (命令) (擦除)(擦除的首地址) (连续擦除多少个字节)
        nand     erase     0                0x100000
                (写入)   (源数据位置)   (写入位置)  (连续写入字节的个数) 
        nand     write    0x20008000       0          0x100000
   8)拨码开关4->off (从nandflash启动)
   
      重新给开发板上电      
------解决思路----------------------
引用:
我根据我的内存空间布局烧写了,但是终端上还是没有反应。
loadbin  u-boot文件  0x00000000
setpc 0x00000000
g

不好意思,刚查了资料 你那个板子的IRAM内存才4K,所以必须先要加载init.h初始化外接内存DRAM。
你是不是刚开始接触这个?
首先你要清楚你板子的IRAM(SRAM)和DRAM有多大,一般uboot.bin是100~300K大小,我以前用的板子IRAM是96K,所以我们首先加载了一个针对我们板子的初始化外接内存的x210_usb.bin到IRAM中,所以你要清楚IRAM的位置否则会下错位置。、
对于S3C2410、S3C2440处理器,它们内部有4K的SRAM,当使用Nor Flash启动时,地址为0x40000000;当使用Nand Flash启动时,地址为0。   
对于S3C2410、S3C2440开发板,一般都外接64M的SDRAM。SDRAM能被使用之前,需要经过初始化。
大体步骤:
先把一个init.bin下载到内部SRAM去运行,它执行SDRAM的初始化;然后再下载uboot到DRAM中,实现对nand或nor的操作。
假设init.bin、u-boot.bin在e:盘下
speed 12000
loadbin e:\init.bin 0       
setpc 0   


h   
loadbin e:\u-boot.bin 0x33f80000   
setpc 0x33f80000   
g
运行之后再使用nand命令把uboot烧写到nandflash中去。
重启开发板