[电子工程学] 嵌入式系统bootloader移植及系统调试.doc

上传人:laozhun 文档编号:2392524 上传时间:2023-02-17 格式:DOC 页数:58 大小:708KB
返回 下载 相关 举报
[电子工程学] 嵌入式系统bootloader移植及系统调试.doc_第1页
第1页 / 共58页
[电子工程学] 嵌入式系统bootloader移植及系统调试.doc_第2页
第2页 / 共58页
[电子工程学] 嵌入式系统bootloader移植及系统调试.doc_第3页
第3页 / 共58页
[电子工程学] 嵌入式系统bootloader移植及系统调试.doc_第4页
第4页 / 共58页
[电子工程学] 嵌入式系统bootloader移植及系统调试.doc_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《[电子工程学] 嵌入式系统bootloader移植及系统调试.doc》由会员分享,可在线阅读,更多相关《[电子工程学] 嵌入式系统bootloader移植及系统调试.doc(58页珍藏版)》请在三一办公上搜索。

1、摘 要随着移动设备的流行和发展,嵌入式系统已经成为一个热点。最近的一种趋势是一个功能强大的嵌入式系统通常需要一种操作系统来给予支持,这种操作系统是已经成熟并且稳定的,可以是嵌入式的Linux,WINCE等等。而Bootloader则是嵌入式系统中的一部分。它是嵌入式系统中执行在内核操作系统前的一段代码,它的基本作用就是加载内核镜像;同时在完成基本功能的基础上,它还可以支持硬件模块以完成某些特定功能。Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核

2、准备好正确的环境。 相应地,嵌入式系统的发展也大大促进了嵌入式处理器的普及。其中,ARM技术已经在当今的嵌入式微处理器领域中占据了它的领先地位。众多的半导体厂商都生产基于ARM体系结构的通用微处理芯片,究其原因,它的精简指令构架为主又不放弃与复杂指令平衡的设计,使得在获得高性能的同时又能做到低功耗。关键词:嵌入式系统 ARM BootloaderAbstractWith the prevalence and development of portable facilities, embedded system has been a focus of attention. Recent tren

3、ds have seen a push towards the need for developing embedded systems, able to run with the underlying help of an operating system, which should be advanced and reliable, such as embedded Linux, WINDOWS CE, etc. Bootloader is a part of an embedded system. It is a section of codes executing before ker

4、nel image and is responsible for reloading the kernel image. It also can support specific hardware modules to implement specific functions.Boot Loader is a small operating system kernel operating procedures before the operation. Through this small, but we can initialization hardware equipment, memor

5、y space maps. so that the system hardware and software environment to a suitable state, OS kernel ready for the final call to the correct environment. Accordingly the development of the embedded systems leads to the popularity of microprocessors. The ARM architecture has established itself as one of

6、 the leading microprocessors in todays embedded and portable market. Nowadays most of the semiconductor foundries produce the microprocessors based on ARM architecture. Its simple design founded in RISC principles yet balanced by CISC influence leads to low cost/power cores which offer high performa

7、nce.Key words: embedded systems ARM bootloader目 录摘要IAbstractII绪论11 ARM微处理器概述51.1 ARMAdvanced RISC Machines51.2 ARM微处理器的应用领域及特点51.2.1 ARM微处理器的应用领域51.2.2 ARM微处理器的特点61.3 ARM微处理器系列61.3.1 ARM7微处理器系列71.3.2 ARM9微处理器系列81.3.3 ARM9E微处理器系列81.3.4 ARM10E微处理器系列91.4 ARM的开发步骤92 44b0使用说明112.1 如何调试程序112.1.1 串口调试112.1

8、.2 网口下载122.1.3 参数设置和程序自动装载运行132.2 命令的使用162.3 FLASH操作183 SDT软件篇194 Bootloader的概述274.1 Boot Loader 的概念274.1.1 BootLoader 所支持的 CPU 和嵌入式板274.1.2 BootLoader 的安装媒介274.1.3 用来控制 BootLoader 的设备或机制284.2 BootLoader 的操作模式284.3 BootLoader 与主机之间进行文件传输所用的通信设备及协议294.4 BootLoader 的主要任务294.5 Bootloader 的功能304.6 Bootl

