首页 > 其他分享 >i.mx6ull移植uboot(mx6ull_alientek_emmc.h)

i.mx6ull移植uboot(mx6ull_alientek_emmc.h)

时间:2023-02-07 23:56:26浏览次数:36  
标签:uboot emmc 环境变量 SYS 地址 DRAM mx6ull CONFIG MX6ULL

#define is_mx6ull_9x9_evk()    CONFIG_IS_ENABLED(TARGET_MX6ULL_9X9_EVK)

#ifdef CONFIG_TARGET_MX6ULL_9X9_EVK
#define PHYS_SDRAM_SIZE        SZ_256M
#define CONFIG_BOOTARGS_CMA_SIZE   "cma=96M "
#else
#define PHYS_SDRAM_SIZE        SZ_512M
#define CONFIG_BOOTARGS_CMA_SIZE   ""
/* DCDC used on 14x14 EVK, no PMIC */
#undef CONFIG_LDO_BYPASS_CHECK
#endif
设置 DRAM 的大小,宏 PHYS_SDRAM_SIZE 就是板子上 DRAM 的大小, 如果用的 NXP 官方的9X9 EVK 开发板的话DRAM 大小就为 256MB。否则的话默认为 512MB, 正点原子的 I.MX6U-ALPHA 开发板用的是 512MB DDR3。 第 50 行,定义宏 CONFIG_DISPLAY_CPUINFO,uboot 启动的时候可以输出 CPU 信息。   第 51 行,定义宏 CONFIG_DISPLAY_BOARDINFO,uboot 启动的时候可以输出板子信息。   第 56 行,定义宏 CONFIG_BOARD_EARLY_INIT_F,这样 board_init_f 函数就会调用 board_early_init_f 函数。

第 57 行,定义宏 CONFIG_BOARD_LATE_INIT,这样 board_init_r 函数就会调用

board_late_init 函数。

第 59、60 行,使能 I.MX6ULL 的串口功能,宏 CONFIG_MXC_UART_BASE 表示串口寄

存器基地址,这里使用的串口 1,基地址为 UART1_BASE,UART1_BASE 定义在文件arch/arm/include/asm/arch-mx6/imx-regs.h 中,

imx-regs.h 是 I.MX6ULL 寄存器描述文件,根据imx-regs.h 可得到 UART1_BASE 的值如下:

UART1_BASE= (ATZ1_BASE_ADDR + 0x20000)

=AIPS1_ARB_BASE_ADDR + 0x20000

=0x02000000 + 0x20000

=0X02020000

   

第63、64行,EMMC接在I.MX6ULL的USDHC2上,宏CONFIG_SYS_FSL_ESDHC_ADDR为 EMMC 所使用接口的寄存器基地址,也就是 USDHC2 的基地址。

第 67~72 行,跟 NAND 相关的宏,因为 NAND 和 USDHC2 的引脚冲突,因此如果使用

NAND 的只能使用一个 USDHC 设备(SD 卡)。如果没有使用 NAND,那么就有两个 USDHC 设

备(EMMC 和 SD 卡),宏 CONFIG_SYS_FSL_USDHC_NUM 表示 USDHC 数量。EMMC 版本的

核心版没有用到 NAND,所以 CONFIG_SYS_FSL_USDHC_NUM=2。

第 75~81,和 I2C 有关的宏定义,用于控制使能哪个 I2C,I2C 的速度为多少。

   

第 98~111 行,宏 CONFIG_MFG_ENV_SETTINGS 定义了一些环境变量,使用 MfgTool 烧写系统时候会用到这里面的环境变量。

通过条件编译来设置宏 CONFIG_EXTRA_ENV_SETTINGS , 宏CONFIG_EXTRA_ENV_SETTINGS 也是设置一些环境变量,此宏会设置 bootargs 这个环境变量

设置宏 CONFIG_BOOTCOMMAND,此宏就是设置环境变量 bootcmd 的值。

设置命令 memtest 相关宏定义,比如使能命令 memtest,设置 memtest 测试的内存起始地址和内存大小。

宏 CONFIG_SYS_LOAD_ADDR 表示 linux kernel 在 DRAM 中的加载地址,也就是 linux kernel 在 DRAM 中的存储首地址,CONFIG_LOADADDR=0X80800000。

宏 CONFIG_SYS_HZ 为系统时钟频率,这里为 1000Hz。

宏 CONFIG_STACKSIZE 为栈大小,这里为 128KB。

 

 宏 CONFIG_NR_DRAM_BANKS 为 DRAM BANK 的数量,I.MX6ULL 只有一个 DRAM BANK,我们也只用到了一个 BANK,所以为 1。

 

 宏 PHYS_SDRAM 为 I.MX6ULL 的 DRAM 控制器 MMDC0 所管辖的 DRAM 范围起始地址,也就是 0X80000000。

 

 宏 CONFIG_SYS_SDRAM_BASE 为 DRAM 的起始地址。

 

宏 CONFIG_SYS_INIT_RAM_ADDR 为 I.MX6ULL 内部 IRAM 的起始地址(也就是 OCRAM 的起始地址),为 0X00900000。

 

