• uboot移植之mx6ull_alientek_nand.h文件详解三


    一.  简介

    mx6ull_alientek_nand.h文件是 开发板的 uboot的一个配置文件。每个开发板都有一个 .h的配置文件。

    mx6ull_alientek_nand.h 文件其实是 之前针对正点原子ALPHA开发板移植的 Uboot配置文件。

    本文继上一篇文章的学习,地址如下:
    uboot移植之mx6ull_alientek_nand.h文件详解二-CSDN博客

    本文继续分析针对正点原子ALPHA开发板的 配置文件: mx6ull_alientek_nand.h。

    二.  mx6ull_alientek_nand.h文件详解

    继续分析 mx6ull_alientek_nand.h 文件的内容。

    1.   EMMC分区
    1. #define CONFIG_SYS_MMC_ENV_DEV 1 /* USDHC2 */
    2. #define CONFIG_SYS_MMC_ENV_PART 0 /* user area */
    3. #define CONFIG_MMCROOT "/dev/mmcblk1p2" /* USDHC2 */
    1 行,宏 CONFIG_SYS_MMC_ENV_DEV 为默认的 MMC 设备,这里默认为 USDHC2 也就是 EMMC
    2 行,宏 CONFIG_SYS_MMC_ENV_PART 为模式分区,默认为第 0 个分区。
    3 行,宏 CONFIG_MMCROOT 设置进入 linux 系统的根文件系统所在的分区,这里设 置为 "/dev/mmcblk1p2" ,也就是 EMMC 设备的第 2 个分区。第 0 个分区保存 uboot ,第 1 个分 区保存 linux 镜像和设备树,第 2 个分区为 Linux 系统的根文件系统。

    2.  针对 NAND-Flash版的开发板。
    1. /* NAND stuff */
    2. #ifdef CONFIG_SYS_USE_NAND
    3. #define CONFIG_CMD_NAND
    4. #define CONFIG_CMD_NAND_TRIMFFS
    5. #define CONFIG_NAND_MXS
    6. #define CONFIG_SYS_MAX_NAND_DEVICE 1
    7. #define CONFIG_SYS_NAND_BASE 0x40000000
    8. #define CONFIG_SYS_NAND_5_ADDR_CYCLE
    9. #define CONFIG_SYS_NAND_ONFI_DETECTION
    10. /* DMA stuff, needed for GPMI/MXS NAND support */
    11. #define CONFIG_APBH_DMA
    12. #define CONFIG_APBH_DMA_BURST
    13. #define CONFIG_APBH_DMA_BURST8
    14. #endif

    NAND 有关的宏定义,如果使用 NAND 的话。

    3.  环境变量偏移地址,针对不同版的开发板偏移地址不同。
    1. #define CONFIG_ENV_SIZE SZ_8K
    2. #if defined(CONFIG_ENV_IS_IN_MMC)
    3. #define CONFIG_ENV_OFFSET (12 * SZ_64K)
    4. #elif defined(CONFIG_ENV_IS_IN_SPI_FLASH)
    5. #define CONFIG_ENV_OFFSET (768 * 1024)
    6. #define CONFIG_ENV_SECT_SIZE (64 * 1024)
    7. #define CONFIG_ENV_SPI_BUS CONFIG_SF_DEFAULT_BUS
    8. #define CONFIG_ENV_SPI_CS CONFIG_SF_DEFAULT_CS
    9. #define CONFIG_ENV_SPI_MODE CONFIG_SF_DEFAULT_MODE
    10. #define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED
    11. #elif defined(CONFIG_ENV_IS_IN_NAND)
    12. #undef CONFIG_ENV_SIZE
    13. #define CONFIG_ENV_OFFSET (60 << 20)
    14. #define CONFIG_ENV_SECT_SIZE (128 << 10)
    15. #define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
    16. #endif

    第 1 行,宏 CONFIG_ENV_SIZE 为环境变量大小,默认为 8KB
    2~ 16 行,宏 CONFIG_ENV_OFFSET 为环境变量偏移地址,这里的偏移地址是相对 于存储器的首地址。
    如果环境变量保存在 EMMC 中的话,环境变量偏移地址为 12*64KB
    果环境变量保存在 SPI FLASH 中的话,偏移地址为 768*1024
    如果环境变量保存在 NAND 的话,偏移地址为 60<<20(60MB) ,并且重新设置环境变量的大小为 128KB

    4.  与 USB 相关的宏定义。

    但是我们在做 uboot移植时,并没有使用到 usb

    1. /* USB Configs */
    2. #define CONFIG_CMD_USB
    3. ............
    4. #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
    5. #endif

    5.  网络相关配置
    1. #ifdef CONFIG_CMD_NET
    2. #define CONFIG_CMD_PING
    3. #define CONFIG_CMD_DHCP
    4. #define CONFIG_CMD_MII
    5. #define CONFIG_FEC_MXC
    6. #define CONFIG_MII
    7. #define CONFIG_FEC_ENET_DEV 1
    8. #if (CONFIG_FEC_ENET_DEV == 0)
    9. #define IMX_FEC_BASE ENET_BASE_ADDR
    10. #define CONFIG_FEC_MXC_PHYADDR 0x2
    11. #define CONFIG_FEC_XCV_TYPE RMII
    12. #elif (CONFIG_FEC_ENET_DEV == 1)
    13. #define IMX_FEC_BASE ENET2_BASE_ADDR
    14. #define CONFIG_FEC_MXC_PHYADDR 0x1
    15. #define CONFIG_FEC_XCV_TYPE RMII
    16. #endif
    17. #define CONFIG_ETHPRIME "FEC"
    18. #define CONFIG_PHYLIB
    19. #define CONFIG_PHY_MICREL
    20. #endif

    与网络相关的宏定义,比如使能 dhcp ping 等命令。
    7 行,宏 CONFIG_FEC_ENET_DEV 指定 uboot 所使用的网口, I.MX6ULL 有两个网口,为 0 时使 ENET1 ,为 1 时使用 ENET2
    IMX_FEC_BASE ENET 接口的寄存器首地址。
    CONFIG_FEC_MXC_PHYADDR 为网口 PHY 芯片的地址。
    CONFIG_FEC_XCV_TYPE PHY 芯片所使用的接口类型, I.MX6U-ALPHA 开发板的两个 PHY 都使用的 RMII 接口。

    6.  其他配置项

    例如,开启LCD,屏幕上显示 LOG图片等。

    1. #define CONFIG_IMX_THERMAL
    2. #ifndef CONFIG_SPL_BUILD
    3. #define CONFIG_VIDEO
    4. #ifdef CONFIG_VIDEO
    5. #define CONFIG_CFB_CONSOLE
    6. #define CONFIG_VIDEO_MXS
    7. #define CONFIG_VIDEO_LOGO
    8. #define CONFIG_VIDEO_SW_CURSOR
    9. #define CONFIG_VGA_AS_SINGLE_DEVICE
    10. #define CONFIG_SYS_CONSOLE_IS_IN_ENV
    11. #define CONFIG_SPLASH_SCREEN
    12. #define CONFIG_SPLASH_SCREEN_ALIGN
    13. #define CONFIG_CMD_BMP
    14. #define CONFIG_BMP_16BPP
    15. #define CONFIG_VIDEO_BMP_RLE8
    16. #define CONFIG_VIDEO_BMP_LOGO
    17. #define CONFIG_IMX_VIDEO_SKIP
    18. #endif
    19. #endif
    20. #define CONFIG_IOMUX_LPSR
    21. #if defined(CONFIG_ANDROID_SUPPORT)
    22. #include "mx6ullevk_android.h"
    23. #endif
    24. #endif
    最后的这段代码 ,都是一些配置宏,例如, CONFIG_VIDEO 宏用于开启 LCD
    CONFIG_VIDEO_LOGO 使能 LOGO 显示, CONFIG_CMD_BMP 使能 BMP 图片显示指令。这
    样就可以在 uboot 中显示图片了,一般用于显示 logo

    三.  总结

    针对 uboot 的裁剪,其实通过 mx6ull_alientek_nand.h 头文件的更改可以完成。

    mx6ull_alientek_nand.h头文件中,使用了很多功能。如果使能了某个功能,则这个功能对应的源码就会编译进 uboot里面。

  • 相关阅读:
    Vue源码系列6:模拟实现vue3.x中的toRef、toRefs
    gRPC之gRPC转换HTTP
    隐藏滚动条样式
    《Span-based dual-decoder framework for aspect sentiment triplet extraction》论文阅读
    排列组合(附10道题目及解析)
    [含lw+源码等]基于SSM的宠物店销售系统含前后台[包运行成功]适合计算机毕业设计前端毕设程序设计
    如何修改 sensor 输出帧率
    MySQL(一):库的操作、数据类型和表的操作
    VMware tools的安装以及按钮灰色的解决方法
    吐血总结:Python学习方向、发展副业求职全攻略(自学Python做副业,教你如何月入10000+)
  • 原文地址:https://blog.csdn.net/wojiaxiaohuang2014/article/details/133976036