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

上传人:无*** 文档编号:44615234 上传时间:2021-12-05 格式:DOC 页数:58 大小:852.06KB
收藏 版权申诉 举报 下载
[电子工程学] 嵌入式系统bootloader移植及系统调试_第1页
第1页 / 共58页
[电子工程学] 嵌入式系统bootloader移植及系统调试_第2页
第2页 / 共58页
[电子工程学] 嵌入式系统bootloader移植及系统调试_第3页
第3页 / 共58页
资源描述:

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

1、欢迎下载计算机/单片/机械范文网()文档. 今日已上传64份范文 站长QQ: 844511071摘 要随着移动设备的流行和发展,嵌入式系统已经成为一个热点。最近的一种趋势是一个功能强大的嵌入式系统通常需要一种操作系统来给予支持,这种操作系统是已经成熟并且稳定的,可以是嵌入式的Linux,WINCE等等。而Bootloader则是嵌入式系统中的一部分。它是嵌入式系统中执行在内核操作系统前的一段代码,它的基本作用就是加载内核镜像;同时在完成基本功能的基础上,它还可以支持硬件模块以完成某些特定功能。Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件

2、设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 相应地,嵌入式系统的发展也大大促进了嵌入式处理器的普及。其中,ARM技术已经在当今的嵌入式微处理器领域中占据了它的领先地位。众多的半导体厂商都生产基于ARM体系结构的通用微处理芯片,究其原因,它的精简指令构架为主又不放弃与复杂指令平衡的设计,使得在获得高性能的同时又能做到低功耗。关键词:嵌入式系统 ARM BootloaderAbstractWith the prevalence and development of portable facilities, embedded s

3、ystem has been a focus of attention. Recent trends 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 syste

4、m. It is a section of codes executing before kernel 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

5、 we can initialization hardware equipment, memory 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 A

6、RM architecture has established itself as one of 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 t

7、o low cost/power cores which offer high performance.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

8、ARM的开发步骤92 44b0使用说明112.1 如何调试程序112.1.1 串口调试112.1.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

9、 BootLoader 的主要任务294.5 Bootloader 的功能304.6 Bootloader的启动流程315 程序分析32结论51致谢52参考文献53计算机毕业设计购买 www.LunWenDz.Com 工科毕业设计代做:www.LunWen168.Net 开题:www.KtJia.Com绪 论嵌入式系统从发展至今已有30年历史,随着电子技术、计算机技术的快速发展,特别是超大规模集成电路的产生,以及微电子工艺水平的不断提高,使嵌入式微控制器技术得到了质的飞跃,从而为嵌入式系统的发展开辟了广阔的天地。1嵌入式系统概述电子计算机诞生于1946年,而使电子计算机迅速得到推广却是在20世

10、纪70年代微处理器的出现。以微处理器为核心的微型计算机以其小型、价廉、高可靠性的特点,迅速发展起来;基于微型机的特性引起控制专业人士的兴趣,设法将其嵌入到一个对象体系中,实现对象体系的智能控制。采嵌入式系统采用“量体裁衣”的方式把所需的功能嵌入到各种应用系统种,它融合了计算机软/硬件技术、通信技术和半导体微电子技术,是Information Technology的最终产品,作为嵌入应用的计算机便有别于通用的计算机了,我们把嵌入到对象体系中,实现对象体系的智能控制的计算机,称作嵌入式计算机系统。目前存在多种嵌入式系统的定义,比较常见的两种定义是:一,根据IEEE的定义:嵌入式系统是“device

11、s used to control,monitor,or assist the operation of equipment,machinery or plants”.二,嵌入式系统是以应用为中心、以计算机为基础、软/硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。2嵌入式系统的特点 嵌入式系统是计算机的一种应用,在物理形式上嵌入于宿主系统中作为整个系统的一部分,并不独立存在;在功能上,嵌入式计算机总是针对某种特定应用,所以 嵌入式系统的特点为: (1)嵌入性即嵌入式系统由于是嵌入到对象体系中必须满足对象系统的环境要求;(2)针对性即嵌入式系统为满足对象体系要求的最优软/硬

