使用J-Link v8和u-boot烧写裸机程序到s3c2440的nand flash(这里假设nor flash已经烧进了u-boot)

时间:2022-09-02 15:25:30

          这里是假设了nor flash 已经烧进了u-boot,如果没有烧进u-boot,也可以先通过J-Link commander把对目标板SDRAM的初始化init.bin文件加载进SRAM(s3c2440里面的steppingstone,如果是nor启动方式的话,这个steppingstone被映射到0x40000000上,如果从nand启动的话,被映射到0x0地址上.然后设置PC值并运行它,这样SDRAM就被初始化好了.然后把u-boot.bin加载到SDRAM的某个地址处,只要不跟其他需要用到的空间重叠就行,运行u-boot,之后的操作跟下面基本一样.

 

1.把J-Link连接上PC机跟目标板,确保J-link驱动能正常使用.把串口连上PC机跟目标板,确保能正常通信.之后把开发板拨到nor flash启动,开启电源.因为nor flash已经烧进了u-boot,串口输出如下:

            使用J-Link v8和u-boot烧写裸机程序到s3c2440的nand flash(这里假设nor flash已经烧进了u-boot)

2.因为nor flash启动时已经把SDRAM给初始化好了,所以我们可以使用J-Link commander来把我们要烧到nand flash的bin文件加载到内存0x30000000处:

             使用J-Link v8和u-boot烧写裸机程序到s3c2440的nand flash(这里假设nor flash已经烧进了u-boot)

3.打开J-Link Commander后,如果提示如下,说明J-Link正确connect上了目标板:

           使用J-Link v8和u-boot烧写裸机程序到s3c2440的nand flash(这里假设nor flash已经烧进了u-boot)

4.把JTAG速度设置为12M这样会更快点,然后使用loadbin命令把我们要加载到内存的bin文件加载进去,然后g一下.(这里需要注意的是:不要去运行它,因为如果运行后程序无法停止,那么后续的操作就无法进行了,虽然说h命令可以停止cpu运行,但是不知道为什么h之后后续还是有些问题)

实践如下:

          使用J-Link v8和u-boot烧写裸机程序到s3c2440的nand flash(这里假设nor flash已经烧进了u-boot)

 

以上在J-Link commander的命令如下:

speed12000

loadbinF:\VM_Share\arm_test\nand_led\nand_led.bin 0x30000000

g

 

 

5.之后转到u-boot命令下:

①选择q,进入u-boot命令行

②根据之前查看到文件的大小,先擦除最小块数的nandflash.我的nand flash每一块大小是2048Byte,因为读写是以页为单位,所以我直接擦除一个块,大小为0x200000.

③之后把0x30000000处的内容拷贝到nand flash 的第一个页里.

 

在u-boot里命令如下:

nanderase 0 200000   

nandwrite.jffs2 30000000 0 200000

 

具体实现如下:

         使用J-Link v8和u-boot烧写裸机程序到s3c2440的nand flash(这里假设nor flash已经烧进了u-boot)