首页 VxWorks操作系统在S3C2440上的移植

VxWorks操作系统在S3C2440上的移植

举报
开通vip

VxWorks操作系统在S3C2440上的移植  第 33 卷 第 2 期  2010 年 6 月 中  国  航  海 NAV IGA TION OF CHINA Vol. 33 No. 2   J un. 2010   收稿日期 :2010203201 作者简介 :王 军 (1977 —) , 男 , 江苏海安人 ,助理研究员 ,从事 ARM 在船舶自动控制设备上的应用研究。 E2mail :wangjun771117 @sian. com. 文章编号 :1000 - 4653 (2010) 02 - 0019 - 04 VxWorks 操作系...

VxWorks操作系统在S3C2440上的移植
 第 33 卷 第 2 期  2010 年 6 月 中  国  航  海 NAV IGA TION OF CHINA Vol. 33 No. 2   J un. 2010   收稿日期 :2010203201 作者简介 :王 军 (1977 —) , 男 , 江苏海安人 ,助理研究员 ,从事 ARM 在船舶自动控制设备上的应用研究。 E2mail :wangjun771117 @sian. com. 文章编号 :1000 - 4653 (2010) 02 - 0019 - 04 VxWorks 操作系统在 S3C2440 上的移植 王 军 ,  周 进 ,  许 涛 (上海船舶运输科学研究所 , 上海 200135) 摘 要 :论述了 VxWorks 操作系统在嵌入式芯片 S3C2440 上的移植应用。解决了移植中的几个关键问题 ;包括从 FLASH 启动 ,中断处理 ,MMU (Memory Management Unit ,内存管理单元)开通 ,网卡驱动编写。解决这些问题的 理论方面主要是认真学习数据手册 ;依靠 S3C2440 的 J TA G接口和 H - J TA G这个软件的相互配合 ,实现了 BSP 代码在线调试。据此原理 ,解决了把 VxWorks 移植到 S3C2440 技术过程 ,并测试了系统的网络数据传输性能。 关键词 :船舶、舰船 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 ; 嵌入式 ; VxWorks 操作系统 ; arm 芯片 ; 内存管理单元 ; 中断 中图分类号 :U664. 82 + 1    文献标志码 :A Porting VxWorks to S3C2440 W A N G J un ,  Z HOU J i n ,  X U T ao (Shanghai Ship and Shiping Research Instit ute , Shanghai 200135 , China) Abstract : The application of VxWorks in S3C2440 is discussed. Key problems , such as boot2up with FL ASH de2 vice , dealing with interruptions , enabling MMU ( Memory Management Unit ) and network driver coding etc. are solved in porting. The combination of S3C2440’s J TA G hardware interface and the H2J TA G software is adopted for on2line BSP code debugging , The network t ransmission performance of the system is tested. Key words : ship , naval engineering ; embed type ; VxWorks Operation System ; arm chip ; memory management u2 nit ; interrupt   随着船舶自动控制嵌入式设备在处理能力和稳 定运行能力方面需求的增长 ,该领域中对微处理器 和操作系统的性能也得到了很大的提高。在众多的 嵌入式微处理器中 ,拥有 ARM ( Advanced RISC Machine ,高级精简指令集设备) 公司内核技术的微 处理器近几年的市场占有率不断攀升 ,同时 ,广泛的 应用和 A RM 提供的一系列内核、体系扩展、微处理 器和系统芯片 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 也降低了使用 A RM 的开发和维 护成本。目前应用于嵌入式系统中的操作系统有很 多 ,比较流行的有 微软的 WINCE、开放源码的 Linux、WindRiver 的 VxWorks 以及 A TI ( Array Technology Indust ry Technologies Inc. ) 的 Nucle2 us 等 ,上述操作系统各有优势 : WINCE 侧重界面 , Linux 是源码开放 , VxWorks 是实时性和稳定性 好 ,Nucleus 侧重于支持手持通信设备。鉴于船舶 电子设备对系统的通用性 ,实时性和可靠性等高要 求 ,硬件上选择目前比较先进的 A RM9 系列芯片 S3C2440 搭载 VxWorks 操作系统 ,这个方案的性 能在实时嵌入式系统领域具有很大的优势。 1  任务及相关现状 VxWorks 能够支持多种处理器及其附属硬件 , 包括 x86 , PC860 , ARM7 , ARM9 等十几种微处理 器 ,支持各种网卡芯片 ,串口芯片和各种 FL ASH 设 备 。VxWorks 能支持这么多的硬件 ,是依靠 BSP (Board Support Package , 板级支持包) 来实现的 , 用户如果要在某个硬件系统上运行 VxWorks ,必须 编写相应的 BSP ,VxWorks 系统在运行时 ,内核通 过 BSP 和硬件交互。因此要移植 VxWorks 到 ARM9 内核的 S3C2440 上 ,必须编写支持 S3C2440 的 BSP。由于 VxWorks 已经对 ARM9 的内核有一 个基础的内核方面的 BSP 支持 ,在此基础上增加对 S3C2440 内部的时钟处理、中断处理、配置 MMU (Memory Management Unit ,内存管理单元) 以及 S3C2440 外接设备驱动。 2  具体实现 移植目标机的硬件配置具体如下 : 处理器 : S3C2440 , 内存大小 : 64M ; NAND Flash 大小 : 64M ;网卡 : DM9000 ,10/ 100M 的自适应。研究开 发的目标是 :系统的 Boot rom 从 NAND Flash 中启 动 ,并初始化相关设备 ,然后从目标机上通过网卡下 载 VxWorks 系统 ,并把 CPU ( Cent ral Process U2 nit)的控制权交给 VxWorks。 2. 1  NAND Flash 中启动 Bootroom Flash 由于体积小 ,容量大 ,目前广泛应用于嵌 入式系统以及消费电子的数据存储。Flash 设备分 为 NANDFlash (东芝公司开发) 和 NORFlash ( IN2 TEL 开发) 两种 ,NORFlash 的特点是芯片内执行 ( XIP , eXecute In Place ) , 执行上等同于 ROM ( Read Only Memory) ,可以编入 CPU 的地址空间 , 而且 NORFlash 的传输效率很高 ,在 1~4MB 的小 容量时具有很高的成本效益 ,但是写入和擦除速度 很低 ,大大影响了它的性能。NANDFlash 的结构 能提供极高的单元密度 ,可以达到高存储密度 ,并且 写入和擦除的速度也很快。应用 NANDFlash 的困 难在于对 NANDFlash 的管理需要特殊的系统接 口 ,功能上等同于计算机的硬盘。老版本的 ARM 系统中很多都配有 NORFlash 用于存储系统的启动 程序 ,这种方式的好处是系统启动程序比较简单 ,但 是成本较高 ,因此 ,选择 NANDFlash 作为启动程序 存储空间。S3C2440 可以硬件设置为 NAND Flash 启动 ,在这种方式下 ,处理器上电的时候 ,自动从 NANDFlash 中取 4 K 字节装入内存的 0x00000000 到 0x00001000 的地址空间内部 , 然后 CPU 从 0x0000000 处开始执行程序 ,因此要实现从 NAND2 Flash 启动 ,必须通过 NANDFlash 中前 4 K 字节的 程序把 NANDFlash 中的主程序搬运到指定的内存 空间 ,然后跳转到主程序的地址。根据这个思路 ,可 以编写了一个自举程序 ,这个程序的功能就是负责 把 VxWorks 的 Boot rom 程序搬运到一个指定的内 存地址。要完成这个任务 ,首先要了解 VxWorks 的 Boot rom 的启动原理。 Boot rom 的入口程序代码在 BSP 目录中的 ro2 mInit . s 中 ,系统通过 3 个宏定义通知编译器程序将 在什么地方开始运行 Boot rom ,这 3 个宏定义分别 是 : ROM _ TEXT _ ADRS、RAM _ LOW _ ADRS 和 RAM_ H IGH_ADRS。这 3 个宏分别在 makefile 和 config. h 中进行了定义 ,在同一个系统中 ,两个地方 的定义必须一致。 3 个宏定义具体表示为 : 1) ROM 起始地址 :ROM_ TEXT_ADRS ; 2) VxWorks 启动地址 :RAM_LOW_ADRS ; 3) Boot rom 程序的入口地址 : RAM _ H IGH _ ADRS。 自举程序的功能是引导 Boot room 启动 ,因此 需要把目标程序的启动地址设置为 RAM_ HIGH_ ADRS ,其他的宏定义也要根据实际环境做相应的 设置。 当然 ,把自举程序融入 Boot rom 的 romInit . s 中也是完全可行的。但是 romInit . s 中是把 R0 寄 存器作为存储启动类型的变量 ,这个变量将要作为 参数传递给 romStart 函数 ,因此在把自举程序嵌入 romInit . s 时要注意对寄存器 R0 的保护。 2. 2  中断处理 实时系统中的系统反映速度很大程度上取决于 硬件的中断处理和操作系统的中断处理之间的相互 配合。S3C2440 对中断是这样分配的 ,一个快速中 断源 ,60 个普通中断源。其中 6 个外部中断可以处 理 32 个外部中断源。所有的中断都有相应的中断 源悬挂寄存器中相应的位与之对应 ,由相应的屏蔽 寄存器决定 CPU 是否响应该中断源的中断 ,由中 断悬挂寄存器显示当前 CPU 应该响应哪个中断。 当有效的中断发生后 ,CPU 会自动跳转到地址 为 0x00000018 的中断跳转地址 (见表 1) 处开始执 行 ,所以 VxWorks 的中断处理程序必须在此处安 装中断处理程序表的地址。 表 1  异常向量 Tab. 1  Exception vectors 地址 向量名称 入口模式 0x00000000 重启 超级用户 0x00000004 未定义指令 未定义 0x00000008 软件中断 超级用户 0x0000000C 中止 (预取) 中止 0x00000010 中止 (数据) 中止 0x00000014 保留 保留 0x00000018 中断请求 中断请求 0x0000001C 快速中断请求 快速中断请求   Vxwoks 中安装中断向量是系统自动安装的 , 如果系统的 0x00000000 地址不是 ROM 地址 ,Vx2 Works 能成功的安装中断向量 ,如果是 ROM 地址 , 需要通过编写代码安装中断向量。对 NANDFlash 02    中  国  航  海 2010 年第 2 期 启动来说 , 系统 0x00000000 处地址是 CPU 的 RAM ( Random Access Memory) 区域 ,所以 Vx2 Works 能够自动安装中断向量 ,无需用户编写安装 代码 , 这也是 NANDFlash 启动相对于 NOR2 FL ASH 启 动 的 一 个 优 势。从 CPU 跳 转 到 0x00000018 地址后 ,就进入 VxWorks 的中断处理 程序。 在 VxWorks 的 BSP 中 ,系统提供中断处理程 序的指针 ,用户需要编写 BSP 中通用的中断服务程 序 ,中断发生后 Vxwoks 首先转向这个通用的中断 服务程序 ,由该通用程序指定具体的中断的服务程 序。系统提供的 3 个中断服务程序的指针 ,分别是 : 1) 中断验证程序指针 sysIntL vlVecChkRtn ; 2) 中断允许程序指针 sysIntL vl EnableRt n ; 3) 中断禁止程序指针 sysIntL vlDisableRt n。 因此用户必须编写以下 3 个函数与上面的 3 个 中断服务程序指针对应 : (1) 中断验证函数 s3c2440xIntL vlVecChk ,主 要功能是通过验证中断悬挂寄存器和传递的参数是 否一致来判断是否应该进入中断服务程序。需要注 意的是清除中断悬挂寄存器的时机 ,用户需要在确 认中断已经处理完成之后才可以清除中断悬挂寄存 器。电平中断能否正常连续触发是验证清除中断悬 挂寄存器时机设置是否正确的方法。函数原型 : STA TU S s3c2440xIntL vlVecChk ( int 3 pLevel , int 3 pVector) 。 (2) 中断允许函数 s3c2440xIntLvl Enable ,主要 工作是将相应的屏蔽寄存器置位或清零 ,实现中断 允许功能。函数原型 : STA TU S s3c2440xIntL vl Enable (int level) 。 (3) 中断禁止函数 s3c2440xIntL vlDisable ,主 要工作是将相应的屏蔽寄存器置位或清零 ,实现中 断禁止功能。函数原型 : STA TU S s3c2440xIntL vlDisable (int level) 。 2. 3  MMU配置 在 VxWorks 中标准的 BSP 上已经提供了对 MMU 的支持 ,用户可以根据自己的映射需求 ,在 syslib. c 中的内存映射数组中填入虚拟地址和实际 地址映射关系。其中 ,虚拟 0 地址映射成物理地址 的 LOCAL _M EM_LOCAL _ADRS ,虚拟地址 LO2 CAL_M EM_LOCAL_ADRS 还是映射成 LOCAL _ M EM_LOCAL _ADRS。其余 IO 地址的虚拟地址 和实际地址一一对应。 2. 4  网卡驱动的编写 VxWorks 的网络结构比标准的 OSI ( Open System Iterconnection) 多了一个 MU X ( Multiple2 xer)层 ,MU X 层屏蔽了网络层和数据链路层之间的 数据直接交互。VxWorks 下有两种形式的网卡驱 动 ,一种是兼容 BSD4. 4 的网卡驱动 ,另外一种是 END ( Enhanced Network Drivers) 驱动 ,由于 END 驱动在 VxWorks 中使用方便 ,简单 ,而且 VxWorks 对此支持比较充分 ,因此选择实现 DM9000 的 END 驱动。 要做好 DM9000 网卡的 END 驱动首先要初始 化网卡的数据结构 dm9000end_device ,这个数据结 构因网卡的不同可能成员有所不同 ,但是所有的网 卡驱动都必须包含 END_OBJ 类型的成员、网卡单 元号、中断号和中断向量。 确定了数据结构之后 ,接着编写相关的驱动函 数 ,这些函数包括 : 1) 网卡加载函数 dm9000 EndLoad ,主要工作 包括加载字符串解析 ,内存分配 ,网卡驱动数据结构 初始化 ,网卡默认配置加载。函数原型 : END_OBJ3 dm9000 EndLoad (char 3 init St ring , void 3 pB2 SP) 。 2) 网卡启动函数 dm9000Start ,主要工作包括 : 中断相关寄存器设置以开启中断 ,挂接中断服务程 序。函数原型 : LOCAL STA TU S dm9000Start ( END_DEV ICE 3 pDrvCt rl) 。 3) 停止网卡函数 dm9000Stop ,主要工作包括 : 中断相关寄存器设置以禁止中断 ,接触中断服务程 序和中断之间连接。函数原型 :LOCAL STA TU S dm9000Stop ( END_D EV ICE 3 pDrvCt rl) 。 4) 网卡控制函数 dm9000Ioctl ,主要工作包括 : 解析用户的配置命令 ,根据用户的配置命令更改网 卡设置。函数原型 :LOCAL int dm9000Ioctl ( END _D EV ICE 3 pDrvCt rl , int cmd , caddr_t data) 。 5) 网卡卸载函数 dm9000Unload ,主要工作包 括 :停止设备 ,释放内存。函数原型 :LOCAL STA2 TU S dm9000Unload ( END_DEV ICE 3 pDrvCt rl) 。 6) 网卡发送函数 dm9000Send ,主要工作包括 : 检测网卡工作状态 ,把上层送入 M_BL K_ID 数据结 构中的数据写入网卡发送 ,触发发送中断 ,清除发送 数据结构以便下次发送。函数原型 :LOCAL STA2 TU S dm9000Send ( END_D EV ICE 3 pDrvCt rl , M_ BL K_ID pBuf) 。 7) 增加组播地址函数 MCastAdd ,主要工作是 增加组播地址到地址过滤器。函数原型 : LOCAL STA TU S dm9000MCastAdd ( END _ DEV ICE 3 pDrvCt rl , char 3 pAddress) 。 12  王  军 ,等 :VxWorks 操作系统在 S3C2440 上的移植 8) 删除组播地址函数 dm9000MCastDel ,主要 工作是在地址过滤器中删除一个组播地址。函数原 型 : LOCAL STA TU S dm9000MCastDel ( END _ DEV ICE 3 pDrvCtrl , char 3 pAddress) 。 9) 获取组播地址函数 dm9000MCast Get ,主要 工作是返回给调用者组播地址列表。函数原型 : LOCAL STA TU S dm9000MCast Get ( END _ DE2 V ICE 3 pDrvCt rl , MUL TI_ TABL E 3 p Table) 。 10) 启动轮询模式函数 dm9000PollStart ,主要 工作包括 :关闭中断 ,重启网卡。这个模式主要用在 WDB ( Winel River Debug)调试过程中。函数原型 : LOCAL STA TU S dm9000PollStart ( END _ DE2 V ICE 3 pDrvCt rl) 。 11) 关闭轮询模式函数 dm9000PollStop ,主要 工作包括 :开启中断 ,重启网卡。这个模式也用在 WDB 调试过程中。函数原型 : LOCAL STA TU S dm9000PollStop ( END_DEV ICE 3 pDrvCt rl) 。 12) 轮询模式发送函数 dm9000PollSend ,主要 工作包括 :测试网卡状态 ,发送数据。这个模式主要 用在 WDB 调试过程中。函数原型 :LOCAL STA2 TU S dm9000PollSend ( END_DEV ICE 3 pDrvCt rl , M_BL K_ID pBuf) 。 13) 轮询模式接收函数 dm9000PollRcv 主要包 括 :测试网卡状态 ,数据接收。这个模式主要用在 WDB 调试过程中。函数原型 : LOCAL STA TU S dm9000PollRcv ( END _ D EV ICE 3 pDrvCt rl , M _ BL K_ID pBuf) 。 除了以上函数需要实现之外 ,还有一些辅助函 数 ,比如寄存器操作函数 ,地址操作函数等 ,可以根 据编程人员的个人习惯而定。 在编写驱动的过程中 ,有几个基本概念必须要 注意 : (1) 网卡的端口基址 ,这个地址低地址由接到 芯片 CMD (Command Type) 引脚的 CPU 地址线确 定 ,高端地址由接入芯片的 n GSn 决定 ,如果使用 CPU 地址线的 addr2 和 n GS3 ,那么这个端口基址 就是 0x18XXXXX0 ,其中 XXXXX 可以是任意数 字。有很多 DM9000 网卡驱动源码中把这个地址 设置为 0x18000300 ,这是因为很多应用中使用另外 一种 100pin 的 DM9000 芯片 , 这种芯片除了有 CMD 信号之外 ,还有 6 根地址片选信号 SA4~ SA9 ,根据数据手册上引脚定义和具体 SA4~SA9 对应的 CPU 地址线 ,需要计算出从网卡的端口地 址 ,如果 SA4~SA9 对应 CPU 地址的 addr4~ad2 dr9 ,那么网卡端口基址就是 0x18000300。 (2) 中断向量和中断号之间的关系。实际上 , 在 ARM 系统中中断向量和中断号有一个确定的对 应关系 ,但是这个对应关系和在 x86 系统下面是不 同的。A RM 系统中中断向量和中断号是一一对应 的关系。 (3) 实际调用网卡初始化的代码实际上在 tor2 nado\ target\ config\ all \ bootConfig. c 中使用 mux2 DevLoad 函数装载网卡 ,只要前面中断能正常触发 , 中断向量号 ,网卡端口地址等设置正确 ,基本上能正 确装载网卡。 3  结语 经过上述步骤的代码编写和调试 ,成功地从 NANDFlash 中启动了 VxWorks 的 Boot rom ,打开 MMU ,通过网络从开发机上下载 VxWorks 系统和 网络数据采集程序镜像 ,并启动运行。经过实际运 行和测试 ,与原来 486 的工控机相比 , ,系统处理速 度相当 ,运行稳定 ,而且功耗更小。 参 考 文 献 [ 1 ]  WindRiver , Troubleshooting Booting Problemes [ G] Wind River Systems , Inc. 1997. [ 2 ]  Samsung Elect ronics. S3C2440A 322BIT CMOS MI2 CROCON TROLL ER USER’S MANUAL Revision 1 [ G] Samsung Elect ronics Co. , Ltd. [ 3 ]  WindRiver , Tornado Device Driver Workshop [ G] Wind River Systems , Inc. 1997. [ 4 ]  Neil Matthew , Richard Stones , Beginning Linux Pro2 gramming ( Third Edision) [ M ]. Wiley Publishing , Inc 2004. [ 5 ]  王  爽. 汇编语言 [ M ] . 北京 : 清华大学出版社 , 2003. [ 6 ]  WindRiver VxWorks Programer’s Guide 5. 4 Edition 1 [ G] . Wind River Systems , Inc. 1997. [ 7 ]  陈智育. VxWorks 程序开发实践[ M ]北京 :人民邮电 出版社 ,2004. [ 8 ]  DAV ICOM , DM9000A Ethernet Controller with General Processor Interface [ G] . DAV ICOM Semi2 conductor , Inc. 2005. 4. 21. [ 9 ]  ARM Limitd ,ARM920 T ( REV 1) Technical Refer2 ence Manual [ G] . ARM Limitd 2000. 9. [10 ]  杜春雷. ARM 体系结构与编程[ M ] .北京 : 清华大学 出版社 , 2003. 22    中  国  航  海 2010 年第 2 期
本文档为【VxWorks操作系统在S3C2440上的移植】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_729823
暂无简介~
格式:pdf
大小:202KB
软件:PDF阅读器
页数:4
分类:互联网
上传时间:2011-08-10
浏览量:34