总体来看,需要一个阶段性总结了,因为现在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 内核/驱动开发总结的更多相关文章

  1. Unix/Linux环境C编程新手教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建

    1. openSUSE是一款优秀的linux. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRjYXN0Y3Bw/font/5a6L5L2T/font ...

  2. Unix/Linux环境C编程入门教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建

    1. openSUSE是一款优秀的linux. 2.选择默认虚拟机 3.选择稍后安装操作系统 4.选择linux  opensuse 5. 选择默认虚拟机名称 6.设置处理器为双核. 7.内存设置为2 ...

  3. 关于linux内核驱动开发中Makefile编译的问题

    obj-y:打个比方,我要编译的是hello.c这个文件,obj-y就会把hello.c或者hello.c编译生成的hello.s文件链接到内核中去. obj-m:打个比方,我要编译的是hello.c ...

  4. 《Linux设备驱动开发具体解释(第3版)》(即《Linux设备驱动开发具体解释:基于最新的Linux 4.0内核》)网购链接

    <Linux设备驱动开发具体解释:基于最新的Linux 4.0内核> china-pub   spm=a1z10.3-b.w4011-10017777404.30.kvceXB&i ...

  5. OMAP4之DSP核(Tesla)软件开发学习(二)Linux内核驱动支持OMAP4 DSP核

    注:必须是Linux/arm 3.0以上内核才支持RPMSG,在此使用的是.config - Linux/arm 3.0.31 Kernel Configuration.(soure code fro ...

  6. Linux设备驱动开发环境的搭建(转)

    经过两周的摸索,终于对Linux设备驱动开发有了个初步的认识,下面对Linux设备驱动开发环境的搭建做个小结,以方便自己以后查询,同时也能给同道的初学者一点帮助. 刚接触Linux设备驱动时,初学者往 ...

  7. Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置

    接博文<Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)>.上篇博文中,仅简单介绍使用串口的Kgbd的流程(kgdboc方式),本文将重点介绍KGDB调试Linux内核的原 ...

  8. 《Linux设备驱动开发具体解释(第3版)》进展同步更新

    本博实时更新<Linux设备驱动开发具体解释(第3版)>的最新进展. 2015.2.26 差点儿完毕初稿. 本书已经rebase到开发中的Linux 4.0内核,案例多数基于多核CORTE ...

  9. 嵌入式C语言自我修养 02:Linux 内核驱动中的指定初始化

    2.1 什么是指定初始化 在标准 C 中,当我们定义并初始化一个数组时,常用方法如下: ] = {,,,,,,,,}; 按照这种固定的顺序,我们可以依次给 a[0] 和 a[8] 赋值.因为没有对 a ...

随机推荐

  1. Xamarin图表开发基础教程(5)OxyPlot框架

    Xamarin图表开发基础教程(5)OxyPlot框架 Xamarin.iOS中使用OxyPlot框架 在Xamarin.iOS平台上实现图表显示需要完成以下的步骤: 1.添加OxyPlot.Xama ...

  2. spring 技术内幕读书笔记1

    1 在 java 应用开发中,往往会涉及复杂的对象耦合关系,在 代码中处理这些耦合关系,对代码的维护性和应用扩展性会带来许多不便.通过使用spring 的 IOC 容器,可以对这些耦合关系实现一个文本 ...

  3. js组件常用封装方法。。。。。【组件封装】 ★★★★★★

    公共弹窗js写法:mcake弹窗封装Dialog.js function Dialog(bg,els,opts) { this.$els = $(els); this.$Dialogbg = $(bg ...

  4. HTTP协议复习

    HTTP请求/响应的步骤: 客户端连接到WEB服务器:浏览器与web服务器的HTTP端口建立一个TCP套接字连接,例如:http://www.baidu.com 发送HTTP请求:通过TCP套接字,客 ...

  5. 小数末尾是0的,不显示0,有值才显示 StringFormat

    JAVA public static void main(String[] args) { DecimalFormat df = new DecimalFormat("###.##" ...

  6. [LeetCode] 77. Combinations 全组合

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  7. [LeetCode] 262. Trips and Users 旅行和用户

    The Trips table holds all taxi trips. Each trip has a unique Id, while Client_Id and Driver_Id are b ...

  8. python sys模块(12)

    在python sys模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数!关于sys模块在官网也有详细的介绍:python sys模块官方介绍. 一.sys模块简介 sys.arg ...

  9. TCP/IP协议的工作流程

    1.在源主机上,应用层将一串应用数据流向下传输给传输层 2.传输层将应用数据截流成分组,并加上TCP报头形成TCP段,向下递交给网络层 3.在网络层给TCP段加上包括源主机,目的主机IP地址的IP报头 ...

  10. ERP通过JAVA流的形式将数据传到外围系统

    1.ERP封装数据成XML写入数据库服务器指定文件 --指定相关文件信息 v_file_path := '/u01/test/app/fs1/EBSapps/appl/cux/12.0.0/forms ...