开发板型号:FL2440
烧录工具: J-Link
串口工具:340
调试终端:secureCRT
下载工具:tftpd32
烧录前:
串口连接开发板,在secureCRT上快速链接:
1)协议:Serial ;
2)在设备管理器选择端口进行选择
3)波特率:115200,数据位:8 ,奇偶校验: none ,停止位:0
4) 不选择流控
烧录要使用的文件:
烧录文件说明:
--------------------
bootstrap-s3c2440.bin
bootstrap文件是郭工用汇编写的一段代码,主要用来初始化CPU外部的SDRAM;在烧录时,该
程序需要使用j-link下载到0x0(CPU内部SRRAM)地址上去运行,另外此程序不需要烧录到Nandflash上。
u-boot-s3c2440.bin
--------------------
u-boot就相当于电脑的BIOS程序,该程序用来烧录/启动Linux系统等。在运行完bootstrap后,
我们需要使用j-link将它加载到0x33f80000(CPU外部SDRAM)中去运行,当他在内存中运行起来后,
再使用nand write命令将他烧录到nandflash的0地址上去;
linuxrom-s3c2440.bin
--------------------
linuxrom是linux系统文件,我们需要在u-boot运行时,使用tftp命令下载到SDRAM的0x30008000
地址上,然后再使用nand write命令将其烧录到nandflash的0x100000地址上,记得flash再写之前
一定要先使用nand erase命令擦除。
s3c2440_apps.apm
--------------------
该程序为FL2440上的应用程序,包括系统配置,WiFi使用,3G/GPRS拨号,数据库,web server,
MP3/MP4播放器程序等;修改网卡IP地址和MAC地址在:
/apps/etc/network/ifcfg-eth0
J-link commander的连接,在开发板上插上J-link ,如果没有J-link驱动请先安装,在开始菜单-程序-SEGGER-J-link commander 双击打开
连接正确后接着进行J-link命令操作:
J-link 加载u-boot命令
h 停止CPU中正在执行的程序,如果没有停下,可以多按几次h
speed 12000 设置J-link调试速度为12M
loadbin E:\Baiduyun\bootstrap-s3c2440.bin 0 加载bootstrap程序到CPU内部的4K SRAM中运行
setpc 0 让PC寄出去指向SRAM的起始地址,该地址放的是刚才下载的bootstrap程序
g 开始执行bootstrap程序,该程序用来初始化外部扩展的64M SDRAM,地址空间为0x3000 0000~(0x3000 0000+64M)
h 停止bootstrap程序的执行,如果没有停下,可以多按几次h
loadbin E:\Baiduyun\u-boot-s3c2440.bin 0x33f80000 将u-boot加载到SDRAM的0x33f80000
setpc 0x33f80000 使PC寄存器指向0x33f80000,即u-boot程序的第一条代码
g 开始执行u-boot程序
这样u-boot就下载到开发板的内存上并可以运行了。这里需要注意的是,在运行完最后一个命令“g“后,应迅速切换到终端,这时开发板会自动启动uboot,你需要在secureCRT环境进入u-boot
烧录:
u-boot下载烧录命令:
设置u-boot环境变量:
pri 显示当前环境变量
set ipaddr 设置fl2440开发板上的u-boot程序中的IP地址set serverip 指定tftp下载时使用的tftp服务器的IP地址
II. 下载并烧录u-boot程序:
tftp 30008000 u-boot-s3c2440.bin 将u-boot临时下载到SDRAM的30008000地址
nand erase 0 100000 将nandflash的0~1M的分区擦除,该分区是用来存放u-boot程序的;
nand write 30008000 0 ${filesize} 将刚下载到SDRAM 30008000地址上的u-boot写到nandflash的0地址偏移处,大小为下载的U-boot文件大小;
III. 下载并烧录linux系统:
tftp 30008000 linuxrom-s3c2440.bin 将linux系统程序临时下载到SDRAM的30008000地址
nand erase 100000 F00000 将nandflash的1M~16M的分区(总共15M)擦除,该分区是用来存放linux系统的;
nand write 30008000 100000 ${filesize} 将刚下载到SDRAM 30008000地址上的linux系统写到nandflash的1M地址偏移处,大小为下载的linux系统文件大小;
拔掉J-Link 重启开发板
boot 重启
在烧录过程中遇到的问题:
1)NAND write to offset 100000 failed -5 //写入偏移失败
3635200 bytes written: ERROR
解决方法:pri 显示当前变量 ,最后一行查看Environment size: 2003/131068 bytes,这时候写入字节应该较大于131068,写入140000较为合适
nand write 30008000 100000 140000
2) boot
NAND read: device 0 offset 0x100000, size 0xf00000
NAND read from offset 100000 failed -74
15728640 bytes read: ERROR
## Booting kernel from Legacy Image at 30008000 ...
Image Name: Linux Kernel
Created: 2014-09-06 2:31:55 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 7569956 Bytes = 7.2 MiB
Load Address: 30008000
Entry Point: 30008040
Verifying Checksum ... Bad Data CRC
ERROR: can't get kernel image!
解决:内核实际大小超过了bootcmd所指定大小,u-boot只会去读指定大小到内存中运行,就会校验失败了,把bootcmd改大一点