IMX6ULL-UBOOT驱动移植

介绍

IMX6ULL正点原子开发板使用的是14x14_evk的芯片 其中14x14代表的是芯片的尺寸。
本教程的标识符以nsouther或者 NSOUTHER NSouther为主

添加板子自己的配置文件

板子的默认配置文件保存在 configs目录下,我们以mx6ull_14x14_evk_emmc_defconfig为主,将其复制一份并重命名为 mx6ull_14x14_nsouther_defconfig

cd configs
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_14x14_nsouther_emmc_defconfig 

然后修改mx6ull_14x14_nsouther_emmc_defconfig的内容 如下所示

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_nsouther_emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_NSOUTHER_EMMC=y
CONFIG_CMD_GPIO=y

image.png
其中我们需要修改的是CONFIG_SYS_EXTRA_OPTIONS 将板子的配置文件改成mx6ull_nsouther_emmc 这个文件夹我们将在下一步创建
其次是修改初始化配置CONFIG_TARGET_MX6ULL_NSOUTHER_EMMC=y 记住这个配置后面要用!!!

添加开发板对应的头文件

进入include/configs文件夹,在这里的配置文件我们主要以mx6ullevk.h为主 在它的基础上修改。

cp -rf  mx6ullevk.h mx6ull_nsouther_emmc.h 

在这里我们主要修改头文件的宏定义,因为是拷贝的evk.h中的 所以要修改这个不能和他重复就行了 这里的宏定义可以随便起 但是最好是具有辨识度并且不重复。
image.png
其次在这个文件夹中我们还要修改网口地址 将335行的PHY地址修改为**0x0 ,**6ULL板子上有两个网口 网口1的地址为0x0 网口2的地址为0x1 上面的宏定义为1 表示我们选择ETH2网口作为UBOOT网络通信的网口
image.png

添加开发板对应的板级文件夹

进入board/freescale目录下 这个目录主要存放的是freescale芯片不同板子对于的配置文件,这里我们以mx6ullevk为主进行修改配置

cd board/freesacle
cp -rf mx6ullevk mx6ull_nsouther_emmc

在这个mx6ull_nsouther_emmc配置文件夹中我们主要关注以下几个文件

mx6ull_nsouther_emmc.c
imximage_lpddr2.cfg
imximage.cfg
Kconfig
MAINTAINERS
Makefile

image.png

  • mx6ull_nsouther_emmc.c

在这个文件中 我们主要修改网口的的复位管脚,使其可以成功复位
首先屏蔽掉原始的配置文件 新增和板子对应的GPIO复位管脚 对于ETN1是IO5_IO07
对于ETH2是IO5_IO08
image.png

找到下面这一段配置文件 因为前面我们已经注释掉了他的配置文件 所以将这段删除掉

static iomux_v3_cfg_t const iox_pads[] = {
/* IOX_SDI */
MX6_PAD_BOOT_MODE0__GPIO5_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
/* IOX_SHCP */
MX6_PAD_BOOT_MODE1__GPIO5_IO11 | MUX_PAD_CTRL(NO_PAD_CTRL),
/* IOX_STCP */
MX6_PAD_SNVS_TAMPER7__GPIO5_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL),
/* IOX_nOE */
MX6_PAD_SNVS_TAMPER8__GPIO5_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),
};

接下来是屏蔽74lv芯片的初始化配置功能,这里需要屏蔽两个函数 分别是
iox74lv_init iox74lv_set 这两个函数
image.png

修改fec1_pads 和fec2_pads配置信息 添加板子的复位引脚 在最后一行分别加入以下信息

//fec1
MX6_PAD_SNVS_TAMPER7__GPIO5_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL),
//fec2
MX6_PAD_SNVS_TAMPER8__GPIO5_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL)

image.png在下面的 setup_iomux_fec修改成以下的形式

static void setup_iomux_fec(int fec_id)
{
	if (fec_id == 0)
	{
		imx_iomux_v3_setup_multiple_pads(fec1_pads,
						 ARRAY_SIZE(fec1_pads));
		gpio_direction_output(ENET1_RESET, 1);
		gpio_set_value(ENET1_RESET, 0);
		mdelay(20);
		gpio_set_value(ENET1_RESET, 1);
	}
		
	else
	{
		imx_iomux_v3_setup_multiple_pads(fec2_pads,
						 ARRAY_SIZE(fec2_pads));
		gpio_direction_output(ENET2_RESET, 1);
		gpio_set_value(ENET2_RESET, 0);
		mdelay(20);
		gpio_set_value(ENET2_RESET, 1);
	}
		
}

