Linux 内核/驱动开发总结
总体来看,需要一个阶段性总结了,因为现在SD卡的调试也进入了卡壳期。大概会出一系列的总结文章,主要涉及的主题在下面列出:
1、开发工具:gcc/gdb/vim/ctags
2、Makefile和KConfig:linux内核的配置与编译,更好的理解模块化开发
3、调试技术:
无敌的printf等;注意整体的流程以及与内核的交互;
4、常用的shell命令:
grep查找特定字符串;find查找指定的文件
5、特定驱动总结【从体系结构相关arch和体系结构无关driver两边分析以及它们之间的交互】
(1)触屏驱动开发总结
(2)LCD/Framebuffer等显示系统驱动开发总结
(3)SD卡驱动总结以及调试遇到的问题
6、相关技术
(1)中断系统在驱动开发中的应用,特别是在基于Xen这一层之后,中断的发生过程要仔细分析一次
(2)进程调度子系统在驱动开发中的应用,在SD卡中要观察wat_for_completion
(3)利用u-boot从nandflash启动的原理:关键词:Steppingstone,垫脚石。引自:s3c2440由NANDFLASH启动原理
不同与NOR FLASH,NAND FLASH对外接口中的数据与地址线是分时复用的,这也就造成了NAND FLASH本身对外没有专门的地址线可以直接连接到CPU的引脚上,NAND FLASH 与CPU的交互要通过一个中介来完成,那就是NAND FLASH 控制器,在S3C2440芯片中就集成有这样一个控制器。
由于NAND FLASH不能与CPU直连,而CPU在加电后会去0x0处取指执行,所以系统在RESET之后是没有办法从NAND FLASH直接启动的,但在S3C2440中采用了一种迂回的方式来完成从NAND中启动系统,在CPU中集成有一个4KB的SRAM(英文名字叫Steppingstone,垫脚石),当系统被设置成从NAND FALSH启动(使用OM[1:0]引脚的电平来控制)时,NAND FLASH控制器会在启动后把NAND FLASH中的前面4KB的内容COPY到SRAM垫脚石中,因为SRAM与CPU是直连的,又因为设置的是从NAND
FLASH启动,这时的SRAM垫脚石会被映射到CPU地地空间的0地址处,于是CPU便从SRAM的0地址外取指令并执行,这4KB的代码一般是将NAND中剩下的代码拷贝到SDRAM中,然后跳转过去执行,此后这4KB的SRAM还可以用作其它用途。
Linux 内核/驱动开发总结的更多相关文章
- Unix/Linux环境C编程新手教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建
1. openSUSE是一款优秀的linux. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRjYXN0Y3Bw/font/5a6L5L2T/font ...
- Unix/Linux环境C编程入门教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建
1. openSUSE是一款优秀的linux. 2.选择默认虚拟机 3.选择稍后安装操作系统 4.选择linux opensuse 5. 选择默认虚拟机名称 6.设置处理器为双核. 7.内存设置为2 ...
- 关于linux内核驱动开发中Makefile编译的问题
obj-y:打个比方,我要编译的是hello.c这个文件,obj-y就会把hello.c或者hello.c编译生成的hello.s文件链接到内核中去. obj-m:打个比方,我要编译的是hello.c ...
- 《Linux设备驱动开发具体解释(第3版)》(即《Linux设备驱动开发具体解释:基于最新的Linux 4.0内核》)网购链接
<Linux设备驱动开发具体解释:基于最新的Linux 4.0内核> china-pub spm=a1z10.3-b.w4011-10017777404.30.kvceXB&i ...
- OMAP4之DSP核(Tesla)软件开发学习(二)Linux内核驱动支持OMAP4 DSP核
注:必须是Linux/arm 3.0以上内核才支持RPMSG,在此使用的是.config - Linux/arm 3.0.31 Kernel Configuration.(soure code fro ...
- Linux设备驱动开发环境的搭建(转)
经过两周的摸索,终于对Linux设备驱动开发有了个初步的认识,下面对Linux设备驱动开发环境的搭建做个小结,以方便自己以后查询,同时也能给同道的初学者一点帮助. 刚接触Linux设备驱动时,初学者往 ...
- Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置
接博文<Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)>.上篇博文中,仅简单介绍使用串口的Kgbd的流程(kgdboc方式),本文将重点介绍KGDB调试Linux内核的原 ...
- 《Linux设备驱动开发具体解释(第3版)》进展同步更新
本博实时更新<Linux设备驱动开发具体解释(第3版)>的最新进展. 2015.2.26 差点儿完毕初稿. 本书已经rebase到开发中的Linux 4.0内核,案例多数基于多核CORTE ...
- 嵌入式C语言自我修养 02:Linux 内核驱动中的指定初始化
2.1 什么是指定初始化 在标准 C 中,当我们定义并初始化一个数组时,常用方法如下: ] = {,,,,,,,,}; 按照这种固定的顺序,我们可以依次给 a[0] 和 a[8] 赋值.因为没有对 a ...
随机推荐
- mysql性能测试-------重要!!!
我们在做性能测试的目的是什么,就是要测出一个系统的瓶颈在哪里,到底是哪里影响了我们系统的性能,找到问题,然后解决它.当然一个系统由很多东西一起组合到一起,应用程序.数据库.服务器.中中间件等等很多东西 ...
- c#怎么解决System.UnauthorizedAccessException异常
https://blog.csdn.net/qq_38061677/article/details/81157116 代码: using System;namespace Project2048{ c ...
- k8s 传参给docker env command、args和dockerfile中的entrypoint、cmd之间的关系
[k8s]args指令案例-彻底理解docker entrypoint 需求: 搞个镜像,可以运行java -jar xxx.jar包,xxx.jar包名称要用参数传 思路1: 打对应运行ja ...
- xadmin插件
from django.http import HttpResponse from xadmin.plugins.actions import BaseActionView class test(Ba ...
- Program不是内部命令也不是外部命令
在项目中使用java动态生成.bat文件,再调试时执行bat文件失败! 显示:Program不是内部命令也不是外部命令 百度了一下:C:\"Program Files"或progr ...
- Linux下使用iptables配置防火墙端口转发
1.背景 一些情况下,在linux上面我们想使用80-1024之间的端口,这个时候需要root权限. 当时root权限容易被提权,特别是早起那些Struct2,漏洞爆出的时候,一抓一个准-root权限 ...
- [LeetCode] 229. Majority Element II 多数元素 II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Note: The a ...
- Office Online Server2016搭建与部署(在线编辑)
至少需要两台服务器,一台域控制器,一台部署Office Online Server https://docs.microsoft.com/zh-cn/officeonlineserver/office ...
- Consul服务告警之Watch机制
熔断保护在Consul和Ocelot中都有实现,意思就是当一个服务不正常时(比如我们的一个服务实例挂了,Consul的健康检查机制检测到了),应该给系统维护人员给以告警.在Consul中,服务告警也是 ...
- ADB 常用命令及详解
1.pull文件 adb pull (文件路径) (想要pull的路径) MacBook-Pro:~ caris$ adb pull /sdcard/Android/data/com.xiwi.log ...