(二)正点原子I.MX6ULL u-boot移植

news2024/12/29 10:11:43

一、概述

        这里使用的是NXP官方2022.04发布的uboot,移植到正点原子阿尔法开发板(v2.1)

        u-boot下载:git@github.com:nxp-imx/uboot-imx.git

        移植是基于NXP的mx6ull_14x14_evk

二、编译NXP官方uboot

        进入NXP的u-boot目录

         先在Makefile里把CROSS_COMPILE改了       

        打开终端

make mx6ull_14x14_evk_defconfig

make -j16

        

三、添加开发板

        这一步基本上和正点原子里的教程是一样的,把板子文件给复制一下

make distclean
cp configs/mx6ull_14x14_evk_defconfig configs/mx6ull_alientek_defconfig
cp board/freescale/mx6ullevk/ board/freescale/mx6ull_alientek -rf
cp arch/arm/dts/imx6ull-14x14-evk.dts arch/arm/dts/imx6ull-alientek.dts
cp arch/arm/dts/imx6ul-14x14-evk.dtsi arch/arm/dts/imx6ull-alientek.dtsi
cp arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi arch/arm/dts/imx6ull-alientek-u-boot.dtsi

cp include/configs/mx6ullevk.h include/configs/mx6ull_alientek.h
cd board/freescale/mx6ull_alientek/
mv mx6ullevk.c mx6ull_alientek.c

1.修改mx6ull_alientek_defconfig

打开configs/mx6ull_alientek_defconfig,第10行和第14行

CONFIG_TARGET_MX6ULL_14X14_EVK=y

CONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-evk"

修改为:

CONFIG_TARGET_MX6ULL_ALIENTEK=y
CONFIG_DEFAULT_DEVICE_TREE="imx6ull-alientek"

2.修改 board文件夹文件

打开board/freescale/mx6ull_alientek/Kconfig

第一行改为刚才defconfig里一样的TARGET即可

if TARGET_MX6ULL_14X14_EVK || TARGET_MX6ULL_9X9_EVK

改为:

if TARGET_MX6ULL_ALIENTEK

第12行,修改路径

config IMX_CONFIG
    default "board/freescale/mx6ullevk/imximage.cfg"

修改为:

config IMX_CONFIG
    default "board/freescale/mx6ull_alientek/imximage.cfg"

打开MAINTAINERS

F:    board/freescale/mx6ullevk/
F:    include/configs/mx6ullevk.h
F:    configs/mx6ull_14x14_evk_defconfig
F:    configs/mx6ull_14x14_evk_plugin_defconfig
F:    configs/mx6ulz_14x14_evk_defconfig

修改为:

F:    board/freescale/mx6ull_alientek/
F:    include/configs/mx6ull_alientek.h
F:    configs/mx6ull_mx6ull_alientek_defconfig

打开Makefile

obj-y := mx6ullevk.o

修改为:

obj-y := mx6ull_alientek.o

imximage_lpddr2.cfg和imximage.cfg的 34行和33行那个路径,全都改成当前板子路径:board/freescale/mx6ull_alientek/plugin.bin

3.修改Kconfig

        打开arch/arm/mach-imx/mx6/Kconfig,找到第615行的config TARGET_MX6ULL_14X14_EVK

config TARGET_MX6ULL_14X14_EVK
    bool "Support mx6ull_14x14_evk"
    depends on MX6ULL
    select BOARD_LATE_INIT
    select DM
    select DM_THERMAL
    select IMX_MODULE_FUSE
    select OF_SYSTEM_SETUP
    imply CMD_DM

复制一份,粘贴到它后面,然后修改如下:

config TARGET_MX6ULL_ALIENTEK
    bool "Support mx6ull_alientek"
    depends on MX6ULL
    select BOARD_LATE_INIT
    select DM
    select DM_THERMAL
    select IMX_MODULE_FUSE
    select OF_SYSTEM_SETUP
    imply CMD_DM