12、件配置,对自身软/硬件的裁剪,实现特定的功能;(3)计算机系统性即嵌入式系统必须是满足对象系统控制要求的计算机系统。3嵌入式系统的种类 按照上面的嵌入式系统的定义和特性,只要满足其三个特点的计算机系统都可称为嵌入式系统。根据目前嵌入式系统的发展现状,嵌入式系统可分为(1)嵌入式微处理器 嵌入式微处理器的基础是通用计算机中的CPU,在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的母板功能!,这样可以大幅度减小系统体积和功耗。 为了满足嵌入式应用的特殊要求, 嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。(2)

13、嵌入式微控制器 嵌入式微控制器又称单片机。 嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、总线、 总线逻辑%、定时/计数器、WATCHDOG、I/O、串行口等各种必要功能和外设。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的, 不同的是存储器和外设的配置及封装。 和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。(3)嵌入式DSP 处理器 DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法编译效率较高,指令执行速度也较高.在数字滤波、FFT、

14、频谱分析等方面 DSP 算法正在大量进入嵌入式系统领域! DSP应用正从在通用单片机中以普通指令实现DSP 功能,过渡到采用嵌入式DSP处理器。 (4)嵌入式片上系统 随着EDI 的推广和VLSI 设计的普及化,及半导体工艺的迅速发展, 在一个硅片上实现一个更为复杂的系统的时代已来临,这就是System On Chip(SOC) 用户只需定义出其整个应用系统, 仿真通过后就可以将设计图交给半导体工厂制作样品。 这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。4嵌入式系统独立发展道路与应用 单片机

15、的出现开创了嵌入式系统独立发展的道路,嵌入式系统虽然起源于微型计算机时代,然而,微型计算机的体积、价位、可靠性都无法满足广大对象系统的嵌入式应用要求,因此,嵌入式系统必须走独立发展的道路。这条道路就是芯片化道路,从而开创了嵌入式系统独立发展的单片机时代。嵌入式系统的应用 随着嵌入式系统的日趋完善和普及,嵌入式系统的应用正从根本上改变着传统的控制系统设计思想和方法,是对传统的控制技术的一次革命。它不仅应用于通信、网络、金融、交通、医疗、消费电子、仪器仪表、制造业控制等领域;而且应用在航天、航空、军事装备领域。根据嵌入式系统的应用可大致分为以下几个方面:智能产品 智能仪表与集成智能传感器 汽车电子

16、、航空航天器电子系统 测控系统 办公自动化领域 军事领域总之,嵌入式系统的应用前景非常广泛。随着嵌入式系统的日趋完善和普及,嵌入式系统的应用正从根本上改变着传统的控制系统设计思想和方法,是对传统的控制技术的一次革命。它不仅应用于通信、网络、金融、交通、医疗、消费电子、仪器仪表、制造业控制等领域;而且应用在航天、航空、军事装备领域。根据嵌入式系统的应用可大致分为以下几个方面5嵌入式系统的发展趋势为设备网络通信提供标准接口为适应嵌入式分布处理结构和应用上网需求。面向21世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。 针对外部联网要求, 嵌入设备必须配ethemet 网口,相应需要tcp/i

17、p 协议簇软件支持:由于家用电器相互关联(如防盗报警、灯光能源控制、影视设备等)及实验现场仪器的协调工作等要求,新一代嵌入式设备还需具备IEEE1394、USB、CAN、 或IrDA通信接口, 同时也需要提供相应的组网协议软件核物理层驱动软件。(1)支持小型电子设备实现小尺寸、微功耗和低成本 为满足这种特性,要求嵌入式产品设计者相应降低处理器的性能,限内存容量和复用接口芯片,这就相应提高了对嵌入式软件设计技术要求如&:选用最佳的编程模式和不断改进算法,采用EC+编程模式,优化编译器性能。 因此既要软件人员有丰富经验,更需要发展先进嵌入式软件技术如Web和WAP 等。(2)提供精巧的多媒体人机界