image.png
找到**board_init() **,因为我们前面屏蔽掉了74lv的初始化函数 所以在board_init中屏蔽掉这两个函数
image.png

  • imximage_lpddr2.cfg

修改PLUGIN中的信息 替换为我们板级文件所在的地址
image.png

  • imximage.cfg

同样做替换
image.png

  • Kconfig

Kconfig中主要做以下修改 记住这个 if后面的 TARGET_MX6ULL_NSOUTHER_EMMC
与我们在上面的defconfig配置文件中的修改一致
image.png
image.png

  • MAINTAINERS

主要修改板级文件夹的路径 和.h头文件的路径

image.png

  • Makefile

在Makefile中主要修改obj-y 将其改成mx6ull_nsouther_emmc.o 有了这个目标才会去编译对应的文件
image.png

修改Kconfig图形化配置

找到 arch/arm/cpu/armv7/mx6/Kconfig,添加下面的内容注意这个config的内容与我们上面标红的 TARGET_MX6ULL_NSOUTHER_EMMC保持一致

config TARGET_MX6ULL_NSOUTHER_EMMC
	bool "Support mx6ull_nsouther_emmc"
	select MX6ULL
	select DM
	select DM_THERMAL

image.png

修改driver中的phy驱动

在** drivers/net/phy/phy.c 中 找到 genphy_update_link()函数 做以下修改。**

if (lan8720_flag == 0) {
		bmcr_reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR);
		phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET);
		while(phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR) & 0X8000) {
		udelay(100);
	}
		phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, bmcr_reg);
		lan8720_flag = 1;
	}

image.png

编译测试

首先先清除下工程

make distclean
make mx6ull_14x14_nsouther_emmc_defconfig
make -j6

image.png
将其下载到板子
时间正确,网络正常
image.png
image.png

测试网络信息

将ETH2通过网线连接到路由器 这里我路由器的网段是192.168.100的网段 配置的nfs服务器 以及 tftpboot服务器网址为192.168.100.20

setenv ipaddr 192.168.100.20
setenv serverip 192.168.100.80
setenv gatewayip 192.168.100.1
setenv netmask 255.255.255.0
setenv ethaddr 00:04:9f:04:f2:35

saveenv

接下来我们ping一下主机 网络正常
image.png

测试tftpboot

前提是已经搭建好了tftpboot服务端 这里我们使用tftpboot命令下载内核
下载成功
image.png

网络部分移植测试到此结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/555130.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试遇到的算法题

1.字符串转换整数 读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字…

Flume 入门教程

内容目录 Flume 简介 架构和基本概念 多种架构模式 Flume 安装部署 Flume 简介 Flume 是一个分布式、可靠且高可用的数据收集、聚合和传输系统,主要用于高效地处理大规模日志数据。设计之初,它主要服务于日志管理领域,但其灵活性和可扩展…

基于XML配置bean(二)

文章目录 1.工厂中获取bean1.静态工厂1.MyStaticFactory.java2.beans.xml3.测试 2.实例工厂1.MyInstanceFactory.java2.beans.xml3.测试 3.FactoryBean(重点)1.MyFactoryBean.java2.beans.xml3.测试 2.bean配置信息重用继承抽象bean1.beans.xml2.测试 3.…

多模态之BLIP—实现统一的视觉语言理解和生成,细节理解与论文详细阅读:Bootstrapping Language-Image Pre-training

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation BLIP:引导语言图像预训练,实现统一的视觉语言理解和生成 Paper: https://arxiv.org/pdf/2201.12086.pdf Github: https://github.com/sa…

Ansys workbench连接器端子保持力仿真教程

端子保持力(Contact Retention Force)是电子连接器机械特性中的常见参数,它表达的是电子连接器(Connector)端子(Contact)保持在正常位置的能力。EIA专门为连接器端子保持力的测试制定了标准&…

