位置:51电子网 » 技术资料 » 嵌入式系统

一种嵌入式Linux平台的软硬件设计

发布时间:2008/5/27 0:00:00 访问次数:512

摘要:介绍了一种嵌入式linux操作系统--uclinux,给出了一种mcf5272硬件平台的设计,并实现了uclinux在该目标板上的移植,讲述了mcf5272处理器平台硬件设计和uclinux板移植的一般性方法。

关键词:uclinux mcf5272 移植

1 操作系统uclinux

linux是一种很受欢迎的类unix操作系统,它免费并开放源代码,在个人计算机、服务器领域应用广泛。更重要的是,linux采用模块化设计,实际应用中可以定制,因此linux也适用于嵌入式领域。uclinux正是linux的一个嵌入式版本,其内核的二进制映像文件可以做到小于512kb。

uclinux针对无内存管理单元mmu(memory management unit)的处理器设计,支持多任务,具有完备的tcp/ip协议栈并支持多种网络协议。uclinux还支持多种文件系统,如romfs、nfs、fat16/32。实际上,uclinux已经成功应用于路由器、网络摄像机、机顶盒、pda等诸多领域。

另外,uclinux可移植性很强,用户通过重新配置、编译内核,很方便将其移植到68k、dragon ball、coldfire、power pc、arm等多种处理器计算平台。当前uclinux提供2.0和2.4两个内核版本。从内核版本2.2开始,linux被设计成与ieee posix标准兼容的系统,这意味着大部分已有的unix程序,源代码不经修改就可以进行编译并移植到新的目标平台。笔者选择了2.4内核的uclinux作为平台操作系统。

2 硬件平台设计

2.1 处理器

目标平台cpu采用motorola公司生产的coldfire嵌入式处理器mcf5272。mcf5272采用coldffirev2可变长risc处理器核和digitaldna技术,在66mhz时钟下能够达到63mips@dhrystone2.1的优良处理能力。其内部sim(system integrated module)单元集成了丰富的通用模块,如10/100mbps快速以太网控制器、usb1.1接口等,并且能够与常用的外围设备(如sdram、isdn收发器)实现无缝连接,从而简化了外围电路设计,降低了产品成本、体积和功耗。

2.2 系统内存

系统内存由三部分组成。mcf5272内部集成了4k字节的sram(静态ram)以及片外扩展的flash(闪烁存储器)和sdram(同步动态ram)。flash容量为1m×16bit,amd29lv系列,片选信号为cs0,用于存放矢量表、uclinux内核映像及romfs文件系统。sdram采用两片hy系列4m×16bit的sdram,共同组成16m、32位宽的系统主存储器。sdram片选信号为cs7。

2.3 通用外设

mcf5272内部集成了uart、usb控制器,只需很少的外围芯片就可以实现两个rs232串口和一个usb slave接口。mcf5272还内嵌一个fec(快速以太网控制器),片外扩展一片lxt971,可方便地实现了一个100/10 base t的以太网接口。

2.4 调试接口

coldfire系列处理器支持背景调试模式(bdm),它提供了对底层硬件的调试手段。在背景调试模式下,通过向cpu发送命令,可以实现对cpu寄存器、系统存储器的访问。使用motorola推荐的26针插座接到bdm仿真头,实现代码的下载和调试。

3 移植uclinux到目标平台

3.1 uclinux的启动过程

uclinux的启动通常经历三个阶段。首先,它必须完成cpu和存储器的硬件初始化。在系统ram中建立程序堆栈和数据段(包括data和bss数据段),建立程序的运行时环境。如果romfs是ram驻留的,也必须对其进行初始化。

最初的初始化完成后,uclinux内核就取得了cpu的控制权,开始操作系统自身的初始化。这包括建立ram中断矢量表、加载设备驱动程序、内存管理模块等。这一切完成后,uclinux启动一个最初的init线程,进入到第三阶段。这时候内核已经正常运行,外围模块也都就绪,开始执行一些脚本文件(如/etc/rc脚本文件)。这通常是嵌入式开发者最感兴趣的一个切入点。

3.2 编写硬件相关代码

作为源代码公开的免费操作系统,uclinux源代码可以从www.uclinux.org得到。这个源代码也在不断更新。笔者使用的是于2002年5月发布的greg ungerer(gerg@snapgear.com)版本。该版本的uclinux包含了对motorola公司m5272c3和其他几款mcf5272评估板的支持。但与笔者的目标平台相比,硬件资源并不完全相同,且为ram版本,并不能直接固化到rom中。于是决定直接在m5272c3的基础上进行修改,以减少工作量。

需要添加三个文件:crt0_rom.s、sysinit.c和rom.ld。crt0_rom.s可以由crt0_ram.s修改得到,它提供一个rom矢量表以供cpu上电时读取,并初始化cpu寄存器,设置程序堆栈,并最终跳转到uclinux内核。mem_size也必须修改为实际容量。

……

#define mem_size 0x01000000 //实际的sdram为16m

……

_vectors: //矢量表起始地址

.long 0x0, _start, _fault, _fault,… //初始化1k字节矢量表

……

_start: nop

move.w #0x2700, %sr //关中断

move.l #_vectors, %d0

