基于PowerPC双核处理器嵌入式Linux系统开发

更新时间:2023-07-22 13:00:51 阅读: 评论:0

胤礽怎么读邮局订阅号:82-946360元/年
技术创新
博士论坛
《PLC 技术应用200例》
您的论文得到两院院士关注
基于PowerPC 双核处理器嵌入式Linux 系统开发
Development of Embedded Linux System for Dual_core Processor of PowerPC
(中国科学院声学研究所)
王长清蔡炜蔡惠智
WANG Chang-qing CAI Wei CAI Hui-zhi
诗意网名大全
摘要:针对我们自己开发的基于PowerPC 双核处理器MPC8641D 的信号处理与存储板,阐述了嵌入式Linux 系统软件开发,主要包括交叉开发环境建立、U-BOOT 移植、内核裁减与移植以及根文件系统定制,并对Serial Rapid IO 驱动程序,进行了简要的说明。
关键词:嵌入式Linux 系统;PowerPC;U-Boot 中图分类号:TP316文献标识码:B
Abstract:In the paper,the pivotal technologies are described in implementation of embedded linux system for MPC8641D bad on PowerPC,including cross development,configuration of target,modifying of U -Boot,porting the Linux kernel and root file system.The development of rial Rapid IO driver is discusd briefly.Key words:Embedded Linux System;MPC8641D;U-Bootl
文章编号:1008-0570(2010)07-2-0005-03
1引言
Linux 操作系统源码开放,遵循GPL 声明,其源代码可以从Linux 的相关网站下载。Linux 2.6内核在支持嵌入式系统方面作了大量改进,对多核的支持、内存管理、进程调度、抢占性和响应时间等多方面性能都有显著提高,因此基于新Linux 2.6内核在嵌入式系统得到越来越广泛的应用。
我们自己开发的基于PowerPC 双核处理器MPC8641D 的ATCA 架构信号处理与存储系统,其硬件核
心采用飞思卡尔的MPC8641D 双核处理器,提供了千兆以太网、USB2.0、Serial Rap -di IO 和PCI express 高速接口,系统软件方面采用嵌入式Linux 作为操作系统。系统平台优秀集成功能,意味着更少的板卡数量和更高的处理密度,支持互联网、电信、雷达、声纳、存储以及普遍计算等高端嵌入式应用。
2嵌入式Linux 启动过程
祖宗的意思
嵌入式Linux 启动过程与针对PC 的Linux 启动过程有一定差异,嵌入式Linux 启动过程如图1示。嵌入式Linux 内核加载由Bootloader 加载后,系统跳转到内核代码的起始地址并执行。对Linux PowerPC 的初始化分为两部分:内核部分的初始化和核心进程init 的执行。内核部分的初始化将Linux 的子系统初始化完毕后,创建核心进程init,系统在处理器没有活跃进程时,执行idle 进程。核心进程init 完成Linux PowerPC 的各项配置后,将加载/sbin/init 程序初始化其他用户进程,之后执行Shell 进程,供用户与Linux 系统进行交互。
3嵌入式linux 系统软件开发
嵌入式系统及应用软件的开发一般采用主机———目标机模式,通常主机和目标机的体系架构和操作系统不同。嵌入式linux 系统软件开发,首先需要构建交叉开发环境。然后,在开发
主机上针对具体的硬件系统平台,进行嵌入式linux 系统软件相应的移植和开发,具体可分为U-Boot 、内核和根文件系统三部分移植开发任务。最后,目标代码下载到目标机调试运行。
图1嵌入式Linux 初始化流程
3.1交叉开发环境的构建
开发主机是X86架构的Linux 操作系统(windows 系统下用VMware 软件安装Linux Fedora 6.0虚拟机),目标平台是PowerPC 架构的Linux 操作系统。交叉开发环境的构建主要有两方面的工作:交叉开发工具链的建立和配置主从开发调试环境,主机和目标机接口连接如图2所示。初级英文
图2主机和目标机接口连接图
3.1.1交叉开发工具链的建立
在主机上针对目标机编写的程序,需要进行交叉编译后才能在目标机上运行。我们选择德国DENX 软件中心提供的ELDK 开发工具,在主机上,配置并安装支持MPC8641D 的嵌入
王长清:博士生
5--
术创新
《微计算机信息》(嵌入式与SOC)2010年第26卷第7-2期
360元/年邮局订阅号:82-946
《现场总线技术应用200例》
博士论坛
式交叉开发工具链(Gcc3.4.3,Glibc2.3.3,Binutils 2.15),主要步骤如下:
$./install -d /opt /ELDK ppc_74xx //安装GNU e600交叉开发工具链
$export CROSS_COMPILE=ppc_74xx-$export PATH =/opt/ELDK/usr/bin:/opt/ELDK/bin:$PATH //配置交叉开发工具链
3.1.2主从开发调试环境连接与配置
其中网卡1和目标机直接相连,可以利用TFTP 协议下载镜像文件和实现NFS 文件系统。网卡2连接到BDI2000上,通过BDI2000的JTAG 口对目标机进行调试。串口用于命令传输和调试信息的打印。在主机开发环境下,需要安装配置BDI2000和串口通信程序SecureCRT,主机和目标机IP 地址(注意目标板的IP 地址应和TFTP 服务器的IP 地址要在同一个网段内),设置TFTP 服务器和NFS 服务器。
3.2Bootloader 实现3.2.1U-Boot 程简介手机硬件检测
U-Boot 是遵循GPL 条款的Bootloader(启动引导程序)开放源码项目,支持PowerPC 、MIPS 、x86和ARM 等系列的处理器,能够加载Linux 、VxWorks 和QNX 等多种目标操作系统。U-BOOT 功能就是在操作系统内核运行之前,初始化硬件设备、建立内存空间的映射图,为最终调用内核准备好正确的软硬件环境。
U-Boot 是依赖于硬件,针对不同的系统硬件组成结构,需要对U-Boot 相关源代码进行配置和移植。移植U-Boot 工作就是添加修改与新硬件相关的代码和配置选项,然后配置编译,所以,在移植过程中,除了要熟悉硬件电路外,还要熟悉U-Boot 相关代码执行流程。对于使用MPC8641D 的系统平台U-Boot 相关关键代码执行流程如图3所示。
图3U-Boot 启动流程
3.2.2U-Boot 的移植
我们开发的基于PowerPC 双核处理器MPC8641D 的信号处理与存储硬件平台和MPC8641HPCN 开发板硬件结构相近,并且MPC8641HPCN 开发板已经获得U-Boot-1.2.0版本支持,所以移植的过程主要参考U-Boot-1.2.0中MPC8641HPCN 开发板相关代码。U-Boot 的移植的步骤说明如下:
(1)在顶层Makefile 中为开发板添加新的配置选项:ATCA_8641D_config :unconfig
@$(MKCONFIG)$(@:_config=)ppc mpc86xx atca_8641d (2)在U-Boot-1.2.0开发包目录board 下创建新的板极文件目录atca_8641d,并拷贝mpc8641hpcn 目录下相应文件,并修
改文件名。参考mpc8641hpcn 板文件,增加相应其他目录文件。
(3)修改新板配置头文件atca_8641d.h,根据硬件,配置修改local bus,DDR2,FLASH,MAC,PHY 参数的设置等内容。
督导检查工作简报(4)修改init.S 文件,设置7个local access windows,CCSR 不需要设置,具体参数设置参考系统内存映射分配。
(5)修改atca_8641d.c 文件的fixed_sdram(void)函数,增加对第二个DDR2控制器的内存颗粒支持。
(6)配置,编译,最终生成了u-boot.bin 映像文件。3.2.3U-Boot 代码启动过程中双核的处理
在bootloader 阶段,大多数的多核系统的启动过程都由一个处理器完成,其它处理器处于待命状态。在Powerpc 平台规范中,负责启动的处理器称作主处理器,其余的称为从处理器。在SMP (对称多处理系统)系统中,MPC8641D 的核0作为主处理器,完成操作系统的初始化后激活核1,并做一些基本初始化后,跳转到Linux 复位向量0x100处。
3.3内核的移植
内核移植包括CPU Core 移植、硬件平台移植和系统外围驱动程序开发。Linux-2.6内核支持MPC8641D 处理器和开发板上大部分硬件,因此移植的主要任务是硬件平台裁减移植和系统外围驱动程序开发。
3.3.1内核的移植
我们使用的是Linux-2.6.23版本内核,直接对Linux-2.6.23支持的mpc8641hpcn 板的代码进行修改与移植。
内核移植的步骤如下:
(1)修改顶层Makefile 增加编译选项
ARCH:=powerpc
CROSS_COMPILE:=powerpc-linux-(2)裁减内核
#make mpc8641_hpcn_defconfig
#make menuconfig //应裁减掉内核中所有与本系统
无关的模块。
#make //编译完成后生成的内核映像uImage 。(3)dts 文件的修改
U-Boot 加载Linux 系统时,dtb 文件需要被放入到指定的内存中,供LINUX 系统引导时使用,获得系统的硬件信息,而dtb 文件由dts 文件产生。根据系统硬件信息对mpc8641hpcn 的DTS 文件修改,进而生成系统dtb 文件。
3.3.2Serial Rapid IO 驱动模块
Serial Rapid IO 是一种点对点数据包交换的高性能互联技术,由RapidIO 协会制定,采用串行时钟和数据传输,非常适合芯
片至芯片、
电路板至电路板和背板互联应用。Serial Rapid io 驱动程序基于交换机的小型系统架构,采用模块化编程,主要实现了系统设备枚举以及配置路由、I/O 事务和消息传递事务。
3.4根文件系统的实现
Li nux 系统采用文件系统组织系统的文件与设备,为设备和用户程序提供统一的接口。文件系统的存在使得数据和设备可以被有效而透明地存取访问。本系统调试阶段实现的是NFS 网络文件系统,在系统的部署阶段实现的是Ramdisk 的根文件系统。
NFS 的实现,在开发主机上基于PowerPC8641D 的ELDK 交叉开发环境中,ELDK/PPC_74XX 目录下提供了给目标系统提供一个NFS 根文件系统。目标机通过网络引导Linux 系统,需要主
6--
邮局订阅号:82-946360元/年技术创新
博士论坛
《PLC 技术应用200例》您的论文得到两院院士关注
机提供NFS 服务。
Ramdisk 就是用内存空间来模拟出硬盘分区,Ramdisk 通常使用磁盘文件系统的压缩存放在flash 中,在系统初始化时,解压缩到SDRAM 并挂载根文件系统。Ramdisk 根文件系统的定制的步骤如下:
*创建根文件系统目录。
*创建各种必要的系统文件。*创建设备文件。
*建立启动相关的配置文件。*安装库文件glibc 。
*编译busybox,安装系统软件和应用。
4系统的部署
嵌入式Linux 系统软件(u-boot 、内核和根文件系统)开发完成后,并在交叉开发环境下成功测试,经过系统部署后就是能够在目标机上本地启动运行。
系统部署的基本流程如下:通过BDI2000把系统映像和文件(u-boot 映像、
内核映像、根文件系统映像和DTS 文件)烧写到FLASH 相应位置,U-Boot 的映像文件必须烧写到Flash
的起始位置0xfff00100处,让U-Boot 自动引导目标板即可。
5结束语
针对我们开发的基于PowerPC 双核处理器MPC8641D 的ATCA 架构信号处理与存储硬件平台,已经成功实现了基于2.6.23内核嵌入式Linux 系统的开发与部署,并在硬件平台上,稳定的运行。本文不仅对于PowerPC 双核高端处理器平台的Linux 系统软件开发和系统设计,有很好的借鉴作用,由于Linux 系统软件开发基本的方法和步骤是相同的,而且对不同的CPU 和开发板的嵌入式系统软件开发者提供很好参考。
本文作者创新点:1.针对双核PowerPC 处理器嵌入式Lin -ux 系统的移植。2.实现单片双核CPU 的SMP(对称多处理)系统。参考文献
环保文章
[1]Freescale Semiconductor Corp.MPC8641D Integrated Host Pro -cessor Family Reference Manual[Z].Rev.1,2008
[2]王齐.Linux PowerPC 详解——
—核心篇[M].机械工业出版社.2008:380-414.
[3]孙纪坤,张小全.嵌入式Linux 系统开发技术详解——
—基于ARM[M].北京:人民邮电出版社,2006.73~86.
[4]李相国,杨树元.基于PowerPC 的嵌入式SMP 系统设计[J].微计算机信息,2009,259(5-2):24-26.
作者简介:王长清(1973-),男,中国科学院声学研究所博士生,主研方向:信号处理和嵌入式系统设计;蔡炜,博士生;蔡惠智,研究员。
Biography:WANG Chang-qing(1973-),male,(Han Nationality),Henan,Institute of Acoustic,Chine Academy of Science,PH.D Candiadate,Rearch area:Signal Processing and Embedded System design.
(100190北京中国科学院声学研究所)王长清蔡炜蔡惠智(Institute of Acoustic,Chine Academy of Science,Beijing 100190,China)WANG Chang-qing CAI Wei CAI Hui-zhi 通讯地址:(100190北京北四环西路21号中国科学院声学研究所DSP 大楼301二部五室)王长清
(收稿日期:2009.08.18)(修稿日期:2009.11.18)
(上接第85页)
如果缓冲区有数据则立刻读取,否则将线程阻塞在缓冲区非空条件变量上,这时线程会暂时释放互斥
锁,其它线程开始继续运行。当CAN 接收线程读取到一帧数据后,获得互斥锁并将其写入缓冲区,然后设置缓冲区非空信号,这时被阻塞的读数据线程继续运行。这种同步机制确保接收到CAN 数据后,读数据线程能够立刻对其进行处理。CAN 总线数据采集流程如图3所示。
4程序的移植
应用程序经编译后生成可执行文件,再将其移植到嵌入式系统中运行。程序的移植过程:
(1)烧写引导程序BOOTLOADER 。常见的有U-BOOT 、VIVI 等。
周末用英语怎么说
(2)生成Linux 内核和根文件系统。
对Linux 内核进行裁减和编译,生成内核映像文件,用BUSYBOX 软件制作一个根文件系统,将内核和根文件系统烧写到FLASH 芯片中。
(3)移植Qt/E 库文件。
将交叉编译Qt/E 生成的库文件下载到根文件系统中,为了适应嵌入式系统的硬件环境,通常应在编译库文件时对Qt/E 进行裁减,去掉不需要的功能。
(4)把程序的可执行文件拷贝到根文件系统中。并设置库文件的路径等环境变量。
5结束语
将程序移植到S3C2410系统中,并连接4个CAN 控制器,组成了一个简易的监控系统模型。通过测试,程序可以稳定运行,监控分机的图形界面操作可以迅速获得响应。同时采集4个控制器数据与采集单个控制器所耗时间相差不多,可见使用多线程可以明显提高数据传输效率。
本文作者创新点:把Qt/E 图形界面系统应用到粮库监控系统,实现了粮情数据的现场显示和查询。并利用其多线程功能实现CAN 总线多机通讯,提高了数据采集效率。其设计思想也可应用于其它监控领域。参考文献
[1]陈涛,王仲东.基于嵌入式工作站的粮情监控系统[J].微型机与应用,2004,(8):39-43.
[2]Trolltech.Qt Reference Documentation [EB/OL].ll -/4.3/index.html,2008.
[3]刘伟民,韩斌,李征.基于linux 的数据采集及在QT 界面的显示[J].微计算机信息,2008,24(8):97-99.
作者简介:许晓东(1983-),男(汉族),河南人,硕士研究生,研究方向:网络化自动控制技术、嵌入式系统;李秀娟,女,教授,硕士生导师,研究方向:智能控制与微系统、计算机应用;纪赖恩(1984-),男,硕士研究生,研究方向:智能控制、数据库。Biography:XU Xiao-dong(1983-),Male(Han),Henan Province,Master,Rearch Field:Network -bad automatic control te
ch -nology,Embedded Systems.
(450007河南郑州河南工业大学电气工程学院)许晓东李秀娟
纪赖恩
(College of Electrical Engineering,Henan University of Tech -nology,Zhengzhou,450007,China)XU Xiao-dong LI Xiu-juan JI Lai-en
通讯地址:(450007河南省郑州市河南工业大学)许晓东
(收稿日期:2009.08.31)(修稿日期:2009.11.30)
7--

本文发布于:2023-07-22 13:00:51,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1110821.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   开发   移植
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图