11 2015 档案
摘要:原文:http://blog.csdn.net/yueniaoshi/article/details/7830849通过全局修改(Global edit)来进行(本文以电容封装为例),封装的修改也可以通过Tools下的Footprint Manager来进行修改,本文使用全局修改具体方法:选中元件右...
阅读全文
摘要:本文就来揭秘一下到底一个驱动的接口函数是如何被调用的: 首先我们来反汇编读驱动的程序: 跳转到__libc_read,发现他把r7赋值给3,3是传过去的参数,然后调用svc指令,进入内核态相应的入口: 接下来就已经进入内核态,入口函数中将存入r7中的3取出。 然后加载一张表,表名是sys_call_call,根据这个表中内容,断定3到底是对应什么操作: 这个表如下,可以看出表中第三项对应C...
阅读全文
摘要:应用程序使用驱动:一个设备驱动其实就是一个内核模块。应用程序使用一个字符设备是通过使用其设备文件来完成的,通过对其设备文件的读写来完成对设备的交互: 那么,想要使用字符设备驱动就首先得有一个字符设备文件,创建一个字符设备文件的方式有两种: 驱动初始化 因为驱动程序是一个内核模块,所以驱动的初始化操作是放在内核模块的初始化函数里: 主要流程如下: 下面展示一段示例代码: 下面来解释一...
阅读全文
摘要:这种问题就要和ucos结合起来嘛。 程序和进程:程序:存放在磁盘上的一些列代码和数据的可执行映像,是一个静止的实体。进程:是一个执行中的程序,它是动态的实体。 linux进程的四要素:1. 有一段程序供其执行。这段程序不一定是某个进程所专有,可以与其他进程共用。2. 有进程专用的内核空间堆栈。3. 在内核中有一个task_struct数据结构,即通常所说的“进程控制块”。有了这个数据结构,进程才能...
阅读全文
摘要:能不能一种链表中链接不同的类型呢,相应这种号召,内核链表诞生了。内核链表之所以能够链接不同的类型的数据,是因为它和普通链表不一样,它链接的不是数据结构的起始地址,而是链接的该数据结构中的的list_head属性。 下面是比较重要的函数: 其他的都很简单,专门介绍一下list_entry函数: 函数最后返回的是这个结构体节点起始地址。Ptr是这个节点中list_head属性的地址,type是这个...
阅读全文
摘要:王工小板中对于stm32f411芯片的复位电路如下: 实际上这个电路是错误的,经过实测,stm32f411芯片运行时复位引脚为高电平,而在这个电路图里,实际上是把stm32f411芯片运行时复位引脚的电平看为了低电平,按照这个电路,按下按键,会引起电平跳转到高电平从而触发复位,然而实际上并不是...
阅读全文
摘要:虚拟内存模型Linux 内核本身并不运行在虚拟空间中,其使用的是物理寻址模式。 物理内存被分割为界面,一个内存页面的大小由PAGE_SIZE宏决定。 虚拟地址空间的方式使程序员可以将巨大的结构用于连续的地址,而不必考虑物理内存上的限制。线性地址到物理地址线性地址需要由处理器或者一个单独的MMU转换为物理地址,转换方式如下: 解析的方式为:1.用线性地址中的第一个位段为下标可以在页面目录中找的...
阅读全文
摘要:Linux磁盘分区和目录 Linux发行版之间的差别很小,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。 Windows的文件结构是多个并列的树状结构,最顶部是不同的磁盘(分区),如C,D,E等。而linux的文件结构是当个树状结构。 分区和目录的关系:1. 任何一个分区都必须挂载到某个目录上。2. 目录是逻辑上的区分,而分区是物理上的区分。3. 根目录是所有linux的文件和目录下...
阅读全文
摘要:焊接qfp封装芯片的时候,由于两个引脚间距过小,常常会在引脚上留有焊锡,这个时候就需要吸锡带,但是一般情况下我们手边的设备并不齐全,所以我们可以利用手边的工具自制。 工具:烙铁,松香,铜丝。 把杜邦线去皮,取出铜丝,拧成麻花状,不要拧的太紧,然后用烙铁按着铜丝在松香里上松香。取出,一条吸锡...
阅读全文

浙公网安备 33010602011771号