linux中断学习记录

中断是所有驱动的基石

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。
一勤天下无难事。
原文地址:https://www.cnblogs.com/nowroot/p/14059359.html