嵌入式Linux系统的研究及其在串口通信中的应用_第1页
嵌入式Linux系统的研究及其在串口通信中的应用_第2页
嵌入式Linux系统的研究及其在串口通信中的应用_第3页
嵌入式Linux系统的研究及其在串口通信中的应用_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式 lin u x 系统的研究及其在串口通信中的应用竹林, 祝忠明通信与信息系统系, 四川 成都 610059)成都理工大学(摘要: 研究了典型的嵌入式 li nux 操作系统, 概述了如何构建嵌入式 li nux 开发环境, 分析了 li nux 内核的修改和剪裁, 并在开发板上实现串口通信。 关键字: 嵌入式系统; l i nux; 内核; 裁剪resear ch and application of embedded linux system based on armzhu lin, zhu zhong- ming( chengdu university of technology,

2、 chengdu 610059, china)abstr act : typical embedded linuxoperating systems are studied,it is summarized how to build a development con-dition of the embedded linux and analyzed deeply how to modify and tailor the linux kernel and serial communicationare realized on the developing board.keywor ds: em

3、bedded; operating; system; linux; kernel; ailor引言1tem call) 的界面访问内核结构。在 linux 中, 可以动态装入和卸载内核中的部分模块。linux 内核由 5 个 部分组成: 进程管理、内存管理、文件系统管理、进 程间通信和网络接口。典型的嵌入式 linux 操作系统有 2 类: 第一类linux 内核进行修改和剪裁以满足系统的需求,是 移 植 技 术 中 的 关 键 。 本 文 主 要 研 究 了 如 何 对linux 操作系统进行修改和剪裁, 并在开发板上实现 了串口通信。如 clinux, 其是为了支持没有 mmu(内存管理单

4、元) 的处理器而对标准 linux 作出的修正。clinux保留了 linux 的大部分优点: 稳定良好的移植性、优 秀的网络功能、支持各种文件系统以及标准丰富的 api 等。第二类是将 linux 开发成实时系统尤其是 硬( firm) 实时系统, 应用于一些关键的 控制场合,如 rtlinux。嵌入式操作系统分析2li nuxlinux 系统内核的分析: linux 系统使用了单一内核结构,即操作系统中所有的系统相关功能都被封装在内核中。程序通过一套称作系统调用( sys-3基于arm 平台的3. 3 内核的修改和剪裁内核的初始化分为以下几个阶段: ( 1) 内核的入口 stextstex

5、t 是 bootloader 所调用的内核入口, 从 stext进入后, 将完成一些针对程序运行环境的建立。嵌入式系统的研究li nux3. 1 嵌入式平台及开发环境的建立hfrk2410 开 发 板 是 基 于 s3c2410 高 性 能( 2)内核的初始化函数 start_kernelarm处 理 器 的 嵌 入 开 发 平 台 , cpu采 用start_kernel 是内核初始化的主体。在调用这个s3c2410arm920t。开发过程为: linux 下建立交叉编译器, 在 windows 操作系统中用 ads 开发工具实 现启动程序, 在 linux 操作系统下, 用交叉编译器进 行

6、 linux 内核、库函数及应用程序的编译。函数的时候,和堆栈。系统已经有了一个初始化的页目录表( 3) 内核的初始化线程 init在 start_kernel 中, 通过创建了一个内核进程来 执行 init 函数, 进行初始化。3. 2 boot loader 代码分析嵌入式系统中, boot loader 是在操作系统内核 或用户应用程序运行之前运行一段小程序, 可以初 始化硬件设备、建立内存空间的映射图, 从而将系统( 4)系统的初试化程序修改内核启动部分源代码: 主要是修改 make-file 文件, 以及加上 nand flash 的支持和 mtd 分区 表 的 填 写 。 目 的

7、是 指 定 目 标 cpu 的 体 系 结 构 为 arm 及交叉编译器前缀为 arm- linux- , 并在内核启 动时能初始化 nand flash。修改的步骤为:( 1) 下载并解压 linux 内核( 2) 修改 makefile 文件#arch?=$(subarch)修改为 arch:=arm。的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准 备好正确的 环境。大多数 boot loader 都包含 2 种不同 的操作模式: 启动加载 (loading) 模式。boot loading)模式和下载(down启动加载模 式: 也称为“自 主”模式。即 boo

8、tloader 从目标机上的某个固态存储设备上将操作系 统加载到 ram 中运行, 整个过程并没有用户的介 入。这种模式是 boot loader 的正常工作模式, 在嵌 入式产品发布的时候, bootloader 必须 工作在这种 模式下。下载模式: 在这种模式下, 目标机上的 boot- loader 将通过串口连接或网络连接等通信手段从主 机下载文件。从主机下载的文件通常首先被 boot-loader 保 存 到 目 标 机 的 ram 中 , 然 后 再 被 boot-( 3)修改相关的文件修改 archarmmach- s3c2410devs.c 文件增加头文件定义:#include

9、#include#include增 加 nand flash 分 区 信 息 , 将 分 区 信 息 和bootloader 程序一致。修改 archarmmach- s3c2410mach- smdk2410.c文件做 完 以 上 修 改 再 经 内 核 编 译 后 就 可 以 在hfrk2410开发板上运行了。loader 写到目标机上的闪存( flash)类固态存储设备中。bootloader 的这种模式通常在第一次安装内核与根文件系统时被使用; 此外, 以后的系统更新 也会使用 bootloader 的这种工作模式。工作于这种模式下的 bootloader 通常都会向其终端用户提供一(

10、 4)编译内核编译内核需要 3 个步骤, 分别是创建内核依赖次为: make dep, make zimage, make modules。编 译 完 成 以 后 , 会 生 成 镜 像 文 件 arch/arm/boot/zimage, 把这个文件下载到开发板上, 就会看到 linux2.6 的内核启动信息, 即完成了 linux2.6 内核 移植的第一步。pcmcia control ioctl(obsolete)(new)支持的可执行文件格式: 支持 elf, elf 是开放 平台下最常用的二进制文件, 它支持不同的硬件平 台。userspace binary formats- - *k