输出100~200之间的质数(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int n 100;int i 0;int result 0;//嵌套循环判断100~200之间的质数&#xff1b;for (n …

网络运输层之(3)GRE协议

网络运输层之(3)GRE协议 Author: Once Day Date: 2024年4月8日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文档可参考专栏&#xff1a;通信网络技术_Once-Day的…

316_C++_xml文件解析成map,可以放到QT表格上, 且 xml、xlsx文件可以互相解析

xml文件例如&#xff1a; <?xml version"1.0" encoding"UTF-8" standalone"yes"?> <TrTable> <tr id"0" label"TR_PB_CH" text"CH%2"/> <tr id"4" label"TR_PB_CHN"…

HZNUCTF第五届校赛实践赛初赛 Web方向 WriteUp

ezssti 很简单的ssti 源码给了&#xff0c;调用Eval即可执行命令 package mainimport ("fmt""net/http""os/exec""strings""text/template" )type User struct {Id intName stringPasswd string }func (u User) Ev…

如何在阿里云主机上安装FreeBSD14系统

文章目录 在阿里云主机上安装FreeBSD14系统准备阿里云云主机识别目标磁盘下载 FreeBSD14解压缩 FreeBSD14系统镜像创建可启动的磁盘启动 FreeBSD14在阿里云主机上安装FreeBSD14系统 阿里云主机不支持 FreeBSD14 系统的镜像,因此需要手动进行安装。 准备阿里云云主机 在阿里云…

解决Git 不相关的分支合并

可以直接调到解决方案,接下来是原因分析和每步的解决方式 问题原因: 我之前在自己本机创建了一个初始化了Git仓库,后来有在另一个电脑初始化仓库,并没有clone自己在本机Git远程仓库地址,导致Git历史版本不相关 错误信息 From https://gitee.com/to-uphold-justice-for-other…

文字转语音工具:GPT-SoVITS

诸神缄默不语-个人CSDN博文目录 OpenAI官方的TTS模型我在这篇博文中给出了使用教程&#xff1a;ChatGPT 3.5 API的调用不全指南&#xff08;持续更新ing…&#xff09; - 知乎 但是OpenAI的TTS对中文支持不好&#xff0c;有一种老外说中文的美&#xff0c;所以本文介绍另一个…

Amazon SES邮箱API发送邮件的步骤是什么?

Amazon SES邮箱API发送邮件怎么配置&#xff1f;如何用邮箱API发送邮件&#xff1f; 在数字化时代&#xff0c;电子邮件已成为企业与个人之间沟通的重要桥梁。那么&#xff0c;使用Amazon SES邮箱API发送邮件的步骤究竟是怎样的呢&#xff1f;接下来&#xff0c;就让AokSend来…

IDEA远程调试debug

IDEA远程调试debug jar包启动脚本配置IDEA配置 通俗的说&#xff1a;本地有代码&#xff0c;服务器项目出现问题&#xff0c;环境的中间件配置不同&#xff0c;用idea远程调试&#xff0c;能快速定位问题&#xff0c;解决问题。 jar包启动脚本配置 jdk5-8写法 java -Xdebug -…

ChatGPT在遥感领域中的应用

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用&#xff0c;人工智…

MCU的最佳存储方案CS创世 SD NAND

MCU的最佳存储方案CS创世 SD NAND 写在最前面MCU是什么CS创世 SD NAND 6大优势 写在最前面 转载自 雷龙官网 MCU是什么 大家都知道MCU是一种"麻雀"虽小&#xff0c;却"五脏俱全"的主控。它的应用领域非常广泛&#xff0c;小到手机手表&#xff0c;大到航空…

【Kafka】Kafka Tool工具的使用

抖音视频 https://www.douyin.com/user/self?modal_id7123007128150901256&showTablike CSDN文档 https://blog.csdn.net/qq_43961619/article/details/109381849

Blind Image Super-Resolution: A Survey and Beyond

TPAMI2023 问题定义 未知图像的退化过程&#xff08;和之前假定bicubic等一个固定且已知的退化过程相对比&#xff09;&#xff0c;由LR恢复HR&#xff1b;退化来源&#xff08;不同的图像采集设备&#xff0c;数字信号处理成可见图像的过程中图像处理算法引入的噪声&#xff…

机器学习——模型融合:Stacking算法

机器学习——模型融合&#xff1a;Stacking算法 在机器学习中&#xff0c;模型融合是一种常用的方法&#xff0c;它可以提高模型的泛化能力和预测性能。Stacking算法&#xff08;又称为堆叠泛化&#xff09;是一种强大的模型融合技术&#xff0c;它通过组合多个基本分类器的预…

PyCharm连接数据库代码解析

1.先导入pymysql模块 在PyCharm中用清华镜像快速安装包 依次把ip地址和账号名、密码、数据库名、端口、编码输入 2.创建游标 游标&#xff1a;是数据库中的一个概念&#xff0c;我们执行sql查询语句时&#xff0c;大部分情况都会得到很多条结果&#xff0c;我们取出这些返回结…