linux 软件中断号,linux中断子系统:中断号的映射与维护

写在前沿:

好久好久没有静下心来整理一些东西了,开始工作已有一个月,脑子里想整理的东西特别多。记录是一种很好的自我学习方式,静下来多思考多总结,三年的工作目标不能发生变化,作为职场菜鸟即将进入全世界半导体第一的Intel working,是机遇更是一种挑战,困难也是可想而知。脚踏实地、仰望星空,以结果为导向,以目标为准则,争取每天进步一点点。

Linux内核版本:3.4.39

一. linux中断子系统的irq_desc初始化

linux内核最初的中断初始化过程入口为start_kernel。在这里内核空间需要做的事情是初始化一张中断描述符表,由函数early_irq_init来完成,内核可配置使用hash table或者直接使用linear来完成。一般嵌入式平台下的内核中断所需的数量并不是很大,所有采用linera的方式比较常见,如下:

struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned_in_smp = {

[0 ... NR_IRQS-1] = {

.handle_irq= handle_bad_irq,

.depth= 1,

.lock= __RAW_SPIN_LOCK_UNLOCKED(irq_desc->lock),

}

};

二.ARM平台下常见的gic中断控制器初始化过程:

gic控制器的初始化在arm平台下集成为主,由init_IRQ来负责完成最底层的gic controller的初始化,machine_desc->init_irq();该过程表明需要和machine平台相关的irq初始化相关联起来,一般在arch/arcm/mach-xxx/board.x的平台下进行平台最起初的init回调定义,如machine_init等。

一般需要调用gic初始化的入口为gic_of_init():

int __init gic_of_init(struct device_node *node, struct device_node *parent)