9、oader的启动流程315 程序分析32结论51致谢52参考文献53绪 论嵌入式系统从发展至今已有30年历史,随着电子技术、计算机技术的快速发展,特别是超大规模集成电路的产生,以及微电子工艺水平的不断提高,使嵌入式微控制器技术得到了质的飞跃,从而为嵌入式系统的发展开辟了广阔的天地。1嵌入式系统概述电子计算机诞生于1946年,而使电子计算机迅速得到推广却是在20世纪70年代微处理器的出现。以微处理器为核心的微型计算机以其小型、价廉、高可靠性的特点,迅速发展起来;基于微型机的特性引起控制专业人士的兴趣,设法将其嵌入到一个对象体系中,实现对象体系的智能控制。采嵌入式系统采用“量体裁衣”的方式把所需的

10、功能嵌入到各种应用系统种,它融合了计算机软/硬件技术、通信技术和半导体微电子技术,是Information Technology的最终产品,作为嵌入应用的计算机便有别于通用的计算机了,我们把嵌入到对象体系中,实现对象体系的智能控制的计算机,称作嵌入式计算机系统。目前存在多种嵌入式系统的定义,比较常见的两种定义是:一,根据IEEE的定义:嵌入式系统是“devices used to control,monitor,or assist the operation of equipment,machinery or plants”.二,嵌入式系统是以应用为中心、以计算机为基础、软/硬件可裁剪,功能、

11、可靠性、成本、体积、功耗严格要求的专用计算机系统。2嵌入式系统的特点 嵌入式系统是计算机的一种应用,在物理形式上嵌入于宿主系统中作为整个系统的一部分,并不独立存在;在功能上,嵌入式计算机总是针对某种特定应用,所以 嵌入式系统的特点为: (1)嵌入性即嵌入式系统由于是嵌入到对象体系中必须满足对象系统的环境要求;(2)针对性即嵌入式系统为满足对象体系要求的最优软/硬件配置,对自身软/硬件的裁剪,实现特定的功能;(3)计算机系统性即嵌入式系统必须是满足对象系统控制要求的计算机系统。3嵌入式系统的种类 按照上面的嵌入式系统的定义和特性,只要满足其三个特点的计算机系统都可称为嵌入式系统。根据目前嵌入式系

12、统的发展现状,嵌入式系统可分为(1)嵌入式微处理器 嵌入式微处理器的基础是通用计算机中的CPU,在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的母板功能!,这样可以大幅度减小系统体积和功耗。 为了满足嵌入式应用的特殊要求, 嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。(2)嵌入式微控制器 嵌入式微控制器又称单片机。 嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、总线、 总线逻辑%、定时/计数器、WATCHDOG、I/O、串行口等各种必要功能和外设。为适应不同的应用需

13、求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的, 不同的是存储器和外设的配置及封装。 和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。(3)嵌入式DSP 处理器 DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法编译效率较高,指令执行速度也较高.在数字滤波、FFT、频谱分析等方面 DSP 算法正在大量进入嵌入式系统领域! DSP应用正从在通用单片机中以普通指令实现DSP 功能,过渡到采用嵌入式DSP处理器。 (4)嵌入式片上系统 随着EDI 的推广和VLSI 设计的普及化,及半导体工艺的迅速发展,

14、 在一个硅片上实现一个更为复杂的系统的时代已来临,这就是System On Chip(SOC) 用户只需定义出其整个应用系统, 仿真通过后就可以将设计图交给半导体工厂制作样品。 这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。4嵌入式系统独立发展道路与应用 单片机的出现开创了嵌入式系统独立发展的道路,嵌入式系统虽然起源于微型计算机时代,然而,微型计算机的体积、价位、可靠性都无法满足广大对象系统的嵌入式应用要求,因此,嵌入式系统必须走独立发展的道路。这条道路就是芯片化道路,从而开创了嵌入式系统独立

15、发展的单片机时代。嵌入式系统的应用 随着嵌入式系统的日趋完善和普及,嵌入式系统的应用正从根本上改变着传统的控制系统设计思想和方法,是对传统的控制技术的一次革命。它不仅应用于通信、网络、金融、交通、医疗、消费电子、仪器仪表、制造业控制等领域;而且应用在航天、航空、军事装备领域。根据嵌入式系统的应用可大致分为以下几个方面:智能产品 智能仪表与集成智能传感器 汽车电子、航空航天器电子系统 测控系统 办公自动化领域 军事领域总之,嵌入式系统的应用前景非常广泛。随着嵌入式系统的日趋完善和普及,嵌入式系统的应用正从根本上改变着传统的控制系统设计思想和方法,是对传统的控制技术的一次革命。它不仅应用于通信、网

