用JLink(V8) + AXD烧写FL2440开发板的BootLoader并利用USB线下载WinCE和Linux(V1.0)
- 格式:pdf
- 大小:2.63 MB
- 文档页数:15
开发板烧录教程开发板型号:FL2440烧录⼯具: J-Link串⼝⼯具:340调试终端:secureCRT下载⼯具:tftpd32烧录前:串⼝连接开发板,在secureCRT上快速链接:1)协议:Serial ;2)在设备管理器选择端⼝进⾏选择3)波特率:115200,数据位:8 ,奇偶校验: none ,停⽌位:04)不选择流控烧录要使⽤的⽂件:烧录⽂件说明:--------------------bootstrap-s3c2440.binbootstrap⽂件是郭⼯⽤汇编写的⼀段代码,主要⽤来初始化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-eth0J-link commander的连接,在开发板上插上J-link ,如果没有J-link驱动请先安装,在开始菜单-程序-SEGGER-J-link commander 双击打开连接正确后接着进⾏J-link命令操作:J-link 加载u-boot命令h 停⽌CPU中正在执⾏的程序,如果没有停下,可以多按⼏次hspeed 12000 设置J-link调试速度为12Mloadbin 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程序的执⾏,如果没有停下,可以多按⼏次hloadbin E:\Baiduyun\u-boot-s3c2440.bin 0x33f80000 将u-boot加载到SDRAM的0x33f80000setpc 0x33f80000 使PC寄存器指向0x33f80000,即u-boot程序的第⼀条代码g 开始执⾏u-boot程序这样u-boot就下载到开发板的内存上并可以运⾏了。
如何用jlink烧写uboot到nandflash1.通过Nor Flash下载a. speed 12000 //设置TCK为12M,下载程序时会很快b. loadbin d:\u-boot.bin 0x30000000注意:0x30000000是你想要下载u-boot.bin到开发板的内存地址,内存地址根据不同的开发板设定不同,因为本文中使用的是FL2440,片上系统是S3C2440,内存挂载的地址区域是0x30000000~0x33ffffff,我们只需要把u-boot.bin下载到这片区域即可然后我们在U-boot命令行模式输入NAND Flash擦除和写入命令即可:c.nand erase 0 40000// 擦除从0地址开始的大小为0x40000的Nnad Flash扇区,0x40000是待写入的U-boot.bin的大致长度,长度必须为NAND Flash页大小的整数倍,通常会需要比u-boot.bin实际长度长。
d.nand write 30000000 0 40000 // 把前面下载到0x30000000的u-boot.bin烧写到Nand去二、方法二,直接通过JLink假如你的开发板没有NOR Flash或者是你使用的NOR Flash还未被J-FLASH ARM所支持,这时上面的方法你就无法使用了,这时候你需要一个初始化内存SDRAM的程序,这个程序完成的功能也就是配置好SDRAM的寄存器,使它能正常工作,fl2440的内存初始化程序下载地址:“2440init.bin”。
你还需要准备一个特殊的u-boot_SDRAM.bin,它与你要烧写到NAND Flash的u-boot.bin有区别,u-boot_SDRAM.bin编译时需要在include/configs/开发板配置文件.h 文件中添加:#define CONFIG_SKIP_LOWLEVEL_INIT 1 //用来支持uboot在内存中直接运行添加这个宏定义之后,U-boot就跳过了内存初始化的部分,因为此时我们的内存已经先由“2440init.bin“初始化好了,再次初始化会出现内存数据的丢失。
1. 简要说明JLink的调试功能、烧写Flash的功能都很强大,但是对于S3C2410、S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢;烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点。
本文使用一个间接的方法来实现对S3C2410、S3C2440开发板的Nor、Nand Flash的烧写。
原理为:JLink 可以很方便地读写内存、启动程序,那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来烧写。
2. 操作步骤2.1 连接硬件对于大多数的S3C2410、S3C2440开发板而言,它们所用的JTAG接口一般有3种(如图1所示),其中前两种用得比较多。
(原文件名:3种jtag.JPG)但是市面上的JLink,大多只支持第3种JTAG接口,所以需要用到转接板。
或者直接使用JLink的变种,如图2所示的两种改进版JLink:(原文件名:2种jlink.JPG)以mini2440为例,如图3接好JTAG线。
(原文件名:JLink_2440.jpg)2.2 运行J-Link commanderJ-Link commander启动界面如图4所示,(如果没有发现检测到CPU,就在里面执行usb命令连接JLink,再执行r命令识别处理器)。
(原文件名:JLINK启动界面.JPG)2.3 下载运行特制的程序对于S3C2410、S3C2440处理器,它们内部有4K的SR AM,当使用Nor Flash启动时,地址为0x40000000;当使用Nand Flash启动时,地址为0。
对于S3C2410、S3C2440开发板,一般都外接64M的SDRAM。
SDRAM能被使用之前,需要经过初始化。
所以,先把一个init.bin下载到内部SRAM去运行,它执行SDRAM的初始化;然后再下载一个比较大的程序,比如u-boot到SDRAM去动行,它将实现对Nor、Nand Flash的操作。
第24卷 第15期2008年8月甘肃科技Gansu Science and T echnolo gyV ol.24 N o.15A ug. 2008基于S3C2440的Bootloader的设计与实现于云松,由德凯,孙其芳(沈阳化工学院,辽宁沈阳110000)摘 要:Boot loader(引导加载程序)是嵌入式系统开发的一个重要环节,它把操作系统和硬件平台衔接起来,对嵌入式系统的后继软件开发十分重要。
U-boot是一个功能十分强大的Boot loader,本文深入研究了U-boot的运行原理,在基于以三星公司S3C2440微处理器为核心的开发板为背景,分析、探讨并且实现了基于U-boo t的系统引导加载程序的构建。
关键词:嵌入式系统;Bo otloader;S3C2440;u-boo t中图分类号:T P3681 引言Boo tloader(引导加载程序)就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境[2]。
嵌入式系统中的Boo tlo ader是嵌入式系统开发的难点之一,同时是系统运行的一个前提条件,没有这段和硬件紧密相关的代码,多么精悍的内核也不能发挥作用[3]。
Bo otloader是严重地依赖于硬件而实现的,特别是在嵌入式系统中,不同体系结构的处理器需要不同的Bootloader,即使是基于同一种处理器构建的不同开发板,通常也需要进行Boo tlo ader 移植工作。
因此,在嵌入式系统中建立一个通用的Boo tloader几乎是不可能的,所以本文是实现针对以S3C2440微处理器为核心的特定目标板的Bo ot loader的开发。
Boo tloader的启动流程一般分为两个阶段stage1和stage2:Boo tloader的stage1通常包括以下步骤:1)硬件设备初始化。
使用的是使用- JLINK 7.0 购买 一、总括。
二、硬件环境。
开发板:- “友善之臂”公司的“mini2440”.CPU 处理器:- Samsung S3C2440A ,主频400MHz ,最高533Mhz SDRAM 内存:- 在板64M SDRAM - 32bit 数据总线- SDRAM 时钟频率高达100MHz仿真器:串口线:-USBto232小模块,来对开发板和电脑的串口连接。
很方便,因为模块上已经有串口的RDX 和TDX (TTL 电平,即单片机的3.3V/5V 和0V 的电平)、5V 电源、3.3V 电源、GND 。
所以连接起来很方便。
三、电路连接。
1. 电源。
USB 口供电的方式(就是把USB 口的5V 电源接到开发板电源上,效果还行,就是3.5寸的屏会一亮一暗的,应该是电压不稳)。
2. 串口。
友善之臂的com0口与电脑串口相连(可以不连,因为我的串口和电源是一起的,所以就连上了)。
3. JLINK 连接。
(不用说了吧~10PIN 线对应着全连上就可以了)四、软件环境。
1. SEGGER J-Link V4.08版。
即JLINK 的上位机(驱动)。
下载地址:/cms/admin/uploads/userfiles/file/J-Link/Setup_JLinkARM_V408l.zip 2. ADS1.2 。
即代码编写和仿真软件(附带AXD 调试工具)。
下载地址:/MCU123_temp_0080309@/ARM/ads1.2.rar五、调试过程。
1. 首先给开发板上电,并且将启动FLASH 选择到NorFLASH(我也还没弄明白是什么意思,只知道norflash 能下载程序,并且能通过命令跳转到nandflash 来启动)。
2. 连接JLINK 和开发板。
打开程序:“开始=》所有程序=》SEGGER=>JLINK ARM V4.08 =》JLINK GDB SERVER V4.08”,显示界面如下图所示:MINI2440平台JLINK仿真器调试方法说明JLINK已和开发板连接成功。
给开发板烧写程序的N种方式以下是我的总结,有些事其他网友写的,这里分享出来主要是让大家对烧写程序有个广阔的了解。
开发板没有BootLoader的烧写(flash中没有任何内容时,或误擦除uboot),仅用于烧写bootloader和裸机程序到flash上。
1. 并口Wiggler JTAG调试板配合HJTAG软件,可以烧写nandflash和norflash,并口速度较慢(需要用到并口,现在笔记本电脑基本没有并口了,这个方法局限性很大)2. HJTAG USB仿真器配合HJTAG软件,可以烧写nandflash和norflash,速度极快,适用于没有并口的电脑3. Jlink V8仿真器配合JFlash Arm软件,只能烧写Norflash(也可间接烧写Nandflash,间接烧写到Nandflash是借助sdram来实现烧写的,稍微有一点难,这里公司为了节约成本很多都采用nandflash来启动内核,norflash和nandflash这里区别就明显体现出来了,norflash可以像内存一样直接操作,nandflash只能通过控制寄存器来操作,这里大家一定明白过来,硬件上的差异也是很大的),适用于没有并口的电脑开发板有u-boot,使用uboot烧写,flash中需要能正常运行uboot,适用于烧写bootloader,kernel和rootfs1. USB口,S3C2440提供的uboot集成了USB Download的功能,可配合三星提供的DNW软件,方便的下载程序(缺点是烧写速度太慢,优点是三星厂家提供制作好的u-boot源码) DNW软件有windows版本和linux版本,其中linux版本较方便使用,并且稳定。
2. 网口,也是一种速度较快的下载方式,uboot中集成了tftp Download功能,可配合任意一种tftp Server软件实现下载程序。
同样可用于windows和linux平台,推荐大家使用这种方式来下载,因为速度非常的快。
如何使用Jlink烧录BIOS到GEC2440Author:Aston of 1、背景:粤嵌教育嵌入式培训班ARM部分第一节课内容是带学生玩板子,烧BIOS(即bootloader)到flash,然后使用BIOS程序烧录linux内核镜像、根文件系统、WinCE系统NK等。
拿到开发板光盘一看,烧录工具竟然是老掉牙的SJF2440···我的笔记本没有并口,也懒得去研究这个已经淘汰过时的烧录工具了,于是乎花了点时间研究了下使用Jlink烧录2440 nandflash、norflash的方法。
2、实验环境:2.1、Jlink:taobao买的山寨Jlink,固件版本V8,驱动版本为V4.08I。
附图2.12.2、开发板:GEC2440_V1.12.3、LCD:群创7寸(480 * 272)2.4、串口:使用PL2303 USB转串口线(我的板子DB9接头和电脑串口连接没反应···,也懒得详查是板子硬件问题还是串口线问题了)2.5、MDK3.50:这个不用说了,用来调程序的。
3、参考资料:/a/201006/9696.html。
这篇资料在网上有N多版本,我也不知道哪个是原创了,总之感谢作者!附图2.1, Jlink commander连接上后截图4、原理陈述不管是老式的并口Jtag工具,还是现在很流行的Jlink仿真器,总之都是提供一个从PC 出来的Jtag接口跟目标Jtag设备连接。
这里的目标Jtag设备指的就是CPU(譬如GEC2440开发板上的主芯片S3C2440)不管是nandflash还是norflash,本身都是和CPU相连的,烧写他们只能通过CPU。
即在CPU中运行flash擦除代码、flash编程代码,即可实现对flash的烧写。
Bootloader的主要功能其实就是提供这些功能代码,所以一旦板子上已经烧录有bootloader的情况下,我们不必使用仿真器,只需要通过PC终端(譬如最常用的dnw)便可以烧写自己的代码bin文件到板子SDRAM运行,或者烧录他们到nor/nand flash。
凌FL2440超详细U-BOOT作业(UBoot介绍+H-jtag使用+Uboot使用)Bootloader是高端嵌入式系统开发不可或缺的部分。
它是在操作系统内核启动之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
现在主流的bootloader有U-BOOT、vivi、Eboot等。
本次作业先做Uboot的烧写吧。
希望通过这个帖子,能让更多的初学者朋友了解一些UBoot的知识,也希望高手朋友对我的不足予以斧正。
首先说一下什么是Uboot:U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。
从FAD SROM、8xxROM、PPCBOOT逐步发展演化而来。
其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。
但是U-Boot不仅仅支持嵌入式Linu x系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。
其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。
这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。
这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。