2440_WinCE操作GPIO
DVK2440I-LCD700I-T开发指南-WinCE 篇

DVK2440开发指南WINCE5.WINCE5.00篇本手册适用于DVK2440等采用DM9000百兆网卡的零点电子S3C2440开发板系列产品的WINCE5.0开发,详细产品信息请参见公司网站/目录一、安装WINCE5.0开发环境 (1)二、安装基于DVK2440的BSP包 (8)三、新建工程并生成新的WindowsCE映象文件 (11)四、下载并烧写Wince操作系统 (25)五、把nk.nb0下载到SDRAM直接运行WINCE (39)六、建立Wince平台和PC的连接 (42)七、使用Platform builder导出自己的SDK (44)八、如何使用Platform builder的远程编辑工具 (54)九、在EmbededVC++4.0建立应用程序 (57)十、在VS2005建立应用程序,并下载到开发板上运行 (63)十一、如何修改WINCE网卡MAC地址 (72)十二、结束语 (73)装WINCE5.0开发环境一、安装一、安以下步骤基于Windows XP操作,windows2000及以前操作系统不支持WINCE5.0开发环境的安装。
如果PC机原来没有安装过dotnet framework1.1,请先安装dotnetfx.exeStep1:打开WINCE5.0安装包文件夹,找到其中的安装文件,并双击开始安装点击Install开始安装Step2:进入"Welcome"界面,点"Next"继续Step3:进入"License Agreement"界面,点"Next"继续Step4:进入序列号输入界面,输入正确的序列号,点"Next"继续Step5:选择安装类型,按缺省安装即Custom,点"Next"继续Step6:选择安装目录,点"Next"继续Step7:在定制安装中选择您所需要的系统平台,(对基于S3C2440的用户来说,请一定要安装ARMV4I两个选项).点"Next"继续Step8:开始安装安装过程比较漫长,可以去喝杯茶,过20多分钟再回来。
2440硬件使用说明

一、中心简介...................................................................................................................................4 二、开发板硬件资源:...................................................................................................................5 1、核心板参数.........................................................................................................................5 2.1.1 尺寸:....................................................................................................................5 2.1.2 中央处理器:........................................................................................................ 5 2.1.3 SDRAM:.................................................................................................................5 2.1.4 FLASH Me
阳初 2440 开发 板说明书