18、面 嵌入式设备之所以为亿万用户乐于接受,重要因素之一是他们与使用者之间的亲和力,自然和人机交互界面。 人们与信息终端交互要求以GUI屏幕为中心的多媒体界面。 手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像已获得初步成效,一些先进的PDA 在显示屏幕上已实现汉字写入,短信息、语音发布。(3)嵌入式网络 随着信息时代的到来,Internet技术已进入人们日常生活中的各个领域,嵌入式网络应运而生,从而在更好地利用Internet庞大的信息资源的同时,也实现了嵌入式系统功能上的一个飞跃。目前,嵌入式系统和网络已是一种不可分割的结合体。 家电上网和实现远程操作,其意义不仅在于这种网络的出现所

19、产生的经济价值,更在于把家电从个体进入网络,实现了嵌入式系统网络化。1 ARM微处理器概述1.1 ARMAdvanced RISC Machines ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RI9SC微处理器75以上的市场份额,A

20、RM技术正在逐步渗入到我们生活的各个方面。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。1.2 ARM微处理器的应用领域及特点1.2.1 ARM微处理器的应用领域

21、到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域: 1、工业控制领域:作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。 2、无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM技术, ARM以其高性能和低成本,在该领域的地位日益巩固。 3、网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。 4、消费类电子产

22、品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。 5、成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。1.2.2 ARM微处理器的特点 采用RISC架构的ARM微处理器一般具有如下特点: 1、体积小、低功耗、低成本、高性能; 2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件; 3、大量使用寄存器,指令执行速度更快; 4、大多数数据操作都在寄存器中完成; 5、寻址方式灵活简单,执行效率

23、高; 6、指令长度固定;1.3 ARM微处理器系列 ARM微处理器目前包括下面几个系列,以及其它厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。 ARM7系列 ARM9系列 ARM9E系列 ARM10E系列 SecurCore系列 Inter的Xscale Inter的StrongARM其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。 以下我们来详细了解一下各种处理器的特点及应用领域。1.

24、3.1 ARM7微处理器系列 ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。ARM7微处理器系列具有如下特点: 具有嵌入式ICERT逻辑,调试开发方便。 极低的功耗,适合对功耗要求较高的应用,如便携式产品。 能够提供0.9MIPS/MHz的三级流水线结构。代码密度高并兼容16位的Thumb指令集。对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等。指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代。主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。ARM7系列微处

25、理器的主要应用领域为:工业控制、Internet设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。TDMI的基本含义为:T: 支持16为压缩指令集Thumb;D: 支持片上Debug;M:内嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上断点和调试点;本书所介绍的Samsung公司的S3C4510B即属于该系列的处理器。1.3.2 ARM9微处理器系列 ARM9系列微处

26、理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点: 5级整数流水线,指令执行效率更高。 提供1.1MIPS/MHz的哈佛结构。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA总线接口。全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。MPU支持实时操作系统。支持数据Cache和指令Cache,具有更高的指令和数据处理能力。ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的

27、应用场合。1.3.3 ARM9E微处理器系列ARM9E系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。ARM9E系列微处理器提供了增强的DSP处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。ARM9E系列微处理器的主要特点如下:支持DSP指令集,适合于需要高速数字信号处理的场合。5级整数流水线,指令执行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA总线接口。支持VFP9浮点处理协处理器。全性能的MMU,支持Windows CE、Linux、Palm OS

28、等多种主流嵌入式操作系统。MPU支持实时操作系统。支持数据Cache和指令Cache,具有更高的指令和数据处理能力。主频最高可达300MIPS。ARM9系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。ARM9E系列微处理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三种类型,以适用于不同的应用场合。1.3.4 ARM10E微处理器系列ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50,同时,ARM10E系列微处理器采用了两种先进的节能方式,

29、使其功耗极低。ARM10E系列微处理器的主要特点如下:支持DSP指令集,适合于需要高速数字信号处理的场合。6级整数流水线,指令执行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA总线接口。支持VFP10浮点处理协处理器。全性能的MMU,支持Windows CE 1.4 ARM的开发步骤1 做个最小系统板:如果你从没有做过ARM的开发,建议你一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。使最小系统

