摘要:
<设备驱动模型> 注:几乎所有的设备结构体都包含"strcut kobject kobj"和"srtuct list_head list"该结构体。 struct kobject kobj: 该结构体用于构建Linux设备驱动模型的模型建立 struct list_head { struct lis 阅读全文
摘要:
Linux驱动框架分析(一) 事实上,Linux的设备驱动都遵循一个惯例——表征驱动程序(用driver更贴切一些,应该称为驱动器比较好吧)的结构体,结构体里面应该包含了驱动程序所需要的所有资源。用术语来说,就是这个驱动器对象所拥有的属性及成员。由于Linux的内核用c来编写,所以我们也按照这种结构 阅读全文
摘要:
<背景> 内核线程类似于用户进程,通常用于并并发处理性质的任务,并且可以抢占调度。不同于用户进程,内核线程位于内核空间,并且可以访问内核函数和内核数据。 <创建内核线程> a:ret = kernel_thread(mythread,null,CLONE_FS | CLONE_FILES | CLO 阅读全文
摘要:
<背景> 内存会以分页方式组织内存,而且每页大小和计算机体系结构有关系,Linux中每个页都有对应的struct page{} 与之对应。 <分配连续的内存> a:void *kmalloc(int count,int flags)函数用于从zone_normal区域返回连续内存的分配的地址。 参数 阅读全文
摘要:
《《混杂设备驱动模型》》 《混杂设设备的描述》 <混在设备的概念> 在linux系统中,存在一类字符设备,他们拥有相同的主设备号(10),但是次设备号不同,称这类设备为混在设备(missdevice),所有的混杂设备形成一个链表,对设备进行访问,根据次设备号在链表中查找相应的混杂设备。 注意:混杂设 阅读全文
摘要:
mini2440的地址怎么分配。mini2440处理器的地址怎么分配。 S3C2440处理器可以使用的物理地址空间可以达到4GB,其中前1GB的地址为连接外设的地址空间。>1G的地址空间 分配给处理器的其他模块使用。 还有一部分为CPU内部使用的特殊功能寄存器地址空间(地址范围为0x4800 000 阅读全文
摘要:
全局描述符表GDT(Global Descriptor Table): (1)在整个系统中,全局描述符表(注意这里是表,表只有一张)GDT只有一张(一个处理器对应一个GDT)。 (2)GDT可以被放在内存的任何位置,但CPU必须知道GDT的入口,也就是基地址放在哪里,Intel的设计者门提供了一个寄 阅读全文
摘要:
注意:为什么要进行C语言环境的初始化?在没有进行C语言环境的初始化之前的初始化工作都是用汇编进行初始化的。比如核心初始化,和内存初始化 栈:栈帧:一个进程中一般会有多个函数,每一个函数都需要在内存中开辟一个栈空间来使用,每一个函数所占用栈叫做栈帧。pclrspfp这四个数据。 栈帧之空间的界定:fp 阅读全文
摘要:
<前言> 嵌入式开发是一个交叉开发的模式,需要将宿主机上的文件烧写到目标机上。 方式: JTAG USB 串口 网络 <tftp下载> 首先需要将宿主机架成一个TFTP的服务器,其次开发板需要具有从tftp服务下载数据的能力。一般可以用串口调试工具进行调试 <tftp交互过程> (1)客户机向服务器 阅读全文
摘要:
当一个程序工作于不同的ARM工作模式下,程序处所能调用的ARM 指令是不一样的,可以访问的寄存器也是不一样的 ARM总共有7中不同的工作模式。 user 模式 usr 普通用户模式 0b10000 FIQ 模式 fiq 处理终端是以一种快速中断的模式 0b10001 IRQ 模式 irq 就是以一最 阅读全文