嵌入式汽车定位系统开发研究底层研究毕业设计论文.doc

上传人:文库蛋蛋多 文档编号:3942335 上传时间:2023-03-28 格式:DOC 页数:63 大小:1.78MB
返回 下载 相关 举报
嵌入式汽车定位系统开发研究底层研究毕业设计论文.doc_第1页
第1页 / 共63页
嵌入式汽车定位系统开发研究底层研究毕业设计论文.doc_第2页
第2页 / 共63页
嵌入式汽车定位系统开发研究底层研究毕业设计论文.doc_第3页
第3页 / 共63页
嵌入式汽车定位系统开发研究底层研究毕业设计论文.doc_第4页
第4页 / 共63页
嵌入式汽车定位系统开发研究底层研究毕业设计论文.doc_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《嵌入式汽车定位系统开发研究底层研究毕业设计论文.doc》由会员分享,可在线阅读,更多相关《嵌入式汽车定位系统开发研究底层研究毕业设计论文.doc(63页珍藏版)》请在三一办公上搜索。

1、湖 南 科 技 大 学毕 业 设 计( 论 文 )题目嵌入式汽车定位系统开发研究作者学院专业学号指导教师摘 要 Linux操作系统作为自由软件的代表,性能优良,是PC服务器和嵌入式系统应用最广泛的操作系统,近年来,显现了巨大的市场价值和广阔的应用前景。而本文主要讲述的是在汽车行驶记录仪方面的应用。 本文的工作主要集中在以下方面:首先,进行了移植环境的设计与搭建,安装和配置了交叉编译器;其次,设计并实现了系统的bootloader,主要内容是将基于S3C2410处理器的U-BOOT移植到移植到ARM9-2440EP硬件环境下;最后,将Linux内核进行编译与移植。全文详细论述了嵌入式Linux移

2、植的流程,给出了搭建嵌入式开发环境,基于硬件平台ARM920T的bootloader, Linux内核的移植及根文件系统的实现方案,为整个系统的后续开发打下坚实的基础。关键字:linux federal10系统,uboot移植,内核移植。ABSTRACTLinux operating system as the representative of free software, excellent performance, is a PC server and embedded systems the most widely used operating system in recent yea

3、rs, revealing a huge market value and broad application prospects.This article is about the vehicle location system in the application.Transplantation in the Linux system, the first transplant carried out the design and build environment, installation and configuration of the cross-compiler.Secondly

4、, a design and implementation of the system bootloader, main contents, including transplantation of open source software U-BOOT, since the processor S3C2410 in the U-BOOT only SMDK2410 board of standards support in use must be transplanted toARM9-2440EP hardware environment, and finally, in the foll

5、owing steps to achieve the whole process.This is a linux system using the terminal command modified by gcc cross-compiler, and generates a target need uboot, kernel, logo, and file system image file required, and the windows XP system to download and byDNW and Super Terminal will be programmed into

6、the target image file TQ2440 download mode, restart the development board NANDFlash mode until you see the system interface, you can begin to enter the development stage.Embedded Linux text discusses in detail the process of transplantation is given to build the embedded development environment, har

7、dware platform based on ARM920Ts bootloader, Linux kernel and root file system migration implementations.Keywords: linux federal10 system, uboot transplantation, kernel porting.目 录第一章 绪 论- 1 -1.1嵌入式系统的概述- 1 -1.1.1嵌入式系统的组成- 2 -1.1.2嵌入式系统的特点- 3 -1.1.3嵌入式系统的开发- 4 -1.2嵌入式系统的车载定位系统应用- 5 -1.3智能导航系统功能框图- 6

8、 -第二章 基于ARM9微处理器的硬件和软件总体设计概述- 9 -2.1导航终端系统硬件设计- 9 -2.1.1 导航用户终端系统硬件设计框图- 12 -2.1.2基于ARM9的嵌入式车载导航开发板底板电路原理图- 13 -2.1.3 ARM920T开发板核心原理图- 13 -2.2导航终端系统驱动程序的组成框图- 12 -2.3 开发环境的设计与创建- 15 -2.3.1主机系统的硬件配置及操作系统-24-2.3.2搭建开发和移植环境- 15 -2.3.3目标系统- 18 -第三章 BOOTLOADER设计与实现- 19 -3.1 bootloader原理与作用- 19 -3.2 U-Boo