30、能够正常运行,你的任务就完成了一半,好在ARM的外围接口基本都是标准接口,如果你已有这些硬件的布线经验,这对你来讲是一件很容易的事情。 2 写启动代码,根据硬件地址先写一个能够启动的小代码,包括以下部分:初始化端口,屏蔽中断,把程序拷贝到SRAM中;完成代码的重映射;配置中断句柄,连接到C语言入口。也许你看到给你的一些示例程序当中,bootloader会有很多东西,但是不要被这些复杂的程序所困扰,因为你不是做开发板的,你的任务就是做段小程序,让你的应用程序能够运行下去3仔细研究你所用的芯片的资料,尽管ARM在内核上兼容,但每家芯片都有自己的特色,编写程序时必须考虑这些问题。尤其是女孩子,在这儿

31、千万别有依赖心理,总想拿别人的示例程序修改,却越改越乱。4多看一些操作系统程序,在ARM的应用开放源代码的程序很多,要想提高自己,就要多看别人的程序,linux,uc/os-II等等这些都是很好的原码。6. 如果你是作硬件,每个厂家基本上都有针对该芯片的DEMO板原理图。先将原理图消化。这样你以后做设计时,对资源的分配心中有数。器件的DATSHEET一定要好好消化。7. 如果做软件最好对操作系统的机理要有所了解。当然这对软件工程师来说是小菜一碟。但如果是硬件出身的就有点费劲。2 44b0使用说明 本课程的设计和实现都是基于44b0学习板,所以让我先来介绍关于44b0的使用说明。2.1 如何调试

32、程序2.1.1 串口调试输入 loadb 0x0C008000 0x0c0000000x0c6fffff: 用户装载和使用区; 0x0c7000000X0c7fffff: ARMBOOT的只读区,不过以后只是引导的话,引导完后可以用。 点发送文件,选择 kermit 方式发送要调试的BIN文件,界面如下:图2-1 发送调试文件发送完后会显示起始地址, 再运行 go 0x0c008000 (起始地址)就可以了。2.1.2 网口下载 先运行提供的TFTPD32文件出现如下界面:图2-2 设置IP选择好要下载的文件所在的目录。注意IP 地址要和 ARM 板上的一样,可以改PC的,也可以改ARMBOO

33、T的,怎样改,在参数设置里会说的。文件名称也在参数设置里设置。配置好后把它缩进任务栏(不可关闭!)。运行TFTP 0x0c008000 (不输入地址就取默认地址 0X0C008000)装载成功 后 GO 0X0C008000 就可以运行。下图是下载并运行 test.bin 的一个例子(提供源码)图2-3 下载成功并且调试2.1.3 参数设置和程序自动装载运行 到了这儿就不得不提参数的设置了:输入 printenv 命令,如下图:图2-4 运行printenv命令这些相信大家一看就明白意思, 不多说了有几条是常用的设置,说一下:设置PC 机 的IP地址:setenv severip 192.16

34、8.0.10存储一下: saveenv 如图:图2-5 设置IP并且保存设置波特率:setenv baudrate 19200saveenv(不存入FLASH 下次启动无效)设置下载文件名:setenv bootfile “44btest.bin”(加上引号)saveenv设置启动时倒记时(单位秒)setenv bootdelay 9saveenv也可以一次设置多个参数最后再 saveenv其中 bootcmd 参数是设置启动后倒记时到后的自动执行命令的,非常有用, 可以用批处理的方法来执行,象 DOS 的AUTOEXEC.BAT例如:设置启动后显示帮助文件,并且自动从网口下载 BOOTFIL

35、E设置的文件并运行:setenv bootcmd ? ; tftp ; go 0x0c008000saveenv其中“ ; ”表示一个命令的延续 “ ”是转义符。“;”表示多命令隔开这样也可以实现依次执行多命令 如: ?;go 0x0c008000 表示显示帮助,再转到0x0c008000执行。2.2 命令的使用用 ? 或者 help 可以查看所有命令,及其说明bdinfo:显示板子信息如下。图2-6 帮助信息1、 icacher:命令cacher开关,dcacher:数据cacher开(on)关(off) 2、 reset:系统重起。3、 mtest:内存测试4、 mm:单字节内存查看修改5

