




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前言近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。实时温度采集系统是是将环境温度实时的进行采集并显示的系统,在现在的许多家用电器、工业控制、甚至是高科技领域都有应用,它已经普遍的融入了社会生活和生产之中,并且作为基础的系统,在今后的生活生产中并不会被淘汰,应用范围还会继续扩大,因此,掌握此系统是必要的。所谓嵌入式系统,国内普遍认同的定义是:以应用为中心,以计算机为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本 、体积、功耗等严格要求的专用计算机系统。由于嵌入式系统具有体积小、性能好、功耗低、可靠性高以及面向行业应用的突出特征,目前已广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等领域,可以说嵌入式系统无所不在、无处不在目录前言11. 设计简介21.1 嵌入式简介.3 1.2 微处理器SAMSUNG 公司的S3C44B0x.4 1.3 嵌入式系统的介绍.5 1.4 基于 S3C44B0X 和 CLinux 的程序设计的系统环境搭建6 1.4.1 ARM处理器6 1.4.2选用的linux系统是uCLinux系统82. 开发环境大搭建9 2.1硬件开发环境包括PC机,Super-ARM, S3C44B0X9 2.1.1 系统电源电路9 2.1.2 时钟源电路9 2.1.3 复位电路设计11 2.1.4 外部存储扩展12 2.1.5 键盘连接电路13 2.1.6 LCD硬件设计14 2.1.7 USB接口16 2.1.8 网络接口173 操作系统的移植 19 3.1 启动程序 19 3.2 uclinux系统内核21小结 23参考文献24附录:部分源代码251.设计简介1.1嵌入式简介IEEE(国际电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。原文为:Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。目前,国内普遍认同的定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。北京航空航天大学何利民教授给出这样的定义:“嵌入式系统是嵌入到对象体系中的专用计算机系统。”可以这样认为,嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。嵌入式系统一般有嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序4个部分组成。“嵌入性”、“专用性”和“计算机系统”是嵌入式系统的三个基本要素,对象系统则是指嵌入式系统所嵌入的宿主系统。嵌入式系统无处不在,在移动电话、数码相机、MP4、数字电视机顶盒、微波炉等设备中都使用了嵌入式系统。嵌入式计算机系统是整个嵌入式的核心,可以分为硬件层、中间层、系统软件层和应用软件层。1.2微处理器SAMSUNG 公司的S3C44B0X简介这是一款基于ARM7TDMI内核技术的16/32位RISC处理器,扩展了一系列完整的通用外围器件,使系统的费用降至最低,减低了硬件开发的难度。本嵌入式系统配置了2MB的FLASH存储器以及8MB的SDRM存储器。 S3C44BOX 是在国内广泛使用的Samsung公司的基于ARM7TDMI内核的SoC。该芯片功能强大,为手持设备和一般类型应用提供了高性价比和高性能的微控制器解决方案。它的低功耗和出色的全静态设计特别适用于对成本和功耗敏感的应用。 SAMSUNG公司推出的16、32位RISC处理器S3C44BOX为手持设备和一般类型应用提供了高性价比和高性能的微控制器解决方案。为了降低成本,S3C44BOX提供了丰富的内置部件,包括8KBCache和内部SRAM,LCD控制器,带自动握手的2通道UART,4通道DMA,系统管理器(片选逻辑,FP/EDO/SDRAM控制器)。带PWM功能的5通道定时器和一个内部定时器,I/O端口,RTC,8通道10位ADC,IIC_BUS 接口,IIS_BUS接口,同步SIO接口和PLL倍频器。S3C44BOX的引脚图: 温度信号采集使用PT100 ,信号采集转化使用ADAM-4250 模块 。系统的数据存储由 2MB Flash( SST39VF160) 实现。系统的语音报警功能主要由S3C44B0X 自带的IIS接口完成。IIS 全名音频数据接口, 是有SONY,Philips 等公司共同推出的接口标准。将IIS 接口UDA1341TS 音频数字信号译码器相连可实现音频文件的解码,从而实现语音报警。系统主要分为PWM脉冲板块,LCD显示板块,温度检测模块,触摸屏模块,音频处理模块, 4*4键盘输入模块,网口模块。1.3嵌入式系统的介绍嵌入式系统设计是一个很复杂的过程,在设计嵌入式的过程中,不仅要对设计嵌入式系统的软硬件有很广泛的了解,同时还要熟悉行业的内容。下面是设计过程中必须考虑的一些问题: (l)需要硬件的数量。 在系统设计中,不仅要选择使用何种微处理器,还要选择存储器的数量、所使用的外设及其它的内容。因为在满足性能要求的同时也要考虑制造费用的约束,硬件设备的选择是十分重要的,硬件太少,将不能达到性能的要求,硬件设备过多又会使产品变得过于昂贵。 (2)时限要求。 通过提高CPU的时钟频率的方法来提高程序运行速度以解决时间约束的方法显得十分笨拙,因为程序的速度有可能受存储系统的限制,因此必须从整个系统的观点来考虑这个问题。 (3)系统的功耗。 对于电池供电的电器而言,功耗是一个十分重要的问题;对于非电池供电的电器而言,高功耗也会带来高的散热量。降低系统功耗的一种方法就是降低它的运算速度,但是单纯的降低运算速度显然会导致不能满足性能需求。所以必须从全局的角度进行设计,以便通过降低系统非关键部分的速度来降低系统功耗,而同时又能满足系统整体性能的要求。 (4)系统的可升级性。 系统的硬件平台可能使用几代,或者使用在同一代的不同级别的产品中,而这些仅仅需要一些简单的改变就应实现,所以我们必须能够通过改变软件来改变系统的特性。这就要求我们在软件设计中必须考虑系统的升级问题。进行嵌入式系统设计有两种最基本的方法。一种是自顶向下的方法,从对系统最抽象的描述开始,一步一步地推进到细节内容。另外一种方法是自底向上的方法,这种方法从构成系统的每一个构件开始向上。图1.1汇总了嵌入式系统设计的主要步骤。从自顶向下的角度来看,先从系统的需求开始分析,然后是规格说明,在这一步对整个系统进行更加细致的描述,但是规格说明只是对系统如何工作进行了描述,并不涉及它的组成。系统内部的详细构造要在开发系统的体系结构时才能展现出来,这一阶段以大的构件为单位给出了系统的结构。一旦知道了需要的构件,就可以开始设计这些构件,包括软件模块和所需要的专用硬件模块。在这些构件的基础上,就可以构造出所需要的完整的系统。上述设计过程中的这些步骤只是嵌入式系统的全貌的一个轴线,同时还需要考虑其它一些相关因素。需求体系结构构件系统集成规格说明具体的说,第一步“需求”就是要清楚要设计什么,从用户那里收集系统的非形式描述,然后对这些要求进行提炼,以得到系统的规格说明。第二步“规格说明”更精确一些,它起到客户和生产者之间合同的作用。第三步“体系结构,是系统整体结构的一个计划,而后用于设计搭建整个体系结构的构件。结构设计的创建也是许多设计者认为的设计的第一阶段,形象化的话就是把系统用功能框图来表示,然后可以再细分成硬件框图和软件框图。第四步“软硬件构件,使得构件与体系结构和规格说明达到一致,一些构件可能是现成的,比如CPU、存储芯片或者各种模块等,同样软件也有标准的模块可以利用,比如现有的操作系统、TCP/IP协议等,但也要自己设计一些构件,硬件方面如一些电路等,软件方面如定制一些文件系统或者网络协议以满足特别的要求。第五步“系统集成,是将构件集成到一个能运转的系统。1.4基于 S3C44B0X 和 CLinux 的程序设计的系统环境搭建1.4.1ARM处理器(1)ARM简介ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM公司主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用占据32位RISC微处理器75%以上的市场份额。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,它本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM处理器芯片进入市场。目前,全世界有几十家大半导体公司都使用ARM公司的授权,因此既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,从而使产品更容易进入市场被消费者所接受,更具有竞争力。(2)ARM处理器的应用领域及特点到目前为止,ARM处理器及技术的应用几乎已经深入到各个领域,并会在将来取得更加广泛的应用。工业控制领域:作为32位的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。无线通信领域:目前已有85%以上的无线通信设备采用了ARM技术,ARM以其高性能和低成本的特点,在该领域的地位日益巩固。网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。ARM处理器一般具有如下特点。体积小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。 1.4.2选用的linux系统是uCLinux系统由于现有的Linux是一个通用的操作系统,虽然它也采用了许多技术来加快系统的运行和响应速度,但从本质上来说并不是一个嵌入式实时操作系统。因此,利用Linux作为底层操作系统,在其上进行实时化改造,从而构建出一个具有实时处理能力的嵌入式系统,如RT-Linux已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等各种领域。嵌入式Linux同Linux一样,也有众多的版本,主要有以下这些:版本简单介绍uCLinux开放源码的嵌入式Linux的典范之作。它主要是针对目标处理器没有存储管理单元MMU,其运行稳定,具有良好的移植性和优秀的网络功能,对各种文件系统有完备的支持,并提供标准丰富的API。RT-Linux由美国墨西哥理工学院开发的嵌入式Linux硬实时操作系统。它已有广泛的应用。Embedix根据嵌入式应用系统的特点重新设计的Linux发行版本。它提供了超过25种的Linux系统服务,包括Web服务器等。此外还推出了Embedix的开发调试工具包、基于图形界面的浏览器等。可以说,Embedix是一种完整的嵌入式Linux解决方案。表1-1-1 嵌入式Linux的主要版本表1-1-1所列出的嵌入式Linux的不同版本分别是针对不同的需要在内核等方面加入了特定的机制而定制的,在很多嵌入式Linux应用中,开发者一般在标准发行版Linux内核的基础上直接为自己的硬件平台定制裁剪嵌入式Linux系统。正如上面所说,在“嵌入式开发”的语境中,嵌入式 Linux 通常指一个针对特定硬件设备的完整的系统;而在“嵌入式 Linux 厂商”的语境中,嵌入式 Linux 用于表示以嵌入式系统为需求对象的发行套件,如“嵌入式 Linux 发行套件”指的是为嵌入式系统与开发工具量身定制的软件套件,以便建立一个完整的系统。嵌入式 Linux发行套件所提供的开发工具可能包括:交叉编译器、调试器、引导映像生成器等等。 2开发环境搭建2.1硬件开发环境包括PC机,Super-ARM, S3C44B0XS3C44BOX 是三星公司专为手持设备和一般应用提供的高性价比、高性能 16/32 为 RISC型嵌入式微处理器。它使用 ARM7TDMI 核,工作在 75MHz。S3C44B0X 采用 0.2m 制造工艺的 CMOS 标准宏单元和存储编译器,它功耗低、精简及出色的全静态设计非常适用于对成本和功耗要求较高的场合。为了降低系统成本和减少外围器件,这款芯片中还集成了若干部件,主要包括 8KB Cache、内部 SRAM、外部存储控制器、LCD 控制器、4 个 DMA 通道、带自动握手的 2 通道 UART、1 个多主 I2C 总线控制器,1 个 I2C 总线控制器、5 通道 PWM 定时器、1 个内部定时器、1 个看门狗定时器、71 个通用 I/O 口、8 个外部中断源、具有日历功能的实时时钟 RTC、8 通道 10 为 A/D 转换器、1 个 SIO 接口以及 PLL 时钟发生器。S3C44BOX 采用新型的总线结构,即三星 ARM CPU 嵌入式微处理器总线结构 SAMBAII。但是 S3C44BOX 没有内部的 ROM 存储器,因此在此系统中我们呢还需对芯片进行扩展2.1.1系统电源电路由于 S3C44B0X 的内核电压为 2.5V,I/O 模块电压为 3.3V,而 LCD 屏及 USE 接口等提供 供电电压外部设备通常为 5V,因此系统需要 2.5V,3.3V,5V 共三种电压。首先选用直流稳压电源输出 5V 电压,电流大小根据外部设备及接口请款,选择 1A,1.5A或更大电流输出,其他 2 中电压 3.3C,2.5V 则可直接选用降压型 DC-DC 模块实现。在这个温度控制系统中,我们采用 AS281AU 电源模块,输入的 5V 电压经过两个电容的 滤波接到 AS2815AU2.5 和 AS2815AU3.3 后,再在其后接一个 10UF 的电容,得到稳定的 2.5V 和 3.3V 直流电压,具体电路如下图所示: 2.1.2时钟源的电路 时钟源的选择是有引脚 OM3,OM2 来决定的,适当的连接 OM3 和 OM2 两个引脚就可以选择不同类型的时钟源输入,这里使 OM3 和 OM2 均通过 4.7K 电阻下拉为低电平,EXTCLK 外部时钟输入接 4.7K 的电阻上拉为高电平,并选择 10MHz 的晶体作为时钟输入源,如图所示:2.1.3复位电路设计 由 S3C44BOX 的复位引脚 nRESET 的功能可知,nRESET 至少需要保持 4 个 MCLK 时钟 周期的低电平,系统才能可靠复位,另外考虑到可以人工干预复位,因此采用多反相器复位 电路作为 S3C44BOX 的复位电路。如下图所示:当然我们也可以采用专用的复位电路 IC 芯片,如 IPM811 等2.1.4外部存储扩展 由于 S3C44BOX 没有存储器,因此必须采用总线方式扩展外部存储器,包括程序存储器和数据存储器。S3C44BOX 存储器地址分配有 7 个 Bank,存储组织可以使用 8 位、16 位 或 32 位的不同数据宽度,因此对应的不同宽度的存储器地址线与系统总线的连接方法也不 同。我们在这个系统的对 S3C44BOX 进行 1M 扩展,采用的扩展 Flash 芯片是 SST39VF160, 地址宽度为 16 位,我们必须进行错位相连。,连接后 Flash 的地址范围为 0x000000000x001FFFFF。 如何错位如下表所示:存储地址总线 8 位存储器组组织下16 位存储器组组织32 位存储器组组织 的系统地址总线 的系统地址总线 的系统地址总线A0 A0 A1 A2A1 A1 A2 A3A2 A2 A3 A4A3 A3 A4 A5“ “ “ “Am-1 Am-1 Am-1 Am-1扩展 Flash 具体连接图如下SST39VF160 管脚描述符号 管脚名称 功能 A19A0 地址输入 存储器地址,扇区插除时 A19A11除时,A19A15 用来选择块DQ15DQ0 数据输入/输出 读周期内输出数据,写周期内输入据。写周期内 数据内部锁存。OE#或 CE#为高时输出三态CE# 芯片使能 CE#低时启动器件开始工作OE# 输出使能 数据输出缓冲器的门控信号WE# 写使能 控制写操作V DD 电源 供给电压电源:2.73.6VVSS 地NC 不连接 悬空管脚和 UDOM 分别为数据输入输出屏蔽选择引脚,而由表 3.2 可知 S3C44BOX 的 DQM3DQM0 恰恰是屏蔽数据信号的引脚,因此相应连接起来,S3C44BOX 与 SDRAM HY57V651620B 的连接采用 16 位存储器组成形式如图所示。由于 SDRAM,必须放到 Bank6 开始的区域,可直接由 nSCSO 或 Ngcs6 选择,起始地 址 为 0x0C000000, 根 据 容 量 大 小 可 以 算 出 SDRAM 在 系 统 中 的 地 址 范 围 为 0x0C0000000x0C7FFFFF2.1.5键盘连接电路 该系统采用的是 4x4 键盘,方便用户操作,采用的行列矩阵式键盘设计方法,即行 扫描法,该电路采用 4 根 I/O 引脚 GPG4GPG7 作为行扫描输出,4 根 I/O 引脚 GPF5GPF8 作 为输入检测,同时这 4 根输入引脚与四输入与门相接,与门输出接外部中断 2 引脚。这样可 以采用中断方式,读取键盘对应的值,在中孤单服务程序中判断是 GPF5GPF8 那个引脚位低 电平,然后结合输出扫描的行号即可合成对应的按键。其电路具体如下:2.1.6 LCD 硬件设计 采用的是 LM057QC1T01 彩色 5寸320X24 显示屏幕。其具体的引脚配置如下所示:接脚编号接脚定义功能定义SUPERSTAR 定义1YDVFRAMEPD72LPVLINEPD53XCKVCLKPD44DISP3.3VDISP5VDD3.3V6VSSGND7VEE+248D7VD79D6VD6PD610D5VD5PD511D4VD4PD412D3VD3PD313D2VD2PD214D1VD1PD115D0VD0PD0LCD 与 ARM 的接口如图所示: S3C44B0XLCD 显示屏VD0D0VD1D1VD2D2VD3D3VCLKVCLKVLONEVLONEVFRAMEVFRAMEGPE7DISPLAY由于 S3C44BOX 内部集成了 LCD 控制器,所以不要外接其它驱动芯片。这给设计也带来了方 便。对于我所采用的这款 LCD 显示器,其内部不带有汉字字库,因此在设计的时候才用的是 用定义字符数组的方式来实现汉字显示的,具体的详情将在后续软件设计上讲述。由于我采 用的是 320*240 显示,因此,显示缓存需要字节数十 9600=320*240/8 2.1.7USB接口USB 总线主要用于 USB 设备与 USB 主机之间的数据通信,特别为 USB 设备与 USB 主机之间大量数据的传输提供了高速可靠地传输协议。例如:在嵌入式系统中,利用 USB 设备与微控制器构成 USB 设备。USB 设备与 PC 机 USB 主控制相连就可以实现嵌入式系统与 PC机之间的通信了,也就可以实现诸如 U 盘,移动硬盘,USB 接口打印机等功能。S3C2410内部集成了 USE 接口,而 S3C44B0X 内部没有 USE 接口,因此必须外界 USB 接口芯片才能使用 USB 接口,这里采用 USB1.1 版本得 USB 接口芯片 USBN9603 作为 S3C44B0X 扩展USB 控制器的接口芯片。该芯片由 NS 公司生产,支持 USB1.0,USB1.1 通信协议,带并行总线。他又 Non-multiplexed parallel interface mode、Multipleed parallel interface mode 及MICROWIRE interface mode3 种工作模式,由引脚 MODE1、MODE0 决定选择哪种工作模式。设计时应把 MODE1、MODE0 接地,将接口模式定义为无复用并口模式。工作于无复用并口模式时,由于 DMA 没有使用,因此把 DACK 接高电平 。MCU 要通过译码器生成的片选信号发出中断请求。USBN9603 内部结构及外部引脚如图所示: 芯片内部图入下所示:该芯片采用总线方式与 S3C44B0X 连接,S3C44B0X 通过总线操作(nGCS4 作为片选信号) 对 USBN9603 进行控制,完成 USB 得读写操作,具体线路连接入下图所示: 2.1.8网络接口 LAN91C111 芯片内部集成了 MAC 控制器,物理层控制器。MAC 控制器可以把数据 从 FIFO 中发送到物理层控制器中,再由物理层控制器发送到网络。而芯片与 CPU 的接 口比较丰富。器件特性: 支持 PnP 自动检测模式; 持 10、100Mbps 全双工模式; 软件兼容 8 位或 16 位,32 位 CPU 访问模式; 芯片内部 32 位数据总线; 支持数据突发传输; 支持多种嵌入式处理器外部总线; 内建 8KB FIFO 缓存。3操作系统的移植3.1.启动程序(bootloader) bootloader 有两大功能:初始化 CPU 和引导 Linux 内核(采用将压缩内核拷贝到内存解压方 法,这样可以加快启动速度)。 (1)初始化 CPU 1)中断向量 ARM 要求中断向量表必须放置在从 0 地址开始,连续 8? 字节的空间内。每当一个中断发 生以后,ARM 处理器便强制把 PC 指针置为向量表中对应中断类型的地址值。因为每个中断 只占据向量表中 1 个字的存储空间,只能放置一条 ARM 指令,使程序跳转到存储器的其他地 方,再执行中断处理。 所以 0 地址开始的地方,分配为 flash 的空间,在 0 地址开始处放中断向量,作为 uClinux 的启动代码,实现方式如下: b?reset add pc,pc,#0x0c000000 add pc,pc,#0x0c000000 add pc,pc,#0x0c000000 add pc,pc,#0x0c000000 add pc,pc,#0x0c000000 add pc,pc,#0x0c000000 add 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 代码。 初始化存储器系统 初始化堆栈 在初始化堆栈时应该特别注意,堆栈指针地位置一定不能和其他程序的地址相冲突,否则程 序很容易异常。 初始化有特殊要求的端口,设备 初始化用户程序执行环境 改变处理器模式 调用主应用程序 (2)引导 Linux 内核 主应用程序里放操作系统引导程序的代码,一般此处应该传递给 Linux 内核启动参数(如 ramdisk 的位置等),但程序加载内核使用 blockmemory 技术,所以不用传递参数来加载根 文件系统 rootfs。只要将 Linux 内核和 rootfs 从 flash(如图 1)拷贝到内存中相应位置(如 图 2)。拷贝完成后跳转到内核入口地址处执行。具体方法是用将压缩内核的地址转换成函 数 的 指 针 , 并 传 递 处 理 器 号 ARCH_NUMBER 。 这 在 uClinux 内 核 源 代 码 的 目 录 文 件 uClinux-dsit/linux2.4.x uClinux-dsit/linux2.4.x/arch/ARMnommu/tools/Match-types 中定义: s3c44b0 ARCH_S3C44B0 S3C44B0 178 3.2uClinux 系统内核 uClinux 的官方网站发布的最新 uClinux 移植包是 uclinux-dist-20040408,它包含了三星 S3C4510B 的源代码,可以将它移植到 S3C44B0 平台下。具体内核源代码的改动如下(其中出 现的内存地址可以参考图 4)。 (1)Linux 内核编译配置选项 文件 uClinux-distvendorsSamsungS3C44B0config.linux-2.4.x 中: #System Type CONFIG_ARCH_MBA44B0=y CONFIG_NO_PGT_CACHE=y CONFIG_CPU_32=y CONFIG_CPU_ARM710=y CONFIG_CPU_WITH_CACHE=y CONFIG_SERIAL_44B0=y DRAM_BASE=0x0c000000#SDRAM 起始地址 DRAM_SIZE=Ox01000000#SDRAM 大小 16M FLASH_MEM_BASE=0x00000000#FLASH 起始地址 FLASH_SIZE=0x00200000?#FLASH 大小 2M 以后的 make 都以 CONFIG_ARCH_S3C44B0=y 这选项来解决是编译和$3C4480相关的其他选项。(2)处理器 MAKEFILE 文件文件 uClinux-dsit/linux2.4.x/arch/ARMnommu/Makefie 中: ifeq($(CONFIG_ARCH_S3C44B0),y) TEXTADDR=0x0c008000 MACHINE=s3c44bO endif TEXTADDR=0x0c008000#表明未压缩的内核的位置 uClinux-dsit/linux2.4.x/arch/ARMnommu/boot/Makefie: ifeq($(CONFIG_ARCH_S3C44B0),y) ZRELADDR?=0x0c008000 ZTEXTADDR?=0x0c300000 endif? ZRELADDR=0x0c008000#表明未压缩的内核的位置 ZTEXTADDR=0x0c300000#表明压缩内核的位置 (3)中断向量地址 文件 uClinux-dsit/linux2.4.x/include/asm-armnommu/proc-ARMv/system.h 中 #ifdef CONFIG_ARCH_S3C44B0 #undef vectors_base() #define vectors_base()(0x0c000008) #endif 内存地址为 0x0e000008 的原因在启动程序一处已经提到过。 (4)处理器基本参数和类型 文件 uClinux-dsit/linux2.4.x/arch/ARMnommu/machs3c44b0/arch.c 中 MACHINE_START(MBA44B0,S3C4480) MAINTAINER(MacWang) BOOT_MEM(0x0c000000,0x01c00000,0x01c00000) BOOT_PARAMS(0x0c000100) INITIRQ(genarch_init_irq) MACHINE_END 其中 MACHINE_START(MBA44B0,S3C44B0)的MBA4480是在 asm/mach-types.h 里定义的平 台类型 BOOT_MEM(0x0c000000,0x01c00000,0x01c00000)指定了启动的 RAM 地址 0x0c000000,特 殊功能寄存器地址 0x01c00000,BOOT_PARAMS(0x0c000100)表示内核参数的传递地址。 文件 uClinux-dsit/linux2.4.x/arch/ARMnommu/tools/Match-types 中: s3c44b0 ARCH_S3C44B0 S3C44B0 178 178 是 arch_number 在跳转到内核时,r0=0,r1=arch_number (5)网络驱动 这里采用的芯片是 RTL8019AS,数据宽度用的是 8 位,它和 ne2000 兼容,所以只要修改 ne2000 的源代码(I/O 起始地址、中断向量号、数据宽度)就可以实现网口的驱动了。 文件 uClinux-dsit/linux2.4.x/driver/net/ne.e 中: dev-base_addr=base_addr=NE2000_ADDR; dev-irq=NE2000_IRQ_VECTOR; NE2000_ADDR 和 NE2000IRQ_VECTOR 分别是 RTL8019AS 的 I/O 起始地址和中断向量号,根据 硬件连接改成相应的值。ne_probel 函数中 wordlength=2 代表数据宽度为 16 位 ,改为 wordlength=1 代表数据宽度为 8 位。 (6)用 blockmemory 指定地址 对 rootfs 的加载一般有两种方式,用 initrd 技术和 block memory。这里用 blockmemory 技术指定 romfs 的地址。(makemenuconfig 时选定 romfs 和 romdisksupport) 文件 uClinux-dsit/linux2.4.x/driver/block/Blkmem.c 中: arena= #ifdef CONFIG_ARCH_S3C44B0 0,0x0CC00000,-1, #endif 这样只要将 mmfs 加载到相应的地址 0x0CC00000,内核就可以找到。 修改完成后,编译内核(make menconfig)时要选择支持 ramdisk 和 blkmem。ne2000 网卡驱 动,romfs 和 ramfs 文件系统,TCP/IP 协议的项。 3.根文件系统(rootfs) uClinux 源代码包里有直接生成 rootfs 的工具,它所采用的是 romfs 格式的文件系统。 小结回顾起此次嵌入式课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在这一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西, 同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识 是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过 程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得 不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师那里我学得到很多实用的知识,在此我表示感谢,同时,对学校给我这次机会表示忠心的感谢!经过将近两周的基于ARM的温度控制系统,其功能基本符合用户需求,学习了硬盘驱动的原理。虽然本系统是参考书上的例子,但我们也从发现问题,然后再进行相应的分析问题,到最后解决问题.使我在这个学期里最好的自我检察,这次系统的开发增强了我对嵌入式LINUX操作系统的理解。可能该系统还存在着许多不尽如人意的地方,比如传输的速度问题,出错处理不够等多方面问题。这些都有待进一步改善。参考文献 1 嵌入式系统与应用 周鸣争著 中国铁道出版社 2 ARM9嵌入式系统设计基础教程 黄智伟 邓月明 王彦编著 北京航空航天大学出版社 3 计算机图形学基础教程 孙家广 胡事民 清华大学出版社 4 慕春棣. 嵌入式系统的构建M . 北京: 清华大学出版社, 5 多媒体技术课程 清华大学出版社附录:部分源代码键盘程序设计 #include #include #include void keyboard(void) int key; PCONF=0X0;/使得端口 F 全为输入 PCONG=0X557A;/使得端口 G7G3 全为输出 ,G2 为外部中断,G1G2为 LCD 输出PUPG=0xFFH;/对端口 G 进行上拉while(1) if(PG4_OUT=0&PG2_EINT2=0) /判断是否有中按键发生 if(PF5_IN=0) key=0; /判断对应的值,发往中断处理程序 else if(PG6_IN=0) key=1; else if(PG7_IN=0) key=2; else if(PG8_IN=0) key=3; else if(PG5_OUT=0&PG2_EINT2=0) if(PF5_IN=0) key=4; else if(PG6_IN=0) key=5; else if(PG7_IN=0) key=6; else if(PG8_IN=0) key=7; else if(PG6_OUT=0&PG2_EINT2=0) if(PF5_IN=0) key=8; else if(PG6_IN=0) key=9; else if(PG7_IN=0) key=10; else if(PG8_IN=0) key=11; else if(PG7_OUT=0&PG2_EINT2=0) if(PF5_IN=0) key=12; else if(PG6_IN=0) key=13 ; else if(PG7_IN=0) key=14; else if(PG8_IN=0) key=15; if(key16) key_switch(key); PWM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-江西-江西工程测量工五级(初级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西放射技术员二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广西-广西土建施工人员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东防疫员一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东汽车驾驶与维修员三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东地图绘制员一级(高级技师)历年参考题库典型考点含答案解析
- 2020-2025年二级建造师之二建建筑工程实务通关考试题库带答案解析
- 2025年银行金融类-金融考试-银行业专业人员中级(法规+银行管理)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-石雕工-石雕工(高级)历年参考题库含答案解析(5套)
- 2025年综合评标专家-甘肃-甘肃综合评标专家(工程造价类)历年参考题库含答案解析(5套)
- 化学(基础模块)中职PPT完整全套教学课件
- 京东集团员工手册-京东
- 2023年苏州市星海实验中学小升初分班考试数学模拟试卷及答案解析
- GB/T 37915-2019社区商业设施设置与功能要求
- GB/T 31298-2014TC4钛合金厚板
- GB/T 27746-2011低压电器用金属氧化物压敏电阻器(MOV)技术规范
- GB/T 22237-2008表面活性剂表面张力的测定
- GB/T 13667.3-2003手动密集书架技术条件
- 导轨及线槽项目投资方案报告模板
- 复旦大学<比较财政学>课程教学大纲
- 书法的章法布局(完整版)
评论
0/150
提交评论