9、t的设计与实现- 20 -3.2.1简介U-BOOT- 21 -3.2.2 U-BOOT for S3C2440模块结构分析- 21 -3.2.3 U-BOOT执行流程- 21 -3.2.4面向目标板的U-BOOT代码修改和移植- 21 -3.3 U-BOOT烧录和运行- 24 -第四章LINUX内核移植与烧写- 26 -4.1 Linux内核结构与启动流程图- 26 -4.2u-boot引导内核代码的启动过程- 28 -4.3内核的烧写过程- 28 -第五章LINUX根文件系统移植与烧写- 26 -5.1 Linux文件系统基本概念- 29 -5.2嵌入式Linux根文样系统内容设计与实现-

10、 31 -5.3U-BOOT对yaff/yaff2文件系统下载的支持- 35 -5.4Linux根文件系统和logo的烧录过程- 35 -第六章 结束语- 38 -参 考 文 献- 39 -致 谢- 40 -第一章 :绪论 嵌入式系统是热门的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、网络等应用的功能也进行了优化。1.1嵌入式系统概述1.1.1嵌入式系统的组成嵌入式系统一般可以分成四个部分:嵌入式处理器、

11、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件,如图1-1所示。图1.1 嵌入式系统的组成(1)嵌入式处理器嵌入式系统的核心部件是各种类型的嵌入式处理器,嵌入式处理器具有面向用户,面向产品,面向应用的特点,因此,嵌入式处理器与通用处理器最大的区别在于,嵌入式CPU大多工作在为特定用户群所专门设计的系统中。针对不同应用和不同半导体工艺,目前各类嵌入式处理器的变种计有1000余种,大致可分为:嵌入式微处理器:ARM,PowerPC,68000,MIPS,386EX;嵌入式微控制器:8051,MC68HC05,MC68HC11,68300等;嵌入式DSP处理器:TMS320系列,DSP56000系列

12、;嵌入式SOC(片上系统):OMAP,M-Core;目前嵌入式处理器有向高度集成的嵌入式片上系统System On Chip,SOC)发展的趋势。(2)嵌入式外围设备在嵌入系统硬件系统中,除了嵌入式处理器以外,用于完成存储、通信、调试、显示等辅助功能的其他部件,事实上都可以算作嵌入式外围设备。目前常用的嵌入式外围设备按功能可以分为存储设备、通信设备和显示设备三类。目前存在的绝大多数通信设备都可以直接在嵌入式系统中应用,包括RS-232接口(串行通信接口)、USB(通用串行总线接口), Ethernet以太网接口)、工IC(现场总线)等等。存储设备主要用于各类数据的存储,分易失型存储和非易失型存

13、储器两种,同步动态存储器(Synchronous DRAM)和FLASH是两者的代表。FLASH凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点,在嵌入式领域内得到了广泛应用。目前存在的绝大多数通信设备都可以直接在嵌入式系统中应用,包括RS-232接口(串行通信接口)、USB(通用串行总线接口), Ethernet以太网接口)、工IC(现场总线)等等。由于嵌入式应用场合的特殊性,通常使用的是液晶显示器(LCD)和触摸板(Touch Panel)等外围显示设备。也有很多嵌入式系统没有显示设备。(3)嵌入式操作系统嵌入式操作系统是专门负责管理存储器分配、中断处理、任务调度等功能的软件模块

