- 博客(39)
- 收藏
- 关注
转载 DOS分区的分析
转自http://blog.csdn.net/liuying_1001/article/details/8333749Microsoft将使用DOS分区体系的磁盘称为“主引导记录(Master Boot Recorder,MBR)”。很多人都认为"DOS分区"就是指Windows下的分区,我原先也是这么认为的。其实DOS分区并不是以操作系统而划分的分区体系,而是指使用“主引导记录(MBR)”的
2015-06-08 13:50:36 1440
转载 Linux下的IO端口和IO内存
转自:http://blog.csdn.net/acs713/article/details/7911025说明:本文系通过阅读网络上诸多相关文章,整理而成。 设备驱动程序要直接访问外设或其接口卡上的物理电路,这部分通常都是以寄存器的形式出现。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外设寄存器的不同方式,可以把CPU
2015-05-22 16:34:06 361
转载 揭开linux内核中container_of的神秘面纱
揭开linux内核中container_of的神秘面纱作者:程姚根,华清远见嵌入式学院讲师。在linux 内核中有一个大名鼎鼎的宏container_of(),这个宏是用来干嘛的呢?我们先来看看它在内核中是怎样定义的。呵呵,乍一看不知道是什么东东。我们先来分析一下container_of(ptr,type,member),这里面有ptr,type,member分别代表指针、类型
2015-03-03 17:18:13 303
转载 Linux i2c 读写应用程序
/* This software uses a BSD license.Copyright (c) 2010, Sean Cross / chumby industriesAll rights reserved. Redistribution and use in source and binary forms, with or without modification, are permit
2015-02-04 19:34:17 5357
转载 实例解析linux内核I2C体系结构(1)
作者:刘老师,华清远见嵌入式学院讲师。一、概述谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。第一种方法的好处(对应第二种方法的劣势)有: ● 思路比较直接,不需要花时间去了解linux内核中复杂的I2C子系统的操作方法。
2015-02-04 16:10:55 351
原创 ubuntu14.04的3.13.0内核升级到3.13.1
话说认识linux这么多年,平时工作内容比较杂,不是windows就是vxworks平台开发的切换,linux也是平时自学系统编程、内核驱动等理论,实践不多,把这次记录下来。1、从网上www.kernel.org/pub/linux/kernel/v3.x 下载3.13.1内核 tar xvzf linux-3.13.1.tar.gz2、解压 将下载后的linux-
2015-02-02 11:20:46 1669
转载 如何订阅Linux相关的邮件列表
2012-09-21 13:40:12| 分类: Linux|举报|字号 订阅1.google"linux kernel maillist"就知道了,方法很多 2.比较简单的方法:http://vger.kernel.org/vger-lists.html列出了linux内核的邮件列表,点击"subscribe / unsubscribe",你要的应该是http:/
2015-01-28 17:35:25 812
转载 VxWor
vxworks下的脚本script创建和使用(相当于windows下的autoexec.bat)2013-06-03 20:09 591人阅读 评论(0) 收藏 举报首先,制作的vxworks需要支持【脚本启动】组件: 其次,BSP/config.h的【boot line】中要添加要启动的脚本,这里假设名字为start.txt:
2015-01-09 15:51:10 155
转载 在RS-485不同的收发器模式下设置RTS信号
在RS-485不同的收发器模式下设置RTS信号问题: RS-485的哪个收发器模式支持用程序设置或清除RTS(请求发送)信号?解答: 四线制收发器模式是RS-485唯一的支持用程序设置或清除RTS信号的模式。在名为What Are the Different Transceiver Modes on the NI RS-485 Serial Cards?的链接中有对于RS-485的
2014-12-30 09:07:12 5904
转载 linux下如何控制RTS?为了控制RS485发送正常,但无法接收到端发送过来的数据
Linux 下串口编程的文章网上是满天飞,但大都是出自一篇文章,而且写的都是些基本的操作,像控制 RTS/CTS 等串口引脚状态,接收发送二进制数据等,都没有很好的说明,我在使用中遇到了些问题,写出来,希望能对大家有所帮助,少走弯路,呵呵! 我使用的操作系统是 Redhat9 , gcc 版本是 3.2.2 其实在 linux 下对串口的设置主要是通过 termio
2014-12-26 15:09:06 5359 1
转载 fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h
错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束。没有找到预编译指示信息的头文件"stdafx.h"。 (因为工程中的每个cpp文件属性默认都是使
2014-12-23 12:04:05 535
转载 关于优先级反转(灰常不错的介绍)
在多进程、多线程并发的环境里,从概念上看,有多个进程或者多个线程在同时执行,具体到单个CPU级别,实际上任何时刻只能有一个进程或者线程处于执行状态;因此OS需要决定哪个进程执行,哪些进程等待,也就是进程的调度。一、调度的目标1、首先要区分程序使用CPU的三种模式:IO密集型、计算密集型和平衡型。对于IO密集型程序来说,响应时间非常重要;对于CPU密集型来说,CPU的周转时间就比较重要;对于
2014-06-16 17:16:12 391
转载 关于优先级反转
在多进程、多线程并发的环境里,从概念上看,有多个进程或者多个线程在同时执行,具体到单个CPU级别,实际上任何时刻只能有一个进程或者线程处于执行状态;因此OS需要决定哪个进程执行,哪些进程等待,也就是进程的调度。一、调度的目标1、首先要区分程序使用CPU的三种模式:IO密集型、计算密集型和平衡型。对于IO密集型程序来说,响应时间非常重要;对于CPU密集型来说,CPU的周转时间就比较重要;对于
2014-06-16 17:04:19 115
转载 Windows驱动中通过MDL实现用户态与核心态共享内存
Windows驱动跑在核心态(Kernel mode),驱动的调用者跑在用户态。如何使用户态进程与核心态驱动共享内存呢 ?我们知道32位Windows中,默认状态下虚拟空间有4G,前2G是每个进程私有的,也就是说在进程切换的时候会变化,后2G是操作系统的,所以是固定的。既然用户态进程和核心态驱动在同一个进程空间里,是不是只要直接传个内存地址过来,就可以访问了?理论上可以但实际上不行,因为用
2014-04-03 17:35:56 1520
转载 关于IoAllocateMdl,MmProbeAndLockPages以及MmBuildMdlForNonPagedPool
I/O多数是异步的(如DPC),在执行I/O的过程中用户模式线程在不断切换,所以处理I/O时访问的虚拟地址已不是原先发出I/O请求的线程的地址,那样将发生错误。创建MDL将原先位于用户空间的缓冲区内容映射到系统空间,由于用户模式内存是切换的而系统模式内存对所有进程都是不变的,故不会发生以上问题。
2014-04-03 16:21:26 1216
转载 GetLastError返回代码含义
〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。〖12〗-访问码无效。〖13〗-数据无效
2014-03-09 23:18:03 474
转载 Xshell4、Xftp4注册码
Xshell 4 注册码 690313-111999-999313Xftp 4 注册码101210-450789-147200
2014-02-17 18:33:50 3277
转载 XP64跟XP的差別
同仁的疑问与同行们的回答:想請問一些很基本的問題關於XP64跟XP的差別順便整理一下自己最近做的工作與思考方向基本上以及理論上XP64應該是可以相容32的的driver我也看過一些資訊與自己的實際操作它會放到program file(x86)這個資料夾內我的想法是若在XP上可以使用那應該也會相容於XP64所以我將原本可以在XP上執行的driver也灌到XP64結果是
2014-02-17 18:25:34 463
转载 关于多CPU,多核,SMP的详细疑问
这几个词听了很多遍,还是没有理解透彻,特来请教。1. 我们说多核机器,是指一块CPU芯片里面有多个核心,核心与核心之间的通信是由 CPU芯片内部的总线完成的; 说多CPU机器,则强调的是这个机器有多块CPU芯片,至于每块CPU芯片是不是多核, 则取决于具体的设计。而多块CPU芯片之间的通信则应该有CPU与CPU之间的总线完 成。 那这样来
2014-02-12 23:20:05 633
转载 taskDelay
最近工作中碰到了一个问题,在使用taskDelay的过程中发现,tick频率设为每秒1000的情况下,执行taskDelay(6000)居然延时了几十秒钟~由于taskDelay的最小单位为tick,而且真实延迟的时间根据调用时刻的不同而不同,于是有一种可能是因为taskDelay延时问题导致了误差。不过话又说回来,taskDelay一次导致的是最多一个tick的时间错误,在这种设置的情况下即使累
2014-02-12 13:08:34 3629
MmIsAddressValid
ULONG readmemory(IN ULONG windowh,IN ULONG BaseAdd,IN ULONG BufferSize){ //参数一:窗口句柄 参数二:要读取的地址 参数三:读取的大小 HANDLE ProcessId=0; ProcessId =(HANDLE) RealNtUserQueryWindow(windowh, 0);//窗口句柄转化为进
2014-01-25 23:03:12 557
转载 可以替代设备管理器的DevCon.exe
DevCon实用工具是一种命令行实用工具,可以替代设备管理器。使用 DevCon,您可以启用、禁用、重新启动、更新、删除和查询单个设备或一组设备。DevCon 提供与开发人员有关但无法在设备管理器中看到的信息。您可以将 DevCon 用于 Windows 2000、Windows XP和Windows vista。不能将 Devcon 用于 Microsoft Windows 95、W
2014-01-19 23:28:32 222
转载 vmWare上运行VxWorks
vmWare上运行VxWorksfrank 老是在网上看到有新人在问vmWare上运行VxWorks而出现的各种各样的问题。在某人的催促下,出于增长网站访问量的险恶用心,于是决定抽空把vmWare上配置VxWorks的步骤仔细的写一下,同时提供配置好的BSP包,省去新人们学习vxworks的烦恼。呵呵,废话少说,直接进入主题。1. 涉及的软件资源1) Tornad
2014-01-12 21:58:24 616
转载 vxworks应用程序编译时编译选项-mlongcall加了的用途
Q: 编译时编译选项-mlongcall加了有什么用?A: 对于CPU是PPC604类型的,动态下载的.out文件编译的时候必须要加这个编译选型,加了后会使用长跳转指令代替短跳转指令, PPC的默认的短跳转指令有+/- 32M 空间范围的限制,动态下载的话下载的代码与系统代码的距离可能就要超过32M了, 所以要加长跳转指令,不加的话动态下载的时候会有错误提示。短调整指令比长
2014-01-12 21:52:13 462
转载 安装驱动,出现错误:“名称已用作服务名或服务显示名”
安装驱动,出现错误:“名称已用作服务名或服务显示名” 2011-09-14 10:27:26| 分类:WINDOWS技术 | 标签:|字号大中小 订阅安装无线网卡驱动,出现错误:“名称已用作服务名或服务显示名”。【解决方法】1.打开驱动文件夹,在对应操作系统目录下,找到.inf文件。2.打开.inf文件,按Ctrl+F搜索关
2014-01-05 23:01:22 2577
转载 基于VxWorks的多路高速串口的通信方法设计
串口通信具有传输距离远、传输稳定、简单实用等特点,已被广泛应用于工业控制、数据采集、网络通信等领域。在这些应用领域中,串口通信用于实时地从各个串口接收数据,而向各个串口发送的主要是控制信息,一般不要求严格的实时性。因此提高串口设备接收的实时性至关重要。设备接收到数据时,系统可通过两种途径获取数据包到达的信息。一种是中断方式,利用硬件中断机制实现设备和系统的应答对话,即当外部设备需要CPU处
2014-01-05 18:26:55 564
转载 VxWorks
PCI总线配置与应用这篇文章是进行VxWorks下PCI驱动开发的基础,故将其放在首位。(当然更首位的是您有一定的Vxworks使用和开发经验)主要介绍PCI总线配置空间,如何查看和读取PCI配置相关信息,最后有VxWorks下相关的示例代码。 关键字: PCI总线 vxworks PCI配置空间 内存映射 PlxPCI905 专用术语解释:PCI
2013-12-24 17:53:27 2666
转载 WINDOWS操作系统中可以允许最大的线程数
默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。 你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。 如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程。 即使物理内存再大,一个进程中可以起
2013-12-14 16:05:06 337
转载 驱动开发中使用安全字符串函数
一、前言 大量的系统安全问题是由于薄弱的缓冲处理以及由此产生的缓冲区溢出造成的,而薄弱的缓冲区处理常常与字符串操作相关。c/c++语言运行库提供的标准字符串操作函数(strcpy, strcat, sprintf等)不能阻止在超出字符串尾端的写入。 基于Windows XP SP1以及随后的操作系统的Windows DDK版本提供了安全字符串函数(safe stri
2013-12-08 19:26:04 413
原创 RFM板卡开发记录
PCI某型号板卡开发备忘录 最后是定位是PCI设备卡的从发出半满中断到板卡驱动程序的中断ISR实际处理这段时间内,可能硬件FIFO就已经溢出了,因为当然前硬件SDRAM缓存听负责硬件设备的同事说才64K,当达到8K时就给上位机发快满中断,按理说64K-8K=56K的时间内驱动程序应该能停止写,但感觉windows的实时性不如VxWorks系统那样有保证,能停止下来写线程序,但最后还是溢出了
2013-12-08 13:10:00 375
转载 内存映射和DMA——Linux 的内存管理
内存映射和DMA——Linux 的内存管理地址类型:用户虚拟地址:这是用户空间程序能看到的常规地址。物理地址: 该地址在处理器和系统内存之间使用总线地址:该地址在外设总线和内存之间使用内核逻辑地址:组成了内核的常规地址空间。该地至映射了部分内存,并经常被视为物理地址,在大多数体系结构中,逻辑地址与相关的物理地址的不同,仅仅在于它们之间相差一个固定的偏移量。逻辑地址通常保存在UN
2013-11-26 19:02:06 303
转载 大端模式和小端模式
此文转载于http://www.cnblogs.com/TsuiLei/archive/2008/10/29/1322504.html 大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图2.1所示: 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如图2.2所示:
2013-11-26 11:02:42 344
转载 9054 DMA、中断、基地址寄存器的一些理解
此文是转自davyli1982 关于DMA——以前总有一个错误的认识——PCI卡的DMA操作是由主板上的DMA控制器8237控制,但是想利用8237控制器进行DMA操作,需要首先发DMA申请,然后8237会在空闲的时候发DMA允许信号。然而,通过查看PCI规范发现,PCI根本就没有相应的信号连线。后来查看了9054手册之后才知道,原来DMA控制器是嵌在了9054芯片内部,这样就不难想象
2013-11-22 17:43:38 695
转载 Scatter-gather DMA 与 block DMA
Scatter-gather DMA方式是与blockDMA方式相对应的一种DMA方式。 在DMA传输数据的过程中,要求源物理地址和目标物理地址必须是连续的。但是在某些计算机体系中,如IA架构,连续的存储器地址在物理上不一定是连续的,所以DMA传输要分成多次完成。 如果在传输完一块物理上连续的数据后引起一次中断,然后再由主机进行下一块物理上连续的数据传输,那么这
2013-11-22 17:35:26 695
原创 NTSTATUS状态返回码的种类
先保存一下,留日后用到时当手册查看0x00000001: APC_INDEX_MISMATCH0x00000002: DEVICE_QUEUE_NOT_BUSY0x00000003: INVALID_AFFINITY_SET0x00000004: INVALID_DATA_ACCESS_TRAP0x00000005: INVALID_PROCESS_ATTACH_ATTEMPT
2013-11-22 10:40:14 2299
原创 在实现反射内存卡驱动程序DMA完成中断死机蓝屏纠结N天的一个低级BUG
由于GE的反射内存卡对中国实施禁运,看到了市场将来可能会不错,公司接了研究这款产品开发单,硬件由硬件工程师负责,本人负责软件从应用层一直到驱动层的全部研发任务,通过对GE产品的公开的资料反复研究,一共近70个函数接口,现在都搞明白了,由于GE产品光盘手册开源了Linux和VxWorks平台的全部软件代码,唯独不开源windows平台的动态库驱动程序代码,现在只好通过理解GE反射内存卡的Linux平
2013-11-22 00:40:55 1340 1
转载 内核同步对象
内核同步对象(上) Windows NT提供了五种内核同步对象(Kernel Dispatcher Object),你可以用它们控制非任意线程(普通线程)的流程。表4-1列出了这些内核同步对象的类型及它们的用途。在任何时刻,任何对象都处于两种状态中的一种:信号态或非信号态。有时,当代码运行在某个线程的上下文中时,它可以阻塞这个线程的执行,调用KeWaitForSingleObject或Ke
2013-11-21 20:56:51 1961
原创 VxWorks开发环境TORNADO的完整下载地址
http://www.cevx.com/bbs/thread-34645-1-1.html
2013-11-17 17:34:49 1507 1
原创 多PCI卡设备的WDM驱动安装时内存资源不够的问题
今天在调试反射内存PCI卡,PC机内存是2G的,在PCI总线插槽上插三块同样的板卡,由于在系统启动阶段将每个板卡BAR3映射到主机内存的连接物理内存为128Mbit,三块卡所占的内存资源就是128*3=384Mbit,然而接下来要为每个板卡各安装一次驱动程序,驱动中为DMA通信时用AllocateCommonBuffer函数申请128Mbit的连接物理内存空间,这样分别将三块板卡安装完驱动后所占的
2013-10-21 19:36:13 1404 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人