阳初2440开发板使用说明书2008‐3‐20目录第一章 开发板的介绍 (6)1.1开发板简介 (6)1.1.1硬件资源特性 (6)1.1.2用户光盘资源说明 (7)1.2 Linux特性 (7)1.3开发套件配件清单 (8)第二章 开发板使用说明 (8)2.1 开发板设置及连接 (9)2.1.1 开发板外部接口连接 (9)2.1.2 设置超级终端(主机PC) (9)2.2 开发板BIOS功能及使用说明 (12)2.2.1 开机进入BIOS模式 (13)2.2.2 安装USB驱动 (14)2.2.3 vivi子菜单功能说明 (14)2.3 预装linux系统的功能简介 (14)2.3.1 设置开发板网络 (15)2.3.2 如何中止程序的运行 (15)2.3.3 挂载USB闪存盘(U盘) (16)2.3.4 使用SD卡 (17)2.3.5 如何通过串口与PC互相传送文件 (17)2.3.6 串口2 的测试 (19)2.3.7 使用ftp传递文件 (21)2.3.8 设置并保存系统实时时钟 (26)2.3.9 如何掉电保存数据到Flash (26)2.3.10 使用telnet登陆开发板 (26)2.3.11 如何设置开机自动运行程序 (27)第三章 安装嵌入式系统 (28)3.1安装启动程序 (28)3.1.1在PC上安装JTAG下载线的驱动程序 (29)3.1.2烧写Bootloader (35)3.2串口安装Linux (36)3.2.1分区并格式化闪存 (36)3.2.2下载Bootloader (37)3.2.3下载Linux的内核映象 (39)3.2.4下载文件系统映象 (40)3.2.5启动Linux系统 (41)3.3 tftp安装linux (41)3.3.1 启动TFTP服务器 (41)3.3.2 网络设置 (43)3.3.3 下载内核映象以及文件系统 (45)3.4安装WinCE系统 (47)3.4.1下载WindowsCE启动程序 (47)3.4.2下载WindowsCE映象 (49)3.4.3启动WindowsCE (54)第四章 ADS1.2 集成开发环境的使用 (54)4.1 使用ADS创建LED工程 (54)4.1.1 建立一个工程 (54)4.1.2 编译和链接工程 (58)4.2 下载和运行 (65)第五章 建立linux开发环境 (66)5.1 linux发行版本介绍 (66)5.2 完全图解安装Redhat9.0 (70)5.2.1用grub引导双操作系统 (70)5.2.2使用vmware虚拟机 (74)5.3 配置minicom终端通讯工具 (75)5.4 配置网络文件系统NFS服务 (77)5.5 通过NFS启动系统 (78)5.6 配置PC机Linux的ftp服务 (78)5.7 配置PC机的telnet服务 (79)第六章 嵌入式linux系统架构介绍 (80)6.1 Bootloader,内核镜像,文件系统 (80)6.2 Bootloader介绍 (81)6.3 内核 (82)6.4 文件系统 (82)6.4.1嵌入式系统存储设备及其管理机制分析 (82)6.4.2基于Flash的文件系统 (84)第七章 配置和编译linux (85)7.1 交叉编译环境 (85)7.1.1 交叉编译环境介绍 (85)7.1.2建立交叉编译环境 (86)7.2 bootloader (88)7.2.1编译bootloader (88)7.2.2 使用VIVI命令 (90)7.3 使用缺省配置文件编译内核 (92)7.3.1 解压内核源代码 (92)7.3.2 装载缺省配置文件 (93)7.3.3 编译内核 (96)7.4 定制linux内核 (99)7.4.1 如何配置CPU选项 (99)7.4.2 如何配置USB鼠标和键盘 (100)7.4.3 如何配置优盘的支持 (102)7.4.4 如何配置CS8900 网卡驱动 (103)7.4.5 如何配置声卡驱动 (105)7.4.6 如何配置串口驱动 (106)7.4.7 如何配置RTC实时时钟驱动 (108)7.4.8 如何配置yaffs文件系统的支持 (109)7.4.9 如何配置EXT2/VFAT/ NFS等文件系统 (110)7.5 根文件系统的制作 (112)7.5.1 根文件系统的构成 (112)7.5.2 构建根文件系统 (112)7.5.3 Yaffs根文件系统映像的制作 (114)7.5.4 Qtopia文件系统映象 (116)第八章 为目标板编写linux应用程序 (118)8.1 编辑编译示例程序 (118)8.2 如何把编译好的程序下载到开发板运行 (121)8.2.1 使用优盘 (121)8.2.2 通过串口传送文件到开发板 (123)8.2.3 通过网络文件系统NFS执行 (124)8.2.4 通过ftp下载文件执行 (126)8.3 程序驱动开发实验 (128)8.3.1 编辑编译LED灯驱动程序 (128)8.3.2 用ftp下载LED灯驱动程序 (129)8.3.3 运行LED灯驱动程序 (132)第九章 配置和编译Wince (134)9.1 安装开发环境Platform Builder 4.2 (134)9.2 Wince Image 生成简要说明 (139)9.2.1 解压缩文件 (139)9.2.2 导入CEC文件 (139)9.2.3 Image编译过程 (142)9.3 烧写Wince系统 (146)附录1 linux命令初步 (146)1.1文件列表 (146)1.2目录切换 (146)1.3复制 (147)1.4删除 (147)1.5移动 (147)1.6比较 (147)1.7回显 (147)1.8容量查看 (147)1.9文件内容查看 (147)1.10分页查看 (147)1.11时间日期 (147)1.12查找 (148)1.13搜索 (148)1.14设置环境变量 (148)1.15编辑 (148)1.16压缩与解压 (148)1.17挂接 (148)1.18启动信息显示 (148)1.19改变文件权限 (148)1.20创建节点 (148)1.21进程查看 (149)1.22杀死进程 (149)1.23设置环境变量 (149)1.24启动信息显示 (149)1.25网络设置命令 (149)1.26设置网关 (149)1.27测试网络联通 (150)1.28路由检测 (150)附录2 硬件地址空间分配 (150)2.1 地址空间分配和片选信号定义 (150)2.2 跳线说明 (151)附录3 推荐网站和下载资源 (153)3.1图书 (153)3.2网站 (156)3.2.1大陆资源 (156)3.2.2台湾资源 (157)第一章 开发板的介绍1.1开发板简介1.1.1硬件资源特性阳初2440 开发板由核心板和底板构成,更加方便客户做二次开发使用,在光盘中提供有底板的PCB 图,更利于客户出板。
2440操作步骤