{

void __iomem *cpu_base;

void __iomem *dist_base;

u32 percpu_offset;

int irq;

if (WARN_ON(!node))

return -ENODEV;

dist_base = of_iomap(node, 0);

WARN(!dist_base, "unable to map gic dist registers\n");

cpu_base = of_iomap(node, 1);

WARN(!cpu_base, "unable to map gic cpu registers\n");

if (of_property_read_u32(node, "cpu-offset", &percpu_offset))

percpu_offset = 0;

gic_init_bases(gic_cnt, -1, dist_base, cpu_base, percpu_offset, node);

if (parent) {

irq = irq_of_parse_and_map(node, 0);//将一个子controller以普通中断加入到父节点,并映射之

gic_cascade_irq(gic_cnt, irq);//设置该irq_num下的级联flow 回调接口

}//级联使用,该gic需要将自己作为一个子irq来进行map操作

gic_cnt++;

return 0;

该过程主要基于linux设备树,对当前machine支持的interrupt controller进行init,常见的处理器以单个gic为主,只有部分处理器会出现root与child 等controller的级联现象。假设当前就一个gic,那么gic_init_bases就成为了初始化的关键,他主要完成以下工作:

step1:初始化gic_chip_data用于维护一个gic控制器;

step2:计算当前系统硬件起始的中断号:

if (gic_nr == 0 && (irq_start & 31) > 0) {

hwirq_base = 16;

if (irq_start != -1)

irq_start = (irq_start & ~31) + 16;

} else {

hwirq_base = 32;//hw irq从32开始即spi

}

这里需要说明的是,一般arm平台下的gic作为一个硬件中断控制器,具体的中断号类型有SGI软件中断,CPU私有中断PPI、SPI等,前两者分别占据0-15,16-31的ID号,32开始的均为SPI中断类型。而一般软件中断是不需要去维护相应的中断描述符的,故如果gic_nr=0即初始化的是当前的root gic,则相应的hwirq起始值为16,包括PPI,但PPI一般和具体的CPU绑定私有化。

step3:调整当前平台所用的gic实际支持的中断数目。

gic_irqs = readl_relaxed(gic_data_dist_base(gic) + GIC_DIST_CTR) & 0x1f;//gic控制器中读取支持irq数目

gic_irqs = (gic_irqs + 1) * 32;

if (gic_irqs > 1020)

gic_irqs = 1020;

gic->gic_irqs = gic_irqs;//irqs的总数

gic_irqs -= hwirq_base; /* calculate # of irqs to allocate *///实际减去16个后的要映射的spi中?

setp4:irq_alloc_descs

irq_base = irq_alloc_descs(irq_start, 16, gic_irqs, numa_node_id());//获取一张irq的map表起始位置

我们知道,当前使用的是线性表来维护整个中断描述符,上述过程就是在一张allocated_irqs map表中找到一个非0开始的bit数据位置,并请求申请一个连续的gic_irqs数目的一段map中的空间,表明这段空间归当前的root gic所有,并将这段空间的map bit值置为1。比如从16开始申请,100个的话,连续的跨字节申请到100bit.

step5:irq_domain_add_legacy

完成一个domain的建立,并完成所有硬件中断号hw_irq和vir_irq间的映射关系。

三.中断控制器中的domain

中断控制器domain的出现,是为了更好的维护虚拟中断号和硬件中断号间的关系以及解决多个controller级联时的irq映射问题,linux内核提供比较标准的映射函数接口。但gic模块在映射,采用了什么简单的处理方式,如下所示:

struct irq_domain *irq_domain_add_legacy(struct device_node *of_node,

unsigned int size,

unsigned int first_irq,

irq_hw_number_t first_hwirq,

const struct irq_domain_ops *ops,

void *host_data)

{

struct irq_domain *domain;

unsigned int i;

domain = irq_domain_alloc(of_node, IRQ_DOMAIN_MAP_LEGACY, ops, host_data);

if (!domain)

return NULL;

domain->revmap_data.legacy.first_irq = first_irq;

domain->revmap_data.legacy.first_hwirq = first_hwirq;

domain->revmap_data.legacy.size = size;

mutex_lock(&irq_domain_mutex);

/* Verify that all the irqs are available */

for (i = 0; i < size; i++) {

int irq = first_irq + i;

struct irq_data *irq_data = irq_get_irq_data(irq);

if (WARN_ON(!irq_data || irq_data->domain)) {

mutex_unlock(&irq_domain_mutex);

of_node_put(domain->of_node);

kfree(domain);

return NULL;

}

}

/* Claim all of the irqs before registering a legacy domain */

for (i = 0; i < size; i++) {

struct irq_data *irq_data = irq_get_irq_data(first_irq + i);//获取virq map表的起点,然后赋值hwirq

irq_data->hwirq = first_hwirq + i;

irq_data->domain = domain;//绑定hwirq与virq

}

mutex_unlock(&irq_domain_mutex);

for (i = 0; i < size; i++) {

int irq = first_irq + i;

int hwirq = first_hwirq + i;//offset亮是一样的

/* IRQ0 gets ignored */

if (!irq)

continue;

/* Legacy flags are left to default at this point,

* one can then use irq_create_mapping() to

* explicitly change them

*/

ops->map(domain, irq, hwirq);//建立irq与硬件中断间的关系

/* Clear norequest flags */

irq_clear_status_flags(irq, IRQ_NOREQUEST);

}

irq_domain_add(domain);

return domain;

}来看向内核添加一个domain的处理过程,说明下传入的关键参数first_irq、first_hwirq,前者是我们申请到的一段irq_desc可用的map bit空间的起始位置,实际值为16。后者是当前root gic支持的可映射的中断号位16.

step1:先是根据first_irq去连续获取irq_data本质即是一个irq_desc。然后对该描述符的hwirq与所属的domain进行赋值操作。这样处理的好处就是根据匹配硬件中断号就能映射到一个独一无二的virq。而且看上去是很线性的映射关系

struct irq_data *irq_get_irq_data(unsigned int irq)

{

struct irq_desc *desc = irq_to_desc(irq);

return desc ? &desc->irq_data : NULL;

}

step2:利用domain的回调接口ops->map进行该irq_desc中断流层flow_handler接口的初始化.

const struct irq_domain_ops gic_irq_domain_ops = {

.map = gic_irq_domain_map,

.xlate = gic_irq_domain_xlate,

};

static int gic_irq_domain_map(struct irq_domain *d, unsigned int irq,

irq_hw_number_t hw)

{

if (hw < 32) {

irq_set_percpu_devid(irq);

irq_set_chip_and_handler(irq, &gic_chip,

handle_percpu_devid_irq);

set_irq_flags(irq, IRQF_VALID | IRQF_NOAUTOEN);//PPI

} else {

irq_set_chip_and_handler(irq, &gic_chip,

handle_fasteoi_irq);

set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);//SPI,均为handle_arch_irq类型

}

irq_set_chip_data(irq, d->host_data);

return 0;

}domain_map操作对SPI和PPI进行了分开的处理,以SPI为例,主要通过irq_set_chip_and_handler设置了当前硬件中断发生时,需要回调的irq_decs->(irq_flow_handler_thandle_irq;),这不是我们所谓的暴露给驱动开发的最上层的irq_handler,在linux中断系统中称为流层回调,目的在于处理不同的中断流形式的回调,比如多controller级联,以及PPI flow_hander等等。