16、络、金融、交通、医疗、消费电子、仪器仪表、制造业控制等领域;而且应用在航天、航空、军事装备领域。根据嵌入式系统的应用可大致分为以下几个方面5嵌入式系统的发展趋势为设备网络通信提供标准接口为适应嵌入式分布处理结构和应用上网需求。面向21世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。 针对外部联网要求, 嵌入设备必须配ethemet 网口,相应需要tcp/ip 协议簇软件支持:由于家用电器相互关联(如防盗报警、灯光能源控制、影视设备等)及实验现场仪器的协调工作等要求,新一代嵌入式设备还需具备IEEE1394、USB、CAN、 或IrDA通信接口, 同时也需要提供相应的组网协议软件核物理层驱

17、动软件。(1)支持小型电子设备实现小尺寸、微功耗和低成本 为满足这种特性,要求嵌入式产品设计者相应降低处理器的性能,限内存容量和复用接口芯片,这就相应提高了对嵌入式软件设计技术要求如&:选用最佳的编程模式和不断改进算法,采用EC+编程模式,优化编译器性能。 因此既要软件人员有丰富经验,更需要发展先进嵌入式软件技术如Web和WAP 等。(2)提供精巧的多媒体人机界面 嵌入式设备之所以为亿万用户乐于接受,重要因素之一是他们与使用者之间的亲和力,自然和人机交互界面。 人们与信息终端交互要求以GUI屏幕为中心的多媒体界面。 手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像已获得初步成效,一些

18、先进的PDA 在显示屏幕上已实现汉字写入,短信息、语音发布。(3)嵌入式网络 随着信息时代的到来,Internet技术已进入人们日常生活中的各个领域,嵌入式网络应运而生,从而在更好地利用Internet庞大的信息资源的同时,也实现了嵌入式系统功能上的一个飞跃。目前,嵌入式系统和网络已是一种不可分割的结合体。 家电上网和实现远程操作,其意义不仅在于这种网络的出现所产生的经济价值,更在于把家电从个体进入网络,实现了嵌入式系统网络化。1 ARM微处理器概述1.1 ARMAdvanced RISC Machines ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也

19、可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RI9SC微处理器75以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM

20、微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。1.2 ARM微处理器的应用领域及特点1.2.1 ARM微处理器的应用领域 到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域: 1、工业控制领域:作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗

21、、高性价比,向传统的8位/16位微控制器提出了挑战。 2、无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM技术, ARM以其高性能和低成本,在该领域的地位日益巩固。 3、网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。 4、消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。 5、成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。除此以外,ARM微处理器及技术还应用到许

22、多不同的领域,并会在将来取得更加广泛的应用。1.2.2 ARM微处理器的特点 采用RISC架构的ARM微处理器一般具有如下特点: 1、体积小、低功耗、低成本、高性能; 2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件; 3、大量使用寄存器,指令执行速度更快; 4、大多数数据操作都在寄存器中完成; 5、寻址方式灵活简单,执行效率高; 6、指令长度固定;1.3 ARM微处理器系列 ARM微处理器目前包括下面几个系列,以及其它厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。 ARM7系列 A

23、RM9系列 ARM9E系列 ARM10E系列 SecurCore系列 Inter的Xscale Inter的StrongARM其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。 以下我们来详细了解一下各种处理器的特点及应用领域。1.3.1 ARM7微处理器系列 ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。ARM7微处理器系列具有如下特点: 具有嵌入式ICERT逻辑,调试开发方便。 极低的功耗,适合对功耗要求较高的

24、应用,如便携式产品。 能够提供0.9MIPS/MHz的三级流水线结构。代码密度高并兼容16位的Thumb指令集。对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等。指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代。主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。ARM7系列微处理器的主要应用领域为:工业控制、Internet设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7

25、TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。TDMI的基本含义为:T: 支持16为压缩指令集Thumb;D: 支持片上Debug;M:内嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上断点和调试点;本书所介绍的Samsung公司的S3C4510B即属于该系列的处理器。1.3.2 ARM9微处理器系列 ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点: 5级整数流水线,指令执行效率更高。 提供1.1MIPS/MHz的哈佛结构。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA总线接口。全性能的MMU,支持

26、Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。MPU支持实时操作系统。支持数据Cache和指令Cache,具有更高的指令和数据处理能力。ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。1.3.3 ARM9E微处理器系列ARM9E系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。ARM9E系列微处理器提供了增强的DSP处

