嵌入式底层驱动开发需要哪些方面的知识,具体点的,新手求告知

嵌入式底层驱动开发需要哪些方面的知识,具体点的,新手求告知,第1张

嵌入式底层驱动开发需要哪些方面的知识,具体点的,新手求告知

嵌入式底层开发,需要你精通c语言,c语言可以 *** 作底层,其次,你要熟悉汇编,很多东西比如程序怎么执行的,需要你反汇编之后才能知道。你还需要了解,arm体系结构。uc的的知识,你也需要知道,用户空间的编程基本是用uc写的,学习uc,建议买本书。uinux高级环境编程,把这本书学好了,用户空间的编程基本没问题,建议你初次学习编程,买本嵌入式驱动的书看看吧

希望可以帮到你,望选为满意回答

嵌入式驱动开发要具备哪些方面的知识

嵌入式驱动开发需要了解的知识大概有以下几类:

1 嵌入式 *** 作系统驱动框架。每一个 *** 作系统都有自己的构架,应该了解驱动在整个系统中的具 *** 置与构建驱动程序的主要事项

2 总线知识,比如PCI、USB总线。

3 芯片知识。驱动其实就是对设备上一些寄存器的配置、CPU与设备本身的通讯以及对不同命令的处理

4 要做好驱动,必须对所使用的CPU体系结构有一个比较深刻的认识

5 C++基本用不上,主要是C和汇编。

6 做驱动最好要懂内核调试(比如说linux)

嵌入式驱动开发需要哪些硬件知识

计算机组成技术,单片机原理及开发技术,C程序设计,计算机 *** 作系统,硬件驱动主要是和底层的接口,学习一下模拟电子技术和数字电子技术最基础的内容就好。

嵌入式驱动开发需要了解的知识大概有哪些呢?

嵌入式驱动以及嵌入式Linux内核开发主要用的都是C语言,JAVA是基于上层开发的语言,而C是基于底层驱动开发的。所以如果想要做好嵌入式驱动开发主要是要把C语言基础打好,这样对以后的发展会有很大帮助的。再则需要了解一点硬件方面的知识,例如单击片或者开发板和开发软件工具使用。下面就由福州卓跃教育具体介绍如何学习嵌入式驱动。

如何开始学习嵌入式驱动开发? 是每个想学习嵌入式驱动开发初学者的第一个问号.由于嵌入式开发较上层类软件开发的特殊性,如果没有相应的仪器设备及一个很好的环境,对初学者来说简直就是梦魇,如果没有相应的指导,可能就要多摔几个跟头和多消耗一些脑细胞,因为驱动开发不像上层类的开发那么直观,写个程序就可以在PC机上直接查看了,驱动开发只有烧到板子上才能验证。

嵌入式驱动开发需要了解的知识大概有以下几类:

1 嵌入式 *** 作系统驱动框架。每一个 *** 作系统都有自己的构架,应该了解驱动在整个系统中的具 *** 置与构建驱动程序的主要事项

2 总线知识,比如PCI、USB总线。

3 芯片知识。驱动其实就是对设备上一些寄存器的配置、CPU与设备本身的通讯以及对不同命令的处理

4 要做好驱动,必须对所使用的CPU体系结构有一个比较深刻的认识

5 C++基本用不上,主要是C和汇编。

6 做驱动最好要懂内核调试(比如说linux)

另外嵌入式开发涉及的知识面还是非常多的,包括选型的CPU类型和他的体系结构,CPU上提供的外围接口,以及为某个特殊功能而加入的外围设备.这些是一个合格嵌入式开发人员需要掌握的最基本的知识。

对我们作为嵌入式开发提出了更高的要求,重要的一点是嵌入式开发多是看不到摸不着的东西,相对来说非常的抽象,所以这时候就要借助一些测量设备来协助我们,比如基础的万用表,示波器,电流计,频率计,Trace32等甚至一些为方便开发自己做的一些小工具,当然不限于硬件和软件的.

基于linux的嵌入式底层驱动开发应该怎样系统的学习?注意哪些方面?

1、国内的书内容都差不多,相互抄来抄去。

国外的书质量虽然高,但是一般人阅读速度吃不消。

不过,还是建议读国外的书(如果有时间的话),长痛不如短痛。

2、不一定非要有开发板,可以用skyeye等软件模拟。

但是,软件模拟和实体机肯定是有区别的。还是建议选一块开发板。

3、ARM板是个硬件,可以用来学习WinCE、Vxworks、Linux、uCos等等系统开发。

