当前位置: 首页 > news >正文

Linux系统移植之对NXP的Uboot修改后移植

Linux系统移植之对NXP的Uboot修改后移植

  • 一,总体修改的几个方向
    • 1.板级配置文件
    • 2.板子的头文件(板级头文件)
    • 3.开发板对应的板级文件夹
  • 二.LCD驱动的修改
  • 三.网络驱动修改
    • 1.PHY芯片
    • 2.网络驱动具体修改
  • 四.bootcmd和bootargs分析
    • 1.bootcmd
    • 2.bootargs
  • 五.相关小之知识
    • 1.Uboot启动,DDR中会怎么样
    • 2.启动时怎么样找到配置文件的
    • 3.Emmc和Nand flash区别
    • 4.DDR和DRAM

一,总体修改的几个方向

1.板级配置文件

  这里是两个空格开头要在uboot中添加自己的开发板,首先在configs目录下复制mx6ull_14x14_evk_emmc_defconfig( 板级配置文件),重新命名为mx6ull_alientek_emmc_defconfig。这个板级配置文件作用就是,告诉uboot该做什么,怎么做,告诉uboot板子的硬件信息,支持那些功能,定义启动流程,从而让uboot适应不同的硬件平台。对于该板子具体就是:①告诉uboot这个板子的信息是:IMX6ULL芯片,用emmc存储,有俩网卡,,②告诉uboot启动的时候从emmc加载内核,网卡初始化好,③启动时候将这些参数传递到内核中。

2.板子的头文件(板级头文件)

  选取include/configs/mx6ullevk.h拷贝为mx6ull_alientek_emmc.h,其主要作用是为硬件平台提供必要的宏定义,配置参数和硬件初始化代码,如果我们自己要想使能或者禁止 uboot 的某些功能,那就在mx6ull_alientek_emmc.h 里面做修改即可。
具体功能:
①定义硬件平台的基本信息,如芯片型号(IMX6ULL),开发板名称(Alientek)和存储介质(emmc)。
②对存储设备进行配置,比如设置emmc的设备号和分区布局。
③配置外设,网口,串口和调试口等。
④定义内存布局,比如DDR即DRAM的起始地址0x80000000和大小512MB,Uboot的加载地址,内核镜像和设备树文件加载地址。
⑤配置启动参数,bootcmd和bootrags。
⑥启用或者禁止某些功能。
⑦硬件初始化,如DDR内存,配置时钟,电源管理,初始化DDR设备。

3.开发板对应的板级文件夹

  拷贝mx6ullevk,重命名为mx6ull_alientek_emmcm,对其中的内容进行修改。其中的mx6ull_alientek_emmc.c函数,针对板子提供初始化代码和硬件配置,初始化硬件(如 DDR、eMMC、网络等)。提供板级函数,供 U-Boot 或 Linux 内核调用,适配特定的硬件设计,与设备树配合,读取硬件配置信息。后面对LCD驱动的修改和网卡驱动的修改,就是改这个.h和.c文件。

二.LCD驱动的修改

  LCD驱动修改,①使用的GPIO,查看IO的配置是否正确,这个在.c文件中修改即可。②背光引脚,这个与官方NXP用的引脚一样,不用修改。③配置的参数。
在这里插入图片描述
根据这个TFT4384屏幕的真实参数,将其对应进行添加。

三.网络驱动修改

  IMX6ULL有MAC外设,但是需要PHY芯片实现通信,针对这个PYH外设修改网络驱动,采用SR8201F芯片。

1.PHY芯片

  PHY(Physical Layer Device)芯片负责物理信号的转换,将数字信号转坏为模拟信号,或者相反,具体就是网口接到信号,传到PHY中,PYH将模拟信号转化为数值信号,到MAC设备中。PYH外接网口,另一端通过RMII接口与IMX6ULL连接在一起
  MAC设备(Media Access Control),负责链路层控制,数据帧的封装,解封装和错误检测。IMX6ULL内部集成MAC控制器

2.网络驱动具体修改

  ①复位引脚的初始化,I.MX6U-ALPHA 开发板的 ENET1 复位引脚
ENET1_RST 接到了 I.M6ULL 的 SNVS_TAMPER7 这个引脚上,因此在代码中进行配置。
②SR8201F 的器件 ID。
在这里插入图片描述
默认CONFIG_FEC_ENET_DEV 为1,即ENET2,其对应的PHY地址0x1,还有一个网口ENET1,其PYH地址为0x2。
③驱动修改,对默认网络结构体数组进行添加,以及添加网络复位IO初始化代码。
在这里插入图片描述fec1_pads即网口ENET1,添加网口的IO配置参数。

