科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件linux内核初始化及启动之用户模式开始

linux内核初始化及启动之用户模式开始

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

设备的初始化 init()--->do_basic_init()--->pci_init(),初始化PCI,检测系统的PCI设备。

作者:余涛 来源:天极开发 2007年11月21日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
 RTL8139 的接收路径设计成一个环形缓冲区(一段线性的内存,映射成一个环形内存)。当设备接收到数据时,数据的内容就保存在这个环形缓冲区内并更新下个存储数据的地址(第一个数据包的开始地址+第一个数据包的长度)。设备会一直保留缓冲区内的数据直到整个缓冲区耗尽。这样,设备会再次重写缓冲区内起始位置的内容,就像一个环那样。

  从 2.2 版内核升级到 2.4 版时, RTL-8139 支持模块已不再叫 rtl8139,而叫它 8139too,现在你再看到8139too就不会不明白它的来由了吧。

SCSI subsystem driver Revision: 1.00

  USB设备信息,USB会被当做SCSI来处理。

mumk_register_tasklet: (1) tasklet 0x905bf9c0 status @0x9025e974

  软中断信息输出。Tasklet是在2.4中才出现,它是为了更好地利用多CPU。

Probing XX Flash Memory

  探测 XX的闪存(Flash Memory),"NOR NAND Flash Memory Technology"

Amd/Fujitsu Extended Query Table v1.3 at 0x0040number of CFI chips: 1
 
  AMD与富士通合资设立的Flash供货商Spansion。AMD因获利不佳,已经退出Flash市场,后续由Spansion合资公司经营.主要生产NOR类型的flash,特点是容量小,速度快。Spansion商标的flash,在我们开发中会经常看到。以后大家看到Spansion的芯片,就能了解到它和AMD还有富士通的来龙去脉了。

  Common flash Interface (CFI)是指一个统一的flash访问接口,表示这种flash是这种接口类型的。

Using buffer write method

  使用flash写缓冲方式

  flash提供了写BUFFER的命令来加快对flash上块的操作。对Flash擦除和写数据是很慢的。如果用写BUFFER的命令会快一点。据手册上说,会快20倍。Buffer Size :5 bytes的buffer缓冲不是每个块都有,是整个flash只有一个5 bytes的buffer,用写BUFFER命令对所有的块进行写操作,都要用同一个buffer,写Buffer是主要检查buffer是否available,其实buffer起缓冲作用,来提高工作效率。

  比如某flash有128个128K字节块。允许用户对任意块进行字节编程和写缓冲器字节编程操作,每字节编程时间为210μs;若采用写缓冲器字节编程方式,32字节编程共需218μs,每字节编程时间仅为6.8μs。芯片的块擦除时间为1s,允许在编程或块擦除操作的同时进行悬挂中断去进行读操作,待读操作完成后,写入悬挂恢复命令,再继续编程或块擦除。 Creating 3 MTD partitions on "XX mapped flash":0x00000000-0x00020000 : "BootLoader"0x00020000-0x00040000 : "Config"0x00040000-0x01000000 : "Romfs"

  此处为重要信息部分,需要特别留意。

  在内存中映射过的flash,创建三个MTD分区:

  flash上的内容将被映射到内存中的对应地址

  前128K为BootLoader--->0x00000000-0x00020000

  接着的128K为系统配置信息Config存放的位置--->0x00020000-0x00040000

  再后面的 16M - 2X128K 为romfs的存放处.--->0x00040000-0x01000000

  上面的内容,大家可以根据前面的换算公式得到。

  A> 编译的bootloader一般大小约50K左右;

  B> 在此处就知道了配置信息config是放在第2分区中的;

  C> 制作的romfs的大小,一般为8M或10M左右,所以能放得下;

  嵌入式Linux内核的块设备驱动:

  对于linux 的根文件系统,目前有三种块设备的驱动可以选择,它们分别是:

  a) Blkmem 驱动

  b) MTD 驱动

  c) RAM disk 驱动

  Blkmem 驱动是专门为嵌入式linux 开发的一种块设备驱动,它是嵌入式linux系统中最为古老和通用的块设备驱动。它原理相对简单但是配置比较复杂,需要根据你即的Flash的分区使用情况来修改代码。当然修改的结果是它可以对一些NOR型的Flash进行读写操作。不过目前支持的Flash类型不够多。如果新加入对一种Flash的支持需要作的工作量比较大。

  Linux的MTD驱动是标准Linux的Flash驱动。它支持大量的设备,有足够的功能来定义Flash的分区,进行地址映射等等。使用MTD你可以在一个系统中使用不同类型的Flash。它可以将不同的Flash组合成一个线性的地址让你来使用。

  在标准的Linux 2.4内核中MTD有一系列的选项,你可以根据个人系统的需要来选择,定制。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章