可以用来学习以上系统的驱动和应用开发。

Linux驱动分两块内容:学习硬件工作流程(单片机程序),

Linux驱动上层结构

(platform、mtd、字符设备、块设备、网络设备、各种总线 等上层结构)

4.前景大大滴好,但是道路十分之曲折。

要有心里准备,得有文火久煨的毅力。

嵌入式开发的方面的知识?

看你的兴趣应该是软件方面的,没什么特殊要求,基础知识扎实就行,编译原理, *** 作系统原理,C/C++,数据结构等课程要好好学!

如何自学linux驱动开发,做驱动开发需要哪些方面的知识

做嵌入式应用的话一般的编程就可以了。那么嵌入式驱动开发与内核开发的话就需要学习多个方面的知识。我就把这方面的要求给你交流一下:

(一家之言啊,自己多年从事嵌入式开发的一点感悟)

嵌入式驱动开发需要了解的知识大概有以下几类:

1 嵌入式 *** 作系统驱动框架。每一个 *** 作系统都有自己的构架,应该了解驱动在整个系统中的具 *** 置与构建驱动程序的主要事项

2 总线知识,比如PCI、USB总线。

3 芯片知识。驱动其实就是对设备上一些寄存器的配置、CPU与设备本身的通讯以及对不同命令的处理

4 要做好驱动,必须对所使用的CPU体系结构有一个比较深刻的认识

5 C++基本用不上,主要是C和汇编。

6 做驱动最好要懂内核调试(比如说linux)

学习嵌入式 要学习哪些方面的知识

从基础来,入门后分向硬软两个方向偏重:

基础:计算机基础,数据结构,软件工程,C编程,C++原理,单片机原理,微机原理,计算机体系结构

软件偏重:Linux系统编程,软件工程高级, *** 作系统

硬件偏重:数字电路,FPGA,电路设计,自动控制

嵌入式开发工程师和嵌入式底层驱动开发工程师一样么

嵌入式开发工程师,严格意义上还会分为应用开发、QT开发、底层开发工程师等。所做的工作,在整个嵌入式开发体系里面是不一样的。南京有一家培训机构叫英贝得嵌入式学院,好像在南京雨花软件园,你上他们官网英贝得教育向老师了解一下,了解一下就可以了。

一、开发工具

1,虚拟机和 *** 作系统

本人使用的win10 *** 作系统,并安装了“VMware Station11”,在虚拟机中暂时只安装了一个“win7 x64” *** 作系统,后续将安装一个win10虚拟机系统。一般情况下,我都是在虚拟机 *** 作进行驱动的安装和调试,这样可以防止将本机的 *** 作系统弄乱。

后续将尝试“通过本机winDbg来调试虚拟机中的驱动”。这是一个比较高级的调试方法,点击打开链接。

2,开发工具

本人主要使用“WDK7600”(点击打开链接)和"VS2015+wdk10"(点击打开链接)。我把前者安装在“win7 X64”虚拟机中安装,把后者安装在本机和实验室电脑上。由于我使用的教材《Windows驱动开发详解》和学习博客都是用wdk7这个版本开发,为了环境一致,故选择了在虚拟机上试验这些教材上的示例代码。

关于wdk7,参考博客:点击打开链接。

关于“VS2015+wdk10”,需要在win10系统下,先安装VS2015,再安装wdk10,此外还要安装VS2015的update。(winDbg集成到了wdk10下,路径:C:\Program Files (x86)\Windows Kits\10\Debuggers\x64)。

注意事项:

1)VS2015默认安装,是不安装c++和sdk的,需要选择自定义安装;

2)如果已经默认安装了,这个时候再安装wdk10,会给出警告;

3)此时,可以选择先用VS2015新建一个c++项目,然后会提示你安装c++部分的模块;

4)安装好后,就可以正常安装wdk10了,如果wdk10安装好后,还有编译问题,也需要先去VS下看看是否却c++相关模块,并按上述3安装完整。

另一个需要注意的是,编译报“Inf2Cat error -2: "Inf2Cat, signability test failed. "Double click to see the tool output”,

参考博客:点击打开链接

是因为inf文件的“DriverVer”的时间不对,VS2015默认的“Inf2cat”中的时间为UTF,需要在工程属性-》“inf2cat”选择中,将local时间打开。

3,调试工具

1)debugview

在驱动程序中,调用KdPrint函数(类似C语言中printf),然后通过debugview查看打印信息。这是最常用的一种调试方法。

