基于ARM9和Linux的嵌入式打印终端系统

您的论文得到两院院士关注 文章编号 :1008- 0570(2008)05- 2- 0125- 02

ARM 开 发 与 应 用

基于 ARM9 和 Lin u x 的嵌入式打印终端系统
Prin tin g Te rm in a l b a s e d o n ARM9 Pro ce s s o r a n d Em b e d d e d Lin u x
(南京信息工程大学 )

赵远东 张 臻

ZHAO Yuan-dong ZHANG Zhen
摘要 : 本 文 首 先 描 述 了 嵌 入 式 打 印 终 端 的 工 作 原 理 , 接 着 介 绍 了 三 星 公 司 基 于 ARM9 核 心 的 S3C2410 处 理 器 平 台 , 着 重 阐 述 了 在 此 平 台 上 的 外 围 电 路 连 接 设 计 , 入 式 Linux 的 打 印 机 驱 动 程 序 开 发 和 应 用 程 序 的 开 发 , 并 给 出 了 关 键 代 码 的 分 析 , 实 嵌 现了一个嵌入式打印终端系统, 最后进行了总结和改进. 关键词 : S3C2410 ; 嵌入式 Linux ; 打印机驱动; 应用开发 中图分类号 : TP316 文献标识码 : A

Abstr act: This paper described the principle of this printing terminal at first. Then, it introduced SAMSUNG' S3C2410 SoC, the s ARM9 core 32- bit RISC processor, and focused on the circuit connecting design, the printer deriver and the main application devel- opment in Linux based on this platform. The core codes were also analyzed at each step. Finally, we summed up the embedded printing system and made a progress. Key wor ds: S3C2410;Embedded Linux;Pr inter dr iver ;Application

引言
随 着 开 放 源 代 码 运 动 的 飞 速 发 展 , Linux 操 作 系 统 越 来 越 受 到 人们 的 重 视.其 良 好 的可 裁 减 性与 可 移 植性 , 卓 越 的效 率 和稳定性, 以及支持多种处理器体系架构的特点, 使 得 Linux 越 来 越 广泛 的 应 用 于 嵌 入 式 领 域 . 同 时 , ARM9 处 理 器 高 主 频 的 处理速度, 大容量的闪存芯片和 MMU 控制 单 元的 支 持 , 使得 运 行嵌入式 Linux 变得稳定而高效.本文设计与实现的 打 印 终端 系统, 正是基于这两个软硬件平台搭建起来的.

2 嵌入式打印终端系统的硬件设计
2.1 硬件开发平台 S3C2410 结构 三 星 公 司 的 S3C2410 开 发 板 用 的 是 32 位 RISC 架 构 基 于 ARM920T 核 , 其 增 强 的 MMU 单 元 , AMBA 总 线 , 可 以 支 持 WinCE , Linux 等 实 时 操 作 系 统 . 片 上 资 源 丰 富 接 口 众 多 , 包 含 LCD 控 制 器 , USB Host, CS9800A 网 络 芯 片 , 卡 , 个 UART SD 3
通用异步串行口等设备接口.

技 术 创 新

2.2 打印机与开发板接口电路的设计
我们使用的微型打印机使用的是并行接口.由于开发板上 没有提供并口, 所以必须自己设计一个板卡接口电路, 以连接 打印机的并口和我们的嵌入式开发板. 查看 S3C2410 的电路原 理图 , 由 于此 系 统 不 需 要 用 到 LCD 屏 , 可 以 将 板 子 上 用 于 LCD 连接的 GPIO 口进行改造, 根 据 ARM9core 的 LCD 电 路 引 脚和 板上的 LCD 插槽定义, 如图 2 , 找到了 14 根空闲的 GPIO 口 :

1 嵌入式打印终端系统的设计原理

gpio_c8~gpio_d15,gpi0_d0~gpio_d4 .用这 14 根通用输入输
出口连接微型打印机的并口.