27、理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。ARM9E系列微处理器的主要特点如下:支持DSP指令集,适合于需要高速数字信号处理的场合。5级整数流水线,指令执行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA总线接口。支持VFP9浮点处理协处理器。全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。MPU支持实时操作系统。支持数据Cache和指令Cache,具有更高的指令和数据处理能力。主频最高可达300MIPS。ARM9系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络

28、设备等领域。ARM9E系列微处理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三种类型,以适用于不同的应用场合。1.3.4 ARM10E微处理器系列ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。ARM10E系列微处理器的主要特点如下:支持DSP指令集,适合于需要高速数字信号处理的场合。6级整数流水线,指令执行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA总线接口。支持VFP10

29、浮点处理协处理器。全性能的MMU,支持Windows CE 1.4 ARM的开发步骤1 做个最小系统板:如果你从没有做过ARM的开发,建议你一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。使最小系统能够正常运行,你的任务就完成了一半,好在ARM的外围接口基本都是标准接口,如果你已有这些硬件的布线经验,这对你来讲是一件很容易的事情。 2 写启动代码,根据硬件地址先写一个能够启动的小代码,包括以下部分:初始化端口,屏蔽中断,把程序拷贝

30、到SRAM中;完成代码的重映射;配置中断句柄,连接到C语言入口。也许你看到给你的一些示例程序当中,bootloader会有很多东西,但是不要被这些复杂的程序所困扰,因为你不是做开发板的,你的任务就是做段小程序,让你的应用程序能够运行下去3仔细研究你所用的芯片的资料,尽管ARM在内核上兼容,但每家芯片都有自己的特色,编写程序时必须考虑这些问题。尤其是女孩子,在这儿千万别有依赖心理,总想拿别人的示例程序修改,却越改越乱。4多看一些操作系统程序,在ARM的应用开放源代码的程序很多,要想提高自己,就要多看别人的程序,linux,uc/os-II等等这些都是很好的原码。6. 如果你是作硬件,每个厂家基本

31、上都有针对该芯片的DEMO板原理图。先将原理图消化。这样你以后做设计时,对资源的分配心中有数。器件的DATSHEET一定要好好消化。7. 如果做软件最好对操作系统的机理要有所了解。当然这对软件工程师来说是小菜一碟。但如果是硬件出身的就有点费劲。2 44b0使用说明 本课程的设计和实现都是基于44b0学习板,所以让我先来介绍关于44b0的使用说明。2.1 如何调试程序2.1.1 串口调试输入 loadb 0x0C008000 0x0c0000000x0c6fffff: 用户装载和使用区; 0x0c7000000X0c7fffff: ARMBOOT的只读区,不过以后只是引导的话,引导完后可以用。

32、点发送文件,选择 kermit 方式发送要调试的BIN文件,界面如下:图2-1 发送调试文件发送完后会显示起始地址, 再运行 go 0x0c008000 (起始地址)就可以了。2.1.2 网口下载 先运行提供的TFTPD32文件出现如下界面:图2-2 设置IP选择好要下载的文件所在的目录。注意IP 地址要和 ARM 板上的一样,可以改PC的,也可以改ARMBOOT的,怎样改,在参数设置里会说的。文件名称也在参数设置里设置。配置好后把它缩进任务栏(不可关闭!)。运行TFTP 0x0c008000 (不输入地址就取默认地址 0X0C008000)装载成功 后 GO 0X0C008000 就可以运行

33、。下图是下载并运行 test.bin 的一个例子(提供源码)图2-3 下载成功并且调试2.1.3 参数设置和程序自动装载运行 到了这儿就不得不提参数的设置了:输入 printenv 命令,如下图:图2-4 运行printenv命令这些相信大家一看就明白意思, 不多说了有几条是常用的设置,说一下:设置PC 机 的IP地址:setenv severip 192.168.0.10存储一下: saveenv 如图:图2-5 设置IP并且保存设置波特率:setenv baudrate 19200saveenv(不存入FLASH 下次启动无效)设置下载文件名:setenv bootfile “44btes

