让驱动自己被加载
来源:互联网 发布:node npm init 编辑:程序博客网 时间:2024/05/22 13:39
接触wince一段时间了,如果从摸这个算起,差不多都两年时间了,中间断断续续摸了linux和u/cos,接触的大都是应用方面的东东。今天写了个简单的gpio驱动在板上跑了起来,中间费了点周折,现在想想都不值得拿来说了,还是记录下来,作为成长经历吧。
废话不表,说实际内容。
第一步,加代码。在$(_TARGETPLATROOT)/SRC/Drivers 目录下新建一文件夹,例如:FirstDrv。然后在此文件夹新建.cpp , .def , .bib, .reg , sources , makefile 六个文件
cpp内容:
def内容:
bib文件内容:
reg文件内容:
sources文件内容:
makefile文件内容:
这步可以用微软CodeClip中的DrvWiz.exe直接生成这些文件,我们只需要修改.cpp就可以了,事实上这样做相当方便
第二步,编译。在Drivers目录下修改dir文件,添加 FirstDrv /,打开PB,在FirstDrv上右击,build Current Project,成功后可以发现在$(_FLATRELEASEDIR)下多了一个文件DriverDemo.dll。
第三步,编入内核。
在platform.bib 加入一行:#include "$(_TARGETPLATROOT)/src/Drivers/FirstDrv/DriverDemo.bib"
在platform.reg 加入一行:#include "$(_TARGETPLATROOT)/src/Drivers/FirstDrv/DriverDemo.reg"
选择 Build OS----->Make Run-Time Image
完成就OK了。
然后把编译好的NK.BIN(nk.rom)烧入板中重启,通过远程工具(Registry Editor或者System Information)就可以观察到DriverDemo.dll已经在运行了。
如果不放心,写个应用程序测试下就OK了。
写到这里,发现跟标题有点偏了,讲的实际重点好像是在如何写一个驱动。但实际在这个过程中,驱动就已经具备被自动加载的能力了。
系统启动运行NK.exe后,会调用注册表中[HKEY_LOCAL_MACHINE/init]下的一些启动内容,其中Device.exe就在其中被启动。Device.exe通过调用总线枚举器BusEnum.dll,会枚举注册表中[HKEY_LOCAL_MACHINE/Drivers/BuitIn]键下面的内容,我们的DriverDemo.reg正是在[HKEY_LOCAL_MACHINE/Drivers/BuitIn]键的子键DriverDemo下,然后根据"Order"依次加载驱动。
- 让驱动自己被加载
- 让 Linux 启动时加载自己的驱动模块 .ko
- 让 Linux 启动时加载自己的驱动模块 .ko
- 不用驱动一行代码让自己蓝屏
- 如何让模拟器加载自己的Room
- 不要让BIB文件成为加载驱动的拦路虎
- 让LINUX核心模块加载Windows下驱动
- 如何让系统加载自己写的驱动程序?
- 驱动加载。
- //加载驱动
- 不要让自己被代码淹没
- 不要让自己被代码淹没
- 不要让自己被代码淹没
- 不要让自己被代码淹没
- 不要让自己被代码淹没
- 构造自己的IOCTL命令 让你的驱动飞起来
- 构造自己的IOCTL命令 让你的驱动飞起来
- 在Win7x64上加载无签名驱动以及让PatchGuard失效(Win7x64内核越狱)
- 在嵌入式系统中使用ActiveX控件的疑问
- 高斯背景建模学习 icvUpdatePartialWindow()
- ZZ泊松分酒问题
- 数据库正在恢复
- BS关于模板,对新手的三点建议:
- 让驱动自己被加载
- Delphi获取程序自身路径
- Delphi里去掉字符串中空格的函数
- 函数调用方式总结
- 更新库存数据,先进先出存储过程
- MySQL实用命令
- Java 对操作系统任务栏进行操作
- SQL Server 2005安装时“性能监视器计数器要求(错误)”解决方案
- 转载:动态调用WebService(C#)