图 1 打印终端原理图 嵌入 式 打印 终 端 原理 连 接 图如 图 1 所 示.主 要 由 开 发 板 , 主机, 打印机和扫描仪四部分组成.主机是一台 PC 机.开发板 采用的是三星公 司 S3C2410 开 发 板 , ARM9 的核 , 跑 的 是 2.4 内 核版本的嵌入式 Linux 操作系统.扫描仪为超市等用的 手 持 扫 描仪.再加一台微型打印机接在开发板的 GPIO 口上. 工作流程为 :开发板将扫描仪的数据从串口读出, 然 后 通 过 网口将数据发送给主机进行检索处理.开发板等待直至接收到 主机处理完毕的数据后转发给打印机, 将信息打印出来. 赵远东 : 副教授 硕士生导师 图 2 核心 core 的 LCD 引脚和板上 LCD 引脚原理图 同时查看打印机的电 路 手 册和 管 脚 定义 , 选 用 其 STB 选 通 线, ACK 回 答 脉 冲 线 , BUSY 线 , DATA0- DATA7 数 据 线 来 与 开 为了避免接线过紧 发板的 GPIO 口相连, 并初始化高低电平值. 邮局订阅号: 82-946 360 元 / 年 -

《 P LC 技术应用 200 例》

125 -

ARM 开 发 与 应 用
至此, 硬件的电路设计及连接基本完成.

中 文 核 心 期 刊 《 微 计 算 机 信 息 》( 嵌 入 式 与 S OC )2008 年 第 24 卷 第 5-2 期 打印机的来不急处理, 所以要设置延时.

互相干扰, 制作一个接口板定义各引脚连接如图 3 所示.

open/close 函数 打 开 /关 闭 文 件 , 因 为 在 LINUX 下 设 备 都 是 当作文件来操作的, 所以需要 open 和 close 这两个接口函数. 3.2 扫描仪串口的设置
嵌入 式 移动 打 印 终端 中 使 用到 的 扫 描仪 是 串 口 扫 描 仪 , 这 种 扫 描 仪 相 对 于 USB 接 口 的 扫 描 仪 来 说 , 控 制 较 简 单 , 在 扫 描 仪扫描后, 可以直接从串口读取数据.

