Uboot移植--修改lcd和网络驱动

lcd移植https://www.bilibili.com/video/BV12E411h71h?spm_id_from=333.788.videopod.episodes&vd_source=7782ba9eb4236579cf9bb586af83fd28&p=25修改网络驱动https://www.bilibili.com/video/BV12E411h71h?spm_id_from=333.788.videopod.episodes&vd_source=7782ba9eb4236579cf9bb586af83fd28&p=26

LCD修改:

这里看上一个文章里,我们创建了自己的板子文件,也就是board下的文件夹。外设的一些设置都在这里配置了。我们打开复制修改的board下的文件夹下的c文件,我这里命名为mx6ull_cyx_emmc.c

1.找到这个lcd_pads开始修改。上边是io部分,也就是引脚。我使用的正点原子7寸屏幕。他的引脚与nxp官方的evk开发板的屏幕的引脚是一样的。所以不需要修改。下边这个LCD_RST可以注释,因为正点原子的屏幕没有复位脚。

2.第二步是这里,主要是这个。这里的mode就是lcd参数的信息。我们根据自己的lcd来设置。我是七寸屏幕1024*600。所以,按照如下参数,这里的name是匹配用的,也是显示lcd的名字。可以改为自己喜欢的,比如我这里是cyx_lcd

3.如果你改了上边的name,那么为了让uboot找到这个参数的结构体,我们在头文件里,也就是include/configs/mx6ull_cyx_emmc.h,也就是上一章的拷贝的头文件。进入搜索panel,找到对应的修改。把这个填成和上边的一样的。

接下来就是使用sh脚本重新编译后烧录了。

网络驱动修改:

1.修改include下的板子的头文件里,这个网络的地址,这个是使用的正点原子板子,那么这里需要按照他pcb接线,这里地址分别为0和1,#define CONFIG_FEC_ENET_DEV 这个的值就是选择uboot启用哪一个网口,1就是使用网口二,0就是使用网口一。

2.注释掉一下函数:

进入board/freescale/自己的板子文件夹的c文件

注释掉这几个定义,添加下边的两个宏。这里注释上边是因为正点原子使用的lan网口芯片,所以不使用官方的这个初始化。下边则是为了给后续的引脚开关使用。因为网口需要复位一下,开关一下引脚。

注释下边的这个函数,这个函数的位置就在宏的下边。

注释static void iox74lv_init(void)

void iox74lv_set(int index)

紧接着就是修改board_init函数,注释这两行代码,因为这是官方的网口芯片初始化代码。

接着,搜索fec1_pads函数,在下边新增MX6_PAD_SNVS_TAMPER7__GPIO5_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL),

在fec2_pads下边增加MX6_PAD_SNVS_TAMPER8__GPIO5_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),

修改static void setup_iomux_fec(int fec_id)

cpp 复制代码
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);
	}
	mdelay(150);
}

接下来烧录测试:

查看自己的电脑ip地址

测试完成。

相关推荐
编程小白20261 分钟前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
学历真的很重要2 分钟前
【系统架构师】第二章 操作系统知识 - 第二部分:进程与线程(补充版)
学习·职场和发展·系统架构·系统架构师
深蓝海拓10 分钟前
PySide6,QCoreApplication::aboutToQuit与QtQore.qAddPostRoutine:退出前后的清理工作
笔记·python·qt·学习·pyqt
酒鼎11 分钟前
学习笔记(3)HTML5新特性(第2章)
笔记·学习·html5
L***一26 分钟前
2026届大专跨境电商专业毕业生就业能力提升路径探析
学习
.小墨迹39 分钟前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:模块与包管理的实现
python·学习·flutter
Gain_chance1 小时前
33-学习笔记尚硅谷数仓搭建-DWS层交易域用户粒度订单表分析及设计代码
数据库·数据仓库·hive·笔记·学习·datagrip
Lsir10110_1 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
hqyjzsb1 小时前
盲目用AI提效?当心陷入“工具奴”陷阱,效率不增反降
人工智能·学习·职场和发展·创业创新·学习方法·业界资讯·远程工作