36、、 md:批量内存查看修改6、 cp:存储器复制。7、 iminfo:查看image文件信息。10、flinfo:查看FLASH信息。11、protect:开关FLASH写保护。12,cmp: 比较设置长度的内存;12,ls: 看文件命令很多,不过相信还是可以看明白的:如果有哪个命令不懂的话输入 help 命令 就可以看到详细一点的帮助。有几点说明一下:要擦除flash 先要 解除保护 如:想要把0x0c008000 开始的800个字节RAM 写入FLASH 的0x50000(注意:是ARMBOOT的参数保存区,范围:0x40000-0x4ffff)执行: protect off 0x5000

37、0 0x6ffff erase 0x50000 0x6ffffcp 0x0c008000 0x50000 c8 (注意: 800/4=200个字, 16进制)只要再把bootcmd 参数改为cp 0x50000 0x0c008000 c8 ; go 0x0c008000就可以实现上电自动运行自己的程序,甚至可以把它作为正式成品。这就和PC 机的BIOS 差不多了。2.3 FLASH操作Armbootload可以直接写FLASH,而且速度快,命令简单。写完后可直接用go来运行程序。也可使用armbootload自带的mkimag,压缩用户目标程序后再下载烧写到FLASH,后用bootm来运行。以

38、减少对FLASH的开支。最终可通过代修改bootcmd来实现上电自动运行用户程序。1、 非压缩目标代码写FLASH。对目标代码较小的程序,可用此方法写入FLASH。以后程序是直接在FLASH上运行的。其特点:方法简单。我们首先从串口或网口载入程序,载入方法前面讲过这不再重复。这我将我的目标代码载到RAM:0x0c008000处。好从下面我们开始写FLASHR的过程:S3C44B0 #protect 0ff 0x0050000 0x1fffff-关FLASH写保护S3C44B0 #erase 0x0050000 0x007ffff-擦除FLASH3C44B0 #cp 0x0c008000 0x0

39、050000 $(文件长度)这指出cp命令中第一个是RAM起始地址(0x0c008000)也是用户程序下载的地址,第二个是FLASH烧写的起始地址(0x0050000),最后是程序的长度。(长度单位是16进制的32位字,乘以 4 就可以得到16进制的字节数)2、 还可以压缩目标代码写FLASH,实现解压缩启动方式.3 SDT软件篇已经有了自己的平台,那么怎么样知道你的硬件是否真的好了呢?唯一的办法就是用SDT进行调试硬件,下面就来介绍一下SDT软件的使用。(一) SDT软件的安装(二) 启动SDT2.51安装完毕,点击程序组中的ARM Project Manager启动主程序,界面如下:图3-

40、1 SDT主界面(三) 利用提供的模板开始自己的项目为了给大家带来方便,在我提供的小应程序中,可以将他保存为一个模板,操作如下打开我提供的小应用程序的工程,点击菜单File下的Save As Template:然后在弹出的窗口中随意选择一个目录下,新建一个自己的文件夹,随便取一个Project名称,确认即可在主程序上出现新Project界面。现在可以在刚才建立的文件夹下面编辑代码,包括汇编代码和C程序代码。注意汇编代码必不可少,它是用来进行系统初始化和C程序入口的,这些范例代码可以在三星网站去下载。(四) 如何添加自己的源码点击菜单Project下的Add File To Project,在弹

41、出的窗口中,浏览自己的Project文件夹下面的程序代码,将代码添加到创建的项目。这时依次点击rom、debug、Sources前面的十字架,就会看到自己刚才添加成功的代码,双击任何一个代码文件就可以打开它进行编辑:说明:SDT2.51好象有一个bug,当你直接双击一个代码文件时,可能会出现非法错误。我的机器就是这样。希望各位当编写代码时用uedit,这样比较方便。不过,还有另一种编辑软件,对C语言编辑,它有非凡的效果,那就是Source insight3. 图3-2 打开工程(五) 生成可以在FLASH中运行的代码那么如何设置呢?如下:点击ENTRY AND BASE,接着会出现如下对话框:

