论文研究-基于ARM的嵌入式uClinux系统设计 .pdf

所需积分/C币:10 2019-08-17 00:03:24 370KB .PDF
17
收藏 收藏
举报

基于ARM的嵌入式uClinux系统设计,杨庚,阳春华, 本文介绍了一种嵌入式Linux操作系统-uClinux,给出了一种S3C4510B硬件平台的设计,并实现了uClinux在该目标板上的移植。
中国武技论又在线 http://www.paperedu.cn ARM7系列微处理器的主要应用领域为:工业控制、 Internet设备、网络和调制解调设备以 及移动电话等多种多媒体和嵌入式应用 2.1.2ARM处理器内核的选择 ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ,以 适应不同的应用领域.其中, ARMTTⅧI是日前使用最广泛的32位嵌入式RISC处理器,属低端 ARM处理器核。TDMI的基木含义为: 支持16为压缩指令集humb; D:支持片上 Debug,允许处理器响应调试请求暂停; M:内嵌硬件乘法器( Multiplier),产生仝64位结果 嵌入式ICE,支持片上断点和调试点 Scan Chain 2 Scan Chain 0 RANG三ouT0 RANGEOUTt EXTERNT ICEBreaker EXTERNO ore A nMR三Q Other A[31可 Signals Scan Chain t TAP controller TCK TMS nTRST TDI TDO TAPSM[可3可scRc〖:可 图(2)ARM7TDMI体系结构图 ARM7TDML采用三级沇水线结构,指令执行分为取指、译码和执行等三个阶段。没有MMU,不 支持 Windows ce和标准 Linux,目前有 uclinux等不需要M支持的操作系统可运行于 ARM7TDI硬件平台之上。事实上, uclinux已经成功移植到多种不带MU的微处理器平台上, 并在稳定性和其他方面都有上佳表现。用户如果希望使用WiCE或标准 Linux等操作系统以减 少软件开发时间,就需要选择ARM720T以上带有MM( Memory management tnit)功能的ARM 芯片,ARM720T、ARM920T、ARM22T、ARⅥ946、 Strong-ARM都带有M功能。本人进入课题 所研究的S3C1510B即为一款不带MⅦ的ARM微处理器,可在其上运行 uclinux操作系统。 2.1.3构建 ARM-uClinux开发板 中国科技论文在线 http://www.paper.edu.cn uClinux只需要极少的硬件资源就可运行起来,以ARM7TDMI为例,只需要以下硬件: 1. CPU- Samsung S3C4510B; 2.SRAM8M以上; 3.一个简易的串口; 4. 2M Flash: 5.一个以太网接口(可选)。 5V稳压 DC-DC 电源 转换器 晶振电路 系统总线扩展 JTAG接口 SDRAM s3c4510B R45以太网接口 ARM7TDMI FLASH 9针D型串行接口 120存储器 图(3)图基于S3C4510B的开发板框图 S3C4510B整个丌发板的结构大致如上图所示,是由三星公司推出的款具有很高性价 比的16/32位RISC微控制器,采用的是ARM公司提供的ARM7 TDMI RISO处理器核。由于它 具有高性能、低功耗等优点,因此特别合于对价格和功耗比较敏感的应用场合,如手持设 备、网络通信和工业控制等 除了 ARM7TDM核以外,S3C4510B比较重要的片內外围功能模块包括: 2个带缓冲描述符( Buffer descriptor)的HDLC通道 2个UART通道 2个GDMA通道: 2个32位定时器; 18个可编程的I/0口。 片内的逻辑控制电路包括: 中断控制器 DRAM/ SDRAM控制器; ROM/SRM和 FLASH控制器 系统管理器(在整个系统中起着至关重要的作用); 个内部32位系统总线仲裁器(决定是哪个部件占用总线,任一时刻只允许一个部件 中国利技论文在线 http:/www.paper:edu.cn 占用总线) 个外部存储器控制器。 2.2嵌入式操作系统 uClinux linuⅹ是对 Linux的裁减,其基本思想就是厶掉标准Linuⅹ里的虚拟存储器管理功 能(虽然强大的存储器管理功能是标准 Linux的一大优点),这样一方面减小了内核的体积 其内核的二进制映象文件可以做到小」512KB;另一方面又增强了系统的实时性能。 uClinux 是基于 Liunx2.0或者 Linux2.4的,从内核2.2开始, linux被设计成与⊥ EEE POSIX标准 兼容的系统,这意味着大部分已有的UNX程序、源代码不经修改就可以进行编译并移植到 新的日标平台。我所进入的课题研究是选择了2.4内核的 uclinux作为平台操作系统。日前 uClinux经被移植到很多的处理器平台上,包括我提到的ARM,还有68k、 PowerPc等平台 实际上 uClinux已经成功应用于路由器、网络摄像机、机顶盒、PDA等诸多领域. uClinux 的源代码和开发工具可以免费从http://www.uclinux.org上下载得到。 用户进程 函数库 系统调用 文件系统 进程管理 内存管理 图(4) uclinux内核结构 图(4)代表了内核的功能结构,与 Linux基本相同,不同的只是对内存管理和进程管理进 行改写,以满足无MIU( Memory Management Unit)处理器的要求。 uClinux是 Linux操作 系统的一种,是专为没有MU的微处理器(如 ARM7TDMI、 Coldfire等)设计的嵌入式 Linux 操作系统。另外,由于大多数内核源代码都被重写, uClinux的内核要比原Liux2.0内核 小的多,但保留了 Linux操作系统的主要优点:稳定性,优异的网终能力以及优秀的文件 系统支持。 2.2.1 uClinux的内存管理 中国刷技论文在线 http://www.paper.edu.cn uClinux是专门针对没有MMU的处理器而设计的,即 Clinux无法使用处理器的虚拟内存 管理技术。实际上 uclinux釆用实存储器管理策略,通过地址总线对物理内存进行直接访问。 所有程序中访问的地址都是实际的物理地址,所有的进程都在个运行空间中运行(包括内 核进程),这样的运行机制给程序员带来了不小的挑战,在操作系统不提供保护的情况下必 需小心设计程序和数据空间,以免引起应用程序进程甚至是内核的崩溃。 uClinux仍然采用存储器的分页管理,系统在启动时把实际存储器进行分页,在加载应用程 序时程序分页加载。个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全 部载入上存储器的连续空间中。系统不含M带来的另外一个问题是磁盘交换空间无法使 用,对于资源有限的嵌入式系统而言,系统执行时如果缺少内存将无法通过磁盘交换来得到 改善。MU的省略虽然带来了系统及应用程序廾发的限制,但对」成木和体积敏感的嵌入式 设备而言,其应用环境和应用需求并不要求复杂和相对昂贵的硬件体系,对于功能简单的专 用嵌入式设备,内存的分配和管理完全可以由开发人员考虑。 2.2.2 uclinux的多进程管理 由」 uClinux没有MMU管理存储器,在实现多个进程时需要实现数据保护。 uclinux虽然 支持fork函数,但其实质是 vfork:实际上C1inux所有的多进程管理都通过 vfork米实现。 vfork不拷贝父进程的页面,只是初始化私有的数据结构与准备足够的分页表。调用完成后 父子进程事实上共享同一块存储器,因此子进程可以史改父进程的数据堆栈信息,所有父 进程进入睡眠,直到了进程执行eκecε当了进程正桷丌始执行后,将唤陧父进程,使得父进 程继续往后执行。这意味着υ Clintⅹ系统fork调用宄程后,要么子进程代替父进程执行(此 时父进程已绎休眠)直到子进程调用exit退出,要么调用exec执行一个新的进程 vfork是 uclinux与标准 Linux应用程序的开发中最重要的个同之处,只有对vork与 fork两个函数的差异和程序处理有详绌的了解才能顺利地完成从 linux到 uclinux的程序 移植。 3.移植 uclinux到目标平台 3.1 uclinux针对硬件的改动 由于嵌入式操作系统的运行是与嵌入式系统的硬件密切相关的,而硬件的设计则会因为 使用场合的不冋而千差万变,因此,在 uclinux内核源代码中和硬件相关的部分就应该针对 特定的硬件作出适当的修改,由于 uClinux内核源代码包含很人一部分的硬件驱动程序,不 可能一一列举。在此,就基于S3C4510B的最小系统的设计与运行相关的部分作简单的介绍 uClinux内核源代码中对S3C4510B片内特殊功能奇存器以及其他相关硬件信息的定义位 F uClinux-Samsung/Linux-2. 4.x/include/asm-armnommu/arch-samsung/hardware. h 文件中,其中有几个地方值得注意: 国技论又在维 http://www.paper.edu.cn / x define s3c4510b Cpu master clock 水/ #define mhz 1000000 #define fMCLK MHz (50=*MHz) #define fMCLK (fMCLK MHz/MHz) #define mclk2 (fMCLK MHz/ 2) 以上定义了系统T作的主时钟频率为50MHz,若用户系统的工作频率不同,应在此处修改, 若串行口采用内部时钟信号用于波特生成,该频率同时还与串行通信波特率有关 /k System Memory Control Register k /半求***半米米***×****米求****/ #define dsro(2<<0) /* rom bank ** #define DSRl(0<<2) *0: Disable, 1: Byte, 2: Half-word, 3: word * #define dsr (0<<4) #definc DSR3 (0<<6) #define DSR4(0<<8) #define DSR5 (0<<10 #define Dsdo(2<<12) RAM BankO ** #definc DSD1(0<<14) #define DSD2(0<<16) #define DSD3((<<18) #define dSXo(0<<20)/* EXTIoo * #define DSX1(0<<22) #define DSX2(0<<24) #define DSX3(0<( 26) #define rEXTDBWTH(DSRO DSRI DSR2 DSR3 I DSR4 DSR5 DSDO DSD1 DSD2 DSD3 DSXO DSX1 DSX2 I DSX3 以上定义了系统存储控制器,按照以上定义,ROM/ SRAM/FLASH Bank0定义为16位数据宽度 (事实上,ROM/ SRAM/FLASII Bank0的数据宽度由 BOSIZE[:0]的状态决定),而 ROM/SRAM/ FlaSh Bank1-ROM/SRAM/ FlaSh Bank5禁用; DRAM/SDRAM/Bank0定义为16位数据 宽度, DRAM/SDRAM Bank1-DRAM/ SDRAM Bank3禁用:外部Ⅰ/0组仝部禁用:若用户系统的 存储器系统配置不同,应在此处修改。之后还做了其他一些改动,包括对ROM/ SRAM/ FLASH 7 山国利技论文在线 http://www.paper.edu.cn Bank0控制寄存器的设置, FLASH容量的设置,DRAM/ SDRAM Bank0掉制寄存器的设置, SDRAM 容量的设置等,这些设置均应该与用户系统对应 3.2 uClinux的启动过程 uClinux的启动通常经历三个阶段。首先,它必须完成CPU和存储器的硬件初始化。在 系统RAM中建立程序堆栈和数捃段(包括DATA和BSS数据段),建立程序的运行时环境。 如果 ROMFS是RAM疰留的,也必须对其进行初始化。最初的初始化完成后, uClinux内核 就取得了CU的控制权,开始操作系统自身的初始化。这包括建立KAM中断矢量衣、加载设 各驱动程序、内存管理模块等。这一切完成后, uclinux启动一个最初的init线程,进入 到第三阶段。这时候内核已经正常运行,外围模块也都就绪,开始执行一些脚本文件(如 /etc;/rc脚木文件)。这通常是嵌入式廾发者最感兴趣的一个切入点 由于代码在 SDRAM中运行的速度比在 FLASIL中更快,而且在该目标平台中, SDRAM是 32位数据总线,而FLAS是16位总线,因此代码在ROM中运行和在RAM中运行的速度有 着显著差异。考虐到这些因素,采取将 uClinux内核和 ROMFS文件系统复制到 SDRAM中运 行的模式。这虽然会牺牲一些系统的启动速度,并导致一些额外的系统内存廾销,但是换来 的是系统整体性能的提高,因此是值得的。 uclinux会从内存中的某个位置加载ROMS作为 根文件系统。当ROMS为RAM驻留时,缺省位置紧接着BSS段。ROMS文件系统的二进制映 像 romfs.ing在ROM中的实际存放地址可以根据rom.ld文件计算。由于BSS数据段存放 的是未初始化的数据,直到运行吋才建立,因此使用m68k-elf-obj-copy生成的内核二进 制映像文件1inx.bin中并无BSs段。 Roots.img的起始地址应该是:ROM代码段结束地址 +RAM代码段长度+DATA数据段长度;而复制的目标地址就是BSS段的结束地址,这是一个 MA地址,可以从rom.1d文件中直接获得 3.3修改启动脚本 在 uclinux完成内核初始化后,由init(void*)内核线程调用/bin/init,然后执行 /etc/rc脚本中的命令。可以利用这个脚本完成系统上电后的自动配置,或者运行用户程序 ROMFS文件系统中/etc/re的源文件/ven-dors/ Generic/big/etc/re.一个典型的rc文件如 下所示。它完成以太网的设置并执行用户程序/bin/ usrapp #设置上机名 hostname uclinux /bin/expand/etc/ramfs. img/dev /ramO mount-t proc proc proc mount -t ext2/dev/ramO/var config lo 127.0.0.1 route add -net 127.0.0.0 netmask 255.0.0.0lo 8 山国利技记文在线 http:/www.papcr.cdu.cn #配置网卡GD和路由 config etho 202. 119. 45. 98 fconfig etho broadcast 202. 119. 45. 255 route add net 202.11 9 45.0 etho route add default gw 202. 119. 15.1 #执行用户程序 /bin/usrapp 3.4内核的配置和编译 从http://mac.os.nctu.edu.tw上下载内核源代码uClinux-Samsung-20020318.tar.gz 解压完毕后,就会在用户目录下生成 uClinux- Samsung目录。需要建立一个交叉编译环境来 完成內核和应用程序的编译,生成ROS文件系统,并最终形成一个固化文件 ww. uclinux.org也提供这样一个工具包。由于本人对在 Linux下进行程序开发不太熟悉 因此用到 ygwin软件,它是一个在 windows平台下进行的 Unix模拟环境,正确安装后,就 可以进行编译了。首先进入源代码目录 uClinux-dist,执行皿 ake menuconfig,在弹出的对 话框中选择“ Target Platform Select”,出现下图所示的对话框 H Konsole-nle uclinux:u Cinux-Saansung -Konsole File Sessions Setings Help CLirux v1 3.3 Configuration Arrau ke navigate the ne. (Enter) select submenU --- Hishligtec letters are hotkey, Pressing Y> are ludes, (H> exeluckes H》 modularize features. Press任Es》sc)toc1t.们 For He1 Legend: [+I built-In I excluded <M> wodule < nodule capable - Choose a eroor/Product conbination. (Saner/4510B> endor/Preduct Kernel is Lirux-2.4.x 《uc-Li2 tb- version ]s型1t. sL1 settings lase e"rge、 atomize Kernel settings Lton1z3 vendor/bsr Sect ing <NEW) coste Default Vener Sett.inge select Exit ) Help 口 图(5)日标板选择对话框 由于直接对S3C4510B评估板的代码进行修改,因此目标板选择S3C4510B。内核版木号选 择2.4,采用uC1ib库。另外选中“ Customize Kernel settings”以定制需要的内核。在 內核配置对话框中,将RAM大小配置为16MB,确认 ROMES为RAM驻留。为了可以直接 mount 宿主杋硬盘以方便调试,还需给内核添加对JFS文件系统的支持。配賀完毕后,在源代码 目录执行“ Inake dep”以及“make”,就得到了需要的二进制内核映像 MIlage.bin,可以直 国科技论文在线 http://www.paperedu.cn 接下载到目标板运行。 5.结论 AM处理器有着强劲的发展势头,它的应用正快速渗透到各个领域; Linux则以其免费开 放的源代码被作为揿入式操作系统的首选,因此基于ARM的嵌入式 Uclinux开发具有广阔前 景的发展领域,本文在分析了 ARMTDMI内核结构以及结合相关操作系统 Uclinux特点的基础 讲述了S3C4510B处理器半台硬件设计和 Uclinux板极移植的一般性方法,只有很好的 参考价值 参考文献 [1]邹思铁,《嵌入式 Linux设计与应用》,北京:清华大学出版社,2002.1 [2]王学龙,《嵌入式 Linux系统设计与应用》,北京:清华大学出版社,2002.3 3丨刘峥嵥,张智超等,《嵌入式 Linux应用开发详解》,北京:机械工业出版社,200.7 [4]陈莉君,《深入分析 Linux内核源代码》,北京:人民邮电出版社,2002.8 Design for Embedded uClinux System Based on ARM YANG Geng, YANG Chunhua College of information Scicncc Enginccring, Central South univcrsity, Changsha, 410083, China Abstract: This paper introduces the embedded Linux system-uClinux, a design for hardware platform based on S3C4510B and Implementation of u clinux in the transplantation on the target s board Keywords: uClinux S3C4510B Transplantation

...展开详情
试读 10P 论文研究-基于ARM的嵌入式uClinux系统设计 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
论文研究-基于ARM的嵌入式uClinux系统设计 .pdf 10积分/C币 立即下载
1/10
论文研究-基于ARM的嵌入式uClinux系统设计 .pdf第1页
论文研究-基于ARM的嵌入式uClinux系统设计 .pdf第2页

试读结束, 可继续读1页

10积分/C币 立即下载 >