最终还将gic chip级别的信息保存到这个irq_desc中去。

四、gic硬件模块的初始化:

gic_dist_init(gic);//这里是硬件gic_distributor初始化

gic_cpu_init(gic);//cpu interfac初始化

gic_pm_init(gic);//gic 电源模块的初始化

总结:

domain很好的将大量的硬件中断号映射为一个独一无二的虚拟中断号,供上层驱动开发时的request_irq,从而确保内核在发生中断系统调用时不会出现irq_handler的混乱。

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

原文:http://blog.csdn.net/gzzaigcnforever/article/details/47425945

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统移植 目 录 第一部分 前言....................................................................................................................................8 1 硬件环境......................................................................................................................................8 1.1 主机硬件环境.......................................................................................................................8 1.2 目标板硬件环境...................................................................................................................8 1.3 工具介绍...............................................................................................................................8 2 软件环境.......................................................................................................................................8 2.1 主机软件环境.......................................................................................................................8 2.1.1 Windows 操作系统.......................................................................................................8 2.1.2 Linux 操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境...............................................................................................9 2.2 Linux 下工作用户及环境....................................................................................................9 2.2.1 交叉工具的安装...........................................................................................................9 2.2.2 u­boot移植工作目录....................................................................................................9 2.2.3 内核及应用程序移植工作...........................................................................................9 2.3 配置系统服务.....................................................................................................................10 2.3.1 tftp 服务器的配置.......................................................................................................10 2.4 工具使用.............................................................................................................................12 2.4.1 minicom的使用..........................................................................................................12 3 作者介绍....................................................................................................................................13 3.1 策划, 组织, 指导, 发布者...................................................................................................13 3.2 ADS bootloader部分..........................................................................................................13 3.3 交叉工具部分.....................................................................................................................13 3.4 uboot 部分...........................................................................................................................13 3.5 内核部分.............................................................................................................................13 3.6 应用程序部分.....................................................................................................................13 3.7 网卡驱动部分.....................................................................................................................13 3.8 Nand Flash 驱动部分.........................................................................................................13 第二部分 系统启动bootloader 的编写(ADS).................................................................................14 1 工具介绍....................................................................................................................................14 1.1 ADS 命令行命令介绍........................................................................................................14 1.1.1 armasm........................................................................................................................14 1.1.2 armcc, armcpp.............................................................................................................14 1.1.3 armlink.........................................................................................................................14 2 基本原理....................................................................................................................................15 2.1 可执行文件组成及内存映射.............................................................................................15 2.1.1 可执行文件的组成.....................................................................................................15 2.1.2 装载过程.....................................................................................................................16 2.1.3 启动过程的汇编部分.................................................................................................17 2.1.4 启动过程的 C部分.....................................................................................................17 3 AXD的使用以及源代码说明...................................................................................................18 3.1 源代码说明.........................................................................................................................18 3.1.1 汇编源代码说明.........................................................................................................18 3.1.2 C语言源代码说明......................................................................................................23 3.1.3 源代码下载.................................................................................................................23 3.2 AXD的使用.......................................................................................................................23 3.2.1 配置仿真器.................................................................................................................23 3.2.2 启动 AXD 配置开发板...............................................................................................23 第三部分 GNU交叉工具链.............................................................................................................25 1  设置环境变量,准备源码及相关补丁...................................................................................25 1.1 设置环境变量.....................................................................................................................25 1. 2 准备源码包............................................................................................................................25 1.2.1 binuils..........................................................................................................................25 1.2.2 gcc...............................................................................................................................25 1.2.3 glibc.............................................................................................................................25 1.2.4 linux kernel..................................................................................................................26 1.3 准备补丁.............................................................................................................................26 1.3.1 ioperm.c.diff................................................................................................................26 1.3.2 flow.c.diff....................................................................................................................26 1.3.3 t­linux.diff....................................................................................................................26 1.4   编译 GNU binutils...........................................................................................................26 1.5 准备内核头文件.................................................................................................................26 1.5.1 使用当前平台的 gcc编译内核头文件......................................................................26 1.5.2 复制内核头文件.........................................................................................................27 1.6   译编glibc头文件.............................................................................................................27 1.7   编译gcc第一阶段............................................................................................................27 1.8   编译完整的glibc..............................................................................................................27 1.9  编译完整的gcc.................................................................................................................28 2 GNU 交叉工具链的下载...........................................................................................................28 2.1 ARM 官方网站...................................................................................................................28 2.2 本文档提供的下载.............................................................................................................28 3 GNU 交叉工具链的介绍与使用...............................................................................................29 3.1 常用工具介绍.....................................................................................................................29 3.2.1 arm­linux­gcc的使用.................................................................................................29 3.2.2 arm­linux­ar 和 arm­linux­ranlib 的使用..................................................................30 3.2.3 arm­linux­objdump 的使用.........................................................................................30 3.2.4 arm­linux­readelf 的使用............................................................................................31 3.2.6 arm­linux­copydump 的使用......................................................................................32 4 ARM GNU 常用汇编语言介绍.................................................................................................32 4.1 ARM GNU常用汇编伪指令介绍.....................................................................................32 4.2 ARM GNU专有符.........................................................................................................33 4.3 操作码.................................................................................................................................33 5 可执行生成说明........................................................................................................................33 5.1 lds文件说明.......................................................................................................................33 5.1.1 主要符说明.............................................................................................................33 5.1.2 段定义说明.................................................................................................................34 第四部分 u­boot 的移植...................................................................................................................35 1 u­boot的介绍及系统结构.........................................................................................................35 1.1 u­boot 介绍.........................................................................................................................35 1.2 获取u­boot.........................................................................................................................35 1.3 u­boot 体系结构.................................................................................................................35 1.3.1 u­boot目录结构..........................................................................................................35 2 uboot的启动过程及工作原理...................................................................................................36 2.1 启动模式介绍.....................................................................................................................36 2.2 阶段1 介绍.........................................................................................................................36 2.2.1 定义入口.....................................................................................................................36 2.2.2 设置异常向量.............................................................................................................37 2.2.3 设置 CPU的模式为SVC模式..................................................................................37 2.2.4 关闭看门狗.................................................................................................................37 2.2.5 禁掉所有中断.............................................................................................................37 2.2.6 设置以 CPU的频率....................................................................................................37 2.2.7 设置 CP15...................................................................................................................37 2.2.8 配置内存区控制寄存器.............................................................................................38 2.2.9 安装 U­BOOT 使的栈空间........................................................................................38 2.2.10 BSS 段清 0................................................................................................................38 2.2.11 搬移 Nand Flash 代码...............................................................................................39 2.2.12 进入 C代码部分.......................................................................................................39 2.3 阶段2 的C语言代码部分 .............................................................................................39 2.3.1 调用一系列的初始化函数.........................................................................................39 2.3.2 初始化网络设备.........................................................................................................41 2.3.3 进入主 UBOOT 命令行..............................................................................................41 2.4 代码搬运.............................................................................................................................41 3 uboot的移植过程.......................................................................................................................42 3.1 环境.....................................................................................................................................42 3.2 步骤.....................................................................................................................................42 3.2.1 修改 Makefile..............................................................................................................42 3.2.2 在 board 子目录中建立 crane2410.............................................................................42 3.2.3 在 include/configs/中建立配置头文件......................................................................42 3.2.4 指定交叉编译工具的路径.........................................................................................42 3.2.5 测试编译能否成功.....................................................................................................42 3.2.6 修改 lowlevel_init.S 文件...........................................................................................43 3.2.9 UBOOT 的 Nand Flash 移植......................................................................................45 3.2.8 重新编译u­boot..........................................................................................................45 3.2.9 把 u­boot烧入flash....................................................................................................45 4  U­BOOT 命令的使用................................................................................................................46 4.1 U­BOOT命令的介绍.........................................................................................................46 4.1.1 获得帮助信息.............................................................................................................46 4.2 常用命令使用说明.............................................................................................................47 4.2.1 askenv(F).....................................................................................................................47 4.2.2 autoscr.........................................................................................................................47 4.2.3 base   ...........................................................................................................................47 4.2.4 bdinfo...........................................................................................................................47 4.2.5 bootp............................................................................................................................47 4.2.8 tftp(tftpboot)................................................................................................................48 4.2.9 bootm...........................................................................................................................48 4.2.10 go...............................................................................................................................48 4.2.11 cmp   .........................................................................................................................48 4.2.12 coninfo  .....................................................................................................................48 4.2.13 cp...............................................................................................................................48 4.2.14 date............................................................................................................................49 4.2.15 erase(F)......................................................................................................................49 4.2.16 flinfo(F).....................................................................................................................49 4.2.17 iminfo........................................................................................................................49 4.2.18 loadb..........................................................................................................................49 4.2.19 md..............................................................................................................................49 4.2.20 mm ............................................................................................................................50 4.2.21 mtest   .......................................................................................................................50 4.2.22 mw.............................................................................................................................50 4.2.23 nm   ...........................................................................................................................50 4.2.24 printenv......................................................................................................................50 4.2.25 ping  ..........................................................................................................................51 4.2.26 reset...........................................................................................................................51 4.2.27 run   ...........................................................................................................................51 4.2.28 saveenv(F).................................................................................................................51 4.2.29 setenv.........................................................................................................................51 4.2.30 sleep...........................................................................................................................51 4.2.31 version.......................................................................................................................51 4.2.32 nand info....................................................................................................................51 4.2.33 nand device ........................................................................................................51 4.2.34 nand bad....................................................................................................................51 4.2.35 nand read...................................................................................................................52 4.2.36 nand erease................................................................................................................52 4.2.37 nand write..................................................................................................................52 4.3 命令简写说明.....................................................................................................................52 4.4 把文件写入NandFlash.......................................................................................................53 4.5 下载提供.............................................................................................................................53 5 参考资料....................................................................................................................................53 第五部分 linux 2.6 内核的移植.......................................................................................................53 1 内核移植过程............................................................................................................................53 1.1 下载linux 内核...................................................................................................................53 1.2 修改Makefile.....................................................................................................................53 1.3 设置flash 分区...................................................................................................................54 1.3.1 指明分区信息.............................................................................................................54 1.3.2 指定启动时初始化.....................................................................................................56 1.3.3 禁止 Flash ECC校验 ................................................................................................56 1.4 配置内核.............................................................................................................................56 1.4.1 支持启动时挂载 devfs................................................................................................56 1.4.2 配置内核产生.config 文件.........................................................................................57 1.4.3 编译内核.....................................................................................................................58 1.4.4 下载 zImage到开发板................................................................................................58 2 创建 uImage................................................................................................................................61 2.1 相关技术背景介绍.............................................................................................................61 2.2 在内核中创建uImage 的方法...........................................................................................61 2.2.1 获取 mkimage工具.....................................................................................................61 2.2.2 修改内核的 Makefile文件.........................................................................................61 3 追加实验记录.............................................................................................................................62 3.1 移植 linux­2.6.15.7..............................................................................................................62 3.2 移植 linux­2.6.16.21............................................................................................................62 3.3 移植linux­2.6.17................................................................................................................62 4 参考资料....................................................................................................................................62 第六部分 应用程序的移植..............................................................................................................63 1 构造目标板的根目录及文件系统.............................................................................................63 1.1 建立一个目标板的空根目录.............................................................................................63 1.2 在 my_rootfs 中建立Linux 目录树...................................................................................63 1.3 创建linuxrc文件................................................................................................................63 2 移植 Busybox.............................................................................................................................64 2.1 下载busybox......................................................................................................................64 2.3 编译并安装Busybox..........................................................................................................65 3 移植 TinyLogin...........................................................................................................................66 3.1 下载.....................................................................................................................................66 3.2 修改tinyLogin 的 Makefile................................................................................................66 3.3 编译并安装.........................................................................................................................66 4 相关配置文件的创建................................................................................................................66 4.1 创建帐及密码文件.........................................................................................................66 4.2 创建profile文件................................................................................................................67 4.4 创建fstab 文件...................................................................................................................67 4.5 创建inetd.conf 配置文件...................................................................................................67 5 移植 inetd....................................................................................................................................67 5.1 inetd 的选择及获取............................................................................................................67 5.1.1 获取 inetd....................................................................................................................67 5.2 编译inetd............................................................................................................................67 5.2.1 修改 configure文件....................................................................................................67 5.2.2 编译 ...........................................................................................................................68 5.3 配置inetd............................................................................................................................68 5.3.1 拷贝 inetd 到根文件系统的usr/sbin 目录中.............................................................68 6 移植 thttpd Web 服务器.............................................................................................................69 6.1 下载.....................................................................................................................................69 6.2 编译thttpd...........................................................................................................................69 6.3 配置.....................................................................................................................................69 6.3.1 拷贝 thttpd 二进制可执行文件到根文件系统/usr/sbin/目录中...............................69 6.3.2 修改 thttpd 配置文件..................................................................................................69 6.3.3 转移到根文件系统目录,创建相应的文件.............................................................69 7 建立根目录文件系统包............................................................................................................70 7.1 建立CRAMFS 包...............................................................................................................70 7.1.1 下载 cramfs 工具........................................................................................................70 7.1.2 制作 cramfs 包............................................................................................................70 7.1.3 写 cramfs 包到Nand Flash.........................................................................................70 8 参考资料....................................................................................................................................70 第七部分 Nand flash 驱动的编写与移植........................................................................................71 1 Nand flash 工作原理..................................................................................................................71 1.1 Nand flash 芯片工作原理..................................................................................................71 1.1.1 芯片内部存储布局及存储操作特点.........................................................................71 1.1.2 重要芯片引脚功能.....................................................................................................71 1.1.3 寻址方式.....................................................................................................................71 1.1.4 Nand flash 主要内设命令详细介绍...........................................................................72 1.2 Nand Flash 控制器工作原理.............................................................................................72 1.2.1 Nand Flash 控制器特性..............................................................................................72 1.2.2 Nand Flash 控制器工作原理......................................................................................72 1.3 Nand flash 控制器中特殊功能寄存器详细介绍 ............................................................72 1.4 Nand Flash 控制器中的硬件ECC介绍............................................................................73 1.4.1 ECC产生方法............................................................................................................73 1.4.2 ECC生成器工作过程................................................................................................74 1.4.3 ECC的运用................................................................................................................74 2 在 ADS下flash 烧写程序.........................................................................................................74 2.1 ADS 下 flash 烧写程序原理及结构...................................................................................74 2.2 第三层实现说明.................................................................................................................74 2.1.1 特殊功能寄存器定义.................................................................................................74 2.1.2 操作的函数实现.........................................................................................................74 2.3 第二层实现说明.................................................................................................................75 2.3.1 Nand Flash 初始化......................................................................................................75 2.3.3 获取 Nand flash ID......................................................................................................75 2.3.4 Nand flash 写入...........................................................................................................76 2.3.5 Nand flash 读取...........................................................................................................77 2.3.6 Nand flash 标记坏块...................................................................................................78 2.3.7 Nand Flash 检查坏块..................................................................................................79 2.3.8 擦除指定块中数据.....................................................................................................79 2.4  第一层的实现....................................................................................................................80 3 在 U­BOOT 对Nand Flash 的支持............................................................................................82 3.1 U­BOOT对从 Nand Flash 启动的支持.............................................................................82 3.1.1 从 Nand Flash 启动U­BOOT 的基本原理................................................................82 3.1.2 支持 Nand Flash 启动代码说明.................................................................................82 3.2 U­BOOT对 Nand Flash 命令的支持.................................................................................84 3.2.1 主要数据结构介绍.....................................................................................................84 3.2.2 支持的命令函数说明.................................................................................................85 4 在 Linux 对Nand Flash 的支持.................................................................................................87 4.1 Linux 下Nand Flash 调用关系..........................................................................................87 4.1.1 Nand Flash 设备添加时数据结构包含关系..............................................................87 4.1.2 Nand Flash 设备注册时数据结构包含关系..............................................................87 4.2 Linux 下Nand Flash 驱动主要数据结构说明..................................................................88 4.2.1 s3c2410 专有数据结构...............................................................................................88 4.2.2 Linux 通用数据结构说明..........................................................................................89 4.3.1 注册 driver_register....................................................................................................94 4.3.2 探测设备 probe...........................................................................................................94 4.3.3 初始化 Nand Flash 控制器.........................................................................................94 4.3.4 移除设备.....................................................................................................................94 4.3.5 Nand Flash 芯片初始化..............................................................................................94 4.3.6  读 Nand  Flash............................................................................................................95 4.3.7  写 Nand Flash.............................................................................................................95 第八部分 Cs8900a网卡驱动的编写与移植...................................................................................95 1 Cs8900a工作原理......................................................................................................................95 2 在 ADS下cs8900a的实现........................................................................................................95 2.1 在 cs8900a下实现的ping 工具.........................................................................................95 3 在 u­boot下cs8900a的支持......................................................................................................96 3.1 u­boot 下cs8900a的驱动介绍...........................................................................................96 3.2 u­boot 下cs8900a的移植说明...........................................................................................96 4 在 linux 下cs8900a驱动的编写与移植....................................................................................96 4.1 Linux 下cs8900a的驱动说明............................................................................................96 4.2 Linux 下 cs8900a的移植说明...........................................................................................96 4.2.1 为 cs8900a建立编译菜单..........................................................................................96 4.2.2 修改 S3C2410相关信息............................................................................................97 序 该文档的目的是总结我们在工作中的一些经验,并把它们分享给喜欢 ARM 和 Linux 的朋友, 如有错误 之处,请大家多多指点. 同样, 我们也希望更多人能把自己的工作经验和体会加入该文档,让大家共同进步. 该文档是一份交流性文档, 只供个人学习与交流,不允许公司和企业用于商业行为

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值