42、上面是只读地址,下面是可读写地址图3-3 工程的设置(六) 生成可在FLASH中运行的目标码现在选择菜单build或者点击快捷图标就可以编译代码,点击Force build之后就生成了二进制目标代码(*.bin),这可以在项目文件夹下面找到。在主程序窗口下面的信息框可以看到编译的情况,包括警告和错误信息,最终代码生成的情况等等;好了,生成了bin文件。下一步就可以进行写入FLASH里了。一般朋友易犯的错误:有些朋友将目标代码定位在0X0C000000,结果烧写后校验也完全成功了,但复位之后板子却没有任何反应!这是因为写到SDRAM之后校验肯定也是对的,但复位之后程序是从0X00000000开始

43、执行的,而不是从0X0C000000开始的,所有板子肯定没有反应了!(七) 如何调试程序各位朋友都知道,调试程序是在SDRAM中运行的,那么我们必须将自己编译好的程序放到SDRAM中,那么如何才能将程序放入SDRAM中呢?操作如下:就我的板子而言,SDRAM的片选引脚接在nSCS0上面,它的地址从0X0C000000开始,所有要把目标程序定位在这里。如前面所说步骤,先单击一下主程序窗口ROM下的Debug,然后点击菜单中的set,在弹出的窗口中选择点击Entry And Base,在Readonly下面的框里面输入0X0c000000(程序空间),在Readwrite下面的框里面输入0X0c5

44、f0000(这是数据空间),确认即可。按照上述步骤,设置SDT2.51,然后别忘了重新编译。会生成AXF文件,这个文件就是我们要调试的程序了。(八) 调试之前需要知道的SDT2.51支持软件仿真和硬件debug,默认是软件仿真,这个很简单,大家一看就会。关键的是硬件debug,它支持串口、并口和以太网仿真,我的板子是通过并口JTAG进行硬件调试的,但实际上却是通过以太网的。这里面有一个转换软件JTAG.exe,它把发送到以太网的数据拦截下来,遵从JTAG协议,转换到并口上面,然后通过JTAG接口板,控制ARM板上面的CPU,进行硬件Debug。双击JTAG.exe,它就在后台运行了。(九) 开

45、始仿真了使用这种方式仿真,还要进行一些设置才行。点击Debug菜单或者快捷图标,出现ARM Debugger程序窗口:图3-4 ARM Debugger程序窗口然后选择菜单Options下面的Config Debugger,然后在Target Environment下面选择Remote_A,然后点击Configure:图3-5 硬件仿真设置图3-6 设置IP选择Heartbeat,在Ethernet后面输入你的计算机IP地址并确认。这里面肯定要你机器上面装有网卡,而且IP地址要指定了,如果是自动分配IP的话,就不太方便了,每次都要查找自己机子的IP。我建议大家在填写IP地址的时候使用通用IP地

46、址:127.0.0.1(十) 装载目标码到板子如果是第一次设置Debugger,确认以后,系统就会自动装载代码到ARM板上,你也可以点击Reload图标重新转载代码。如果代码很大的话,时间会稍长一点,可能要几十秒,一般几秒就搞定,出现如下窗口:图3-7 装载成功出现了上面的这个画面才说明你装载成功了,如果出现与此完全不同的东西,或者莫名其妙的代码,你就要检查硬件了!现在按F8就可以单步仿真了,你可以看到绿色的图标一步一步向下走。如果出现以下几种情况的处理方法:1)如果程序一单步就跑飞,可能就是硬件问题了,检查时钟电路,电源滤波是否良好?2)初学者建议时钟倍频不用太高,如果时钟输入是10MHz的

47、话,二倍频将主频定在20MHz,这样调试起来可能麻烦少一点。大家都知道频率高了会出现很多意想不到的情况。汇编程序走完,就要进入C代码了,下面是从汇编到C的入口:图3-8 主函数入口按F8就进入C代码仿真了,界面如下:图3-9 跳入主函数4 Bootloader的概述4.1 Boot Loader 的概念 简单地说,Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 通常,Boot Loader 是严重地依赖于硬件而实现的,特别是在

