zoukankan      html  css  js  c++  java
  • jz2440: linux/arch/arm/下面的plat-和mach-

    jz2440: linux/arch/arm/下面的plat和mach

    plat-s3c24xx
    mach-s3c2440
    mach-s3c2410

    ======================


        
    1. 三星这样分层的理由是s3c系列的soc具有一定的共通性, plat-实现了一些较通用的封装, 这些封装的具体参数一般是宏, 这些宏如寄存器地址可能是在mach-里面被定义;

        linux/arch/arm/plat-s3c24xx/common-smdk.c

            static struct s3c24xx_led_platdata smdk_pdata_led5 = {
                .gpio        = S3C2410_GPF5,
                .flags        = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
                .name        = "led5",
                .def_trigger    = "nand-disk",
            };

        linux/include/asm-arm/arch-s3c2410/regs-gpio.h
            #define S3C2410_GPF5        S3C2410_GPIONO(S3C2410_GPIO_BANKF, 5)

            
            
    2. 原则上是把所有s3c系列共同的东西放在    plat-里面去, 具体的io或者比较有mach-特色的部分放到mach-里面;
        改板时, 实际上大多是直接在mach-里面增删自己的功能. (不按三星预设方案的改动除外)
        plat里面需要动的相对更少, 不过在linux/arch/arm/plat-s3c24xx/common-smdk.c里面, 我们可以根据实际情形来分配nand的分区(修改static struct mtd_partition smdk_default_nand_part[] );

    3. 编译时,一般只会选中一个特定的mach-, mach-会调用plat-的功能具体实现平台的资源和设备初始化.



    上面是大体的分析, 仅供参考.

  • 相关阅读:
    初识echarts
    深浅拷贝的理解
    react基本语法及组件
    webpack使用
    网上面试资料整理
    封装原生promise函数
    vue路由懒加载及组件懒加载
    译文---C#堆VS栈(Part Four)
    译文---C#堆VS栈(Part Three)
    译文---C#堆VS栈(Part Two)
  • 原文地址:https://www.cnblogs.com/mylinux/p/5592614.html
Copyright © 2011-2022 走看看