有关调试的一些技巧总结

调试占据着研发全过程的很大比重,我在调试uboot时,花了好久好久。

以一个具体的例子,我想让我的uboot从nandflash启动,因为J-link不能直接将u-boot.bin文件直接烧录到nandflash中,必须在通过nandflash控制寄存器来对nandflash操作,我的uboot中就有nand erase和nand write等功能。如果我每次将uboot烧录到nandflash时都去摆弄跳线帽,开关电源,那多麻烦和危险呐。

前提条件如下:

1、tftp服务器,这个可以自己搭建网上有关搭建tftp服务器的方法很多。可以参考一下;

2、有AUTOHOTKEY。

过程如下:

1、

;------------------------------------------------------------
;    Green Program mapped by "ALT" key
;------------------------------------------------------------
!j::
Run C:\Program Files\SEGGER\JLinkARM_V410i\JLink.exe
return 
按一下Alt + j 就能打开打开J-Link Commander,如下图


2、

^3::
send h{enter}
send speed 12000{enter}
send loadbin D:\project\bootstrap-s3c2440.bin 0{enter}
send setpc 0{enter}
send g{enter}
sleep 100
send loadbin D:\project\u-boot-fulinux.bin 0x33f80000{enter}
send setpc 0x33f80000{enter}
send g{enter}
return

再按一下Ctrl + 3就能将上面的内容打到J-Link Commander上面如图:


上面的过程是先将bootstrap-s3c2440.bin这个初始化SDRAM的代码放到steppingstone这4K的SRAM中,然后将u-boot-fulinux.bin下载到SDRAM的0x33f80000地址处并且设置ARM的PC寄存器,让ARM跳转到0x33f80000这个地方运行。需要这样步是因为我没需要借助它自身将u-boot-fulinux.bin考到nandflash中去。

u-boot-fulinux.bin可以在这里下载:

http://download.csdn.net/detail/sonbai/5169563

3、

!1::
send  tftp 30008000 u-boot-fulinux.bin;nand erase 0 40000;nand write 30008000 0 40000{enter}
return

第一个是按Alt + 1就能将
tftp 30008000 u-boot-fulinux.bin;nand erase 0 40000;nand write 30008000 0 40000{enter}

发送到uboot的终端上如图


一键式搞定,过程是这样的将ip是192.168.1.78这个tftp服务器指定文件夹中的u-boot-fulinux.bin下载到SDRAM的30008000地址处过地址处放着u-boot本身,tftp传输端也就是在0x33f80000地址往上的uboot来完成的,nand erase是先擦除nandflash上的内容,nand write 是将SDRAM上的30008000起始地址处的u-boot-fulinux.bin下载到nandflash起始地址0处,大小是0x40000。显示OK后,键入reset ,复位cpu这时候就是从nandflash启动,跳线帽是设置在nandflash启动的。


4、

如果 reset后uboot没有达到预期的目标,我们修改源码,然后make,编译过程足够你重复上面过程,将可以在SDRAM和NORflash中运行但是不能在nandflash中运行的(这也是初衷)u-boot-fulinux.bin下到SDRAM的0x33f80000中了

你可能感兴趣的:(bootloader,linux技巧篇)