导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[flycat2008]VxWorks下编程的几个误区



No.49751
作者:flycat2008
邮件:yuanxuan2006@126.com
ID:114221
登陆:1次
文章数:40篇
最后登陆IP:
最后登陆:2008/7/14 12:15:37
注册:2008/7/14 12:15:37
财富:100
发帖时间:2008/7/22 14:47:58
发贴者IP:222.131.59.63
标题:flycat2008:VxWorks下编程的几个误区
摘要:No.49751VxWorks下编程的几个误区 
【1】tornado使用标准c语言吗?为什么没有提供inb(), outb()等函数? 
tornado缺省使用gnu编译器,支持ansiiso c, c++,以及at&t语法汇编 (非intel)。由于c++很庞大, 
而且在不断发展,所以有些标准c++的特征 可能gnu不支持(基本没有编译器支持所有c++特征)。程序 
员一般只要 掌握常用部分就能编出不赖的程序了。 inb(),outb()是turbor cdos下的,不属于标准c。 
tornado在bsp中 提供了相应的sysinbyte(),sysoutbyte()等函数,参考bsp下的sysalib.s。 

【2】VxWorks下怎么访问a盘,c盘(pc机环境)? 
a,c是m$对pc机设备的命名方式,目的是让傻瓜用户方便理解。 VxWorks下叫fd0和ata0。 

【3】目标机没有键盘和显示器,printf()打印到哪里去了? 
打印到标准输出设备上了。至于标准设备是什么,如果你用pc 终端,就到屏幕上;否则到系统中第一个 
串口去;还有可能 被重定向到别的设备上了,比如磁盘文件或telnet端口。 
如果什么都没有,打印的字符串被丢弃。 
c语言中,3个标准设备的文件描述符为std_in, std_out, std_err; 文件指针为stdin, stdout,stderr 
;c++中有cin, cout, cerr对象。 

【4】怎么在VxWorks下用(段偏移地址)方式访问端口? 
VxWorks for x86工作在保护模式下,应用程序不用关心段的存在。 直接用线性地址访问即可,例如: 
(unsigned short )0xb8000 = 0xaa55; 可以访问video ram。 
(8086,dos真是害人的玩艺儿,是不是现在大学里还在教) 

【5】在中断服务程序(isr)中调用printf()打印调试信息。 
程序死机是正常的,没有烧坏硬件算幸运的了。vpg里规定了 哪些函数是可以调用的。关键是printf() 
会引起任务阻塞,而中断不是任务。可以用logmsg()。 

【6】不用io函数,写汇编直接访问串口。 
最好使用open()close(),read()write()访问串口。这样程序 不依赖于硬件,好移植。有人对移植性不 
以为然,实际上老板们 都希望以前的程序不用改就能重用,尤其是老程序已经通过严格测试, 并经过 
了实践检验。 
如果你的程序没有移植性需求,可能的原因有: 
- 程序太烂,不值得移植,不如重写; 
- 程序太乱,且缺少文档,没办法移植;(可以让老板不敢炒你鱿鱼;)) 
- 产品在市场上惨败,公司已决定不再开发类似产品,可能要大规模裁员。 
有人认为自己写专用驱动效率高,灵活。错了! 效率高是因为功能弱。为了让驱动和app交换数据,你 
必须设计类 ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:16毫秒 最大:5186毫秒 查询6次