• 开发板烧录教程


     

    开发板型号: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:Baiduyunootstrap-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:Baiduyunu-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改大一点

    主机操作系统:Centos 6.7 
    交叉编译器环境:arm-linux-gcc-4.5.4 
    开发板平台: FL2440 
    Linux内核版本: linux-3.0 
    烧录工具:J-LINK

    下载工具:TFTP32

    调试终端:SECURE-CRT
    邮箱:leiyuxing205@gmail.com
    ———————————————————————————————————————

    烧录前

    1.先下载SETUP,安装完后串口连接开发板,打开设备管理器查看端口号

    2.在secureCRT上快速链接,打开connect进行如下相关设置:

    协议:Serial   

    波特率:115200

    数据位:8

    奇偶校验: none

    停止位:0   

    不选择流控

    注意事项:

    1, 只有在bootloader阶段才能使用j-link下载调试,一旦Linux运行起来后,j-link就不能再使用了。

    2, 如果开发板上没有出厂时的wince系统,就可以跳过前面的擦除出厂系统自带bootloader的过程,直接使用j-link下载bootstrap程序并烧录u-boot :如果开发之前带有wince系统,则在烧录前得先擦除整个flash,具体操作如下:先不插j-link,运行开发板,进入uboot界面,选择"Erase Flash Partition",擦除bootloader。若不是第一次,可先从终端进入uboot模式,使用 nand scrub格式化。

    3.所有的flash都只能由1 write成0,不能由0 write成1; 如果要从0变为1,只能erase; 所以在往flash写数据之前,必须先擦除要写的地址空间;

    烧录相关软件

    USB转串口相关芯片驱动  :  凌云嵌入式共享Part09. 培训常用软件和工具USB转串口驱动

    J-link驱动             :  凌云嵌入式共享Part09. 培训常用软件和工具jlink驱动

    windows下tftp服务器工具:  凌云嵌入式共享Part09. 培训常用软件和工具

    烧录到开发板上的bin文件下载地址

    http://emb-lingyun.xicp.net:8888/fl2440/trunk/bin/

    烧录文件说明

    --------------------

    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加载u-boot命令:

    --------------------

     

    h   停止CPU中正在执行的程序,如果没有停下,可以多按几次h

    speed 12000   设置J-link调试速度为12M

    loadbin E:fl2440_binootstrap-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:fl2440_binu-boot-s3c2440.bin 0x33f80000   将u-boot加载到SDRAM的0x33f80000

    setpc 0x33f80000    使PC寄存器指向0x33f80000,即u-boot程序的第一条代码

    g      开始执行u-boot程序

    u-boot下载烧录命令

    --------------------

    I. 设置u-boot环境变量

    -----

    set ethaddr    设置fl2440开发板上的u-boot程序中的MAC地址

    set ipaddr     设置fl2440开发板上的u-boot程序中的IP地址

    set serverip   指定tftp下载时使用的tftp服务器的IP地址

     

    II. 下载并烧录u-boot程序

    -----

    tftp 300008000 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 300008000 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系统文件大小;

    烧录过程中遇到的问题及解决方案

    问题1:

    往flash中第一次写数据时,先把芯片中的数据全部擦除后,再写数据,读出来发现写的全部正确。而忘这个flash中第二次写数据时,没有擦除,而是接着上次的地址往后写,发现写入的数据的前12个字节是错误的,其余的数据都正确,不知道为什么?
    原因:

    写入,只能把数据(bit)从1改为0;擦除,只能把所有数据(bit)从0改为1。 所以,要想写入数据,而不擦除,是有条件的:保证写入数据的每一个bit,不会从 0 变成 1 。
    解决方法
    nand flash 每一次烧录之前,必须得先擦除,再写,使用nand erase命令。


    问题2:

    接下来插入网线,设置好ip地址与电脑同一网段。使用tftp工具,想将uboot下载到开发板内存的相应地址上,再通过nand write烧录到nand flash上发现一直被中断无法联网下载。
    原因:

    防火墙的作用是拦截、限制应用程序的网络连接请求,会询问你是否允许应用程序访问网络,但是这会给我们使用网络功能带来很多不便。
    解决方法:
    关闭杀毒软件:直接在任务栏上找到杀毒软件图标-右键-退出;
    关闭防火墙:任务栏“开始”按钮-控制面板-系统和安全-windows防火墙-打开或关闭windows防火墙-选择“关闭”。


    问题3:

    NAND write to offset 100000 failed -5    //写入偏移失败
         3635200 bytes written: ERROR
    原因:

    设置的偏移量比当前的偏移量要小,无法写入。  
    解决方法:

    pri 显示当前变量  ,最后一行查看Environment size: 2003/131068 bytes,这时候写入字节应该较大于131068,写入140000较为合适
      nand write 30008000 100000 140000

  • 相关阅读:
    SSHkey的申请
    版本控制系统-集中式VS分布式(分享)
    01-OC中数组NSArray的遍历
    第4周小组作业:WordCount优化
    第2周作业1:开设博客
    第2周个人作业:WordCount
    测试课程总结2017
    优秀博客的评比结果及相关说明
    静态代码检查工具简介
    Selenium安装中的一些问题及解决办法-软硕1703班3组整理分享
  • 原文地址:https://www.cnblogs.com/linyinmobayu/p/13521960.html
Copyright © 2020-2023  润新知