48、嵌入式世界。因此,在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的。尽管如此,我们仍然可以对 Boot Loader 归纳出一些通用的概念来,以指导用户特定的Boot Loader 设计与实现。4.1.1 BootLoader 所支持的 CPU 和嵌入式板每种不同的 CPU 体系结构都有不同的 Boot Loader。有些 Boot Loader 也支持多种体系结构的 CPU,比如 U-Boot 就同时支持 ARM 体系结构和MIPS 体系结构。除了依赖于 CPU 的体系结构外,Boot Loader 实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入

49、式板而言,即使它们是基于同一种 CPU 而构建的,要想让运行在一块板子上的 Boot Loader 程序也能运行在另一块板子上,通常也都需要修改 Boot Loader 的源程序。4.1.2 BootLoader 的安装媒介 系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制造商预先安排的地址上取指令。比如,基于 ARM7TDMI core 的 CPU 在复位时通常都从地址 0x00000000 取它的第一条指令。而基于 CPU 构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM 或 FLASH 等)被映射到这个预先安排的地址上。因此在系统加电后,CPU 将首

50、先执行 Boot Loader 程序。 下图就是一个同时装有 Boot Loader、内核的启动参数、内核映像和根文件系统映像的固态存储设备的典型空间分配结构图。图4-1 固态存储设备的典型空间分配结构4.1.3 用来控制 BootLoader 的设备或机制主机和目标机之间一般通过串口建立连接,Boot Loader 软件在执行时通常会通过串口来进行 I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。4.1.4 BootLoader 的启动过程是单阶段还是多阶段 多阶段的 Boot Loader 能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的 Boot Loader

51、 大多都是 2 阶段的启动过程,也即启动过程可以分为 stage 1 和 stage 2 两部分。而至于在 stage 1 和 stage 2 具体完成哪些任务将在下面讨论。 4.2 BootLoader 的操作模式 大多数 Boot Loader 都包含两种不同的操作模式:启动加载模式和下载模式,这种区别仅对于开发人员才有意义。但从最终用户的角度看,Boot Loader 的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。 启动加载(Boot loading)模式:这种模式也称为自主(Autonomous)模式。也即 Boot Loader 从目标机上的某个固态存

52、储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是 Boot Loader 的正常工作模式,因此在嵌入式产品发布的时侯,Boot Loader 显然必须工作在这种模式下。 下载(Downloading)模式:在这种模式下,目标机上的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 Boot Loader 写到目标机上的FLASH 类固态存储设备中。Boot Loader 的这种模式通常在第一次安装内核与

53、根文件系统时被使用;此外,以后的系统更新也会使用 Boot Loader 的这种工作模式。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。 像 Blob 或 U-Boot 等这样功能强大的 Boot Loader 通常同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。比如,Blob 在启动时处于正常的启动加载模式,但是它会延时 10 秒等待终端用户按下任意键而将 blob 切换到下载模式。如果在 10 秒内没有用户按键,则 blob 继续启动 Linux 内核。4.3 BootLoader 与主机之间进行文件传输所用的通信设备及协议

54、最常见的情况就是,目标机上的 Boot Loader 通过串口与主机之间进行文件传输,传输协议通常是 xmodemymodemzmodem 协议中的一种。但是,串口传输的速度是有限的,因此通过以太网连接并借助 TFTP 协议来下载文件是个更好的选择。 此外,在论及这个话题时,主机方所用的软件也要考虑。比如,在通过以太网连接和 TFTP 协议来下载文件时,主机方必须有一个软件用来的提供 TFTP 服务。 在讨论了 BootLoader 的上述概念后,下面我们来具体看看 BootLoader 的应该完成哪些任务。4.4 BootLoader 的主要任务在继续本节的讨论之前,首先我们做一个假定,那就

55、是:假定内核映像与根文件系统映像都被加载到 RAM 中运行。之所以提出这样一个假设前提是因为,在嵌入式系统中内核映像与根文件系统映像也可以直接在 ROM 或 Flash 这样的固态存储设备中直接运行。但这种做法无疑是以运行速度的牺牲为代价的。 从操作系统的角度看,Boot Loader 的总目标就是正确地调用内核来执行。 另外,由于 Boot Loader 的实现依赖于 CPU 的体系结构,因此大多数 Boot Loader 都分为 stage1 和 stage2 两大部分。依赖于 CPU 体系结构的代码,比如设备初始化代码等,通常都放在 stage1 中,而且通常都用汇编语言来实现,以达到短

