rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
阅读:1261回复:2

2个月Linux行后感

楼主#
更多 发布于:2003-11-27 02:07
最近无事,花了2个月的时间去Linux下玩,有些所得,特写出来给大家分享一下。由于我以前从来没有用过Linux,也仅仅是研究了2个月,很多东东可能是错误的,请大家指正。
我用的OS是Redhat 9.0和Fedora Core 1。

1。在Linux下做驱动,最好编译自己的内核。虽然没有看到说这一步是必须的,但好处是有的,最少可以避免兼容的问题。不过,编译内核却是一个非常麻烦的事情,像我这样的新手,花了3个星期,才从2.6.0-test8到2.6.0-test9,最后到2.4的所有版本都轻松搞定。

2。LDD2的代码和Makefile/Rules.mak都是针对2.4的,如果要编译2.6的,需要修改。对USB驱动来说,不仅仅是代码要修改,Makefile也要改(具体修改的方法,还没有来得及看。xixi :D)

3。没有搞清楚是从2.4的某个版本开始,还是从2.6开始有一个Hotplug的功能。没有来得及仔细研究这个玩艺儿到底有什么用处,但似乎是和Windows的PnP差不多,只是不知道对USB的支持到底是怎样的。

4。虽说在很多kernel下,插一个U盘可以成功的使用,但如果是自己写的一个USB驱动,得手动加载 - 不管是在设备插入前,还是插入后。似乎也可以实现自动加载,但可能是要把驱动的代码加入到source tree里面,重新编译内核;但这个方法我没有试过,不敢妄下定论。

5。单单加载一个driver是没有用的,如果想app可以访问,还要用mknod来建立一个联接。不过,我对那些Major/Minor还是有点迷糊 :P

6。Linux对USB的支持似乎没有Windows好,由于没有时间做更多的测试,这个结论不一定准确。我有一个USB/1394的硬盘盒子,在RedHat9上用的很好,后来换到Fedora Core 1和2.6下都不能用。还一个USB板子,枚举也不行,而在Windows下却正常。
不过,在此倒是发现了Philips的那个D12 Demo的firmware中的一段bug - Linux在枚举的时候,第一次读8个byte的device descriptor,然后接下来读全部的device descriptor。而看Philips的代码中,永远是发送全部的device descriptor。由于很久不搞USB了,也忘记了Windows下枚举的过程,似乎当中有一个reset吧?由于没有时间研究,就放弃了。

7。在Linux下,不用太担心当机的问题。曾经碰到一个错误,要是在Win下肯定BSOD了,而Linux只是出来一个oops,其他的一切照常。看来在Linux下做开发,得心脏病的几率会很小啦!:D  不过,有个问题却没有搞清楚,就是那个error产生的原因,不知道是gcc的设置问题,还是kernel运行的问题,哎:(

8。Linux的调试器真的不敢恭维。gdb功能很强大,却是命令行的,有几个GUI前端,研究很长时间结果发现不能和kgdb相连,遗憾。kdb比较类似softice,但不能调试source,只能对asm,也甚是不方便,除非本来就是用asm写的代码。所以,最常用的还是printk :)

9。Linux下的体系真的很复杂,每个人都可以修改,所以发行一个软件最好的办法就是以source来发行,由用户根据自己的平台去编译,这样可以可以避免诸如不能运行/出错之类的情况发生。可是,这样的一个方式并不是每个开发商愿意接受的,有些代码本身就是机密的,或者是受其他license约束。所以,以后我在决定开发Linux下的项目时,肯定要考虑怎么发行,是否可以赢利肯定也是最主要的因素 - 不解决温饱,怎么做雷锋? :D

晚上不睡觉,上来随便写一些,算是对这一段日子的一个纪念吧!
大家给我纠正一下错误  :D

[编辑 -  11/27/03 by  rayyang2000]

最新喜欢:

mapoflmapofl
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2003-11-27 09:12
hehe,不错。
linux做内核程序就是因为兼容的原因头疼。linux不象win那样能保持内核接口的相对不变性。 它是喜欢怎样就怎样,所以每个版本都不同。这样也有好处, 可以提供最好的实现和最好的性能。不过对于开发者来说就是恶梦了。

还好,应用程序不用大改。俺最近也只是在做应用程序。
用熟悉了,linux还是不错的,可以绝对控制它,比当年在dos下的感觉还好。(谁让咱当年没有dos的源码呢? )你如果不明白,可以参看源码。让起几年前一个清华的哥们说的:  在win下拼的是谁文档多,在linux/unix下拼的是谁有创意:)
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
XR_WDM
驱动小牛
驱动小牛
  • 注册日期2002-06-28
  • 最后登录2013-03-01
  • 粉丝1
  • 关注0
  • 积分15分
  • 威望67点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-11-27 09:31
不过,linux的实时性,还是要逊色点。
还要大家的共同努力呀!
大家有空可以去embed.com看看吧~
后进而勃发
游客

返回顶部