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

一、概述

        这里使用的是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_defconfigmake -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.dtsicp 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=yCONFIG_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_CONFIGdefault "board/freescale/mx6ullevk/imximage.cfg"修改为:config IMX_CONFIGdefault "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_EVKbool "Support mx6ull_14x14_evk"depends on MX6ULLselect BOARD_LATE_INITselect DMselect DM_THERMALselect IMX_MODULE_FUSEselect OF_SYSTEM_SETUPimply CMD_DM

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

config TARGET_MX6ULL_ALIENTEKbool "Support mx6ull_alientek"depends on MX6ULLselect BOARD_LATE_INITselect DMselect DM_THERMALselect IMX_MODULE_FUSEselect OF_SYSTEM_SETUPimply 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.hqwc.cn/news/169274.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法专题】双指针—三数之和

力扣题目链接&#xff1a;三数之和 一、题目解析 二、算法原理 解法一&#xff1a;排序暴力枚举利用set去重 代码就不写了&#xff0c;你们可以试着写一下 解法二&#xff1a;排序双指针 这题和上一篇文章的两数字和方法类似 排序固定一个数a在这个数的后面区间&#xff0…

软件安全测试怎么做?如何确保软件授权安全

在数字化不断演进的今天&#xff0c;软件安全测试变得至关重要。它验证了软件是否容易受到网络攻击&#xff0c;并检验恶意或意外输入对操作的影响。安全测试的目标是保障系统和信息的安全性和可靠性&#xff0c;确保它们不接受未授权的输入。 一、安全测试准备 开发者必须认识…

AI系统ChatGPT源码+详细搭建部署教程+AI绘画系统+支持GPT4.0+Midjourney绘画+已支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

Leetcode刷题详解—— 找出所有子集的异或总和再求和

1. 题目链接&#xff1a;1863. 找出所有子集的异或总和再求和 2. 题目描述&#xff1a; 一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果&#xff1b;如果数组为 空 &#xff0c;则异或总和为 0 。 例如&#xff0c;数组 [2,5,6] 的 异或总和 为 2 XOR 5 XOR 6 1 。…

亚马逊云AI应用科技创新下的Amazon SageMaker使用教程

目录 Amazon SageMaker简介 Amazon SageMaker在控制台的使用 模型的各项参数 pytorch训练绘图部分代码 Amazon SageMaker简介 亚马逊SageMaker是一种完全托管的机器学习服务。借助 SageMaker&#xff0c;数据科学家和开发人员可以快速、轻松地构建和训练机器学习模型&#…

金融信贷行业如何准确——大数据精准定位获客渠道

通过大数据精准获客&#xff0c;不仅可以及时拦截网址浏览量&#xff0c;还可以访问移动贷款应用软件的高频活跃客户和新注册客户。此外&#xff0c;通过大数据进行准确的客户获取&#xff0c;还可以获得电话座机号码的实时通信记录&#xff0c;捕捉小程序应用程序和关键词搜索…

18. 深度学习 - 从零理解神经网络

文章目录 本文目标预测趋势与关系波士顿房价预测 Hi, 你好。我是茶桁。 我们终于又开启新的篇章了&#xff0c;从今天这节课开始&#xff0c;我们会花几节课来理解一下深度学习的相关知识&#xff0c;了解神经网络&#xff0c;多层神经网络相关知识。并且&#xff0c;我们会尝…

PostgreSql中解析JSON字段和解析TEXT中的JSON字段

初始化操作 创建表 CREATE TABLE orders ( "ID" int8 NOT NULL,"info_j" json NOT NULL,"info_t" text NOT NULL );初始化表 INSERT INTO orders("ID", "info_j","info_t") VALUES (1, {"name":&qu…

键盘打字盲打练习系列之认识键盘——0

一.欢迎来到我的酒馆 盲打&#xff0c;yyds&#xff01; 目录 一.欢迎来到我的酒馆二.键盘规格三.键盘分区 二.键盘规格 经常看视频&#xff0c;看到别人在键盘上一通干净利索的操作&#xff0c;就打出想要的文字。心里突然来一句&#xff1a;卧槽&#xff0c;打字贼快啊&#…

IDEA调试总结

前言 由于 IDEA 每个人使用的版本不同以及快捷键的设置不同&#xff0c;所以忽略了快捷键的使用。如果不知道快捷键请在 IDEA 工具栏里面点开 Run 菜单即可知悉 图标介绍 下面咱们进入看图说话环节&#xff0c;下列图标小伙伴知道是啥功能么&#xff1f;日常开发进行 Debug 使…

【C++】C++的介绍及其发展史

初识C 一、什么是C&#xff0c;为什么会出现C二、C的发展史三、C的重要性3.1 语言的使用广泛度3.2 在工作领域 四、C的学习路径 及 书籍推荐 一、什么是C&#xff0c;为什么会出现C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。 对于复杂的问题&#xff…

docker.service配置docker镜像加速

加速器配置方法很多&#xff0c;小白我用的是docker.service文件&#xff0c;所以直接在里面配置啊 配置以后&#xff0c;要systemctl daemon-reload下 &#xff0c;然后docker info 下看下镜像地址是否是自己已配置的 docker run --privilegedtrue --name mytomcat -p 8080…