14、,是用来支持嵌入式应用的系统软件,是嵌入式系统极为重要的组成部分,通常包括与硬件相关的底层驱动程序、系统内核、设备驱动接口、通信协议、图形用户界面(GUI)等。从20世纪80年代开始,市场上出现各种各样的商用嵌入式操作系统,这些操作系统大部分都是为专用系统开发的,现在逐步演化成了多种形式的商用嵌入式操作系统百家争鸣的局面。这些操作系统有VxWorks,Neculeus,pSOS,QNX,Linux和WindowsCE等。1.1.2嵌入式系统的特点根据前面对嵌入式系统的描述可以看出嵌入式系统的几个重要特征:(1)嵌入式系统通常是面向特定应用的,嵌入式CPU与通用型的CPU最大不同就是嵌入式CPU

15、大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋子小型化,移动能力大大增强,跟网络的祸合也越来越紧密。(2)嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了官必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。(3)嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具

16、体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。(4)嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。1.1.3嵌入式系统的开发由于嵌入式系统是一种根据特定用途所专门开发的系统,它只完成预期要完成的功能,所以其开发过程和开发环境同传统的软件开发相比有着显著的不同。(1)开发流程在嵌入式系统的应用开发中,整个系统的开发过程如图1-2所示。嵌入式系统发展到今天,对应于各种微处理器的硬件

17、平台一般都是通用的、固定的、成熟的,这就大大减少了由硬件系统引入错误的机会。此外,由于嵌入式操作系统屏蔽了底层硬件的复杂性,使得开发者通过操作系统提供的API函数就可以完成大部分工作,因此大大简化了开发过程,提高了系统的稳定性。嵌入式系统的开发者现在已经从反复进行硬件平台设计的过程中解脱出来,从而可以将主要精力放在满足特定的需求上。图1.2嵌入式系统的开发流程(2)开发环境采用交叉开发环境(Cross Development Environment)是嵌入式应用软件开发时的一个显著特点,首先在通用计算机上编写程序,然后通过交叉编译生成目标平台上可以运行的二进制代码格式,最后再下载到目标平台上的

18、特定位置运行。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境.,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式,如图1-3所示。图1.3 交叉开发模式宿主机是一台通用计算机(如PC机或者工作站),它通过串口或者以太网接口与目标机通信。宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如Linux),而且还有各种各样优秀的开发工具(如WindRiver的Tornado, GNU的开源软件GDB等),能够大大提高嵌入式应用软件的开发速度和效率。目标机一般在驱动开发和应用软件开发期间使用,它可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统,但软

19、硬件资源通常都比较有限。嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器,其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。在采用宿主机/目标机模式开发嵌入式应用软件时,首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件,然后通过串口或者网络将交叉编译生成的目标代码下载到目标机的存储单元上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试,最后目标机在特定环境下脱离宿主机运行。目前常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链,目

20、前己经能够支持x86,ARM,MIPS, PowerPC等多种处理器。商业的交叉开发环境则主要有Metrowerks CodeWarrior,ARM Software,Development Toolkit,Windver Tornado等等。1.2嵌入式系统在车载定位系统中的应用全球定位系统(GPS)是本世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定位系统。其主要目的是为陆、海、空三大领域提供实时、 全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的,是美国独霸全球战略的重要组成。经过20余年的研究实验,耗资300亿美元,到1994年3月,全球覆盖率高达9

21、8%的24颗GPS卫星星座己布设完成。GPS监控(以上海市连图信息科技GPS车载终端设备为例)是结合了GPS技术、无线通信技术(GSM/GPRS/CDMA)、图像处理技术及GIS技术,用于对移动的人、宠物、车及设备进行远程实时监控的一门技术。 全球定位系统在车辆管理上的应用,被称作车辆定位系统。 GPS车辆管理系统功能简单描述 (1)实时监控: GPS车辆管理系统应用了移动GPRS为监控数据的载体,真正的实现了对车辆的全天候实时监控(速度、方向等),监控频率可达到1秒级。 (2)行驶信息管理: 系统可对车辆以往的行驶数据信息进行下载、回放、保存等。 (3) 车辆超速报警: 管理员可单独或是设定