需要注意的是:首先要在“capture”菜单中勾选“kernel”相关的选项,表示抓取内核的信息。然后,需要使用“管理员身份”运行该软件。Debugview在win10下经常报错:

需要到“C:\Windows\System32\drivers”中找到“dbgv.sys”,删除它,再使用“管理员身份”运行该软件。

2)

4,调试手段

1)驱动安装阶段,可以到“C:\Windows\System32\drivers”目录下看相应的“sys”文件是否到位。

2)cmd->regedit打开注册表,再在“编辑”菜单下“查找”对应的设备信息。

3)使用KdPrint函数打印log和DebugView软件抓取log(最常用的手段);

4)在驱动代码中写log文件(理论上可行,待探索);

5)存储dump信息。所谓dump信息,就是在系统奔溃之前, *** 作系统会将当前的调用堆栈记录成一个dump文件。(详细设置系统转存dump信息,可以参考《Windows驱动开发技术详解》最后一章,或博客:点击打开链接)。设置好dump文件后,遇到蓝屏,再将dump文件放到WinDbg中查看,这也是一个中常用的调试手段。

6)IRPTrace,这个软件可以跟踪IRP,但是win7及后续版本都不可用,可以尝试自己写程序跟踪。

7)PCITree,查看设备挂载;

8)WinObject,查看驱动中的各种对象信息。

9)WinDbg调试虚拟机,这是一个高级应用。配合VS2015可以查看“内存”、“调用堆栈”、“线程”和“反汇编”。

注:在驱动的开发过程,需要逐渐掌握各种工具和调试手段。

二、开发框架

从我最近的浏览的资料来看,Windows驱动程序大致有三种类型:NT驱动、WDM驱动和WDF驱动。其中,NT驱动是非即插即用(Plug-in-and-Play,PNP)式的,它是一项系统服务,目前的设备类驱动大都不是这种类型,不是我的关注点,后面将不展开介绍。WDM驱动和WDF驱动都是即插即用的驱动,后者是前者的升级版。

1,WDM框架

WDM是早前的Windows驱动开发框架,虽然现在微软推荐用WDF,但是,学习WDM一是能够更对地了解 *** 作系统的内部机制(WDF是对WDM更高层次的封装),二是《Windows驱动开发技术详解》以及网上的很多博文都是用的WDM,从学习角度出发也需要掌握一定的WDM知识。

WDM框架的基本知识,可以参考博文:点击打开链接。后续我也用单独的博文来讲解这方面的内容,主要包括:

1)驱动对象与设备对象(DriverObject vs Device Object);

2)物理设备对象(PDO)和功能设备对象(FDO);

3)驱动的层次结构:水平层次(eg:FDO之间)和垂直层次(FDO到PDO);

4)入口函数(DriverEntry);

5)设备扩展(DRIVER_EXTENSION);

6)重要的例程(routine):AddDevice

7)IRP机制(I/O Request Package):MajorFunction(MJ))和MinorFunction(MN);

2,WDF框架

对于WDF框架,可以参考《Window7设备驱动开发》这本书。WDF框架可以分为KMDF(Kernel Model Driver Frame)和UMDF(User Model Driver Frame),其驱动模型如下:

1)WDF对象(属性、方法和事件);

2)即插即用和电源管理的集成;

3)集成的I/O排队和取消(queue);

4)I/O模型。在Windows中,IRP的功能不仅仅是向驱动程序提供传统的I/O请求(读、写、创建等)。它是 *** 作系统和驱动程序、驱动程序和驱动程序之间一种基于数据包的通信机制。

3,一个典型的KMDF驱动程序

通过VS2015新建一个项目,选择“KMDF”,它会产生如下文件:

1)public.h中定义GUID和CTL_CODE,并提供给应用程序使用;

2)trace.h定义的调试宏和函数,暂不关注;

3)driver.h和driver.c定义了主要的框架代码。包括:入口函数(DriverEntry)、加载设备的例程(KMDFDriver1EvtDeviceAdd)和清理上下文区的函数。该文件都是框架性的代码,在驱动开发的过程中,可以选择一个框架,选定框架后,一般不在该文件中添加功能,而是放到“device.c”和“queue.c”。

4)device.h和device.c,主要处理设备相关的功能,与设备交互的实现放在该文件中。主要包括设备初始化和资源释放;

5)queue.h和queue.c,主要处理IRP,包括KMDFDriver1EvtIoDeviceControl;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7768188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存