迅为4412开发板Linux驱动教程之内核开发基础

视频教程:http://v.youku.com/v_show/id_XMTMwNjAwMDc0OA==.html

主要内容

? Linux体系结构

? Linux内核结构

? Linux内核源码目录结构

Linux体系结构

从上图可知,Linux体系结构由用户空间和内核空间构成

? 为什么Linux体系要分为用户空间和内核空间?

? 从程序员的角度分析

– 将linux底层和应用分开,做应用的做应用,做底层的做底层,各干各的。

经济学的原理是,分工产生效率。

从安全性的角度分析,为了保护内核。现代CPU通常都实现了不同的

工作模式。以ARM为例:ARM实现了7种工作模式,不同模式下CPU可

以执行的指令或者访问的寄存器不同:

– (1)用户模式usr (2)系统模式sys(3)管理模式svc(4)快速中断fiq(5)外部中

断irq(6)数据访问终止abt(7)未定义指令异常

– 以(2)X86为例:X86实现了4个不同级别的权限,Ring0—Ring3 ;Ring0下可以

执行特权指令,可以访问IO设备;Ring3则有很多的限制

– 以Android为例:将应用放到Java虚拟机上面运行,应用更加远离底层

? 用户空间和内核空间是程序执行的两种不同状态,我们可以通过“系

统调用”和“硬件中断“来完成用户空间到内核空间的转移

Linux内核结构

System Call Interface (SCI层)

– 为用户空间提供了一套标准的系统调用函数来访问Linux内核。

? Procees Management(PM)

– 进程管理是创建进程(fork、exec),停止进程(kill、exit),并控制他们之

间的通信(signal等)。还包括进程调度,控制活动进程如何共享CPU

? Memory Management(MM)

– 内存管理的主要作用是控制多个进程安全的共享内存区域

? Virtual File Systems(VFS)

– 虚拟文件系统,隐藏各种文件系统的具体细节,为文件操作提供统一的

接口

– Linux提供了一个大的通用模型,使这个模型包含了所有文件系统功能的

集合(一切皆文件)

? Device Drivers设备驱动

– Linux内核中有大量的代码在设备驱动程序部分,用于控制特定的硬件设

备。

– Linux驱动一般分为网络设备、块设备、字符设备、杂项设备

? 网络协议栈

– 内核网络协议栈为Linux提供了丰富的网络协议实现。

目录结构

? Linux内核源码采用树形结构。功能相关的文件放到不同的子目录下面

,使程序更具有可读行。

? arch目录

– arch目录是平台目录。内核支持的所有CPU架构,在该目录下都有对应的

子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录

,分别控制系统引导,内存管理,系统调用。还有动态调频,主频率设

置部分等

小结

? 2%的程序员写出80%的有效代码

– 刚开始学习的时候最重要的就是看代码,但是学习Linux系统,不能一头

扎进内核中无关的代码中,好几万个文件一辈子也看不完。

? Linux很复杂,很强大。

– 内核源码解压编译后有1.3G,通过裁减编译出的linux镜像zImage不到4M

– 4M源码镜像中,还有大部分不用我们关心

– 我们只需要了解对写代码有帮助的部分,掌握我们需要掌握的代码

– 前面Linux代码中只有红色标记的一部分是需要了解或者掌握的

? 作为开发者只需要学会使用它,我们要重点学习只是其中很小的一部

分。

– 对架构有一定的了解即可

– 学习的重点是驱动开发相关的知识、函数的调用、驱动的协议、简单的

硬件知识

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-07 22:34:29

迅为4412开发板Linux驱动教程之内核开发基础的相关文章

迅为4412开发板Linux驱动教程——编写简单应用调用驱动

Linux驱动教程:http://pan.baidu.com/s/1c0hljUS 编写简单应用调用驱动--头文件 ? 打印头文件 – include <stdio.h>调用打印函数printf ? 应用中调用文件需要的头文件 – #include <sys/types.h>基本系统数据类型.系统的基本数据类型在32 编译 环境中保持为32 位值,并会在64 编译环境中增长为64 位值. – #include <sys/stat.h>系统调用函数头文件.可以调用普通文件

迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解

视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.com/s/1kTlGkcR 总线_设备_驱动注册流程详解 ? 注册流程图 ? 设备一般都需要先注册,才能注册驱动 – 现在越来越多的热拔插设备,反过来了.先注册驱动,设备来了再注册 设备 ? 本节使用的命令 – 查看总线的命令#ls /sys/bus/ – 查看设备号的命令#cat /proc/devices ? 设备都有主设备号和次设备号,否则255个设备号不