操作步骤
1.将LCD背光板与LCD板相连,LCD板接入12V直流电源(用重量较轻的开关电源)。
注:背光板输入电源端子的1、2、5是连在一起的,接12V;3、4是连在一起的,接地(即1脚接正,3脚接地即可,1脚标识为金属面朝自己的最右边第一脚)。
2.用交叉串口将2440板子的串口(USB设备接口附近、下面的那个)与PC机的串口相连,起动超级终端,波特率为115200。
3.给2440板子电源接12V(用重量较重的铁心电源),按复位按钮。
4.当超级终端出现“Initiating image download in 14 seconds.”时,按“空格”键,输入“boot”回车。
5.当超级终端出现“Enter your selection: ”时,选择“L”键后,将启动WinCE。
如果无法启动时,请将2440板子与LCD连接的排线不要连接,用上述方法启动winCE。
如果LED出现闪烁,说明WinCE正常启动,再重新接上LCD 的排线,重复上述步骤。
6.关于USB鼠标和USB键盘:在双层的USB HOST接口最底层可以接USB 鼠标或者USB键盘或者U盘;当需要同时接以上设备时,请用USB HUB引出来再接在USB HUB上。
2440开发板烧写WinCE镜像注意事项

OEMMultiBINNotify: Download BIN file information: ----------------------------------------------------[0]: Base Address=0x8C200000 Length=0x12C406C ----------------------------------------------------OEMVerifyMemory: StartAddr: 0x8C200000, Length:0x12C406C *** Downloading BIN image type *** TFTP: Desktop losing ACK, block number = 5113, Ack again TFTP: Desktop losing ACK, block number = 28650, Ack again TFTP: Desktop losing ACK, block number = 28651, Ack again TFTP: Desktop losing ACK, block number = 35365, Ack again TFTP: Desktop losing ACK, block number = 35365, Ack again rom_offset=0x0. Found pTOC signature. ROMHDR at Address 8C200044h RomHdr.ulRAMStart=8E800000h RomHdr.physfirst=8C200000h. ::OEMLaunch, ImageStart:0x8C200000, ImageLength:0x12C406C, LaunchAddr:0x8C201000 EbootWaitForHostConenct Got EDBG_CMD_JUMPIMG Got EDBG_CMD_CONFIG, flags:0x0000000F Enabling debug messages over Ethernet, IP: 192.168.1.103, port:1085 Enabling CESH over Ethernet, IP: 192.168.1.103, port:1086 Enabling KDBG over Ethernet, IP: 192.168.1.103, port:1086 KitlTransport: 0x0 OEMLaunch: (IMAGE_TYPE_RAMIMAGE|IMAGE_TYPE_BINFS) +WriteRegionsToBootMedia: ImageStart: 0x8C200000, ImageLength: 0x12C406C, LaunchAddr:0x8C201000 INFO: OEMLaunch: Found chain extenstion: '' @ 0x8C200000 Writing single region/multi-region update, dwBINFSPartLength: 19677292 dwRegionStart: 0x8C200000, dwRegionLength: 0x12C406C, dwStoreOffset: 0x0 Updateded TOC! -WriteRegionsToBootMedia +TOC_Write -TOC_Write TOC {
WinCE内核动态加载GPIO端口驱动的设计方法

WinCE内核动态加载GPIO端口驱动的设计方法针对采用基于流接口驱动方式进行GPIO端口驱动开发所存在的困难和不足,提出了采用动态方式加载(卸载)端口驱动的思路,给出了该思路下GPIO端口驱动设计方法的步骤和关键代码并进行了验证,为其他类似的驱动设计与实现提供参考。
WinCE下GPIO端口驱动大多采用流接口驱动的方式进行开发,在实现上主要依托Platform Builder编译环境将驱动程序编译成动态链接库,并整合到WinCE内核中。
但在实际项目的开发中,Platform Builder在驱动程序的开发和涮试上不够便捷,且在整合动态链接库和WinCE内核时,需要进行繁琐的参数配置,整个过程较为复杂。
笔者以飞凌S3C2440开发板为例,给出在VisualStudio 编译环境中采用动态加载方式来设计GPIO端口驱动程序的思路,较好地改进了目前常用的GPIO端口驱动设计方法,提高了开发效率。
1 GPIO端口的流驱动设计1.1 过程简述关于GPIO端口流驱动的设计原理,大量论文及书籍中均有介绍,这里不再赘述。
其设计步骤也遵循固定的设计模式,按照编写驱动实现代码、驱动程序配置、编译调试的顺序进行。
1.1.1 编写驱动实现代码WinCE流式驱动实质上是按照固定的流函数接口实现的一个动态链接库。
在实现时,创建相关的.cpp文件、.h文件和.def文件,根据需要实现xxx_Init、xxx_Read、xxx_Write等流接口函数即可。
1.1.2 驱动程序配置WinCE配置文件分为源代码配置文件和镜像配置文件,通过这两种配置文件,Platform Builder编译环境实现对驱动代码和内核的编译、整合。
具体包括:①创建相关提供注册信息的.reg文件以供在WinCE注册表中注册GPIO 驱动程序。
②在Platform Builder的相关目录下,配置Dirs文件、Makefile文件、Sources文件和Platform.bib文件中的相关参数,Platform Buil der在编译时按照配置的参数编译驱动程序并将其整合到内核镜像中。
FL2440烧写WINCE问题实录

关于今天FL2440烧写WINCE5.0中出现的问题总结今天烧写在FL2440上烧写WINCE5.0,过程虽然艰辛,但是最终还是成功的烧写了进去。
下面我将今天遇到的问题做一个总结。
使用的是光盘中的DNW软件。
最开始把拨码1234 全部关闭。
在烧写之前进入Select Menu 菜单,如下,在正式烧写之前要先把以前的擦除掉,以免会有影响。
选择6 ,之后如下图。
此处8个分区,把6号、7号分区擦除掉。
6号是WINCE的引导分区,把6 : offset 0x04400000, size 0x00080000 [eboot]分区擦出,Are you sure to erase nand flash from page 0x8800, block count 0x4 ? [y/n] 选择Y。
会显示....Erase Nand partition completed success擦出成功,并返回Select Menu 菜单。
同样的方法探险7号分区。
成功后再返回Select Menu 菜单。
接下来目的是把boot引导下载到板子上,因此选择[1] Download to flash 选择1后界面显示和擦除之前一样,再选择6,如下图所示,从USB Port-->transmit 中选择eboot.nb0下载,成功后如下图。
此时已成功把eboot.nb0烧到板子中,但是还没有完成。
关闭电源,接下来把拨码开关12打开,34关闭(否则烧写时烧不进去)。
打开电源,会自动进入WINCE 的引导,会有5秒的选择配置时间,在5秒内按空格进入配置,如下图。
按空格后,出现配置选项。
如下图选择F格式化,格式化成功如下图再选择9 格式化,成功后如下图选择U USB下载xin.bin到板子中,同样通过USB Port-->transmit 来选择bin文件。
如图此时等待一会就出现如下图到此时,还是继续等待,但是此处等待时间较长,我有开始还以为是卡住了,按了复位,后来才知道是因为等待时间不够长。
浅淡WINCE环境下操作ARM芯片GPIO的方法

8 8・
信息产 业
浅淡 WI C N E环境下操作 A M芯 片 G I R PO的方法
李 清峰
( 尔 滨威 克 科技 有 限公 司 , 龙 江 哈 尔滨 10 0 ) 哈 黑 5 0 0
摘 要 : 此 对 如何 在 WI C 在 N E环 境 下 操 作 A M 芯 片 G I 行 了技 术 原 理 与程 序 设 计 的详 细 讨 论 与 阐 述 。 R PO进 关 键 词 : R G I WI C A M; PO; N E环 境
应用程序仍然可以使用这两个函数来访问所有这些虚拟空间 ,对于 18 95年 , oe l n和 S v ub r 计 了 他 们 自己 的 第 一 不太复杂 的程序 , R grWio s t eF re 设 e 甚至可 以省略写驱动直接在应用程序中操作 , 其实 代 3 位 、M 的处理器 , 2 6 Hz 用它做 f了一台 R S } J IC指令集的计算机 , 在 C 6 简 E 之前 ,这些驱动也是工作在用户态的。下面以操作 S m u g a sn 称 A M( cr IC Mah e 。 就是 A M 这 个 名 字 的 由来 。 IC ¥ C 4 0的 G I R A on RS ci )这 n R RS 3 2 1 PO为例 , 讲述这个步骤 : a . 首先 在 B P中 的 s4 0 的 全称 是 “ 简 指 令 集 计 算 机 ”rd cd i t co e cm u r , 精 (eu e n r t n st o p t ) su i e S 2 1. 件 ,找 到 虚 拟地 址 映 射 以及 操 作 h文 它支持 的指 令 比较简单 , 以功耗 小 、 所 价格便 宜 , 特别合适 移动设 G I PO的寄存器结构体 ( 这个在 自己制作 一些特殊设 备的 B P时 , S 会 备。 依 据需 要 而发 生 更 改 ) / /Re itr : IO p r gse s / ot 2 1 年初 , 01 微软公 司宣布 , 版 Widw 将正式支持 A M处 下一 no s R #de ne I i f OP_BAS E Ox 60 00 / 0 56 00 0 B1 00 / x 0 00 理器 。 这是计算机工业发展历史上的一件大事 , 标识着 X 6 8 处理器的 主导 地 位发 生 动 摇 。 目前 在 移 动设 备 市 场 , R 处 理 器 的市 场 份 额 A M tp d fs u t { ye e t c r un ine it r sg d n GPACON ; / /O0 超 过 9 %; 0 在服 务 器 市场 , 年 (0 1 ) 会 有 2 G z 服务 器 上 今 21年 就 . H 的 5 市 ; 面 电脑 市 场 , 在 又有 了微 软 的支 持 。A M 成 为 主 流 , 怕 在桌 现 R 恐 u sg e n r ADA n i n d it GP T; 指 日可待。作为 Ⅱ 人 , 应该紧跟 主流 , 率先掌握 A M 的软件开发技 R u s e n r A 2 ; n i d i P D1 ] n g t 1 un i n d n r sg e it GPBCON; / 1 / 0 巧, 才能在 A M 的时代成为 I R T的主流 。接下来就针对 WI C N E环境 下操 作 A M 芯 片 G I 方 法 及 A M 芯 片 的程 序 开 发 、编程 等 问 R PO的 R 题展 开讨 论 。 un in d i t r TATUS3; / sg e n GS /B8
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机基本知识windows ce系统将gpio的实地址(例如2440的g pio的基地址为0x56000000)映射到虚拟地址空间(gpio对应为0xb1600000),这样,通过对这段虚拟地址空间的操作,就能够完成对gpio或者其他片内资源的控制、输入输出工作。
要操作一个平台的gpio,在其对应bsp中按照基地址,找到虚拟地址,并且找到方便操作这个地址的数据结构就可以了,要害函数就是 virtualalloc和virtualcopy。
下面以操作samsung s3c2440的gpio为例,讲述这个步骤:
1.首先在bsp中的s2440.h文件,找到虚拟地址映射以及操作gpio的寄存器结构体(这个在自己制作一些非凡设备的bsp时,会依据需要而发生更改)
#define iop_base 0xb1600000 // 0x56000000
typedef struct {
unsigned int rgpacon; // 00
unsigned int rgpadat;
unsigned int rpad1[2];
unsigned int rgpbcon; // 10
unsigned int rgpbdat;
unsigned int rgpbup;
unsigned int rpad2;
unsigned int rgpccon; // 20
unsigned int rgpcdat;
unsigned int rgpcup;
unsigned int rpad3;
unsigned int rgpdcon; // 30
unsigned int rgpddat;
unsigned int rgpdup;
unsigned int rpad4;
unsigned int rgpecon; // 40
unsigned int rgpedat;
unsigned int rgpeup;
unsigned int rpad5;
unsigned int rgpfcon; // 50
unsigned int rgpfdat;
unsigned int rgpfup;
unsigned int rpad6;
unsigned int rgpgcon; // 60
unsigned int rgpgdat;
unsigned int rgpgup;
unsigned int rpad7;
unsigned int rgphcon; // 70
unsigned int rgphdat;
unsigned int rgphup;
unsigned int rpad8;
unsigned int rmisccr; // 80
unsigned int rdckcon;
unsigned int rextint0;
unsigned int rextint1;
unsigned int rextint2; // 90
unsigned int reintflt0;
unsigned int reintflt1;
unsigned int reintflt2;
unsigned int reintflt3; // a0
unsigned int reintmask;
unsigned int reintpend;
unsigned int rgstatus0; // ac
unsigned int rgstatus1; // b0
unsigned int rgstatus2; // b4 ;;; shl
unsigned int rgstatus3; // b8
unsigned int rgstatus4; // bc
unsigned int rfltout; // c0
unsigned int rdsc0;
unsigned int rdsc1;
unsigned int rmslcon;
unsigned int rgpjcon; // d0
unsigned int rgpjdat;
unsigned int rgpjup;
unsigned int rpad9;
}iopreg;
二、因为我用的mini2440开发板的gpb0接在蜂鸣器上,所以我以操作gpb0为例编写代码。
这样给gpb0一个高电平,那么蜂鸣器就会响,反之蜂鸣器就会停止发声
#ifdef __cplusplus
extern "c"
{
#endif
bool virtualcopy( pvoid, pvoid, dword, dword );
#ifdef __cplusplus
}
#endif
void gpio() //通过gpio控制蜂鸣器
{
volatile iopreg *v_pioregs;
v_pioregs = (volatile iopreg *)virtualalloc(0, sizeof(iopreg), mem_reserve, page_noaccess);
if(v_pioregs)
{
if(virtualcopy((pvoid)v_pioregs, (pvoid)iop_base, sizeof(iopreg), page_readwrite | page_nocache))
{
v_pioregs->rgpbcon = 1; //
将gpb0设置为output
v_pioregs->rgpbdat = 0x3ff; //设置为高电平,蜂鸣器发声
sleep(3000);
v_pioregs->rgpbdat = 0; //恢复为低电平,蜂鸣器停止发声
}
virtualfree((lpvoid)v_pioregs, 0, mem_release);
v_pioregs = null;
}
}
@written by .cpp。