找到第873行:

source "board/freescale/mx6ullevk/Kconfig"

复制一份,然后改成alientek板子路径:

source "board/freescale/mx6ull_alientek/Kconfig"

打开include/configs/mx6ull_alientek.h

在第235行前加入:

#define	CONFIG_PHY_SMSC
#define	CONFIG_CMD_MII

做完以上这些,就将板子添加进去了,可以尝试编译一下:

make distclean
make mx6ull_alientek_defconfig
make -j16

        打开mx6ull_alientek.c,找到checkboard函数,修改成阿尔法开发板:

int checkboard(void)
{
	puts("Board: MX6ULL ALIENTEK ALPHA\n");

	return 0;
}

        

四、修改设备树

        所谓移植,其实就是改设备树,而且正点原子基本参照着NXP官方板子做的,没什么太多特别的地方需要改,主要是网络驱动

1.imx6ull-alientek.dts

        把include引用改为我们复制好的,注意一下自己的是imx6ull还是imx6ul,官方这里两个都是imx6ul

#include "imx6ul-14x14-evk.dtsi"

#include "imx6ul-14x14-evk-u-boot.dtsi"

修改为

#include "imx6ull-alientek.dtsi"

#include "imx6ull-alientek-u-boot.dtsi"

2.imx6ull-alientek.dtsi

        这个就是移植的主阵地,最主要的还是网络驱动,正点原子使用的LAN8720(V2.1及之前的版本)

        找到fec2节点:ethphy0是fec0,地址改为0,ethph1是fec2,地址改为1,修改后如下:

&fec2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_enet2>;
	phy-mode = "rmii";
	phy-handle = <&ethphy1>;
	status = "okay";

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;

		ethphy0: ethernet-phy@0 {
			reg = <0>;
			micrel,led-mode = <1>;
			clocks = <&clks IMX6UL_CLK_ENET_REF>;
			clock-names = "rmii-ref";
		};

		ethphy1: ethernet-phy@1 {
			reg = <1>;
			micrel,led-mode = <1>;
			clocks = <&clks IMX6UL_CLK_ENET2_REF>;
			clock-names = "rmii-ref";
		};
	};
};

然后按照正点原子的教程,修改drivers/net/phy/phy.c

        如果是emmc的板子,再修改一下usdhc2,不改也能用:

&usdhc2 {
	pinctrl-names = "default", "state_100mhz", "state_200mhz";
	pinctrl-0 = <&pinctrl_usdhc2_8bit>;
	pinctrl-1 = <&pinctrl_usdhc2_8bit_100mhz>;
	pinctrl-2 = <&pinctrl_usdhc2_8bit_200mhz>;
	bus-width = <8>;
	non-removable;
	no-1-8-v;
	broken-cd;
	keep-power-in-suspend;
	wakeup-source;
	status = "okay";
};

打开imx6ull-alientek.dts

修改一下model和compatible(不改也没事,只是打印输出一个信息而已)

/ {
	model = "I.MX6ULL Alientek ALPHA ";
	compatible = "fsl,imx6ull-alientek", "fsl,imx6ull";
};

至此,uboot的移植就结束了,设备树里不需要用到的东西删掉即可。

可以看到输出Model:I.MX6ULL Alientek ALPHA

Board:MX6ULL ALIENTEK ALPHA

        测试一下网络:先配置网络

setenv ipaddr 192.168.1.3
setenv eth1addr 00:01:02:03:04:05
setenv netmaks 255.255.255.0
setenv serverip 192.168.1.2
saveenv

        然后ping一下电脑

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux 下非sudo安装cmake

1.查看位数 getconf LONG_BIT2.下载对应压缩包 Download CMake Source Distribution 未编译源代码 Binary Distribution已经编译好的 3.解压至文件夹 tar -zxvf cmake-3.28.0-rc4-linux-x86_64.tar.gz 4.添加环境变量 vi ~/.bashrc 最后一行添加 写到bin目录 export P…

