中断是所有驱动的基石 platform_get_resource gpiod_to_irq pinctrl作用:配置pin脚为什么功能 22222222222222 of_gpio_count 和cell有关 5、内核的使用流程 a、清除命令 一般在第一次编译时使用 make mrproper b、导入默认配置信息(在内核根目录中) 方法1: make exynos_deconfig 方法2:cp arch/arm/configs/exynos_deconfig .config c、详细配置 make menuconfig d、编译 make uImage ---生成内核镜像 /arch/arm/boot/uImag make dtbs ---生成设备树文件 /arch/arm/boot/dtb/exynos4412-fs4412.dtb make modules ---把配置值选成M的代码编译生成模块文件。(.ko) 放在对应的源码目录下 打补丁: $ tar xjf u-boot-1.1.6.tar.bz2 //解压 u-boot-1.1.6.tar.bz2 压缩包 $ cd u-boot-1.1.6 //进入 u-boot-1.1.6 目录 $ patch -p1 < ../u-boot-1.1.6_jz2440.patch //对 u-boot-1.1.6 打 patch 补丁 $ make 100ask24x0_config //配置 $ make 7.2 给 JZ2440开发板重新分区 出厂的 JZ2440 已经烧写好了 uboot、内核和文件系统,板子上划分的内核分区只有2M, 而 我们编译出来的内核大于 2M 时 ,将内核烧写到开 发 板 中 启 动 失败会出现 "Verifying Checksum ... Bad Data CRC”错误。 怎么办呢?后来经过查找资料,找到了解决办法。 只需要 2 步:修改 u-boot 配置文件和修改内核源码里的分区。 ①修改文件:u-boot-1.1.6/include/configs/100ask2440.h 如果是别的类型的板子,就会找不到这个文件。不过大致路径是没错的, 可以先使用 以下命令搜索 find ./ -name "*" | xargs grep "2m(kernel)" 也就是说在当前目录及其子目录下查找文件内容中包含 2m(kernel)的文件,这样就可 以很快定位到要修改的文件。 找到文件用 VI 编辑器打开文件后, 在命令行模下式使用命令: /MTDPARTS_DEFAULT 找到以下内容: #define MTDPARTS_DEFAULT "mtdparts=nandflash0:256k@0(bootloader)," "128k(params)," "2m(kernel)," "-(root)" 将上边的内核大小改成 4m,修改后重新编译替换 u-boot 并启动开发板。 ② 修改内核源码里的分区:不同版本的内核,分区源码位置可能不同,笔者用 Linux-3.4.2, 此文件在 arch/arm/mach-s3c24xx/common-smdk.c。 打开文件后找到以下内容,下面颜色加重部分就是 nandflash 的分区大小,根据需要修 改 static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = “bootloader”, .size = SZ_256K, .offset = 0, }, [1] = { .name = “params”, .offset = MTDPART_OFS_APPEND, .size = SZ_128K, }, [2] = { .name = “kernel”, .offset = MTDPART_OFS_APPEND, .size = SZ_4M, }, [3] = { .name = “rootfs”, .offset = MTDPART_OFS_APPEND, .size = MTDPART_SIZ_FULL, } }; 修改保存之后重新编译内核烧写到开发板。 ① ②两步后,开发板分区即被改为 4M。