总体来看,需要一个阶段性总结了,因为现在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. Facets:一款Google开源机器学习数据集可视化工具

    Homepage/演示网站:https://pair-code.github.io/facets/ Pypi:https://pypi.org/project/facets-overview/ Git ...

  2. SQL Server case when 实现分类汇总

    case when 实现分类汇总

  3. java.io.IOException: Input is binary and unsupported

    十一月 16, 2019 11:49:47 上午 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() f ...

  4. Spring cloud微服务安全实战-6-11sentinel之配置持久化

    规则的持久化问题.现在的规则都是在内存里的,我们要写一些代码来编一些规则.启动以后规则在内存里了.如果你配置里面有sentinel的dashboard,有流量经过客户端的时候,它会把规则同步给Dash ...

  5. 一篇文章学会shell脚本

    一.Shell传递参数 #!/bin/bash # 假设在脚本运行时写了三个参数 ..,,则 "(传递了三个参数). echo "-- \$* 演示 --" for i ...

  6. vue+element-ui+ajax实现一个表格的实例

    <!DOCTYPE html> <html> <head> <script src="js/jquery-3.2.1.js">< ...

  7. LODOP和C-LODOP注册与角色等简短问答【增强版】

    之前的简短问答:Lodop.c-lodop注册与角色简短问答.Lodop简短问答客户反馈篇 及排查步骤 及注册相关本文重新整理相关简短问答,调整问答顺序,增加相关的问答. 其他相关(非简短问答):LO ...

  8. [LeetCode] 276. Paint Fence 粉刷篱笆

    There is a fence with n posts, each post can be painted with one of the k colors. You have to paint ...

  9. [LeetCode] 535. Encode and Decode TinyURL 编码和解码短网址

    Note: This is a companion problem to the System Design problem: Design TinyURL. TinyURL is a URL sho ...

  10. Dnsmasq MacOS使用介绍

    Dnsmasq MacOS使用介绍 问题: pc端开发时,需要在/etc/hosts里配置各种本地环境:当开发移动的界面时,除了使用浏览器的"手机模式"查看效果,还可以直接使用手机 ...