3.2.1 串口设置
图 3 打印机并口与开发板 GPIO 口接口板设计图 设置串 口速 率 函 数 :set_speed(int fd, int speed), 其 中 fd? 为 打 开的设备文件, speed 为速率. 设 置 串 口 参 数 :set_parity (int fd,int databits,int stopbits,int

3 嵌入式打印终端系统的软件设计
软件平台采用的是基于 2.4 内核的嵌入式 Linux 系统.采用 的交叉编译器工具包为 CROSS2.95.3.tgz(包含 arm- linux- gcc 等 ).

3.1 打印机驱动的编写 Linux 的设 备 分为 块 设 备, 字 符 设 备和 网 络 设备 , 该 系 统 使
用到 的微 型 打 印机 属 于 字符 设 备 , 下面 将 具 体说 明 如 何设 计 打 印机驱动.

技 术 创 新

3.1.1 定义设备名 #define DEVICE_NAME weida_printer 3.1.2 模块函数设计
在该系统中, 采用模块化加载驱动程序的方法, 因此必须实 现模块的初始化函数和卸载函数.采用 devfs 方式注册打印机. 初 始 化 函 数 weida_init 通 过 devfs_register 函 数 向 系 统 注 册设备. 函 数 原 型 devfs_register (NULL,

VFS_FL_DEFAULT, 0, 0, &weida_printer_fops, NULL); 其 中 , DEVICE_NAME 为 主 设 备 名 , weida_printer_fops 为 定 义 的 一 个 数 据 结 构 , 用 来 实 现 的 文 件 操 作 , 包 括 open , close , write 等. 3.1.3 初始化打印端口 初始化打印机第一个要做的事 情 就 是要 对 GPIO 口 进行 初 始化, 初始化函数如下 : static void weida_init(void){ devfs_register(); /* 注册设备驱动 */ set_gpio_ctrl (WEIDA_STB |GPIO_PULLUP_DIS |GPI- O_MODE_OUT); /* 设置 STB 口 */ write_gpio_bit(WEIDA_STB,1); weida_printer_io_port_init(); /* 设置其它 IO 口, 以及赋初值 */ } 其中 , WEIDA_STB 为 连接 打 印 机选 通 口 初 始 化 为 高 电 平 , GPIO_PULL_DIS 是 设 置 是 否 需 要 上 拉 电 阻 , GPIO_MODE_OUT 设 置 GPIO 口 为 输 出 口 . 最 后 使 用 module_init (weida_print- er_init);采用模块方式加载驱动. 3.1.4 接口函数设计 行 ioctl()函 数 主 要 完 成 打 印 机 字 体 , 距 等 参 数 的 设 置 , 在 设
计过程中必须解决用户数据和内核数据之间如何传递.从用户 态读取数据 , 然后在内核态运行 , 可 以 使用 copy_from_user 函 数 来完成传递数据.

DEVICE_NAME, DE- S_IFCHR | S_IRUSR | S_IWUSR,

parity),databits 为 有 多 少 个 数 据 位 , stopbit 为 设 置 多 少 个 停 止 位, parity 为奇偶校验位设置.设置串口 波特 率 为 9600 , 数据 位 为 8 位, 一位停止位, 没有校验位. 3.2.2 编写读取扫描仪数据函数 首先打开设备文件, 该系统中使用的串口为 串 口 2 , 因 此 打 开函数为 : open (" /dev/ttyS1 " ,O_RDWR |O_NONBLOCK|O_NDELAY); 其 中 , O_RDWR 表 示 可 读 可 写 , O_NONBLOCK 表 示 非 堵 塞 模 式 , O_NDELAY 表示没有延迟, 立即发出去. 3.2.3 客户端和服务器的 socket 编写 嵌入 式 打印 终 端 采用 C/S 的 模 式, 把 PC 机 作 为 服 务 器 , 开 发 板 作 为客 户 端 , 通过 以 太 网连 接 .客 户 端 建 立 一 个 socket 连 接去寻找 PC 机上的服务程序. PC 机上同时也 运 行一 个 socket 用来 listen 请求和绑定.采用的是 TCP 的连接方式. 3.4 主应用程序的设计 开发板上的应用程序 Main 函数 注册 两 个 线程 p1 和 p2 , 两 个全局数组 c1 和 c2 . 线程 p1 将 从串 口 读 到的 数 据 放入 c1 中 , 然 后 sent socket 直 接 从 c1 中取 走 数 据发 送 给 服务 器 . 线 程 p2 负 责 将 received socket 数据 放 入 c2 数 组 中 , 然后 直 接 从 c2 取 走 数 据交 给 打 印
机去打印. 这 里 对 线 程 使 用 了 两 个 信 号 量 , 并 初 始 化 为 :sem_init

(&sem1,0,1); sem_init(&sem2,0,0); 两个线程的核心代码如下 : void thread1(void) {
打开串口; 设置串口; 建立连接;

while(1) { sem_wait(&sem1);
从串口读书据; 用 clinetsocket 发送出去;

sem_post(&sem2);} } void thread2(void) {
打开打印机设备;

while(1) { sem_wait(&sem2);
接收数据; 扔给打印机;

weida_printer_write ( )先 对 打 印 机 是 否 在 线 , 是 否 忙 , 是 否
准 备好 做 进 一步 的 判 断, 然 后 再 进行 打 印 .在打 印 的 时候 要 注 意每 发 一 个字 符 要 延迟 150 毫 秒 , 因为 如 果 打印 数 据 发得 过 快

sem_post(&sem1); } }
如此 可 以使 两 个 线程 得 以 同步 运 行 , 并可 以 执 行 多 次 扫 描 和打印任务.

(下转第 147 页 )
《现场总线技术应用 200 例》

-

126 - 360 元 / 年 邮局订阅号: 82-946

您的论文得到两院院士关注

