打印

国内的驱动热对90%人来说不是一种误导[万分感谢之五]

[复制链接]
楼主: icecut
手机看帖
扫描二维码
随时随地手机跟帖
41
歪 歪| | 2012-1-3 11:41 | 只看该作者 回帖奖励 |倒序浏览
培训找我就可以了,你想学Linux的还是Windows的?
我都做过,非常精通,
注意是精通哦!!!

使用特权

评论回复
42
歪 歪| | 2012-1-3 11:41 | 只看该作者
《快快乐乐跟我学Linux驱动》
        2008/05/17  asdjf@163.com  www.armecos.com

    "为什么我的驱动源码编译通不过?"
    “为什么驱动模块加载不上?”
    “我按照书上的例子生成并加载了模块,但是并没有出现书上所说的结果,printk没有显示,怎么回事?”
    “我想学Linux驱动开发,但不知怎么下手,有没有什么快速入门的好方法?”
    ......
   
    按理说,Linux提供所有源码,相关书籍也很丰富,初学者自学Linux驱动开发应该不成问题,但是为什么这么多人迟迟迈不出第一步,在一开始就蹉跎时间呢?Linux驱动难关到底在哪里?
   
    根据过来人的经验,这种情况是缺乏“导师”和“环境”引起的。Linux代码量巨大,相关知识点众多,初学者容易迷失在庞大的信息里不能自拔,导致自学失败。如果此时能有个向导帮助你指明正确方向,手把手教你操作,提供一个现成的稳定开发环境,那么,你一定会快速入门。现实中,有的人恰好有机会参与Linux驱动开发项目,公司提供了相关的技术环境和氛围,又有同事带领着学习和实践,这无疑是最好的学习方式,但是还有很多人想学却没有环境,也没人指导,此时,下面这篇**可能对你有些用处。
   
    注意:下面说的Linux驱动开发特指基于ARM9的嵌入式Linux驱动开发。
   
    考虑到初学者一旦入门,就可以通过自行阅读源码和资料进行深入学习,所以,我们将把主要精力集中在能真正有效地帮助初学者入门上,不求全面完整,但求有效。我们课程的特色就是实用有效,不讲或少讲那些可以自学的知识,集中力量攻克阻碍入门的关键障碍点。
   
    课前准备:
    1、ARM9硬件------选择2410开发板;
    2、指定教材------《Linux设备驱动程序 第三版》魏永明 等译;
    3、配套光盘------包括Linux2.6源码、GNU工具、各种实用程序、电子书等;
    4、硬件基础------如果你想了解硬件,可以先看看《快快乐乐跟我学高速PCB设计》、《快快乐乐跟我学FPGA设计》等讲义;
    ......
   
    ------
    u-boot
    ------
    我们在运行和调试驱动程序时常常需要将系统加载到目标板上,此时,需要一个引导装载器,常用的有recboot和u-boot等。u- boot + Linux搭配方式比较常见。有些2410板已经移植好了u-boot,有些则没有。对u-boot移植感兴趣的读者可以看看《u- boot在EasyARM2200和SmartARM2200上的移植》一文,2410的u-boot移植比这个更简单。
   
    课上我们将介绍:(感兴趣的《ecos增值包》用户现在就可以使用其提供的u-boot 1.2进行实际操作)
   
    minicom配置和使用方法
    TFTP服务器、NFS服务器部署
    u-boot常用命令
    设置u-boot环境变量
    在2410上移植u-boot
    配置编译安装u-boot
   
    练习并了解下列语句含义:
    printenv
    setenv yyargs 'console=ttyS0,115200 root=/dev/nfs rw ip=192.168.0.6 nfsroot=192.168.0.1:/opt/taret/rootfs'
    setenv yyboot 'tftp 3080000 zImag go 3080000'
    ......
   
    学习目标:熟练掌握minicom与bootloader(redboot、u-boot)的配置和使用方法,能够熟练使用串口、TFTP、NFS、CF/SD卡加载程序到目标板。
   
    ------------------------------------
    安装和设置开发工具,建立交叉编译环境
    ------------------------------------
    略。
   
    初学者可以直接使用配套光盘里提供的现成工具和编译环境,当熟悉了驱动开发后,如果有兴趣再自行研究,网上资料很多,自学就可以了。建议先通过增减这些工具和环境,然后慢慢过渡到完全自己搭建。现阶段不必在这上面浪费时间,充其量不过是个工具而已,用现成的就行了。
   
    学习目标:熟悉GCC编译器、C库、二进制工具、GDB使用方法。
   
    --------------
    配置和编译内核
    --------------
    为什么要自己制作内核呢?
    因为大多数商业打包的Linux系统不满足驱动开发要求,可能缺少某些配置,为了保证编译安装成功,最好自己制作符合实际情况的干净的系统内核。
   
    知识点:
    配置方法----------make menuconfig等,配置文件
    内核配置选项------介绍如何选择选项
    编译内核----------make zImage,内核映像在arch/arm/boot目录
   
    学习目标:学会配置制作自己需要的内核,并进行优化裁减。
   
    ----------
    根文件系统
    ----------
    内核启动的最后阶段,所执行的操作之一就是挂装根文件系统。
    根文件系统的准备工作包括:
   
    安装系统库
    内核模块
    内核映像
    设备节点
    系统应用程序
    用户应用程序
    配置系统的各种初始化脚本和配置文件
   
    对于Linux根文件系统的制作,有两种方法:一种是自己从头开始建立根文件系统,另外一种是下载一个已经生成的文件系统,然后在此基础上添加和修改,最后形成自己的根文件系统。配套光盘里已经提供了一个制作好的根文件系统,用户只要在这上面增加/删除/修改即可,因为我们主要关注的是学习驱动开发,所以这些不是主要内容。当然,课上我们还是会讲根文件系统的基本结构、函数库、设备文件、busybox、配置文件、初始化脚本等等内容,使你的知识结构完整。
   
    在准备好目标根文件系统的内容后,我们需要为它选择一个合适的文件系统类型,将其放置到实际存储设备的适当位置才能发挥作用。文件系统选型主要考虑:是否可写、持久存储能力、压缩特性和断电保护能力等几个因素。
   
    我们将讲述以下几种文件系统映像的制作和使用方法:
   
    通过NFS挂装根文件系统
    制作cramfs
    制作JFFS2
    制作RAM DISK
    ......
   
    例如制作RAM DISK的步骤:
    1、在一个目录中准备好文件系统内容;
    2、把RAM DISK文件内容清空;
    3、在RAM DISK中创建一个文件系统;
    4、把RAM DISK挂装到一个指定目录;
    5、把准备好的文件系统内容拷贝到RAM DISK挂装的目录下;
    6、卸载RAM DISK
    7、制作压缩格式的文件系统映像文件。
   
    通过我们的讲解,你会对根文件准备和制作流程有个系统的了解。其实,网上有很多相关资料可以搜索到,一旦你了解了操作过程,就知道怎样自己找资料自学提高了。
   
    学习目标:能够根据实际需要,自己准备和制作根文件系统。
   
    ------------
    常用命令总结
    ------------
    很多初学者之所以迟迟不能动手调试驱动程序,其中一个重要原因是对命令不熟悉,不知道该使用什么样的命令操作。
    我们总结了一些常用命令列表及其使用方法,只要你掌握了这几个命令,就会在驱动开发中顺风顺水,这些命令绝不是简单抄袭命令大全,而是在长期实践中总结出来的最有用的精华。我们先在这里给出一个列表以便查询,具体讲到某个部分时还会重复强调。
   
    有些系统把printk输出定向到了内核message里,在控制台上没有显示,此时,需要使用dmesg、head、tail等指令;
    cat指令也非常有用,比如看proc中的中断情况;
    chmod、find、grep......
   
    问答题:“make 2>&1 | tee yy.log”中‘1’、‘2’、‘>&’、‘|’、tee都是什么意思,这句话要实现什么功能?
   
    学习目标:练习各种常用命令的使用并熟练掌握之。
   
    ------------------------
    Linux2.6驱动开发注意事项
    ------------------------
    驱动开发和应用编程有区别,初学者如果不事先了解这些差别,在驱动开发中就会遇到种种障碍和困惑。通过我们帮你扫清这些障碍后,你自学成功的概率就变大了。
   
    知识点:
    内核保护模式
    Linux2.6.10以后的版本号是4位数,开发人越来越多,前三位跨度变大了
    模块存在版本依赖,有些符号和宏在不同版本中定义不同,产品要进行版本匹配(兼容)测试
    模块使用了gcc编译器扩展特性,__KERNEL__、__MODULE__等,__KERNEL__告诉gcc,代码将运行在内核模式下,在用户模式下将不能访问全部空间
    条件编译实现版本兼容
    浮点特性的加入
    安全卸载、野调用、初始化清零
    存储器类型及其使用
    ......
   
    --------------------
    驱动开发step by step
    --------------------
    通过前面的讲解,初学者将扫清大部分障碍,有了稳定的开发环境,学会了常用命令和系统制作,知道了和应用程序开发的差异,下面再带着大家把指定教材上的程序跑一遍,分析一下,应该就入门了。入门以后,初学者就能通过自己查找资料自学,知道该找哪些资料,知道该怎么学了。
   
    Linux驱动主要包括三种基本类型:字符设备驱动、块设备驱动、网络设备驱动。还有一些和硬件总线相关的如:USB驱动、PCI驱动等。此外还涉及到:时间操作、硬件I/O操作、内存、中断、DMA、内核数据类型、调试等相关内容。
   
    首先,我们带着大家编译、安装、运行hello world模块(.ko不是.o,2.6和以前版本模块的区别),驱动就体现为一个模块。自学时这一步遇到的问题最多,不是编译不过,就是加载不上,要么就是没有显示,万事开头难嘛!我们手把手带着你操作,加上编译器版本正确,系统配置完备,所以保证成功!一旦你能够运行模块,那么后面所有的驱动编译安装运行也都不会有问题了。其实做到这一步,你就能自己看书看源码自学了,不过为了加速学习过程,我们还是会带着你把配套光盘里的程序都依次编译、安装、运行一遍,并概括介绍各部分的要点和心得体会。
   
    知识点:
   
    makefile文件
    字符设备驱动------并发和竞态,GPIO、PWM、A/D、I2C、SPI......
    块设备驱动------MTD Flash块设备驱动程序分析、CF卡、SD卡......
    文件系统------proc、devfs、NFS、SAMBA、ext2、ext3、ReiserFS、FAT、NTFS、JFFS2、CRAMFS、TMPFS、YAFFS2、UNIONFS......
    内存管理、时间流、中断、DMA
    网络驱动
    USB驱动
    PCI驱动
    Framebuffer驱动
    ......
   
    除了分析源码,我们还会对照分析不同OS的驱动差别。比如:讲网络驱动时就会分析它和VxWorks网络驱动、ecos网络驱动、 ucos网络驱动和51上网络驱动的差别,另外还会分析ecos和Linux字符、块、网络、中断驱动异同等等,通过对比研究,可以加深理解,这是其他培训班没有的内容。
    USB驱动主要分析程序结构,usb-skeleton.c源码,USB host源码层次结构和功能实现及框图,总线驱动等等。
    通过分析一块PCI采集卡驱动源码了解PCI驱动工作原理。
    ......
   
    --------------------------------------------------------------
   
    如果想学习嵌入式系统,强烈建议选择《ecos增值包》,软硬两方面内容都包括了,是“装在光盘里的培训班”,包含了 bootloader、FS、TCP/IP、GUI、USB等各种内容。www.armecos.com自助商城有售,有免费试用版本,先体验效果,感觉好再说。
   
    《ecos增值包》的驱动很多都参考了Linux驱动源码,两者对照学习,效果不错!