深度解析NLP定义、应用与PyTorch实战

1. 概述 文本摘要是自然语言处理&#xff08;NLP&#xff09;的一个重要分支&#xff0c;其核心目的是提取文本中的关键信息&#xff0c;生成简短、凝练的内容摘要。这不仅有助于用户快速获取信息&#xff0c;还能有效地组织和归纳大量的文本数据。 1.1 什么是文本摘要&#x…

从HDFS到对象存储,抛弃Hadoop,数据湖才能重获新生?

Hadoop与数据湖的关系 1、Hadoop时代的落幕2、Databricks和Snowflake做对了什么3、Hadoop与对象存储&#xff08;OSD&#xff09;4、Databricks与Snowflake为什么选择对象存储5、对象存储面临的挑战 1、Hadoop时代的落幕 十几年前&#xff0c;Hadoop是解决大规模数据分析的“白…

大数据治理运营整体解决方案:PPT全文39页,附下载

关键词&#xff1a;大数据&#xff0c;数据治理&#xff0c;数据治理解决方案&#xff0c;数据治理的目的和意义 一、数据治理的定义 数据治理专注于将数据作为企事业单位数据资产进行应用和管理的一套管理机制&#xff0c;能够消除数据的不一致性&#xff0c;建立规范的数据应…

【算法】算法题-20231110

一、力口&#xff1a;506. 相对名次 简单 给你一个长度为 n 的整数数组 score &#xff0c;其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 &#xff0c;其中名次第 1 的运动员得分最高&#xff0c;名次第 2 的运动员得分第…

【ARM入门】ARM、SOC、ARM授权 概念篇

什么是ARM ARM前身是Acorn公司设计的第一款微处理器&#xff0c;叫ARM&#xff1a;Acorn RISC Machine ARM公司的名字叫ARM&#xff1a;Advanced RISC Machines ARM内核 包括了寄存器组、指令集、总线、存储器映射规则、中断逻辑和调试组件等 内核是有ARM公司设计并以销售方…

HarmonyOS 高级特性

引言 本章将探讨 HarmonyOS 的高级特性&#xff0c;包括分布式能力、安全机制和性能优化。这些特性可以帮助你构建更强大、更安全、更高效的应用。 目录 HarmonyOS 的分布式能力HarmonyOS 的安全机制HarmonyOS 的性能优化总结 1. HarmonyOS 的分布式能力 HarmonyOS 的分布…

视频批量剪辑:视频嵌套合并实战指南,剪辑高手速成秘籍

随着社交媒体的兴起&#xff0c;视频制作的需求越来越广泛。无论是个人用户还是专业团队&#xff0c;都需要对视频进行剪辑以符合其需求。而在这个过程中&#xff0c;批量剪辑视频的能力就变得至关重要。视频批量剪辑是指在一次操作中处理多个视频文件的剪辑。通过使用专业的视…

海康Visionmaster-环境配置:CSharp 二次开发环境配 置方法

C#二次开发环境的配置方法 以 WinForm 为例&#xff0c;进行 VM 二次开发的环境配置分为三步&#xff1a; 第一步&#xff0c;使用 VS 新建一个框架为.NET Framework 4.6.1 的工程&#xff0c;平台首选 32 位取消勾选&#xff0c;重新生成解决方案&#xff0c;保证工程 Debug 下…

轻量封装WebGPU渲染系统示例<23>- 可渲染对象添加到多个渲染器Pass节点(源码)

渲染和计算混合系统&#xff0c; 可以看做基于算力驱动设计理念的一种实现。 此系统中&#xff0c;可渲染(rendering)/计算(computing)实体可以任意添加到一个渲染器pass节点。若干个这样的节点相关联&#xff0c;就能构成对应的pass node graph&#xff0c;也就实现了整个3D渲…