宏 CONFIG_SYS_INIT_RAM_SIZE 为 I.MX6ULL 内部 IRAM 的大小(OCRAM的大小),为 0X00040000=128KB。

 

宏 CONFIG_SYS_INIT_SP_OFFSET 和 CONFIG_SYS_INIT_SP_ADDR 与初始 SP 有关,第一个为初始 SP 偏移,第二个为初始 SP 地址。

 

宏CONFIG_SYS_MMC_ENV_DEV 为默认的MMC设备,这里默认为USDHC2,也就是 EMMC。

  宏 CONFIG_SYS_MMC_ENV_PART 为模式分区,默认为第 0 个分区。    

宏 CONFIG_MMCROOT 设置进入 linux 系统的根文件系统所在的分区,这里设置为"/dev/mmcblk1p2",也就是 EMMC 设备的第 2 个分区。

第 0 个分区保存 uboot,第 1 个分区保存 linux 镜像和设备树,第 2 个分区为 Linux 系统的根文件系统。

  与 NAND 有关的宏定义,如果使用 NAND 的话。   宏 CONFIG_ENV_SIZE 为环境变量大小,默认为 8KB。    

宏 CONFIG_ENV_OFFSET 为环境变量偏移地址,这里的偏移地址是相对于存储器的首地址。

如果环境变量保存在 EMMC 中的话,环境变量偏移地址为 12*64KB。

如果环境变量保存在 SPI FLASH 中的话,偏移地址为 768*1024。

如果环境变量保存在 NAND 中的话,偏移地址为 60<<20(60MB),并且重新设置环境变量的大小为 128KB。

 

与 USB 相关的宏定义。

   

与网络相关的宏定义,比如使能 dhcp、ping 等命令。

宏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 接口。

 

剩下的都是一些配置宏,

比如 CONFIG_VIDEO 宏用于开启 LCD,CONFIG_VIDEO_LOGO 使能 LOGO 显示,

CONFIG_CMD_BMP 使能 BMP 图片显示指令。这样就可以在 uboot 中显示图片了,一般用于显示 logo。

                                                         

标签:uboot,emmc,环境变量,SYS,地址,DRAM,mx6ull,CONFIG,MX6ULL
From: https://www.cnblogs.com/hhkhhx/p/17093308.html

相关文章

  • uboot 下的指令
    一、i2c指令i2c--help: i2c指令帮助i2cbus:获取i2c总线信息i2cdev:查看当前i2c设备i2cdev0:将i2c0作为当前设备i2cmd0x6A0x06.10x01:0x6A-->设备地址,0x06.1-->......
  • 通过uboot传参设置mtd分区流程源码分析
    因为公司同事反映他使用的开板无法将根目录下的ip_work目mounth成功,由于本人当时没有去现场查看问题,只是象征性的询问内核是否创建了/dev/mtdblock5设备节点,因为该开发板默......
  • 开发板只读随机存储器分类RAM、ROM、EMMC、Nandflash、Norflash
    RAM:(随机存储器,俗称“内存条”)SRAM:静态RAM,上电后只要不断电,里面数据就不会丢失。DRAM:动态RAM,上电后不能断电,还要在一个固定时间内,给内存单元充电,里面数据才不会......
  • i.MX6ULL - Buildroot根文件系统构建步骤
    i.MX6ULL-Buildroot根文件系统构建步骤目录​​i.MX6ULL-Buildroot根文件系统构建步骤​​​​1、源码获取​​​​2、配置​​​​1、目标属性:Targetoptions--->​​......
  • i.MX6ULL - 问题解决:NFS挂载失败 - VFS: Unable to mount root fs on unknown-block(2
    i.IMX6ULL-问题解决:NFS挂载失败-VFS:Unabletomountrootfsonunknown-block(2,0)开发环境:移植的linux5.4.7.0ubuntu1804x64arm-linux-gnueabihf-gccv7.5NFS方式......
  • AndroidBench&eMMC内存测试速度&Android
    提问: 问题:手机eMMC内存,我用AndroidBench/安兔兔/鲁大师测出来的速度很快,而自己写AndroidTool测试的速度确很慢,这是为什么呢?主要信息:   同样是SequenceWrite操作,An......
  • eMMC5.1
    eMMC存储系统由主机、外部接口和eMMC设备三大部分组成[36],如图2-1所示。其中,本设计采用FPGA作为主机对eMMC设备进行访问控制;外部接口为标准的MMC封装接口;eMMC设备......
  • uboot 传递参数给 kernel 内核
    uboot通过环境变量 bootargs传递参数给kernel内核,bootargs存储在设备树的chosen节点中,则kernel内核是通过读取设备树的chosen节点中的bootargs属性获取uboot......
  • MfgTool 烧写 Linux 系统(imx6ull)【转】
    转自:https://www.cnblogs.com/dhtblog/p/14505677.html仅供参考学习使用一、烧写原理1、开发板连接电脑以后双击“mfgtool2-yocto-mx-evk-emmc.vbs”,打开下载对话框......
  • qemu使用uboot通过网络加载 linux kernel
    qemu使用uboot通过网络加载linuxkernel。参考文章:https://www.zhaixue.cc/qemu/qemu-u-boot.htmlhttps://zhuanlan.zhihu.com/p/547338158 1#!/bin/sh2......