使用特权

评论回复
43
歪 歪| | 2012-1-3 11:42 | 只看该作者
《快快乐乐跟我学Windos驱动WDM》
        2008/05/17  asdjf@163.com  www.armecos.com

    “我做了一个专用的USB设备,但我不会写上位机的Windows驱动,怎么办?”
    “我开发了一块PCI采集卡,可是我的VC程序怎么才能和硬件通信呢?”
    “我们自己设计了一块千兆网卡,如何为其制作网卡驱动呢?”
    “我想驱动打印机,怎么写程序?还有显示器驱动呢?”
    “我想做个串口监听程序,怎么过滤串口信息呢?另,虚拟串口软件是怎么做的?”
    “我想做防火墙/***,怎么拦截网络数据包?我想实时加密、压缩、隐藏文件,控制U盘使用,如何过滤文件?”
    ......
   
    要想实现以上功能就必须编写Windows驱动程序(WDM驱动)。作为一个硬件产品,如果能工作在Windows平台下,那么无疑会大大增加产品市场占有率,易于推广,增加销路,令用户满意度上升。不过,开发WDM驱动对于初学者来说相当困难,主要原因在于Windows驱动涉及的概念和细节太多,程序相对来说比较庞大,初学者一开始很容易陷入困境,靠自学注定困难重重。
   
    其实,如果你做过类似操作系统驱动,如:ecos、Linux、VxWorks等,那么,WDM驱动就比较容易理解了。市面上的相关书籍一般都不适合于初学者使用,太细节化,只见树木不见森林,初学者使用这样的教材学习WDM驱动,很容易损害自信心,导致学习了很长时间也没什么进展。过来人的经验是:最好从范例源码入手,先编译安装现成代码,然后在此基础上逐渐增加、删除、修改某些部分,直到最后变成自己的驱动程序,大可不必自己从头写,有些不经常变化的部分直接抄范例就行了。对WDM驱动的理解有一个由浅入深的过程,但是必须保证每次都要从全局上把握,否则学了忘,忘了学,没什么积累,效果不会好。
   
    为此,我们提供几个范例源码(USB驱动、PCI卡驱动、千兆网卡驱动、过滤驱动......),手把手交你编译、安装、调试,一上来就直接使用现成代码运行,熟悉这个开发过程后,你就能自行学习WDM驱动了。不过,为了加速学习过程,我们将有针对性地带领大家阅读分析关键源码。
   
    注意:这里的WDM驱动专指Win98、Win2000、WinXP系统下的驱动。
   
    --------
    推荐教材
    --------
    《Windows 2000驱动程序开发大全 第一卷 设计指南》 机械工业出版社出版
    《Windows 2000驱动程序开发大全 第二卷 参考手册》 机械工业出版社出版
    《Programming the Windows Driver Model》 中文电子书
    DDK在线帮助文档和源码
    ......
   
    --------
    开发工具
    --------
    DDK for Win98、Win2000、WinXP
    DriverStudio3.1
    WinDriver6.0
    SoftICE
    VC6
    ......
   
    DriverStudio适于已精通驱动程序设计的开发者,功能强大且与VC++紧密结合,同时提供了众多的调试工具;WinDriver适于初学者和开发较简单的驱动程序,它完全面向对象,非常简单,开发者不必了解驱动的具体操作就可以进行设计,但如果想深入了解驱动程序设计,还是推荐DDK,它可以完成所有的驱动程序设计,同时也提供了非常详细的文档说明。
   
    ------------
    千兆网卡驱动
    ------------
    本产品配合路由器使用。众所周知,路由器是IP网络的核心交换设备,其关键技术之一就是高速接口处理技术。本网卡采用 “IP over Optics”技术,让IP包直接在光纤上传送,省去了中间帧封装拆封等步骤,使传送过程简单且易于控制,从而提高了网络传输效率。这是一个非标准的网卡,原来已经有了Linux下的网络驱动,现在增加Windows下的WDM驱动,为将来产品推广和增加市场销路作准备。
   
    该网卡通过PCI总线与PC机相连,PCI选择S5933桥片。
    关于PCI卡硬件设计请参考《快快乐乐跟我学高速PCB设计》讲义;
    关于PCI规范请参考《PCI2.1规范》;
    关于S5933 PCI控制器请参考《S5933 datasheet》;
    这里我们要详细讨论的是《Windows 2000网络驱动程序设计规范(NDIS)》。
   
    一直到80年代后期,许多传输协议的实现受限于MAC层接口的独特实现,因为MAC层定义了协议与网卡之间的转换机制。
    1989年,Microsoft和3Com两公司提出了一个定义MAC层与OSI模型高层协议驱动程序之间的网络驱动器接口规范(Network Driver Interface Specification :NDIS),NDIS给数据交换提出了一个灵活的环境,它规范了软件接口------称为NDIS接口,传输协议可用它与网卡驱动程序进行通信,这个接口在Windows NT中使用,到了Windows 2000更是成为了Microsoft公司规范驱动程序WDM(Win32 Driver Model)的组成部分。因此在Windows 2000环境下开发核心态网卡驱动程序应遵循NDIS规范。
   
    NDIS驱动程序包括以下三种驱动程序:
        Miniport驱动程序
        Intermediate驱动程序
        Protocol驱动程序

    本次设计的驱动程序只完成接收和发送数据两个最基本的功能,只用到Miniport驱动程序。
    Miniport驱动程序有两个基本的功能:
    1、管理网络接口卡NIC,包括通过网络接口卡发送和接收数据;
    2、高层驱动程序的接口,如Intermediate驱动程序和Protocal驱动程序。
    Miniport驱动程序只须实现与网络硬件相关的操作,而所有底层网卡驱动程序的通用操作(如同步),一般由NDIS接口程序来实现。

    网卡驱动程序加载过程 略
   
    Miniport驱动程序其实就是完成DriverEntry的填写,调用NdisMInitializeWrapper创建与NDIS接口库的联系。我们会详细分析下面各个部分的代码:
   
    MajorNdisVersion
    MinorNdisVersion
    CheckForHangHandler
    DisableInterruptHandler
    EnableInterruptHandler
    HaltHandler
    HandleInterruptHandler
    InitializeHandler
    ISRHandler
    QueryInformationHandler
    ReconfigureHandler
    ResetHandler
    SetInformationHandler
    SendHandler
    SendPacketsHandler
    ReturnPacketHandler
    TransferDataHandler
    AllocateCompleteHandler
   
    上面这些函数抽象概括出了网络操作的本质,只要完成上面框架函数的填充,任何网卡都可以被系统驱动。
   
    驱动程序的编译与安装 略
   
    感兴趣的读者可以对比VxWorks与WDM网络驱动的异同,Linux网络驱动和WDM驱动的异同,参见《VxWorks之MUX网络驱动在EasyARM2200和SmartARM2200上的实现》、《快快乐乐跟我学Linux驱动》。
   
    -------------
    PCI采集卡驱动
    -------------
    使用Plx9054桥片实现高速数据采集。
   
    关键词:DMA、突发、中断、地址空间转换......
   
    略
   
    -------------
    USB钥匙盘驱动
    -------------
    现在越来越多的企业上网,但是由此带来了安全性问题。如果用***实现一个虚拟专网,就可以降低申请专线的昂贵费用,也可以保证信息安全。***的关键是加密,利用USB接口的密钥盘实现客户端加解密,既快又安全。
   
    关于USB驱动程序需要了解如下知识点:

----------------------
USB客户驱动程序I/O请求
----------------------
IOCTL_INTERNAL_USB_SUBMIT_URB
IOCTL_INTERNAL_USB_RESET_PORT
IOCTL_INTERNAL_USB_GET_PORT_STATUS
IOCTL_INTERNAL_USB_ENABLE_PORT
IOCTL_INTERNAL_USB_GET_HUB_COUNT
IOCTL_INTERNAL_USB_CYCLE_PORT
IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO
IOCTL_INTERNAL_USB_GET_HUB_NAME
IOCTL_INTERNAL_USB_GET_BUS_INFO
IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME

---------------
USB客户支持例程
---------------
GET_ISO_URB_SIZE
GET_SELECT_CONFIGURATION_REQUEST_SIZE
GET_SELECT_INTERFACE_REQUEST_SIZE
GET_USBD_INTERFACE_SIZE
UsbBuildFeatureRequest
UsbBuildGetDescriptorRequest
UsbBuildGetStatusRequest
UsbBuildInterruptOrBulkTransferRequest
UsbBuildSelectConfigurationRequest
UsbBuildSelectInterfaceRequest
UsbBuildVendorRequest
USBD_CreateConfigurationRequest
USBD_CreateConfigurationRequestEx
USBD_GetInterfaceLength
USBD_GetUSBDIVersion
USBD_ParseConfigurationDescriptor
USBD_ParseConfigurationDescriptorEx
USBD_ParseDescriptors
USBD_RegisterHcFilter

-------
USB结构
-------
URB
_URB_BULK_OR_INTERRUPT_TRANSFER
_URB_CONTROL_DESCRIPTOR_REQUEST
_URB_CONTROL_FEATURE_REQUEST
_URB_CONTROL_GET_CONFIGURATION
REQUEST
_URB_CONTROL_GET_INTERFACE_REQUEST
_URB_CONTROL_GET_STATUS_REQUEST
_URB_CONTROL_TRANSFER
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST
_URB_FRAME_LENGTH_CONTROL
_URB_GET_CURRENT_FRAME
_NUMBER
_URB_GET_FRAME_LENGTH
_URB_HEADER
_URB_ISOCH_TRANSFER
_URB_PIPE_REQUEST
_URB_SELECT_CONFIGURATION
_URB_SELECT_INTERFACE
_URB_SET_FRAME_LENGTH
USB_CONFIGURATION_DESCRIPTOR
USB_DEVICE_DESCRIPTOR
USB_ENDPOINT_DESCRIPTOR
USB_INTERFACE_DESCRIPTOR
USB_HUB_NAME
USB_ROOT_HUB_NAME
USB_STRING_DESCRIPTOR
USBD_INTERFACE_INFORMATION
USBD_INTERFACE_LIST_ENTRY
USBD_PIPE_INFORMATION
USBD_ISO_PACKET_DESCRIPTOR

    USB驱动最核心的概念就是总线驱动,设备驱动程序不直接和USB芯片硬件直接交互,而是通过一个抽象的USB总线驱动进行操作。这样我们书写USB主机驱动的工作就成了构造请求、发送请求至总线驱动。USB有四种传输模式:控制、批量、中断、同步。***密钥盘使用批量传输方式,数据吞吐量大,输入原文数据,输出密文数据,非常方便。除了USB总线驱动,如何将文件名管道和端点建立联系也是学习重点。其余内容如PNP处理等直接抄模板即可。
   
    ------------
    串口过滤驱动
    ------------
    我们有时需要使用串口监听软件分析串口数据,但是很多监听软件不能监听已打开串口上的数据,此时,要么使用时不监听,监听时不使用,要么增加硬件连线,用额外串口监听数据。这两种解决方法都不好,不是不方便就是要增加额外硬件,当你学习了过滤驱动后,就可以直接监听已打开串口上的数据流了。
   
    略。
   
    ......
   
    --------
    学习总结
    --------
    通过上面的学习,可以感觉到WDM驱动内容还是很丰富的,一个人精力有限,不可能把每个细节都涉及到,但是WDM程序比较规范,即使有很多细节没有关注到,直接抄范例程序还是问题不大的,把主要精力放在关键的思路上不失为一种有效的开发方法。学好WDM驱动的关键是多实践,熟能生巧,这是最快的捷径,幸运的是DDK文档和范例源码相当完整系统。
   
    ......
   
    --------------------------------------------------------------
   
    如果想学习嵌入式系统,强烈建议选择《ecos增值包》,软硬两方面内容都包括了,是“装在光盘里的培训班”,包含了 bootloader、FS、TCP/IP、GUI、USB等各种内容。www.armecos.com自助商城有售,有免费试用版本,先体验效果,感觉好再说。
   
    《ecos增值包》的驱动设计思路很多都参考了WDM驱动源码,两者对照学习,效果不错!

使用特权

评论回复
44
nongfuxu| | 2012-1-3 22:50 | 只看该作者
搞电子是烧钱行业.舍不得钱,赚不来高工资,买吧....

:)

使用特权

评论回复
45
yuanchsh| | 2012-1-4 08:48 | 只看该作者
写的真好……!

使用特权

评论回复
46
icecut|  楼主 | 2012-1-4 09:26 | 只看该作者
歪歪你就别广告了.你这种论坛广告模式,怎么感觉和十年前一样?
现在的互联网都不着急赚钱...不是抛砖引玉.而是抛玉引玉.....

你那些ecos用的人少了...没人学了...别广告了.小心又被封号....

使用特权

评论回复
47
lifeinjoy| | 2012-2-1 22:07 | 只看该作者
LZ点评的非常到位,对我们新手非常有引导作用,顶楼主

使用特权

评论回复
48
sinanjj| | 2012-2-3 20:13 | 只看该作者
我晕,lz还亲身体验了一番才得出结论。。。。


实际上这个大形势很简单:驱动本质就是个螺丝钉代码工!再小的项目也是有构架的,而再大的驱动都是那个套路,你说哪个有前途?



至于说什么宣传的做驱动月薪过万。。。。。。。信这个的人同样会信脑白金。。。。。




最后说一句:重要的不是你的到了什么,重要的是你想成为什么样的人,和你想做什么!

使用特权

评论回复
49
today_lucky| | 2012-2-10 13:16 | 只看该作者
MARK!

使用特权

评论回复
50
哲哲55| | 2012-2-21 14:36 | 只看该作者
占位学习

使用特权

评论回复
51
哲哲55| | 2012-2-21 14:36 | 只看该作者
占位学习

使用特权

评论回复
52
fraiy| | 2012-3-16 21:56 | 只看该作者
不得不说楼主思考得挺深入的,一些问题在国内是得有些反对声音,不然都随流,国人在这方面又怎么进步,为什么论文、文献外文要占大多数别人才认同,不是就反应的国人不思进取,一味跟随外国人的脚步前进吗

使用特权

评论回复
53
youxunlong| | 2012-4-1 15:14 | 只看该作者
好**啊,收益匪浅

使用特权

评论回复
54
刘前辈| | 2012-4-3 12:06 | 只看该作者
本帖最后由 刘前辈 于 2012-4-3 15:26 编辑

好**啊,感觉就是像给俺打**血。不过这类**应该换一种说法更让人不误导:

“学驱动呀,学好驱动就可以到微软去应聘啦,……”“出差就是出国啦”
“至少也能进中科院计算机研究所——联想设计部工作啦……”
”大家看我,月薪20K 啦。……向我学习呀……”

哈哈,中国能有几个人能到微软工作?能有几个人能达到小I 的水平?谁都想做李开复。

刚看的电视剧《我是王土地》,日本人把中国人当劣种人,当现在的三岁小孩一样骗,说实在当猪一样骗。——忍不住骂了一句,“中国人没那么好骗。”

顺便问一句:写这**的人怎么不到微软、联想去应聘?

支持#48


实际上这个大形势很简单:驱动本质就是个螺丝钉代码工!再小的项目也是有构架的,而再大的驱动都是那个套路,你说哪个有前途?

至于说什么宣传的做驱动月薪过万。。。。。。。信这个的人同样会信脑白金。。。。。


最后说一句:重要的不是你的到了什么,重要的是你想成为什么样的人,和你想做什么!


无论什么人,号召大众做什么的时候,被打了**血的人,先问自己一个问题:他为什么要这样做,最大利益获得者是谁?——我一直搞不懂那些搞传销的大学生是怎么想的,听了2节课就走火入魔了?


、、

使用特权

评论回复
55
highgear| | 2012-4-3 21:27 | 只看该作者
呵呵,刘公公今天怎么如此兴奋, 莫非真的打了**血?

使用特权

评论回复
56
[惊涛骇浪]| | 2012-4-6 19:21 | 只看该作者
好帖子,赞一个

使用特权

评论回复
57
[惊涛骇浪]| | 2012-4-6 19:21 | 只看该作者
LINUX驱动确实值得深究

使用特权

评论回复
58
huanben| | 2012-4-6 21:22 | 只看该作者
顶 这次文艺不吵架了 :)

使用特权

评论回复
59
McuPlayer| | 2012-4-7 01:29 | 只看该作者
讨论再深入些,就更有意义了

使用特权

评论回复
60
jinyuewei| | 2012-4-7 08:29 | 只看该作者
顶一下,学习了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则