DS P 开 发 与 应 用
作者 简 介 : 王 伟 ( 1977- ) , 女 , 汉 , 黑 龙 江 省 牡 丹 江 市 人 , 讲 师 , 硕 士 , 主 要 研究 方 向 为嵌 入 式 系统 , 媒 体技 术 ; 李 剑雄 ( 1980- ) , 多 女, 黑龙江依兰人, 助教, 硕士, 主要研究方向为复杂系统的高 可 靠 设计 与 分 析, 容 错 分 布式 系 统 设计 ; 周 广 禄( 1970- ) , 男 , 吉

图 5(b) 编解码后的语音波形图 (2) 利用 ultra edit 编辑工具, 进行二进制代码的比较 在优 化 的过 程 中 , 为了 保 证 优化 后 函 数的 处 理 语 音 的 效 果 和未优化前是一样的, 依照上面的优化过程, 对每一个函数每 进行一步优化, 就利 用 ultra edit 编 辑工 具 对 优化 后 程 序的 输 出 文件与原始程序的输出文件进行二进制匹配.如果二进制代码 完全 匹 配之 后 方 继续 进 行 下一 步 优 化工 作 , 如 果二 进 制 代码 不 匹 配的 话 , 就 要找 出 原 因, 反 复 的 进行 修 改 , 这是 一 种 比较 细 的 验证.图 6 为 Ultra Edit 软件二进制比较的截图.

林省吉林市人, 讲师, 硕士, 主要研究方向为信息安全, 形图 图 像 ; 郭恒 业 ( 1949- ) , 男 , 汉, 黑 龙 江 哈尔 滨 人 , 教授 , 主 要 研 究 方 向嵌入式系统, 多媒体技术;

Biogr aphy:WANG Wei (1977 - ), female, Weihai Shandong Province, Harbin Institute of Technology Harbin (Weihai), lec- ture, Major in research of DSP. (264209 山东省 威海市 哈尔滨工业大学 (威海 )) 王伟 李剑 雄
周广禄 郭恒业