22、全部车辆的行驶上下限速度,当车辆行驶速度超过该限制时,系统即会提示车辆超速报警,并伴有声音和窗口弹出窗口提示。 (4) 自建图层:管理员可以通过文字和图象在地图上自行标注公司的以及工地的方位;也可以自行构建道路上没有的路线,更好的完善地图来管理车辆。 (5) 文字调度管理:管理可通过文字方式向某一辆车或是某一群车辆发送文字调度信息。发送的信息将保存下来,以供日后查证。 (6) 超速报警统计:通过系统提供的行驶数据保存功能,在事后可将某车的在某天某日某一段时间的行车数据进行回放,并可生成报表供打应,该功能可作考核用。 (7) 行车线路跟踪:可对单独一辆或是全部车辆进行实时记录行驶路线功能,当车辆

23、驶过后就会在地图上划出一条黑线,管理员可直观的看到车辆的行驶路线情况。 (8) 区域报警功能:可以设定禁区,当车进入禁区监控处发出警报提醒。定制行驶路线,当驾驶员驶离预定的驾驶路线发出报警。 (9) 里程油耗统计:通过系统提供的行驶数据保存功能,可将某车的在某天某日某一段时间的行车公里数及所耗油量,可生成报表供打印,该功能可作参考。1.3智能导航系统功能框图目标板ARM93G模块GPS模块Uboot移植Kernel移植应用程序P C卫星监控中心图1.4 系统功能图第二章 基于ARM9微处理器的硬件和软件设计概述2.1导航终端系统硬件设计2.1.1导航用户终端系统硬件设计图用户终端主要是实现了提

24、供给监控中心的各种数据,包括地理位置,速度,耗油量等等,因此其包括了以下的几个模块。图2.1用户终端图2.1.2基于ARM9的嵌入式车载导航开发板底板电路原理图图2.22.1.3 ARM920T开发板核心板电路原理图图2.32.2导航系统驱动程序的组成框图 以下是运行目标板所需要的驱动程序,在此次试验中,使用的TQ2440开发班层也是由一下图示组成。GPS驱动程序,3G驱动程序文件系统logo内核程序bootloader图2.42.3开发环境的设计与创建2.3.1主机系统的硬件配置和操作系统CPU:Intel 奔腾双核/双线程内存容量:2GB硬盘容量:320GB显存容量:513MB操作系统:W

25、indows Federal102.3.2搭建开发和移植环境(1)开发环境配置如下: 本次设计开发环境:linux federal 10系统 所用的代码是使用smdk2410代码修改成u-boot 所用的编译和烧写工具:GNU gcc,DNW(2)移植环境 主 机:Fedora 10 windows XP 开发板:Mini2440-64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz22.3.3 目标系统 本次实验使用的是ARM920T开发板其完型后如下图:图2.5第三章:BOOTL

26、OADER设计与实现3.1 Bootloader原理与作用(1) Bootloader原理:一般bootloader开发分两种模式:启动加载模式和下载模式,启动加载模式只是负责加载系统信息,而下载模式则可以从指定的地方下载系统信息(这样比较有利于系统升级)。bootloader的实现依赖于CPU的体系结构,因此大多数bootloader的开发都分为stage1和stage2两个阶段,依赖体系结构的代码都放在stage1(用汇编实现),而stage2通常用C来实现。bootloader的stage1通常包括以下步骤: 硬件设备初始化。其中包括屏蔽所有中断、设置CPU的速度和时钟频率、RAM初始化

27、、初始化IED、关闭CPU内部指令/数据cache。 为加载bootloader的stage2准备RAM空间。空间可以任意安排,其中RamEnd-1MB是一种很值得推荐的方法(RamEnd-1MB指末尾的1M空间);而且必须进行范围测试,这里推荐一个叫做test_mempage的内存检测算法测试每个memory page开始两个字是否是可读写的。 拷贝bootloader的stage2到RAM空间。这里只要注意地址范围就可以了。 设置好堆栈。通常可以把sp的值设置为stage2_end(栈向低地址空间发展) 跳转到stage2的C入口点。stage2的代码通常用C来实现。第二阶段,stage2

