- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM的最小系统构架.
S3C44B0X的最小系统构架
一、前言??? ARM7TDMI是世界上广泛使用的32位嵌入式RISC处理器,是目前用于低端的ARM处理器核。它的高性能,低功耗,廉价和精简的程序代码一直是市场上的领先者。ARM公司研发了针对ARM图形化的编译器,连接器和调试器,这为整个嵌入式系统的开发调试提供了较好的环境。Samsung S3C44B0微处理器是三星公司提供的高性价比和高性能的微控制器解决方案,它使用ARM7TDMI核,从SamsungS3C4510B停产后,SamsungS3C44B0X更成为同类芯片的主流。??? 现今许多嵌入式系统要实现复杂的功能都需要操作系统支持,有了操作系统的支持,编写特定的应用程序就比较容易了。本文以uClinux最新源代码包为基础,修改代码以适合S3C44B0X的系统,包括启动程序bootloader,Linux内核源代码修改,根文件系统的定制。
二、硬件架构??? 一个最小的嵌入式系统包括以下几个部分:CPU、SDRAM、FLASH。但为了调试方便本文介绍的系统带了网口和串口,网口用于传输数据大批量数据,串口用于传输字符数据,这样就可以和主机通信了。硬件框图如图1所示。?图1系统硬件框图??? 系统实验板主要芯片(CPU,UART,FLASH(ROM),ETHERNETSDRAM),管脚连接如图2所示。?图2 S3C44B0X与SDRAM,Flash,以太网口,串口的连接图
三、软件架构??? 基于uClinux的嵌入式系统软件一般由三部分构成:启动程序(bootloader)、内核文件(kernel)、根文件系统(rootfs)。uClinux源代码包含程序库,Linux内核和根文件系统所需要的应用程序源代码,而启动程序要自己编写。??? 启动程序先初始化CPU,然后引导uClinux操作系统,操作系统引导起来后会加载根文件系统,加载根文件系统有几种方式,这里采用blockmemory技术(可以避免在启动时传递内核rootfs位置的参数)。根文件系统使用romfs文件系统,这种文件系统相对简单,很适合嵌入式系统的应用。这三部分在FLASH和内存的分配地址如图3和图4所示。?图3 flash地址分配?图4内存地址分配??? 最难调试的部分应该是启动程序部分;对于以后的内核可以根据串口输出的错误信息来判断。笔者采用ARM公司的调试工具AXD来调试bootloader。1.启动程序(bootloader)??? bootloader有两大功能:初始化CPU和引导Linux内核(采用将压缩内核拷贝到内存解压方法,这样可以加快启动速度)。(1)初始化CPU??? 1)中断向量??? ARM要求中断向量表必须放置在从0地址开始,连续8×4字节的空间内。每当一个中断发生以后,ARM处理器便强制把PC指针置为向量表中对应中断类型的地址值。因为每个中断只占据向量表中1个字的存储空间,只能放置一条ARM指令,使程序跳转到存储器的其他地方,再执行中断处理。??? 所以0地址开始的地方,分配为flash的空间,在0地址开始处放中断向量,作为uClinux的启动代码,实现方式如下:b? resetadd pc,pc,#0x0c000000add pc,pc,#0x0c000000add pc,pc,#0x0c000000add pc,pc,#0x0c000000 add pc,pc,#0x0c000000add pc,pc,#0x0c000000add pc,pc,#0x0c000000? 0x0c000000为内存起始地址,uClinux将中断向量放入地址0x0c000008,因为cpu发生中断时仍然会跳转到0地址处的中断向量表中去,所以此处要修改中断向量表的地址,使程序能正确跳转到uClinux实现的中断向量处。由于ARM系统的三级流水线技术,当程序执行到x地址处,pc指针的值其实等于x+8。? 在uClinux中相关代码如下:#ifdef CONFIG_ARCH_S3C44B0#undef vectors_base()#define vectors_base() (0x0c000008)#endif? add pc,pc,#0x0c000000这条语句将会有8的偏移量,当pc等于0时,这条指令的执行结果为pc=0x0c000008。??? 2)中断处理??? 这段reset代码放在flash中。这样系统每次复位后,会执行flash上的reset代码。
初始化存储器系统
初始化堆栈? 在初始化堆栈时应该特别注意,堆栈指针地位置一定不能和其他程序的地址相冲突,否则程序很容易异常。
初始化有特殊要求的端口,设备
初始化用户程序执行环境
改变
您可能关注的文档
- ArcGIS+Engine常用源代码..doc
- arcgis10图例制作及编辑..docx
- ArcGIS+API+for+Silverlight开发入门..doc
- arcgis10拓扑规则详解..doc
- ArcGis9编辑功能主由有Editor工具栏..doc
- ArcGIS10新特性之编辑..docx
- ArcGisChapter08..doc
- ArcGisChapter04..doc
- ArcGISEngine下投影坐标和经纬度坐标的相互转换..doc
- Arcgisforflex知识..docx
- 北师大版小学数学三年级上册《寄书》教学设计.docx
- 统编版(部编版)语文二年级上册《雪孩子》教学设计.docx
- 统编版(部编版)语文二年级上册《八角楼上》教学设计.docx
- 北师大版小学数学三年级上册《长方形周长》教学设计.docx
- 北师大版小学数学三年级上册《丰收了》教学设计.docx
- 统编版(部编版)语文二年级上册《夜宿山寺》教学设计.docx
- 统编版(部编版)语文二年级上册《风娃娃》教学设计.docx
- 统编版(部编版)语文二年级上册《朱德的扁担》教学设计.docx
- 统编版(部编版)语文二年级上册《难忘的泼水节》教学设计.docx
- 统编版(部编版)语文二年级上册《纸船和风筝》教学设计.docx
文档评论(0)