34、t.bin”(加上引号)saveenv设置启动时倒记时(单位秒)setenv bootdelay 9saveenv也可以一次设置多个参数最后再 saveenv其中 bootcmd 参数是设置启动后倒记时到后的自动执行命令的,非常有用, 可以用批处理的方法来执行,象 DOS 的AUTOEXEC.BAT例如:设置启动后显示帮助文件,并且自动从网口下载 BOOTFILE设置的文件并运行:setenv bootcmd ? ; tftp ; go 0x0c008000saveenv其中“ ; ”表示一个命令的延续 “ ”是转义符。“;”表示多命令隔开这样也可以实现依次执行多命令 如: ?;go 0x0c

35、008000 表示显示帮助,再转到0x0c008000执行。2.2 命令的使用用 ? 或者 help 可以查看所有命令,及其说明bdinfo:显示板子信息如下。图2-6 帮助信息1、 icacher:命令cacher开关,dcacher:数据cacher开(on)关(off) 2、 reset:系统重起。3、 mtest:内存测试4、 mm:单字节内存查看修改5、 md:批量内存查看修改6、 cp:存储器复制。7、 iminfo:查看image文件信息。10、flinfo:查看FLASH信息。11、protect:开关FLASH写保护。12,cmp: 比较设置长度的内存;12,ls: 看文件命

36、令很多,不过相信还是可以看明白的:如果有哪个命令不懂的话输入 help 命令 就可以看到详细一点的帮助。有几点说明一下:要擦除flash 先要 解除保护 如:想要把0x0c008000 开始的800个字节RAM 写入FLASH 的0x50000(注意:是ARMBOOT的参数保存区,范围:0x40000-0x4ffff)执行: protect off 0x50000 0x6ffff erase 0x50000 0x6ffffcp 0x0c008000 0x50000 c8 (注意: 800/4=200个字, 16进制)只要再把bootcmd 参数改为cp 0x50000 0x0c008000 c

37、8 ; go 0x0c008000就可以实现上电自动运行自己的程序,甚至可以把它作为正式成品。这就和PC 机的BIOS 差不多了。2.3 FLASH操作Armbootload可以直接写FLASH,而且速度快,命令简单。写完后可直接用go来运行程序。也可使用armbootload自带的mkimag,压缩用户目标程序后再下载烧写到FLASH,后用bootm来运行。以减少对FLASH的开支。最终可通过代修改bootcmd来实现上电自动运行用户程序。1、 非压缩目标代码写FLASH。对目标代码较小的程序,可用此方法写入FLASH。以后程序是直接在FLASH上运行的。其特点:方法简单。我们首先从串口或网

38、口载入程序,载入方法前面讲过这不再重复。这我将我的目标代码载到RAM:0x0c008000处。好从下面我们开始写FLASHR的过程:S3C44B0 #protect 0ff 0x0050000 0x1fffff-关FLASH写保护S3C44B0 #erase 0x0050000 0x007ffff-擦除FLASH3C44B0 #cp 0x0c008000 0x0050000 $(文件长度)这指出cp命令中第一个是RAM起始地址(0x0c008000)也是用户程序下载的地址,第二个是FLASH烧写的起始地址(0x0050000),最后是程序的长度。(长度单位是16进制的32位字,乘以 4 就可以

39、得到16进制的字节数)2、 还可以压缩目标代码写FLASH,实现解压缩启动方式.3 SDT软件篇已经有了自己的平台,那么怎么样知道你的硬件是否真的好了呢?唯一的办法就是用SDT进行调试硬件,下面就来介绍一下SDT软件的使用。(一) SDT软件的安装(二) 启动SDT2.51安装完毕,点击程序组中的ARM Project Manager启动主程序,界面如下:图3-1 SDT主界面(三) 利用提供的模板开始自己的项目为了给大家带来方便,在我提供的小应程序中,可以将他保存为一个模板,操作如下打开我提供的小应用程序的工程,点击菜单File下的Save As Template:然后在弹出的窗口中随意选择

40、一个目录下,新建一个自己的文件夹,随便取一个Project名称,确认即可在主程序上出现新Project界面。现在可以在刚才建立的文件夹下面编辑代码,包括汇编代码和C程序代码。注意汇编代码必不可少,它是用来进行系统初始化和C程序入口的,这些范例代码可以在三星网站去下载。(四) 如何添加自己的源码点击菜单Project下的Add File To Project,在弹出的窗口中,浏览自己的Project文件夹下面的程序代码,将代码添加到创建的项目。这时依次点击rom、debug、Sources前面的十字架,就会看到自己刚才添加成功的代码,双击任何一个代码文件就可以打开它进行编辑:说明:SDT2.51