56、小精悍的目的。而 stage2 则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。 Boot Loader 的 stage1 通常包括以下步骤(以执行的先后顺序): 硬件设备初始化。 为加载 Boot Loader 的 stage2 准备 RAM 空间。 拷贝 Boot Loader 的 stage2 到 RAM 空间中。 设置好堆栈。 跳转到 stage2 的 C 入口点。 Boot Loader 的 stage2 通常包括以下步骤(以执行的先后顺序): 初始化本阶段要使用到的硬件设备。 检测系统内存映射(memory map)。 将 kernel 映像和

57、根文件系统映像从 flash 上读到 RAM 空间中。 为内核设置启动参数。 调用内核。4.5 Bootloader 的功能计算机操作系统的内核引导程序Bootloader 是系统必不可少的一部分,其一般要实现以下的具体功能: 1)初始化CPU速度、存储器、存储器配置寄存器以及串口等。2)激活指令/数据Cache、建立堆栈指针、建立启动参数区,构造参数结果和标识列表。 3)通过上电自检,来识别存在哪些设备,并报告异常,提供对电源管理中休眠/恢复的支持。 4)跳转到内核起始处,系统启动。 在嵌入式系统中,Bootloader 主要用作系统从硬件启动到操作系统启动的过程,和BIOS、OSloade

58、r一样,它需要固化在目标板中,每次启动目标板时,首先会运行Bootloader ,在它完成CPU和相关硬件的初始化后,才从规定的地址启动操作系统或嵌入式应用的固化程序。4.6 Bootloader的启动流程右图即为bootloader的流程图: 1)启动代码的第一步是设置中断和异常向量。 2)完成系统启动所必须的最小配置,某些处理器芯片包含一个或者几个全局寄存器,这些寄存器必须在系统启动的最初进行配置。设置中断异常向量存储器电路初始化看门狗及外围电路初始化初始化栈指针数据区准备高级语言入口函数调用变量初始化系统寄存器配置 3)设置看门狗,用户设计的部分外围电路,如果必须在系统启动时初始化,就可

59、以放在这一步来完成。 4)配置系统所使用的存储器,包括Flash,SRAM 和DRAM 等,并为他们分配地址空间。如果系统使用了DRAM或者其他外设,就需要设置相关的积存器,一确定其刷新频率,数据总线宽度等信息,初始化存储器系统。有些芯片可以通过寄存器编程初始化存储器系统,而对于较为复杂系统通常集成有MMU来管理内存空间。 5)为处理器的每个工作模式设置栈指针,ARM 处理器有多种工作模式,每个工作模式都需要设置单独的栈空间。 6)变量初始化,这里的变量指的是在软件中定义的已经赋好初值的全局变量,启动过程中需要将这部分从只读区域,也就是FLASH拷贝到读写区域中,应为这部分变量的值在软件运行时

60、候有可能重新赋值。还有一种变 图4-2 Bootloader启动流程量不需要处理,就是已经赋好初值的静态全局变量,这部分变量在软件运行过程中不会改变,因此可以直接固化在只读的FLASH或者EEPROM中。 7)数据区准备,对于软件中所有未赋值的全局变量,启动过程中需要将这部分变量所在的区域全部清零。 8)最后一步是调用高级语言入口函数,比如main函数等。5 程序分析; *; * NAME : 44BINIT.S*; * Version : 10.JAn.2003*; * Description:*; *C start up codes*; *Configure memory, Initial

61、ize ISR ,stacks*; *Initialize C-variables*; *Fill zeros into zero-initialized C-variables*; * GET .incoption.a GET .incmemcfg.a;Interrupt Control;声明符号常量定义寄存器的对应地址INTPND EQU0x01e00004;INTMOD EQU0x01e00008INTMSK EQU0x01e0000cI_ISPR EQU0x01e00020I_CMST EQU0x01e0001c;Watchdog timerWTCON EQU0x01d30000;Clock ControllerPLLCON EQU0x01d80000CLKCON EQU0x01d80004LOCKTIME EQU0x01d8000c

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!