迅为4412开发板Linux驱动教程/硬件知识及原理图的使用

视频教程下载地址:http://pan.baidu.com/s/1pJwxUfL 嵌入式研发流程介绍 ? PCB研发流程介绍 – 方案,原理图(网表) – layoutproject师(gerber文件) – PCB板厂制板(裸板PCB) – 焊接(Demo板) – 硬件測试 – 稳定性測试(须要软件project师) – 量产 – 驱动的工作在方案选定了之后就开展.到了量产之后还有可能一 直更新升级 原理图的使用 ? 原理图的使用 – 模块 – 元件标号 – 网络标号 模块 ? 拿到原理图之后

迅为4412开发板Linux驱动教程之GPIO的初始化

视频下载地址:http://pan.baidu.com/s/1c06oiti GPIO的初始化 ? 在内核源码目录下使用命令"ls drivers/gpio/*.o",可以看到"gpio-exynos4"被编译进了内核 – 生成.o文件代表最终被编译进了内核 – 除了menuconfig配置文件,还可以通过.o文件来判定该文件是否编译进了 内核 ? 在"gpio-exynos4.c"文件最下面一行 – core_initcall(exynos4_

开发板 Linux驱动视频 驱动是什么

内存管理单元很重要. linux把设备看成文件,(open,read,write,ioctrl,close)主要写这几个函数. 哈弗结构,取指令和取数据同时进行. arm处理器体系架构以及发展方向 单片机和微处理器之间的区别: CACHE(高速缓存)   ,提高处理器访问内存的速度,高速缓存是静态ram,内存是动态ram.可能会有多级缓存. MMU(内存管理单元) ,实现虚拟地址到物理地址的转换.[可以看做是一个表格,虚拟地址和物理地址的映射] 手册上查到的是物理地址,但是我们编程用的是虚拟地址

在开发板Linux上挂载"驱动"挂载不成功,出现提示server 172.27.52.100 not responding, still trying

1.在开发板具体操作步骤如下: 1.1 :设置IP ifconfig eth0 172.27.52.200 1.2 :ping通 虚拟机Linux 主机Linux ping XXX.XXX.XXX.XXX 1.3.挂接 mount -t nfs -o nolock  XXX.XXX.XXX.XXX:/work/nfs_root/first_fs  /mnt // 例如:mount -t nfs -o nolock  172.27.52.100:/work/nfs_root/first_fs  /

Beaglebone Black开发板安装驱动

Beaglebone Black开发板安装驱动 Beaglebone Black开发板安装驱动,在使用Beaglebone Black开发板子做任何事情之前首先需要安装驱动.下面的内容就了展示在Windows.Mac OS X以及Linux操作系统下Beaglebone Black开发板驱动的安装方式.使用USB连接的Beaglebone Black在电脑中显示为一个存储设备,如图1.2所示.   图1.2  Beaglebone Black作为可移动存储设备 这其中包括了你要开始使用Beagl

SecureCRT访问开发板linux系统

前言: 最近在用OK6410开发板跑linux系统,经常在终端上敲一些指令,无奈开发板屏幕太小用起来非常不方便,所以使用终端一款能运行在windows上的软件与开发板连接,直接在电脑上操作开发板了,这款软件是SecureCRT. 1.软件的简单配置: 安装SecureCRT软件,然后打开文件--快速连接 接着选择一种与开发板连接的协议并进行参数配置 我这里直接使用串口的方式连接开发板和笔记本电脑,所以协议选择的是serial,端口可以在电脑的设备管理器中查看,如果有黄色叹号需要更新驱动程序,相关

电脑通过 ssh 连接 7D开发板的完整教程

电脑通过ssh连接7D开发板的完整教程具体如下: 1.启动开发板2输入用户名 root 进入到开发板系统.3 [endif]用网线将开发板和电脑连接到同一路由器上,开发板打印出如下信息,请记住红色方框中的信息,eth0: link becomes ready.eth0 表示你连接到路由器网卡的名称.Link becomes ready 表示连接成功.4.使用命令ifconfig eth0 获取网卡 eth0 的信息,如果你的路由器开启了 DHCP,网卡会被自动的分配 ip 地址,如果没有开启,你