当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]一种嵌入式Linux平台的软硬件设计

摘要:介绍了一种嵌入式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

move.c %d0, %MBAR //SIM单元基地址

0x10000000

move.l #0x20000001, %a0

//SRAM起始地址0x20000000

move.c %a0, %RAMBAR0

//初始化SRAM作为堆栈

move.l #0x20001001, %a7 //设置堆栈指针

……

下面对MCF5272的UART、GPIO以及SIM单元进行初始化。Motorola网站提供了这样的例程(sysinit.c)。需要针对实际情况做必要的修改,主要就实际占用的片选资源CS0~CS7、SDRAM控制寄存器SDCR、SDTR作一些修改以适应目标板。以下的程序片段描述了对SDRAM的初始化。

……

/*初始化CS7 16MB SDRAM */

MCF5272_WR_CS_CSBR7(imm, 0

|MCF5272_CS_BR_BASE(SDRAM_ADDRESS)

|MCF5272_CS_BR_SDRAM

|MCF5272_CS_BR_PS_LINE

|MCF5272_CS_BR_EN);

MCF5272_WR_CS_CSOR7(imm, 0

|MCF5272_CS_OR_MASK_16M

|MCF5272_CS_OR_WS(0x1F));

……

/*初始化SDRAM控制寄存器SDCTR、SDCCR*/

MCF5272_WR_SDRAMC_SDCTR(imm, 0xF539);

MCF5272_WR_SDRAMC_SDCCR(imm, 0x4311);

由于代码在SDRAM中运行的速度比在FLASH中更快,而且在该目标平台中,SDRAM是32位数据总线,而FLASH是16位总线,因此代码在ROM中运行和在RAM中运行的速度有着显著差异。考虑到这些因素,采取将uClinux内核和ROMFS文件系统复制到SDRAM中运行的模式。这虽然会牺牲一些系统的启动速度,并导致一些额外的系统内存开销,但是换来的是系统整体性能的提高,因此是值得的。

uClinux会从内存中的某个位置加载ROMFS作为根文件系统。当ROMFS为RAM驻留时,缺省位置紧接着BSS段(参考drivers/block/blkmem,c)。ROMFS文件系统的二进制映像romfs.img在ROM中的实际存放地址可以根据rom.ld文件计算。由于BSS数据段存放的是未初始化的数据,直到运行时才建立,因此使用m68k-elf-objcopy生成的内核二进制映像文件linux.bin中并无BSS段。Romfs.img的起始地址应该是: ROM代码段结束地址+RAM代码段长度+DATA数据段长度;而复制的目标地址就是BSS段的结束地址,这是一个VMA地址,可以从rom.ld文件中直接获得。

3.3 修改启动脚本

在uClinux完成内核初始化后,由init(void *)内核线程调用/bin/init,然后执行/etc/rc脚本中的命令。可以利用这个脚本完成系统上电后的自动配置,或者运行用户程序。ROMFS文件系统中/etc/rc的源文件是/vendors/Generic/big/etc/rc。

一个典型的rc文件如下所示。它完成以太网的设置并执行用户程序/bin/usrapp。

#设置主机名

hostname uClinux

/bin/expand /etc/ramfs.img /dev/ram0

mount -t proc proc /proc

mount -t ext2 /dev/ram0 /var

ifconfig lo 127.0.0.1

route add -net 127.0.0.0 netmask 255.0.0.0 lo

#配置网卡IP和路由

ifconfig eth0 202.119.45.98

ifconfig eth0 broadcast 202.119.45.255

route add -net 202.119.45.0 eth0

route add default gw 202.119.45.1

#执行用户程序

/bin/usrapp

3.4 内核的配置和编译

需要建立一个交叉编译环境来完成内核和应用程序的编译,生成ROMFS文件系统,并最终形成一个固化文件。www.uclinux.org也提供这样一个工具包。正确安装后,就可以进行编译了。首先进入源代码目录uClinux-dist,执行make xconfig,在弹出的对话框中选择"Target Platform Selection",出现图1所示的对话框。

由于直接对M5272C3评估板的代码进行修改,因此目标板选择M5272C3。内核版本号选择2.4,采用uC-libc库。另外选中"Customize Kernel Settings"以定制需要的内核。在内核配置对话框中,将RAM大小配置为16MB,确认ROMFS为RAM驻留。为了可以直接mount宿主机硬盘以方便调试,还需给内核添加对NFS文件系统的支持。

配置完毕后,在源代码目录执行"make dep"以及"make",就得到了需要的二进制内核映像image.bin,可以直接下载到目标板运行。

参考文献

1 MCF5272 ColdFire Integrated Microprocessor User's Manual, Rev. 1,02/2001

2 Daniel P.Bovet, Marco Cesati. Understanding the Linux Kernel, 1st Edition, October 2000

3 M5272C3 Evaluation Board Schemetic. Rev. 1.2, 2000

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海2023年9月1日 /美通社/ -- 今日,阿斯利康在神经纤维瘤病领域首个创新药物科赛优®(英文商品名:Koselugo,通用名:硫酸氢司美替尼胶囊)正式上市,惠及3岁及3岁以上伴有症状、无法手术的丛状神经纤...

关键字: BSP ROM SI ATOS

杭州2023年8月25日 /美通社/ -- 8月17日,以"绿色永续制造"为主题,正泰新能常务副总裁、可持续发展官黄海燕在在近期的一次公开演讲中,公布了以2028年、2035年和2050年为主要时间节...

关键字: 可持续发展 光伏组件 ROM 节点

刚入门嵌入式,选入门级RZ/G2L开发板,采用邮票孔形式封装了RZ/G2L核心板。

关键字: 开发板 嵌入式LINUX 嵌入式系统

BIOS (Basic Input Output System)是基本输入u出系统,它是为电脑中的硬件提供服务的。BIOS属于只读存储器,它包含了系统启动程序、系统启动时必需的硬件设备的驱动程序、基本的硬件接口设备驱动程...

关键字: BIOS 芯片 ROM

上海2023年2月10日 /美通社/ -- 华盛顿时间2023年2月8日,丹纳赫宣布,Veralto Corporation将成为丹纳赫计划于2023年第四季度创建的独立上市公司的名称。 Veralto将...

关键字: BSP AN ROM METER

苏州2023年2月8日 /美通社/ -- 自春节档以来,电影《流浪地球2》成为网络上的热门话题之一,票房已超过30亿。影片中的视觉影像,演员的表现以及超凡的 AI 技术,收获了一大批影迷的强烈追捧。在电影拍摄的拍摄阶段与...

关键字: HDR 监视器 EDGE ROM

在这篇文章中,小编将对MCU的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: MCU 微控制器 ROM

台湾桃园2022年10月26日 /美通社/ -- Chroma致茂电子于21日发表新一代Chroma 3650-S2高效能Power IC 测试平台,吸引了超过60家台湾半导...

关键字: POWER ROM IC测试 测试平台

(全球TMT2022年10月26日讯)Chroma致茂电子于21日发表新一代Chroma 3650-S2高效能Power IC 测试平台。 发表会现场实机展示新一代Chroma 3650,吸引众多半导体先进目光...

关键字: POWER ROM IC测试 测试平台

百奥赛图(北京)医药科技股份有限公司的全资子公司祐和医药科技(北京)有限公司宣布与临床阶段的美国生物制药公司Syncromune达成协议,共同开发和商业化基于Syncrovax™技术的瘤内免疫疗法。Syncrovax™平...

关键字: ROM OV
关闭
关闭