设备上WINCE 环境下怎样实现URL 连接免费web服务器器

博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)21ic官方微信-->
使用Linux系统做准备——建立Bootloader及设备树
技术达人, 积分 8086, 距离下一级还需 1914 积分
技术达人, 积分 8086, 距离下一级还需 1914 积分
技术达人, 积分 8086, 距离下一级还需 1914 积分
技术达人, 积分 8086, 距离下一级还需 1914 积分
有朋友想要在ZedBoard上做WinCE,但这方面的资料极为稀缺,而WinCE又是体积庞大、版权成本很高的操作系统,于是开源有小巧的嵌入式Linux就成了首选。之前兔子为了做出图形界面,还致力于移植桌面型的Linaro Ubuntu系统,不过ADI给出的参考例子未经优化奇卡无比,Xillinux正式版迟迟未现又只支持色彩度很低的简易VGA接口(ZedBoard上的VGA甚至到不了16位色),于是兔子不得不放弃之前的工作,重新启用ZedBoard出厂默认的轻量级Linux上。这个系统没有图形桌面,但已包含了网卡、HDMI驱动和其他基本功能,足够使用了。
想要在Linux下控制外设,最重要的一环就是驱动了,但在动手写驱动之前,先要做些准备工作。为了减少工作量,我们就直接修改ZedBoard的出厂Demo,加入之前完成的my_gpio外设,并通过U-Boot实现Bootloader功能。这个Demo的源工程可以在Digilent网站的ZedBoard页面找到:
点击下面的Download,可以下载到ZedBoard_OOB_Design.zip文件,这个压缩包里包含了XPS工程、U-Boot文件、Linux内核配置文件、DeviceTree源文件、rootfs等。README.txt中有相近的操作说明,建议通读一遍。
ZedBoard上默认的XPS系统工程位于hw\xps_proj文件夹下,双击system.xmp打开工程,按照之前所说的方法,将my_gpio外设IP核导入到工程中。
之后,查看一下XPS是否为我们的外设分配了地址空间,如果没有,就需要手动设置一个地址,这里我们设成0x75C80000,空间大小为AXI设备统一的64K。
按照ZedBoard学习手记(二)中的方法设置总线连接,结果如下图:
修改xps_proj\data\system.ucf文件,为my_gpio外设分配外部引脚(ucf约束文件中的引脚名称和Ports中的一定要相同,已经有不少网友在这里出过问题了)。
完成后先单击Generate BitStream生成配置数据,再点击Export Design,选Export & Launch SDK将硬件信息导出到SDK中。
在SDK里,新建一个C工程,不同于裸机的HelloWorld,这次要建立的是Bootloader,因此选择FSBL工程,即First Stage Bootloader,用实现U-Boot之前的初始化和启动工作。其他选项默认即可。
编译一下工程,完成后SDK会生成FSBL的elf文件,另外加上从XPS导出的System.bit,以及我们在第一篇文章中编译生成的u-boot.elf,就可以生成用来实现SD卡启动系统的完整Bootloader文件了。
[url=]u-boot.elf[/url]在ZedBoard_OOB_Design中包含,不过这个兔子没试过,通过Xilinx U-Boot编译生成u-boot.elf的方法请见:
集齐这三个文件之后,点击Xilinx Tools→Create Boot Image,添加到列表中,选择一个输出路径,就可以创建Bootloader了。
SDK会在输出路劲生成u-boot.bin文件,将其改为BOOT.bin,拷贝到SD卡中,为ZedBoard板配置合适的跳线。这时再打开ZedBoard电源,Bootloader会初始化PS,用BitStream配置PL(包含了我们创建的my_gpio外设),并将操作权移交给U-Boot。U-Boot会自动加载Device Tree、Linux内核镜像和RootFS,最终启动Linux。
ZedBoard出场时SD中还带有zImage、devicetree和rootfs文件,这些文件都可以采用原有的,直接用Xilinx交叉编译工具编译写好的C语言驱动就可以在这个系统上运行并控制外设了。
当然,如果你想自己编译内核,或者不想采用静态物理地址的方式调用外设,就需要再往下进行一步,注意这一步对于Linux下控制AXI总线自定义外设并非必要。
为了给有兴趣的朋友继续深入研究做个铺垫,这里兔子就讲一下编译ZedBoard上运行的Linux内核和设备树吧。当然这个方法也详细记录在ZedBoard_OOB_Design的README文件中。
在PC的Linux环境下(兔子这里是Ubuntu)通过Git指令下载Digilent Linux内核源码:
git clone git://github.com/Digilent/linux-3.3-digilent.git
切换到ZedBoard Branch:
cd linux-3.3-digilent
git [url=]checkout[/url] -b zedboard_oob v3.3.0-digilent-12.07-zed-beta
将[url=]ZedBoard_OOB_Design[/url]中的.config文件拷贝到源码目录下,然后编译内核(指的是ZedBoard_OOB_Design所在目录):
cp /linux/.config ./[url=].config[/url]
生成的内核镜像zImage 位于/arch/arm/boot/文件夹下。
之后修改devicetree_ramdisk.dts文件,加入my_gpio外设信息。
/******* LED & Swtich Controller ******/
my_gpio@75c80000 {
& &&&compatible = &xlnx,my_gpio-1.00.a&;
& &&&reg = &0x75c00&;
& &&&xlnx,dphase-timeout = &0x8&;
& &&&xlnx,family = &virtex6&;
& &&&xlnx,c_num_reg = &0x1&;
& &&&xlnx,c_num_mem = &0x1&;
& &&&xlnx,s-axi-min-size = &0x1ff&;
& &&&xlnx,c_slv_awidth = &0x20&;
& &&&xlnx,c_slv_dwidth = &0x20&;
& &&&xlnx,use-wstrb = &0x0&;
通过下面指令生成设备树,同样Copy到SD卡中:
./scripts/dtc/dtc -O dtb –I dts –o ./devicetree_ramdisk.dtb \& && && & /linux/devicetree_ramdisk.dts
这个设备树文件有网友说是将驱动加入到内核中用的,但兔子以为不然。如果不想通过静态设备物理地址(上面的0x75c80000)来加载驱动,就可以根据这个设备树信息(具体是通过xlnx,my_gpio-1.00.a字串)来动态识别设备。
扫描二维码,随时随地手机跟帖
时间类勋章
精英会员奖章
等级类勋章
奔腾之江水
发帖类勋章
技术奇才奖章
人才类勋章
您需要登录后才可以回帖
热门推荐 /4wince开发,程序在设备上怎么连接数据库?在线等
[问题点数:40分,结帖人kurorolove]
wince开发,程序在设备上怎么连接数据库?在线等
[问题点数:40分,结帖人kurorolove]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2008年12月 移动平台大版内专家分月排行榜第一
2009年3月 移动平台大版内专家分月排行榜第三2009年1月 移动平台大版内专家分月排行榜第三2008年11月 移动平台大版内专家分月排行榜第三
匿名用户不能发表回复!|博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)后使用快捷导航没有帐号?
查看: 4711|回复: 11
设备上WINCE 环境下怎样实现URL 连接服务器
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
在虚拟机上 能够正常实现连接服务器 取得文件;现在,在设备上,则提示“无法连接服务器”;
CInternetSession IS;
CFile * pF
CString sURL;
sURL = (char *)strDataURL;
sURL.MakeUpper();
&&pFile=IS.OpenURL(sURL,1,INTERNET_FLAG_TRANSFER_BINARY ,_T(&Accept:*/*\r\n&),-1L);
& && &//执行这句时,就提示“无法连接服务器”;
跳转进去:在CStdioFile* CInternetSession::OpenURL(LPCTSTR pstrURL,
& & & & DWORD_PTR dwContext /* = 0 */, DWORD dwFlags /* = INTERNET_FLAG_TRANSFER_ASCII */,
& & & & LPCTSTR pstrHeaders /* = NULL */, DWORD dwHeadersLength /* = 0 */)
hOpener = InternetOpenUrl(m_hSession, pstrURL, pstrHeaders,
& & & & & & & & & & & & dwHeadersLength, dwFlags, dwContext);
//这句代码里的各个参数与在虚拟机上对比,均相同;执行这句后,虚拟机上 hOpener 为非空;而设备上为空;继续执行下去::GetLastError为12029;表示没有任何连接服务器;
实在做不出来了,请各位大侠帮忙看看....
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
你的设备能上网不?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
跟PC机同步了 就可以上网的
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
跟PC机同步了&&就可以上网的
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
Wininet 确实可以做到,我以前就做过,
只是如果你的设置不拨号,或者通过lan上网你代码写的再好也没有用。
在线时间3 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
引用 4 楼 constantine 的回复:
Wininet 确实可以做到,我以前就做过,
只是如果你的设置不拨号,或者通过lan上网你代码写的再好也没有用。
constantine说的设置拨号,是不是在设备PDA中设置呀? 我的PDA连网设置是这样的;选用“设置”-&&连接&下的&无线局域网&模式的,这样设置不行的吗?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
估计你的设备根本就没连上网络
在线时间10 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
我的意思是要不你的设置自己pppoe拨号,要不就通过lan的代理上网,2种模式选一种,你要保证你的设备能上网先。
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
通过同步连接上网的不算,那是在调试时才能的
在线时间2 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
哦 这样的 那我先试试& &谢谢热心的constantine
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
还有个问题 就是:
在虚拟模拟机上,当同步状态下,打开一次IE后,再通过程序打开URL时,就提示“无法与服务器连接”,不知道为什么?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
连网了 还是不行,在VS2005下是wm5.0平台的,设备是dell的X51v系列;这个错误跟ROM是否有关?
EEWORLD 官方微信
Powered by

我要回帖

更多关于 免费web服务器 的文章

 

随机推荐