28、通常步骤: 初始化本阶段要使用的硬件设备。至少一个串口,以便向终端用户进行I/O输出信息;初始化计时器等。 检测系统内存映像。即整个空间中有哪些RAM单元。 将kernel影响和根文件系统映像从flash上读到RAM空间。主要考虑基地址和映像的大小两个方面;对于内核映像,一般将其拷贝到从MEM_START+0x8000这个基地址开始的大约1MB大小的内存范围内,这里要把从MEM_START到MEM_START+0x8000这段32kb大小的内存空出来是因为要放置linux内存中的一些全局数据结构。如,启动参数和内核页表等信息。而对于跟文件系统映像,则一般将其拷贝到从MEM_START+0x00

29、100000开始的地方。 为内核设置启动参数。linux 2.4.x以后的内核都期望以标记列表的形式来传递启动参数。每个标记由标识被传递参数的tag_header结构以及随后的参数值数据结构来组成(在include/ams/setup.h中定义)。包括:ATAG_COREATAG_MEMATAG_CMDLINEATAG_RAMDISKATAG_INITRD。(2)bootloader的作用:BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境

30、。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。3.2U-BOOT的设计与实现U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boo

31、t源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。图1 U-Boot存储器映射3.1.1 U-Boot简介U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, AR

32、TOS。这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang

33、Denk以下简称W.D本人精湛专业水平和持着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。 选择U-Boot的理由: 开放源码; 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS; 支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale; 较高的可靠性和稳定性; 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求

34、、产品发布等; 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等; 较为丰富的开发调试文档与强大的网络技术支持; (1)主要功能U-Boot可支持的主要功能列表 * 系统引导;* 支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统; * 支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;* 基本辅助功能 强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤对Linux支持最为强劲; * 支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;*

35、 CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好; * 设备驱动 串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持; * 上电自检功能 SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号;* 特殊功能 XIP内核引导;3.2.2uboot for s3c2440的模块结构分析: 此次使用的uboot为u-boot-2009.08,其中包括的主要目录及说明如下图: 3.2.3U-BOOT执行流程u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语

36、言写成; u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。各个部分的流程图如下: 3.2.4U-BOOT面向目标板的代码修改(1)Uboot 代码修改前提搭建了一个my2440开发板u-boot的框架,要使其功能实现, 因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫my2440 因2440和2410的资源差不多,所以就以2410项目的代码作为模板,以后再修改,将2410下所有的代码复制到2440下,进入my2440目录,将my2440下的smdk2410.c改名为my24

37、40.c,修改Makefile文件,命令如下:#gedit board/samsung/my2440/MakefileCOBJS:= my2440.o flash.o 回到u-boot根目录,建立2440头文件, 修改u-boot跟目录下的Makefile文件。查找到smdk2410_config的地方,在他下面按照smdk2410_config的格式建立my2440_config的编译选项,另外还要指定交叉编译器为arm-linux-gcc,并配置2440编译选项的格式。 测试编译新建的my2440开发板项目,如果出现Configuring for my2440 board.则表示设置正确,

38、编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了(2)my2440开发板u-boot的stage1入口点分析。 一般在嵌入式系统软件开发中,在所有源码文件编译完成之后,链接器要读取一个链接分配文件,在该文件中定义了程序的入口点,代码段、数据段等分配情况等。那么我们的my2440开发板u-boot的这个链接文件就cpu/arm920t/u-boot.lds,打开该文件部分代码,可以看到定义生成文件的目标平台是arm,定义程序的人口点是_start。知道了程序的入口点是_start,那么我们就打开my2440开发板u-boot第一个要运行的程序cpu/arm92

39、0t/start.S(即u-boot的stage1部分),查找到_start的位置, 从汇编代码可以看到程序又跳转到start_code处开始执行,那么再查找到start_code处的代码,可知 start_code处才是u-boot启动代码的真正开始处。以上就是u-boot的stage1入口的过程。(3)my2440开发板u-boot的stage1阶段的硬件设备初始化。由于在u-boot启动代码处有两行是AT91RM9200DK的LED初始代码,但我们my2440上的LED资源与该开发板的不一致,所以我们要删除或屏蔽该处代码,再加上my2440的LED驱动代码,代码如下: #ifdefine