move.c %d0, %vbr //vbr指向flash

move.l #0x10000001, %d0 <

摘要:介绍了一种嵌入式linux操作系统--uclinux,给出了一种mcf5272硬件平台的设计,并实现了uclinux在该目标板上的移植,讲述了mcf5272处理器平台硬件设计和uclinux板移植的一般性方法。

关键词:uclinux mcf5272 移植

1 操作系统uclinux

linux是一种很受欢迎的类unix操作系统,它免费并开放源代码,在个人计算机、服务器领域应用广泛。更重要的是,linux采用模块化设计,实际应用中可以定制,因此linux也适用于嵌入式领域。uclinux正是linux的一个嵌入式版本,其内核的二进制映像文件可以做到小于512kb。

uclinux针对无内存管理单元mmu(memory management unit)的处理器设计,支持多任务,具有完备的tcp/ip协议栈并支持多种网络协议。uclinux还支持多种文件系统,如romfs、nfs、fat16/32。实际上,uclinux已经成功应用于路由器、网络摄像机、机顶盒、pda等诸多领域。

另外,uclinux可移植性很强,用户通过重新配置、编译内核,很方便将其移植到68k、dragon ball、coldfire、power pc、arm等多种处理器计算平台。当前uclinux提供2.0和2.4两个内核版本。从内核版本2.2开始,linux被设计成与ieee posix标准兼容的系统,这意味着大部分已有的unix程序,源代码不经修改就可以进行编译并移植到新的目标平台。笔者选择了2.4内核的uclinux作为平台操作系统。

2 硬件平台设计

2.1 处理器

目标平台cpu采用motorola公司生产的coldfire嵌入式处理器mcf5272。mcf5272采用coldffirev2可变长risc处理器核和digitaldna技术,在66mhz时钟下能够达到63mips@dhrystone2.1的优良处理能力。其内部sim(system integrated module)单元集成了丰富的通用模块,如10/100mbps快速以太网控制器、usb1.1接口等,并且能够与常用的外围设备(如sdram、isdn收发器)实现无缝连接,从而简化了外围电路设计,降低了产品成本、体积和功耗。

2.2 系统内存

系统内存由三部分组成。mcf5272内部集成了4k字节的sram(静态ram)以及片外扩展的flash(闪烁存储器)和sdram(同步动态ram)。flash容量为1m×16bit,amd29lv系列,片选信号为cs0,用于存放矢量表、uclinux内核映像及romfs文件系统。sdram采用两片hy系列4m×16bit的sdram,共同组成16m、32位宽的系统主存储器。sdram片选信号为cs7。

2.3 通用外设

mcf5272内部集成了uart、usb控制器,只需很少的外围芯片就可以实现两个rs232串口和一个usb slave接口。mcf5272还内嵌一个fec(快速以太网控制器),片外扩展一片lxt971,可方便地实现了一个100/10 base t的以太网接口。

2.4 调试接口

coldfire系列处理器支持背景调试模式(bdm),它提供了对底层硬件的调试手段。在背景调试模式下,通过向cpu发送命令,可以实现对cpu寄存器、系统存储器的访问。使用motorola推荐的26针插座接到bdm仿真头,实现代码的下载和调试。

3 移植uclinux到目标平台

3.1 uclinux的启动过程

uclinux的启动通常经历三个阶段。首先,它必须完成cpu和存储器的硬件初始化。在系统ram中建立程序堆栈和数据段(包括data和bss数据段),建立程序的运行时环境。如果romfs是ram驻留的,也必须对其进行初始化。

最初的初始化完成后,uclinux内核就取得了cpu的控制权,开始操作系统自身的初始化。这包括建立ram中断矢量表、加载设备驱动程序、内存管理模块等。这一切完成后,uclinux启动一个最初的init线程,进入到第三阶段。这时候内核已经正常运行,外围模块也都就绪,开始执行一些脚本文件(如/etc/rc脚本文件)。这通常是嵌入式开发者最感兴趣的一个切入点。

3.2 编写硬件相关代码

作为源代码公开的免费操作系统,uclinux源代码可以从www.uclinux.org得到。这个源代码也在不断更新。笔者使用的是于2002年5月发布的greg ungerer(gerg@snapgear.com)版本。该版本的uclinux包含了对motorola公司m5272c3和其他几款mcf5272评估板的支持。但与笔者的目标平台相比,硬件资源并不完全相同,且为ram版本,并不能直接固化到rom中。于是决定直接在m5272c3的基础上进行修改,以减少工作量。

需要添加三个文件:crt0_rom.s、sysinit.c和rom.ld。crt0_rom.s可以由crt0_ram.s修改得到,它提供一个rom矢量表以供cpu上电时读取,并初始化cpu寄存器,设置程序堆栈,并最终跳转到uclinux内核。mem_size也必须修改为实际容量。

……

#define mem_size 0x01000000 //实际的sdram为16m

……

_vectors: //矢量表起始地址

.long 0x0, _start, _fault, _fault,… //初始化1k字节矢量表

……

_start: nop

move.w #0x2700, %sr //关中断

move.l #_vectors, %d0

move.c %d0, %vbr //vbr指向flash

move.l #0x10000001, %d0 <

相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!