在这里插入图片描述setup_iomux_fec函数就是根据fec1_pads和fec2_pads网络IO配置进行初始化IO。

四.bootcmd和bootargs分析

1.bootcmd

  bootcmd保存uboot默认命令,当uboot倒计时结束后,会执行bootcmd中的命令,一般用于启动Linux内核,比如读取EMMC中的镜像文件zImage和设备树文件到DDR(DRAM)中,然后调用bootz 启动内核。
  NXP用的bootcmd是属于shell脚本文件,这种是通用的,即对于很多设备和板子都能来用,也可以设置对单独对我用的这个板子。
在这里插入图片描述

在这里插入图片描述
  这个是通用的BOOTCMD文件,其内容等效为:mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ullalientek-emmc.dtb; bootz 80800000 - 83000000。

2.bootargs

  bootargs保存uboot传递给Linux内核的参数。其中console设置linux中端,即linux是通过什么和外接进行交互,由于串口1设备文件在/dev/ttymxc0中,因此采用串口交互,波特率115200。root即设置根文件系统的位置,指明根文件系统存放在mmcblk1的设备分区2中。其中/dev/mmcblkx(x=0-n)表示 mmc 设备,而/dev/mmcblkxpy(x=0-n,y=1-n)表示 mmc 设备x 的分区 y。当时就因为这个分区,没注意这句话,把1看成l,一直运行不了…
在这里插入图片描述
  在uboot中设置:setenv bootargs ‘console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw’
setenv bootcmd ‘mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000;’,然后运行run bootcmd即可。

五.相关小之知识

1.Uboot启动,DDR中会怎么样

  Uboot启动过程中,uboot镜像文件,Linux内核镜像文件(zImage)和设备树都会被加载到DDR中。镜像文件放到0x80800000,设备树放到0x83000000,这个uboot应该是放到87800000位置。

2.启动时怎么样找到配置文件的

  Uboot不会去读取mx6ull_alientek_emmc_defconfig配置文件,而是使用该配置文件生成的镜像。首先执行mx6ull_alientek_emmc_defconfig编译时生成.config文件,包含所有实际的编译选项,uboot构建系统会根据这些选项编译出适合这个板子的uboot镜像

3.Emmc和Nand flash区别

在这里插入图片描述

4.DDR和DRAM

在这里插入图片描述
  SRAM:用于CPU高速缓存,即cache(L1,L2,L3),位于 CPU 和主内存(DRAM)之间的一种高速存储器,用于存储 CPU 频繁访问的数据和指令,以减少访问主内存的延迟。
  DRAM:用于主内存,比如操作系统或者应用程序加载进来运行,程序运行时候的变量,堆栈数据放到其中。(电脑的运行内存就是DRAM)

相关文章:

  • 给SQL server数据库表字段添加注释SQL,附修改、删除注释SQL及演示
  • Comfyui Windows Desktop桌面版便携版安装教程
  • 深入了解 MySQL 中的 JSON_CONTAINS
  • com库原理使用
  • Python 环境管理介绍
  • 【DeepSeek-R1背后的技术】系列十一:RAG原理介绍和本地部署(DeepSeek+RAGFlow构建个人知识库)
  • 基于 go-rwt 在 Windows 环境下对 Go Web 应用进行 HTTP 压力测试
  • 数仓搭建实操(传统数仓oracle):DWD数据明细层
  • Python绘画案例2——用Python写动态小人发射爱心~~,包含源码
  • C++ 类和对象(友元、内部类、匿名对像)
  • c++第一课(基础c)
  • 【Python爬虫(55)】Scrapy进阶:深入剖析下载器与下载中间件
  • 服务器系统都更新到windowsserver2025了
  • 完美解决:.vmx 配置文件是由 VMware 产品创建,但该产品与此版 VMware Workstation 不兼容
  • 如何将 Excel 数据转换为 SQL 脚本:从入门到实战
  • 机器学习---KNN算法核心原理和思路分析
  • 【2025深度学习环境搭建-1】在Win11上用WSL2和Docker解锁GPU加速
  • 2023 年 6 月大学英语四级考试真题(第 3 套)——解析版
  • 《Kali Linux从安装到武器化配置:打造你的数字军火库》
  • Qt常用控件之进度条QProgressBar
  • 卡尼领导的加拿大自由党在联邦众议院选举中获胜
  • 港理大公布多项AI+医工成果,助港建设国际医疗创新枢纽
  • 报告显示2024年全球军费开支增幅达冷战后最大
  • 黄仁勋访华期间表示希望继续与中国合作,贸促会回应
  • 暴涨96%!一季度“中国游中国购”持续升温,还有更多利好
  • 夜读丨庭院春韵