精华内容
下载资源
问答
  • 接下来为小伙伴们分享Windows 10如何更新网卡驱动程序的操作步骤和方法 第一步 启动Windows 10操作系统,如图所示。点击任务栏搜索框,开始使用Cortana(小娜)智能语音助理。 第二步 如图所示,搜索框输入"控制面板...

    首先了解网卡以及无线网卡,网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。每一个网卡都有一个被称为MAC地址的独一无二的48位串行号,它被写在卡上的一块ROM中,没有任何两块被生产出来的网卡拥有同样的地址。这是因为电气电子工程师协会(IEEE)负责为网络接口控制器(网卡)销售商分配唯一的MAC地址,网卡使得用户可以通过电缆或无线相互连接。无线网卡是一种无线终端设备,通俗的说无线网卡是一种不需要连接网线即可实现上网的计算机设备,我们最常见的笔记本、智能手机、平板电脑等数码产品内部都集成有无线网卡。

    无线网卡是小伙伴们购买笔记本电脑等数码产品时容易忽视的部分,频带这个词可能有点陌生,其实就是常说的2.4Ghz、5Ghz。5Ghz的全称为5th Generation of Wi-Fi,也就是第五代WiFi(注意和第五代移动通信技术5G是两码事),理论速度要比2.4Ghz快。一些型号比较老的笔记本并不支持5Ghz,只能换无线网卡,目前绝大多数新笔记本都会同时支持2.4Ghz和5Ghz WiFi。一般情况下,无线网卡厂商都会在官网上标注无线网卡的速度,其值代表这款无线网卡的速度上限,分别为300Mbps、433Mbps、867Mbps和1.73Gbps。如果家里是500M的宽带,那么只支持300Mbps的无线网卡明显拖后腿,更换无线网卡是比较好的选择。

    如果正常上网使用没有任何问题,那么完全没有必要更换无线网卡,但是无线网卡的驱动程序未能正确安装或没有及时更新,无线网卡便不能正常工作。下面了解无线网卡驱动程序,驱动程序是一种可以使计算机中央处理器CPU控制和使用设备的特殊程序,相当于硬件的接口,操作系统通过这个接口,控制硬件设备的工作,无线网卡驱动程序就是CPU控制和使用无线网卡的程序。

    接下来为小伙伴们分享Windows 10如何更新网卡驱动程序的操作步骤和方法

    • 第一步 启动Windows 10操作系统,如图所示。点击任务栏搜索框,开始使用Cortana(小娜)智能语音助理。
    ca5a0b6fa96998d348e105d7e3a67201.png
    • 第二步 如图所示,搜索框输入"控制面板"。Cortana(小娜)显示搜索结果,点击"最佳匹配→控制面板"项。
    f950874457431485a661b6aabdd3ae3d.png
    • 第三步 唤出"控制面板"程序窗口,如图所示。点击"查看方式"右侧向下箭头,弹出下拉列表选择"大图标"项。
    25a1549236934e2562c876b09fccc3ab.png
    • 第四步 如图所示,显示控制面板所有项目。点击"设备管理器"图标,用于查看和更新设备硬件设置和驱动程序软件。
    2c14994ac41f0fc6a2cbcbd28df828ff.png
    • 第五步 弹出"设备管理器"对话框,如图所示。展开树形目录结构,点击"网络适配器"项。
    37c335c7485d360918eb95ae02ea4421.png
    • 第六步 如图所示,鼠标右击"11b/g/n Wireless LAN Mini-PCI Express Adapter Ⅱ"项。弹出快捷菜单,选择"更新驱动程序"。
    3468e602c591783b7d292dff00bfd6c9.png
    • 第七步 弹出"更新驱动程序"对话框,选择"浏览我的计算机以查找驱动程序软件"。如图所示,本例到此希望对大家能有所帮助。
    c1edac637c5b7270b4471a893dfdc469.png

    温馨提示

    小伙伴们如果能从小编解决电脑问题的思路和方法中有所启发,那就记得点赞、分享、评论和关注哦,咱们明天不见不散。

    展开全文
  • 面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。
  •  面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的...
  • 液晶驱动板刷写程序

    2018-10-09 12:31:50
    乐华驱动程序内附升级程序,可升级到4.5,不知道如何升级的朋友可先看完压缩包中的新板NTA93A升级方法再升级。
  • 3Linux下ACEX1K50设备驱动的实现3.1Linux下设备驱动基本原理设备驱动程序是应用程序与硬件之间的一个中间软件层,设备驱动程序为应用程序屏蔽了硬件的细节。这样在应用程序看来,硬件设备只是一个设备文件,应用程序...

    3Linux下ACEX1K50设备驱动的实现

    3.1Linux下设备驱动基本原理

    设备驱动程序是应用程序与硬件之间的一个中间软件层,设备驱动程序为应用程序屏蔽了硬件的细节。这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它主要实现的功能有:对设备进行初始化和释放;把数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给设备文件的数据,回送应用程序请求的数据以及检测和处理设备出现的错误。

    Linux将设备分为最基本的两大类:一类是字符设备;另一类是块设备。字符设备和块设备的主要区别在于是否使用了缓冲技术。字符设备以单个字节为单位进行顺序读/写操作,通常不使用缓冲技术;块设备为了提高效率,利用一块系统内存作为读/写操作的缓冲区,由于涉及缓冲区管理、调度和同步等问题,实现起来比字符设备复杂得多。

    Linux通过设备文件系统对设备进行管理,各种设备都以文件的形式存放在/dev目录下,称为“设备文件”。应用程序可以像普通文件一样打开、关闭和读/写这些设备文件。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。Linux为所有的设备文件都提供了统一的操作函数接口,方法是使用数据结构structfile_operations。这个数据结构中包括许多操作函数的指针,如open()、close()、read()和write()等,但由于外设的种类较多,操作方式各不相同。structfile_operations结构体中的成员为一系列的接口函数,如用于读/写的read/write函数和用于控制的ioctl等。打开一个文件就是调用这个文件file_operations中的open操作。不同类型的文件(如普通的磁盘数据文件)有不同的file_operations成员函数,接口函数完成磁盘数据块读/写操作;而对于各种设备文件,则最终调用各自驱动程序中的I/O函数进行具体设备的操作。这样,应用程序根本不必考虑操作的是设备还是普通文件,可一律当作文件处理,具有非常清晰、统一的I/O接口,所以file_operations是文件层次的I/O接口。

    3.2ACEX1K50在Linux下设备驱动的实现

    在驱动程序中使用内存映射可以提供给用户程序直接访问设备内存的能力。使用内存映射的好处是处理大文件时速度明显快于标准文件I/O,无论读/写,都少了一次用户空间与内核空间之间的复制。在用户空间对ACEX1K50FPGA设备的访问是通过内存映射来实现的。

    ACEX1K50可以看作是硬件连接在PXA270微处理器的nCS<2>上的一段物理地址来寻址。因为有虚拟内存管理单元,所以如果在Linux下,必须先把物理地址映射到虚拟地址空间,然后才能对该段地址进行读/写。

    在内核驱动程序的初始化阶段,通过ioremap()将ACEX1K50的这段物理地址映射到内核虚拟空间;在驱动程序的mmap系统调用中,使用remap_page_range()将该块ROM映射到用户虚拟空间。这样内核空间和用户空间都能访问ACEX1K50的这段被映射后的虚拟地址。

    由于ACEX1K50位于nCS<2>上,参照PXA270静态存储体系结构映射表,其物理起始地址为0x08000000。另外,其设备名称及主次设备号定义如下:

    #defineFPGA_PHY_START0x08000000

    //nCS<2>:PAX270平台

    #defineFPGA_PHY_SIZESZ_4K

    //nCS<2>:SlotFPGA物理基大小为4K

    #defineDEVICE_NAME"PXA270FPGA"

    #defineFPGARAW_MINOR1

    #defineFPGA_Devfs_path"fpga/0"

    staticintfpgaMajor=0;

    其中FPGA主设备号定义为零,使得操作系统可以随机为该设备分配主设备号。

    ioremap()的作用是把一个物理内存地址点映射为一个内核指针,被映射数据的长度由size参数设定。该函数的实质是把一块物理区域二次映射到一个可以从驱动程序里访问的虚拟地址上去。以下是该函数的定义:

    void*ioremap(unsignedlongphys_addr,unsignedlongsize);

    设备驱动通过fpga_init()函数初始化FPGA设备,最终通过init_module(fpga_init)在内核启动时初始化FPGA设备。

    fpga_init()函数的流程如图3所示。

    图3fpga_init()流程

    ioremap()调用的语句如下:

    pxa270_fpga_base=(unsignedlong)ioremap(FPGA_PHY_START,SZ_4K);

    可以通过ioremap()调用的返回值pxa270_fpga_base来判断FPGA物理地址到内核虚拟空间是否映射成功。

    if(!pxa270_fpga_base){

    printk("ioremappxa270fpgafailedn");

    return-EINVAL;

    }

    向设备文件系统注销FPGA设备通过调用cleanup_module()函数来实现。其代码如下:

    void__exitfpga_exit(void){

    #ifdefCONFIG_DEVFS_FS

    devfs_remove(FPGA_Devfs_path);

    #endif

    unregister_chrdev(fpgaMajor,DEVICE_NAME);

    }

    cleanup_module(fpga_exit);

    在向内核设备文件系统注册该FPGA驱动后,还须实现设备驱动的file_operations结构。ACEX1K50的设备驱动定义了如下file_operations成员函数:

    staticstructfile_operationspxa270_fops={

    owner:THIS_MODULE,

    open:fpga_open,

    mmap:fpga_mmap,

    ioctl:fpga_ioctl,

    release:fpga_release,

    };

    其中fpga_open和fpga_release系统调用的功能只简单地实现了FPGA设备使用计数器的递增与递减,fpga_ioctl系统调用也只是简单的打印一条没有ioctl控制的信息提示。这里不再分析实现的具体代码。下面具体分析fpga_mmap的实现过程:

    staticintfpga_mmap(structfile*filp,structvm_area_struct*vma){

    unsignedlongoff=vma->vm_pgoff

    unsignedlongvsize=vma->vm_end-vma->vm_start;

    unsignedlongpsize=FPGA_PHY_SIZE-off;

    if(vsize>psize)

    return-EINVAL;//spanstoohigh

    vma->vm_flags|=VM_IO|VM_RESERVED;

    vma->vm_page_prot=pgprot_noncached(vma->vm_page_prot);

    remap_page_range(vma,vma->vm_start,physical,vsize,vma->vm_page_prot);

    return0;

    }

    fpga_mmap(structfile*filp,structvm_area_struct*vma)系统调用允许直接将FPGA设备内存线性地映射到用户进程的地址空间中。fpga_mmap系统调用是通过调用remap_page_range()函数来实现一段线性物理地址的映射,调用remap_page_range()函数需要填写vm_area_struct结构的几个关键字段。

    intremap_page_range(structvm_area_struct*vma,unsignedlongfrom,unsignedlongto,unsignedlongsize,pgprot_tprot)函数每个参数的意义说明如下:

    vm_area_struct*//虚拟内存区域(VMA)指针

    unsignedlongfrom//需要映射的用户虚拟地址的起始位置

    unsignedlongto//虚拟地址所映射到的物理地址

    unsignedlongsize//被重映射区域的大小,以字节为单位

    4ACEX1K50设备驱动在用户程序中的使用

    当设备驱动实现后,就可以在用户空间使用该设备了。在用户空间主要是通过调用mmap()函数来实现对FPGA设备的访问。以下是用户空间应用程序的一个示例:

    ……………………………………………………………………

    fd=open("/dev/fpga/0",O_RDWR);//打开设备文件

    if(fd<0){

    printf("####fpgadeviceopenfail####n");

    return(-1);//判断打开设备文件是否成功

    }

    iobase=(unsignedchar*)mmap(0,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);//经过地址映射后,可对FPGA的寄存器进行一系列操作

    ……………………………………………………………………

    close(fd);//关闭设备文件

    结语

    本文通过介绍ACEX1K50在Linux操作系统下设备驱动的实现过程,为FPGA在嵌入式领域的应用提供了一种方法。在实际应用中,通过用户程序能够很好地实现对FPGA硬件编程后的各种功能的控制。

    展开全文
  • 以前Radeon 19.x版本显卡驱动设置里有个页面可以指定程序使用的显卡,但是升级到Radeno 20.x后,显卡驱动中就没有这个设置了。 在windows10 1909中这个设置在下面这个地方: 设置,显示设置,拖到最下面 ,点最...

    笔记本是E480,intel集成显卡+AMD独显双显卡。

    以前Radeon 19.x版本显卡驱动设置里有个页面可以指定程序使用的显卡,但是升级到Radeno 20.x后,显卡驱动中就没有这个设置了。

    在windows10 1909中这个设置在下面这个地方:

    设置,显示设置,拖到最下面 ,点最下面的 Graphics settings

    进入后是下面的界面。

     

    点浏览,选择需要设置的应用程序。之后有个Option(选项)按钮,点进去如下:

     

    这里,如果选择 “High performance”,这个应用运行的时候就回使用独立的显卡了。

     

    展开全文
  • 面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发职员和linux设备驱动开发职员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的...

     

    作者:刘洪涛,华清远见嵌进式学院金牌讲师。

      面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发职员和linux设备驱动开发职员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的特性、搭建新环境是一项非常繁琐的事情。本文想从以下3个方面探讨一下“面对不断升级的内核,如何学习linux设备驱动”。

      内核发展的现状及其对技术职员的影响

      Linux目前主要维护2.4和2.6两个内核版本。在http://www.kernel.org/ 网站上已经可 以下载到最新的2.6内核linux-2.6.31,及最新的2.4内核linux-2.4.37。稳定版本号基本上是1~3月更新一次,如:2.6.22至2.6.23。升级版本号每1~2周更新一次,如:2.6.23.1至2.6.23.2。

      由于高版本内核并不完全兼容低版本内核,所以内核升级对从事linux开发的技术职员造成了一定的影响,特别对于linux进门职员。

      内核的升级对应从事linux应用程序开发的职员来说影响较小,由于系统调用基本保持兼容。而影响比较大的是驱动开发职员。每次内核的更新都可以导致很多内核函数使用上的变化。其中有内核本身提供的函数,也有硬件平台代码提供的函数,后者变化的更加频繁。这一点让初学内核驱动的人很迷茫,由于当他们按照手里的经典著作,如:Alessandro的《linux设备驱动程序》,编写驱动时,发现并不能够成功的在你的linux平台上编译通过、或不能正常执行。你的朋友会告诉你,你用的内核和书里的不一致。那该怎么办呢?

      我想从两个方面往解释这个题目,一方面是如何写好linux设备驱动,另一方面是如何应对不断升级的内核。

    1、如何写好Linux设备驱动

      Linux设备驱动是linux内核的一部分,是用来封装硬件细节,为上层提供标准接口的一种方法。为了能够编写出质量比较高的驱动,要求工程师必须具备以下几个方面的知识:

      1.1 熟悉处理器的性能

      如:处理器的体系结构、汇编语言、工作模式、异常处理等此项对于初学者来说,重要程度:***。也就是说还不熟悉驱动编写方法的情况下,可

      以先不把重心放在这一项上,由于可能由于它的枯燥、抽象而影响到你对设备驱动的爱好。

      随着你不断的熟悉驱动的编写,你会很自然的意识到此项的重要性。

      12 把握驱动目标的硬件工作原理及通讯协议

      如:串口控制器、显卡控制器、硬件编解码、存储卡控制器、I2C通讯、SPI通讯、USB通讯、SDIO通讯、I2S通讯、PCI通讯等

      此项的重要程度应该不用多说了,编写设备驱动的条件就是知道设备的操纵方法。但不是说要把所有设备的操纵方法都熟悉了以后才可以驱动,你只需要了解你要驱动的硬件就可以了。所有这一项对于初学者来说重要程度都是:*****。

      1.3 把握硬件的控制方法

      如:中断、轮询、DMA 通常一个硬件控制器会有多种控制方法,你需要根据系统性能的需要公道的选择操纵方法。

      此项对于初学者来说:重要程度:****。初学阶段以实现功能为目的。把握的顺序应该是,轮询->中断->DMA。随着学习的深进,需要综合考虑系统的性能需求,采取合适的方法。

      1.4 良好的GNU C语言编程基础

      如:C语言的指针、结构体、内存操纵、链表、队列、栈、C和汇编混合编程等。

      这些编程语法是编写设备驱动的基础。

      此项无论对于初学者还是熟手重要程度:*****。

      1.5 良好的linux操纵系统概念

      如:多进程、多线程、进程调度、进程抢占、进程上下文、虚拟内存、原子操纵、阻塞、睡眠、同步等概念及它们之间的关系。

      这些概念及方法在设备驱动的使用是linux设备驱动区别单片机编程的最大特点。只有理解了它们才会编写出高质量的驱动。

      此项对于初学者来说:重要程度:***。开始可以以实现功能为目的,逐步完善自己的驱动。

      1.6 把握linux内核中设备驱动的编写接口

      如:字符设备的cdev、块设备的gendisk、网络设备的net_device,以及基于这些基本接口的frAMEbuffer设备的fb_info、mtd设备的mtd_info、tty设备的tty_driver、usb设备的usb_driver、mmc设备的mmc_hoST等

      Linux内核为设备驱动编写者留下了标准的接口。驱动编写者无需精通内核的各个部分,只需要明确内核留给我们的接口,并实现此接口就可以了。内核流出的接口采用的是面向对象的思路,即把目标设备看成一个对象,通常利用一个结构体来描述这个对象。驱动工程师的任务就是实现这个对象。这个结构体中会包含设备的属性(用变量表示)和操纵方法(用函数指针表示)。如:字符设备的cdev

      struct cdev {

      struct kobject kobj;

      struct module *owner;

      cONst struct file_operations *ops;  //操纵方法结合,其它项都是属性

      struct list_head list;

      dev_t dev;

      unsigned int count;

      };

      此项对于初学者来说:重要程度:****。开始阶段可以以模仿为主,即套用一些固定的模板。

     

    2. 如何应对不断升级的内核

      内核升级对驱动的影响主要体现在,(1)驱动接口定义的变化(2)内核的一些功能函数的名称、参数、头文件、宏定义的变化(3)平台代码关于硬件操纵方面封装的一些函数的变化(4)设备模型的影响。下面探讨一下,如何应对这几个方面的题目:

      2.1 驱动接口定义的变化

      如:2.4内核中字符设备驱动的注册接口是

      int register_chrdev(unsigned int major, const char * name, struct file_operations *fops)

      而2.6内核中已经不建议使用这种方法了,改为:

      int cdev_add(struct cdev *p, dev_t dev, unsigned count)

      又如:2.6.27内核中网卡接口的net_device结构成员和低版本的net_device结构成员也发生了一些变化。

      这种接口定义及注册方法带来的变化,发生的并不频繁。解决方案是:参考内核中的代码。这种接口定义及注册方法在内核中非常轻易找到,如:字符设备驱动的注册方法及接口定义可以参照内核driver/char/目录下的很多实例。

      2.2 内核的一些功能函数的名称、参数、头文件、宏定义的变化

      如:中断注册函数的格式及参数在2.4内核、2.6内核低版本和高版本之间都存在差别

      在2.6.8中,中断注册函数的定义为:

      int request_IRq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *),unsigned long irq_flags, const char * devname, void *dev_id)

      irq_flags的取值主要为下面的某一种或组合:

      SA_INTERRUPT、SA_SAMPLE_RANDOM、SA_SHIRQ

      在2.6.26中,中断注册函数的定义为:

      int request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, const char *devname, void *dev_id)

      typedef irqreturn_t (*irq_handler_t)(int, void *);

      irq_flags的取值主要为下面的某一种或组合:(功能和2.6.8的对应)

      IRQF_DISABLED、IRQF_SAMPLE_RANDOM、IRQF_SHARED

      当出现这些题目时,编译过程中,编译器会给我们比较明确的错误提示,根据这些提示你可以判定出是否是缺少头题目、是否是函数参数定义有误等。解决题目的最好办法还是到你的目标内核中找信息。此时找题目的方法可以借助于搜索,如:你可以在新的内核中搜索request_irq,看新内核中的驱动是如何使用它的。这种方法非常有效。

      2.3 平台代码关于硬件操纵方面封装的一些函数的变化

      内核中,硬件平台相关的代码在内核更新过程中变化比较频繁。和我们的设备驱动也是息息相关。所以在针对一个新内核编写设备驱动前,一定要熟悉你的平台代码的结构。有时平台固然提供了内核要求的接口函数,但使用起来功能却并不完善。下面还是先举个例子说明平台代码更新对设备驱动的影响。

      如:在linux-2.6.8内核中,调用set_irq_type(IRQ_EINT0, IRQT_FALLING);往设置S3C2410的IRQ_EINT0的中断触发信号类型,你会发现不会有什么效果。跟踪代码发现内核的set_irq_type函数需要平台提供一个针对硬件平台的实现函数

      static struct irqchip s3c_irqext_chip = {

      .mask       = s3c_irqext_mask,

      .unmask     = s3c_irqext_unmask,

      .ack        = s3c_irqext_ack,

      .type      = s3c_irqext_type

      };

      s3c_irqext_type就是linux内核需要的实现函数,而s3c_irqext_type在2.6.8中的实现为:

      static int s3c_irqext_type(unsigned int irq, unsigned int type)

      {

      irqdbf("s3c_irqext_type: called for irq %d, type %d/n", irq, type);

      return 0;

      }

      原来并没有实现。而在较高版本的内核,如2.6.26内核中,这个函数是实现了的。所以你一定要小心。当平台函数不好用时,一定要查查原因,或者直接操纵硬件寄存器来达到目的。

      2.4 2.6内核设备模型对驱动的影响

      在2.6内核中写设备驱动和在2.4内核中有着很大的不同,就是在设备驱动中融进了比设备驱动本身结构还复杂,难以理解的设备模型。初学驱动时你可以不理会设备模型,但你会发现内核里的驱动代码基本上都是融进了设备模型的了。所以很多时候你不得不面对现实,还是要弄懂它,并且它有的注册方法也会随着内核的升级而发生变化。解决此类题目的最好方法还是参考目标内核驱动代码。

    3. 总结:

      开始学习设备驱动时,选择一个当前比较流行的内核版本和硬件平台。不着急追赶最新潮流。这样你可以找到的网络资源会比较多,不至于有孤军奋战的感觉。我想这个过程应该不低于1年。当过了这个过程后,尝试将你编写过的驱动移植到各个目标平台上。上面的一些建议、和应对方法是本人的一些经验总结,仅供参考。

      “本文由华清远见http://www.embedu.org/index.htm提供”

     

    展开全文
  • 面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的...
  •  面对不断升级的...本文想从以下3个方面探讨一下“面对不断升级的内核,如何学习linux设备驱动”。 内核发展的现状及其对技术人员的影响 Linux目前主要维护2.4和2.6两个内核版本。在http://www.k
  • 面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的...
  • 面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的...
  • 面对不断升级的内核,如何学习linux设备驱动 <br /> 作者:刘洪涛,华清远见嵌入式学院 金牌讲师。 http://www.embedu.org/Column/Column108.htm<br /><br />面对不断升级的linux内核、GNU...
  • 如何升级vmware workstation虚拟机软件]) vmware增强型键盘驱动程序是什么?安装时要勾选吗?
  • 面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的...
  • 面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的...
  • 如何写好驱动

    2016-06-18 14:59:06
    面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的...
  • 阅读以了解如何升级。 用法 您需要做的第一件事是在Dropbox上获取授权令牌。 可以在为任何Dropbox API应用生成令牌。 您可以在找到更多信息。 use League \ Flysystem \ Filesystem ; use Spatie \ Dropbox \ ...
  • Alessandro的《linux设备驱动程序》,编写驱动时,发现并不能够成功的在你的linux平台上编译通过、或不能正常执行。你的朋友会告诉你,你用的内核和书里的不一致。那该怎么办呢?  我想从两个方面去解释这个问题,...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 267
精华内容 106
关键字:

如何升级驱动程序