• 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。
    一勤天下无难事。
  • 相关阅读:
    高阶函数
    如何理解data URL?
    JS对象的创建方式
    数组中的map方法
    奇怪的 Javascript
    什么场景不适合箭头函数
    协方差矩阵学习[转载]
    PAT 1140 Look-and-say Sequence [比较]
    PAT 1089 Insert or Merge[难]
    PAT 1096 Consecutive Factors[难]
  • 原文地址:https://www.cnblogs.com/nowroot/p/14059359.html
Copyright © 2020-2023  润新知