40、d(CONFIG_S3C2440)#define GPBCON 0x56000010#define GPBDAT 0x56000014#define GPBUP 0x56000018 ldr r0, =GPBUPldr r1, =0x7FF /即:二进制11111111111,关闭PB口上拉str r1, r0ldr r0, =GPBCONldr r1, =0x154FD /即:二进制010101010011111101str r1, r0ldr r0, =GPBDATldr r1, =0x1C0 str r1, r0 #endif在include/configs/my2440.h头文件中添加

41、CONFIG_S3C2440宏 #gedit include/configs/my2440.h#define CONFIG_S3C24401/* in a SAMSUNG S3C2440 SoC*/现在编译u-boot,在根目录下会生成一个u-boot.bin文件。然后我们利用mini2440原有的supervivi把u-boot.bin下载到RAM中运行测试(注意:我们使用supervivi进行下载时已经对CPU、RAM进行了初始化,所以我们在u-boot中要屏蔽掉对CPU、RAM的初始化),如下: /*#ifndef CONFIG_SKIP_LOWLEVEL_INITblcpu_init_

42、crit#endif*/#make my2440_config#make下载运行后可以看到开发板上的LED灯第一了亮了,其他三个熄灭,测试结果符合上面的要求。(4)在u-boot中添加对S3C2440一些寄存器的支持、添加中断禁止部分和时钟设置部分。 由于2410和2440的寄存器及地址大部分是一致的,所以这里就直接在2410的基础上再加上对2440的支持即可,在cpu/arm920t/start.S中添加如下代码:#if defined(CONFIG_S3C2400) | defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440).# if defin

43、ed(CONFIG_S3C2440)/添加s3c2440的中断禁止部分ldr r1, =0x7fff /根据2440芯片手册,INTSUBMSK寄存器有15位可用 ldr r0, =INTSUBMSKstr r1, r0# endif# if defined(CONFIG_S3C2440)/添加s3c2440的时钟部分#defineMPLLCON0x4C000004/系统主频配置寄存器基地址#define UPLLCON0x4C000008/USB时钟频率配置寄存器基地址ldr r0, =CLKDIVN /设置分频系数FCLK:HCLK:PCLK = 1:4:8mov r1, #5str r1

44、, r0 ldr r0, =MPLLCON/设置系统主频为405MHz ldr r1, =0x7F021 str r1, r0 ldr r0, =UPLLCON /设置USB时钟频率为48MHz ldr r1, =0x38022 str r1, r0#else/其他开发板的时钟部分,这里就不用管了,我们现在是做2440的 /* FCLK:HCLK:PCLK = 1:2:4 */* default FCLK is 120 MHz ! */.# endif#endif/* CONFIG_S3C2400 | CONFIG_S3C2410 | CONFIG_S3C2440 */S3C2440的时钟部分

45、除了在start.S中添加外,还要分别在board/samsung/my2440/my2440.c和cpu/arm920t/s3c24x0/speed.c中修改或添加部分代码,如下: #elif FCLK_SPEED=2/* Fout = 405MHz */#define M_MDIV0x7F #define M_PDIV0x2#define M_SDIV0x1.#elif USB_CLOCK=2 /* Fout = 48MHz */#define U_M_MDIV0x38#define U_M_PDIV0x2#define U_M_SDIV0x2#endif#gedit cpu/arm920t/s3c24x0/speed.cstatic ulong get_PLLCLK(int pllreg).#if defined(CONFIG_S3C2440)if(pllreg = MPLL) /参考S3C2440芯片手册上的公式:PLL=(2 * m * Fin)/(p * 2s)return(CONFIG_SYS_CLK_FREQ * m * 2) / (p s);#endifreturn(CONFIG_SYS_CLK_FREQ *

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号