上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页
摘要: Mmap系统调用: Mmap函数是内存映射函数,负责把文件内容映射到进程的虚拟内存空间,通过对这段内存的读取和修改,来实现堆文件的读取和修改,而不需要再调用read,write等操作。 原型如下: 其参数含义如下: 有映射函数就有解除映射函数,munmap就是解除映射的函数: 注意:直接映射过来的区间虽然用字符型形式表示,但是不一定包含‘\0’,所以使用字符型拷贝函数的时候要慎重。最好用内存拷贝... 阅读全文
posted @ 2015-12-01 14:50 DChipNau 阅读(474) 评论(0) 推荐(0) 编辑
摘要: 等待队列:在linux驱动程序设计中,可以实现等待队列来实现进程的阻塞。等待队列可以看做保存进程的容器,在阻塞进程时,将进程放入等待队列,当唤醒进程时,从等待队列中取出进程。 主要方法如下: 但是我写的等待队列阻塞程序总有一些问题,就是不能成功唤醒等待程序,如下:正确版本: 错误版本: 查看了内核源码,原来是这样,如果传进去一个常数0,wait_event就永远都不会跳出去了。 Selec... 阅读全文
posted @ 2015-12-01 14:45 DChipNau 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 原文:http://blog.csdn.net/yueniaoshi/article/details/7830849通过全局修改(Global edit)来进行(本文以电容封装为例),封装的修改也可以通过Tools下的Footprint Manager来进行修改,本文使用全局修改具体方法:选中元件右... 阅读全文
posted @ 2015-11-29 20:53 DChipNau 阅读(1385) 评论(0) 推荐(0) 编辑
摘要: 本文就来揭秘一下到底一个驱动的接口函数是如何被调用的: 首先我们来反汇编读驱动的程序: 跳转到__libc_read,发现他把r7赋值给3,3是传过去的参数,然后调用svc指令,进入内核态相应的入口: 接下来就已经进入内核态,入口函数中将存入r7中的3取出。 然后加载一张表,表名是sys_call_call,根据这个表中内容,断定3到底是对应什么操作: 这个表如下,可以看出表中第三项对应C... 阅读全文
posted @ 2015-11-24 23:40 DChipNau 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 应用程序使用驱动:一个设备驱动其实就是一个内核模块。应用程序使用一个字符设备是通过使用其设备文件来完成的,通过对其设备文件的读写来完成对设备的交互: 那么,想要使用字符设备驱动就首先得有一个字符设备文件,创建一个字符设备文件的方式有两种: 驱动初始化 因为驱动程序是一个内核模块,所以驱动的初始化操作是放在内核模块的初始化函数里: 主要流程如下: 下面展示一段示例代码: 下面来解释一... 阅读全文
posted @ 2015-11-24 23:38 DChipNau 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 这种问题就要和ucos结合起来嘛。 程序和进程:程序:存放在磁盘上的一些列代码和数据的可执行映像,是一个静止的实体。进程:是一个执行中的程序,它是动态的实体。 linux进程的四要素:1. 有一段程序供其执行。这段程序不一定是某个进程所专有,可以与其他进程共用。2. 有进程专用的内核空间堆栈。3. 在内核中有一个task_struct数据结构,即通常所说的“进程控制块”。有了这个数据结构,进程才能... 阅读全文
posted @ 2015-11-24 23:36 DChipNau 阅读(1571) 评论(0) 推荐(0) 编辑
摘要: 能不能一种链表中链接不同的类型呢,相应这种号召,内核链表诞生了。内核链表之所以能够链接不同的类型的数据,是因为它和普通链表不一样,它链接的不是数据结构的起始地址,而是链接的该数据结构中的的list_head属性。 下面是比较重要的函数: 其他的都很简单,专门介绍一下list_entry函数: 函数最后返回的是这个结构体节点起始地址。Ptr是这个节点中list_head属性的地址,type是这个... 阅读全文
posted @ 2015-11-24 23:35 DChipNau 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 王工小板中对于stm32f411芯片的复位电路如下: 实际上这个电路是错误的,经过实测,stm32f411芯片运行时复位引脚为高电平,而在这个电路图里,实际上是把stm32f411芯片运行时复位引脚的电平看为了低电平,按照这个电路,按下按键,会引起电平跳转到高电平从而触发复位,然而实际上并不是... 阅读全文
posted @ 2015-11-24 23:28 DChipNau 阅读(574) 评论(0) 推荐(0) 编辑
摘要: 虚拟内存模型Linux 内核本身并不运行在虚拟空间中,其使用的是物理寻址模式。 物理内存被分割为界面,一个内存页面的大小由PAGE_SIZE宏决定。 虚拟地址空间的方式使程序员可以将巨大的结构用于连续的地址,而不必考虑物理内存上的限制。线性地址到物理地址线性地址需要由处理器或者一个单独的MMU转换为物理地址,转换方式如下: 解析的方式为:1.用线性地址中的第一个位段为下标可以在页面目录中找的... 阅读全文
posted @ 2015-11-22 21:49 DChipNau 阅读(283) 评论(0) 推荐(0) 编辑
摘要: Linux磁盘分区和目录 Linux发行版之间的差别很小,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。 Windows的文件结构是多个并列的树状结构,最顶部是不同的磁盘(分区),如C,D,E等。而linux的文件结构是当个树状结构。 分区和目录的关系:1. 任何一个分区都必须挂载到某个目录上。2. 目录是逻辑上的区分,而分区是物理上的区分。3. 根目录是所有linux的文件和目录下... 阅读全文
posted @ 2015-11-22 21:43 DChipNau 阅读(409) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页