11、ernel support for elf binaries( 5) 加载 yaffs2 文件系统(file system, yaffs)( 6) 内核的剪裁yet another flash设备驱动: 支持 mtd 分区, 支持 nand flash、网卡 cs8900device drivers- - - memory technology device(mtd)support*mtd partitioning support*direct char device access to mtd devices *caching block device access to mtd devic

12、es nand flash device drivers- - - *nand device support*nand flash support for s3c2410/s3c2440 soc *s3c2410 nand driver debugnetwork device support- - ethernet(10 or 100mbit)- - cs8900 support使用 linux 自身的配置工具, 编译定制内核。根据功能对内核进行剪裁, 要达到的目标是: 保证串口 下载调试信息, 提供必要的系统操作, 支持应用程序 正常运行, 即完成串口通信。配置的 linux 内核如 下:c

13、ode maturity level options- - - 代码成熟等级选项( 不选)promptcode/driversfor development and/or incomplete默认情况下是选择的, 这将会在设置界面中显示还在开发或者还没有完成的与驱动。通用设置选项: 支持处理器在程序之间同步和 交换信息、支持热插拔general setup- - *system vipc*support for hot- pluggable devices可加载模块: 使用模块支持、支持模块卸载、支 持内核自动加载部分模块loadable module support- - *enable l

14、oadable module support *module unloading*automatic kernel module loading 总线支持配置: 有关 pcmcia 不选 bus support- - pccard(pcmcia/cardbus)support- - enable pccard debugging16- bit pcmcia support(new)load cis updates from userpace (experim- ental)(new)( 7)建立根文件系统根文件系统的作用是存放了各种工具、应用程序、init 程序、必需的库和需要加载的模块。根文

15、件系统采用 cramfs 格式,建立。并使用工具软件 busybox 来通过以上步骤, 内核已经正常启动, 首先检测硬件平台, 然后初始化网卡、usb 以及其他硬件, 最终 挂载文件系统 yaffs, 显示 linux 命令行的提示符。4基于 arm平台的嵌入式 li nux 在串口通信中的应用该 系 统 只 设 计 了 一 路 与uart0相 连 的rs- 232c 接口电路, 通过 9 芯的 d 型插头, 与外设可方便的连接, 同时设计了数据发送与接收的状态 指示 led, 当有数据通过串行口传输时, led 闪烁, 便于用户掌握其工作状态, 以及进行软、硬件的调。试。串口通信的程序流程图

16、如图 1 所示。nbyte=write(fd,buffer,length);写数据:char buff1024;int len=1024;int readbyte=read(fd,buff,len);( 4) 关闭串口close(fd);5结束语在嵌入式系统平台的开发使用过程中,经常使用串行接口与 pc 主机进行通信。在此平台上, 可以运行嵌入式 linux 操作系统,使用串口下载应用程序等。由此可见, 在嵌入式系统中实现串口通信, 可延伸系统的应用触角,扩大系统的数据采集和过程控制的范围参考文献1马忠梅 等.arm&linux 嵌入式教程m.北京: 北京 航空航天大学出版社, 2004.2孙天泽 等.嵌入式设计及 linux 驱动开发指南m.北京: 电子工业出版社, 2002.3毛德操.linux 内核源代码情景分析m.杭州: 浙江 大学出版社, 2001.4李善平 等.linux 与嵌入式系统m. 北京: 清华大 学出版社, 2003.5陈莉君.linux 操作系统内核分析m.北京: 人民邮 电出版社, 2000.6张斌, 高波.linux 网络编程. 北京m: 清华大学出 版社, 2000.7胥静. 嵌入式系统设计与开发实例详解基于arm 的应用m.北京: 北京图 1 串口通信的程序流程图( 1) 使用标准的文件打开函数操作来打开串口:int fd;/* 以读写方式打

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论