(Har bin Institute of Technology Har bin (Weihai), Weihai 264209, China)WANG WEI LI J IANXIONG ZHOU GUANGLU GUO HENGYE 通讯 地 址 :(264209 山 东 省 威海 市 文 化 西 路 2# 哈 尔 滨 工 业 大 学 (威海 ) 计算机科学与技术学院 ) 王伟
(收稿日期 :2008.03.13)(修稿日期 :2008.4.25)

(上接第 126 页 )
图 6 优化前后输出结果的对比( 完全匹配) 本文作者创新点及其经济效益 :本系统具有 移 动性 强 , 功 耗 低等特点, 而且与以往传 统 的用 PC 机 实 现的 打 印 终端 相 比 , 还 具 有 低 成本 优 势 .能广 泛 地 应用 于 超 市收 银 系 统, 银 行 自 动 存 笔者试验了一下把 802.11g 的无线网 取款机, 等各种工业领域. 卡移植到开发板上, 并成功实现了和主机的无线通信, 使得该 系 统 更加 便 携 .根据 对 南 京各 大 学 校区 内 超 市的 研 究 调 查 , 此 系统估计可产生 50 万元的经济效益. 参考文献 [1]SAMSUNG. S3C2410A 200MHz&266MHz 32 - BIT RISC MICROPROCESSOR USER' MANUAL [EB/OL]. http://www. S samsung.com/, 2004- 03. 35,367- 408 (第三版) [M]. 中 [2]CORBET J, RUBINI A. LINUX 设备驱动程序 国电力出版社, 2006. 46- 74 TP316.81 [3] 孙琼. 嵌入式 LINUX 应用程序开发详解 [M]. 人民邮电出版 社, 2006. 184- 191 TP316.89 陈利学, 寇向辉. LINUX 嵌入式操作系统在 ARM 上 [4]田家林, 的移植[J]微计算机信息,2007, 2:P60- 62. 4- 作 者 简 介 : 赵 远 东 ( 1963- ) 男 , 汉 族 , 江 苏 , 南 京 信 息 工 程 大 学 副 教 授 , 士 生 导 师 , 研 究 方 向 为 人 工 智 能 与 专 家 系 统 ;张 臻 , 硕 ( 1982- ) 男, 汉族, 江苏, 南京 信息 工 程 大学 电 子 与信 息 工 程学 院硕士研究生, 研究方向为嵌入式系统.

6 结束语
本 文 选 择 具 有 6.3kbit/s 和 5.3kbit/s 两 种 中 低 编 码 速 率 I- TU- T G.723.1 作 为 系 统 的 语 音 压 缩 解 压 算 法 标 准 , 并 对 G. 通过将标准 C 语言 G.723.1 语音压 723.1 算法做了详细的研究. 缩算 法 成功 地 移 植 到 DSP 平 台 上 后 , 针 对 DSP 的 硬 件 和 软 件 特 点 , 选择 了 合 适的 编 译 选 项 , 利 用 DSP DM642 片 内 硬 件 资 源, 以及修改 C 语言程序 结 构 和线 性 汇 编改 写 等 多个 方 面 实现 了 算 法的 优 化 , 从而 实 现 数字 语 音 信号 的 实 时输 入 ,编 码 , 解 码, 输出, 具有良好稳定性和一定的实用价值. 本文 作 者 创 新 点 : 在 G.723.1 语 音 编 解 码 优 化 结 果 的 测 试 中 , 采 用 了 CoolEdit 软 件 , 进 行 听 音 验 证 和 Ultra Edit 编 辑 工 具, 进行二进制代码比对两种不同的测试方式, 充分保证了算 法优化的正确性.

技 术 创 新

参考文献 [1]ITU. Dual Rate Speech Coder for Multimedia Communications Transmitting at 5.3 and 6.3 kbit/s (ITU - T Recommendation g. 1996. 723.1), [2]Jerry D.Gibson 等 .Digital Compression for Multimedia Princi- 电子工业出版社, ples&Standards, 2000. 黄德志, 蔡锐.现代语音技术基础与应用, 清华大学出 [3]蔡莲红, 版社, 2003. 李成忠.G.723.1 语音编码器的研究[J], 微计算机信 [4]张少华, 息, 2002, 18:70~71. [5]Texas Instruments. Code Composer Studio Getting Started Guid- ed [S]. Printed in USA. 2001. 王飞, 何佩馄.TMS320C6000 系列 DSPs 的原理与应 [6]李方慧, 用(第二版).北京: 电子工业出版社, 2003:1- 554. [7]TMS320C6000 Programmer's Guide. Texas Instruments, 2001: 1- 389. [8]TMS320C6000 Optimizing C/C++ Compiler Use's Guide, Texas Instruments Incorporated, April 2001.
《 P LC 技术应用 200 例》

Biogr aphy:ZHAO Yuan Dong (1963 - ) Male, Jiangsu, College of Electronic & Information Engineering, Nanjing University of Information Science & Technology, Associate Professor, Research in Artificial intelligence & experts system;ZHANG Zhen (1982- ) Male, Jiangsu, College of Electronic & Information Engineering, Nanjing University of Information Science & Technology, Master, Major in Embedded System. (210044 南京 南京信息工程大学 ) 张臻 赵远东 (College of Electr onic & Infor mation Engineer ing, Nanjing Univer sity of Infor mation Science & Technology) Zhao YuanDong Zhang Zhen 通讯地址 :(210044 南京 南京信息工程大学 601 信箱 )张臻
(收稿日期 :2008.03.13)(修稿日期 :2008.4.25)

邮局订阅号: 82-946 360 元 / 年 -

147 -


相关文档

基于ARM9的嵌入式Linux系统移植
基于嵌入式Linux和ARM9的视频采集系统
基于ARM9和Linux嵌入式系统设计
基于ARM9的嵌入式Linux系统移植
嵌入式Linux下基于ARM9的USB打印机控制器的设计
基于ARM9和Linux的嵌入式便携数据采集系统
基于ARM9的嵌入式Linux操作系统的移植
基于ARM9和嵌入式Linux的监控系统的设计及应用
基于ARM9和Linux操作系统的嵌入式应用开发
第6章 基于ARM9和Linux嵌入式系统设计
电脑版