41、好象有一个bug,当你直接双击一个代码文件时,可能会出现非法错误。我的机器就是这样。希望各位当编写代码时用uedit,这样比较方便。不过,还有另一种编辑软件,对C语言编辑,它有非凡的效果,那就是Source insight3. 图3-2 打开工程(五) 生成可以在FLASH中运行的代码那么如何设置呢?如下:点击ENTRY AND BASE,接着会出现如下对话框:上面是只读地址,下面是可读写地址图3-3 工程的设置(六) 生成可在FLASH中运行的目标码现在选择菜单build或者点击快捷图标就可以编译代码,点击Force build之后就生成了二进制目标代码(*.bin),这可以在项目文件夹下面

42、找到。在主程序窗口下面的信息框可以看到编译的情况,包括警告和错误信息,最终代码生成的情况等等;好了,生成了bin文件。下一步就可以进行写入FLASH里了。一般朋友易犯的错误:有些朋友将目标代码定位在0X0C000000,结果烧写后校验也完全成功了,但复位之后板子却没有任何反应!这是因为写到SDRAM之后校验肯定也是对的,但复位之后程序是从0X00000000开始执行的,而不是从0X0C000000开始的,所有板子肯定没有反应了!(七) 如何调试程序各位朋友都知道,调试程序是在SDRAM中运行的,那么我们必须将自己编译好的程序放到SDRAM中,那么如何才能将程序放入SDRAM中呢?操作如下:就我

43、的板子而言,SDRAM的片选引脚接在nSCS0上面,它的地址从0X0C000000开始,所有要把目标程序定位在这里。如前面所说步骤,先单击一下主程序窗口ROM下的Debug,然后点击菜单中的set,在弹出的窗口中选择点击Entry And Base,在Readonly下面的框里面输入0X0c000000(程序空间),在Readwrite下面的框里面输入0X0c5f0000(这是数据空间),确认即可。按照上述步骤,设置SDT2.51,然后别忘了重新编译。会生成AXF文件,这个文件就是我们要调试的程序了。(八) 调试之前需要知道的SDT2.51支持软件仿真和硬件debug,默认是软件仿真,这个很简

44、单,大家一看就会。关键的是硬件debug,它支持串口、并口和以太网仿真,我的板子是通过并口JTAG进行硬件调试的,但实际上却是通过以太网的。这里面有一个转换软件JTAG.exe,它把发送到以太网的数据拦截下来,遵从JTAG协议,转换到并口上面,然后通过JTAG接口板,控制ARM板上面的CPU,进行硬件Debug。双击JTAG.exe,它就在后台运行了。(九) 开始仿真了使用这种方式仿真,还要进行一些设置才行。点击Debug菜单或者快捷图标,出现ARM Debugger程序窗口:图3-4 ARM Debugger程序窗口然后选择菜单Options下面的Config Debugger,然后在Tar

45、get Environment下面选择Remote_A,然后点击Configure:图3-5 硬件仿真设置图3-6 设置IP选择Heartbeat,在Ethernet后面输入你的计算机IP地址并确认。这里面肯定要你机器上面装有网卡,而且IP地址要指定了,如果是自动分配IP的话,就不太方便了,每次都要查找自己机子的IP。我建议大家在填写IP地址的时候使用通用IP地址:127.0.0.1(十) 装载目标码到板子如果是第一次设置Debugger,确认以后,系统就会自动装载代码到ARM板上,你也可以点击Reload图标重新转载代码。如果代码很大的话,时间会稍长一点,可能要几十秒,一般几秒就搞定,出现如

46、下窗口:图3-7 装载成功出现了上面的这个画面才说明你装载成功了,如果出现与此完全不同的东西,或者莫名其妙的代码,你就要检查硬件了!现在按F8就可以单步仿真了,你可以看到绿色的图标一步一步向下走。如果出现以下几种情况的处理方法:1)如果程序一单步就跑飞,可能就是硬件问题了,检查时钟电路,电源滤波是否良好?2)初学者建议时钟倍频不用太高,如果时钟输入是10MHz的话,二倍频将主频定在20MHz,这样调试起来可能麻烦少一点。大家都知道频率高了会出现很多意想不到的情况。汇编程序走完,就要进入C代码了,下面是从汇编到C的入口:图3-8 主函数入口按F8就进入C代码仿真了,界面如下:图3-9 跳入主函数4 Bootloader的概述4.1 Boot Loader 的概念 简单地说,Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号