SharePoint 的 Web Parts 是什么

Web Parts 可以说是微软 SharePoint 的基础组件。 根据微软自己的描述&#xff0c;Web Parts 是 SharePoint 对内容进行构建的基础&#xff0c;可以想想成一块一块的砖块。 我们需要使用这些砖块来完成一个页面的构建。 我们可以利用 Web Parts 在 SharePoint 中添加文本&am…

XoT:一种新的大语言模型的提示技术

这是微软在11月最新发布的一篇论文&#xff0c;题为“Everything of Thoughts: Defying the Law of Penrose Triangle for Thought Generation”&#xff0c;介绍了一种名为XOT的提示技术&#xff0c;它增强了像GPT-3和GPT-4这样的大型语言模型(llm)解决复杂问题的潜力。 当前提…

运行obotframework-ride控制台报错module ‘urllib‘ has no attribute ‘Request‘

背景&#xff1a;Python3.8robotframework-ride1.7.3.1&#xff0c;运行报错module urllib has no attribute Request 原因&#xff1a; 解决&#xff1a;升级robotframework-ride到2.0以上。或者降级python到3.7。

CentOS 7上Root用户使用ifconfig命令无结果

假如遇到如下情况&#xff0c;在CentOS 7上使用root用户运行ifconfig命令没有结果&#xff0c;如图所示&#xff1a; 这可能是因为缺少网络工具包或ifconfig命令不在root用户的PATH环境变量中。 可以尝试以下解决方法&#xff1a; 1.检查PATH环境变量&#xff1a;确保PATH环境…

解决游戏找不到x3daudio1_7.dll文件的5个方法,快速修复dll问题

在电脑使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“x3daudio1_7.dll丢失”。这个错误通常会导致软件游戏无法正常启动运行。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的文件。本文将详细介绍解决x3daudio1_7.dll丢失的方法…

Zabbix监控SSL证书有效期

一、介绍 由于业务需要&#xff0c;最近通过 Let’s Encrypt 申请了一些 SSL 证书&#xff0c;而证书有效期为 3 个月&#xff0c;需要在证书到期之前 renew。由于域名较多经常忘记 renew&#xff0c;导致证书过期&#xff0c;因此想通过 Zabbix 的方式监控证书的到期时间&…

Android Studio真机运行时提示“安装失败”

用中兴手机真机运行没问题&#xff0c;用Vivo运行就提示安装失败。前提&#xff0c;手机已经打开了调试模式。 报错 Android Studio报错提示&#xff1a; Error running app The application could not be installed: INSTALL_FAILED_TEST_ONLY 手机报错提示&#xff1a; 修…

网页判断版本更新

一、需求解析 为什么我会想到这个技术呢&#xff0c;是因为我有一次发现&#xff0c;我司的用户在使用网页的时候&#xff0c;经常会出现一个页面放很久&#xff0c;下班也不关这个页面&#xff0c;这样就会导致页面的代码长时间处于不更新的状态。 在使用到一个功能出了bug&a…

[HXPCTF 2021]includer‘s revenge

文章目录 方法一前置知识Nginx 在后端 Fastcgi 响应过大产生临时文件竞争包含绕过include_once限制 解题过程 方法二前置知识Base64 Filter 宽松解析iconv filter 解题过程 方法一 NginxFastCGI临时文件 前置知识 Nginx 在后端 Fastcgi 响应过大产生临时文件 www-data用户在n…

振南技术干货集:研发版本乱到“妈不认”? Git!(4)

注解目录 1、关于 Git 1.1Git 今生 (Git 和 Linux 的生父都是 Linus&#xff0c;振南给你讲讲当初关于 Git 的爱恨情愁&#xff0c;其背后其实是开源与闭源两左阵营的明争暗斗。) 1.2Git的爆发 (Git 超越时代的分布式思想。振南再给你讲讲旧金山三个年轻人创办 GitHub&…