i.mx6ull uboot移植
uboot官网
i.mx6ull uboot移植
- 一、移植NXP官方的uboot
- 1、编译NXP官方的uboot
- 2、烧录到板子测试是否能启动
- 3、添加新的开发板配置
- a.修改默认配置文件
- b.修改头文件
- c.添加板级文件
- c.修改开发板配置文件_Makefile
- d.修改开发板配置文件_imximage.cfg
- e.修改开发板配置文件_Kconfig
- f.修改开发板配置文件_MAINTAINERS
- g.修改uboot支持图形界面配置
- 4、编译烧录验证
- 二、修改LCD驱动
- 三、修改网络驱动
- 1、修改驱动
- a. 修改网络PHY地址
- b. 删除74LV595的驱动代码
- aa、引脚替换
- ab、删除初始化函数
- ac.将iox74lv_set也删除掉
- ad.删除函数调用
- c.添加复位引脚驱动
- d.设置IO的驱动
- e.修改通用PHY 驱动函数
- 2、编译烧录验证
一、移植NXP官方的uboot
1、编译NXP官方的uboot
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
2、烧录到板子测试是否能启动
3、添加新的开发板配置
a.修改默认配置文件
在uboot的configs目录下,复制原厂的配置文件defconfig
cd configs
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_myself_defconfig
修改配置文件为:
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_myself/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_MYSELF=y
CONFIG_CMD_GPIO=y
主要修改了路径名 /freescale/mx6ull_myself/imximage.cfg
和 CONFIG_TARGET_MX6ULL_MYSELF=y
b.修改头文件
在uboot的include/configs目录下,复制原厂的配置文件defconfig
cd include/configs
cp include/configs/mx6ullevk.h mx6ull_myself.h
将
#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H 改为:
#ifndef __MX6ULL_MYSELF_CONFIG_H
#define __MX6ULL_MYSELF_CONFIG_H
c.添加板级文件
uboot中每个板子都有一对应的文件夹来存放级,比如开发上外设驱动等。
在board/freescale/目录下,复制原厂的板级文件夹
cd board/freescale/
cp mx6ullevk/ -r mx6ull_myself
重命名原来的.c文件
cd mx6ull_myself
mv mx6ullevk.c mx6ull_myself.c
c.修改开发板配置文件_Makefile
对\board\freescale\mx6ull_myself板级文件下的Makefile
修改目标编译文件
obj-y := mx6ull_myself.o
d.修改开发板配置文件_imximage.cfg
对\board\freescale\mx6ull_myself板级文件下的imximage.cfg
修改开发板插件路径
将
PLUGIN board/freescale/mx6ullevk/plugin.bin 0x00907000
改为
PLUGIN board/freescale/mx6ull_myself /plugin.bin 0x00907000
e.修改开发板配置文件_Kconfig
修改结果如下:
if TARGET_MX6ULL_MYSELFconfig SYS_BOARDdefault "mx6ull_myself"config SYS_VENDORdefault "freescale"config SYS_SOC default "mx6" config SYS_CONFIG_NAMEdefault "mx6ull_myself"endif
f.修改开发板配置文件_MAINTAINERS
修改为:
MX6ULL_MYSELF BOARD
M: Peng Fan <peng.fan@nxp.com>
S: Maintained
F: board/freescale/mx6ull_myself/
F: include/configs/mx6ull_myself.h
g.修改uboot支持图形界面配置
在arch/arm/cpu/armv7/mx6/Kconfig下,大约207行添加以下内容:
config TARGET_MX6ULL_MYSELFbool "Support mx6ull_myself" select MX6ULL select DM select DM_THERMAL
翻到下面添加source
source "board/freescale/mx6ull_myself/Kconfig"
4、编译烧录验证
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_myself_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
二、修改LCD驱动
因无屏幕无法验证
三、修改网络驱动
此时开发板虽然正常启动,但是网卡是无法驱动的,我们需要对网卡的驱动进行修改
提示:正点原子阿尔法开发板有两个网口,mini版的只有一个,使用的是ENET2
mini版的原理图:
1、修改驱动
a. 修改网络PHY地址
#ifdef CONFIG_CMD_NET
#define CONFIG_CMD_PING
#define CONFIG_CMD_DHCP
#define CONFIG_CMD_MII
#define CONFIG_FEC_MXC
#define CONFIG_MII
#define CONFIG_FEC_ENET_DEV 1#if (CONFIG_FEC_ENET_DEV == 0)
#define IMX_FEC_BASE ENET_BASE_ADDR
#define CONFIG_FEC_MXC_PHYADDR 0x0
#define CONFIG_FEC_XCV_TYPE RMII
#elif (CONFIG_FEC_ENET_DEV == 1)
#define IMX_FEC_BASE ENET2_BASE_ADDR
#define CONFIG_FEC_MXC_PHYADDR 0x1
#define CONFIG_FEC_XCV_TYPE RMII
#endif
#define CONFIG_ETHPRIME "FEC"#define CONFIG_PHYLIB
#define CONFIG_PHY_MICREL
#endif
b. 删除74LV595的驱动代码
aa、引脚替换
在板子的.c文件,找到IO扩展的代码
#define IOX_SDI IMX_GPIO_NR(5, 10)
#define IOX_STCP IMX_GPIO_NR(5, 7)
#define IOX_SHCP IMX_GPIO_NR(5, 11)
#define IOX_OE IMX_GPIO_NR(5, 8)
ENET1 的复位引脚连接到SNVS_TAMPER7 上,对应GPIO5_IO07,
ENET2 的复位引脚连接到SNVS_TAMPER8 上,对应GPIO5_IO08。
所以替换为以太网的复位引脚:
#define ENET1_RESET IMX_GPIO_NR(5, 7)
#define ENET2_RESET IMX_GPIO_NR(5, 8)
ab、删除初始化函数
找到函数iox74lv_init,将其删掉
ac.将iox74lv_set也删除掉
ad.删除函数调用
在 board_init 函数中删除iox74lv的函数调用
imx_iomux_v3_setup_multiple_pads(iox_pads, ARRAY_SIZE(iox_pads));
iox74lv_init();
c.添加复位引脚驱动
在 static iomux_v3_cfg_t const fec1_pads[] 中添加
MX6_PAD_SNVS_TAMPER7__GPIO5_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL),
在 static iomux_v3_cfg_t const fec2_pads[] 中添加
MX6_PAD_SNVS_TAMPER8__GPIO5_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),
d.设置IO的驱动
修改 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));// 添加网络复位 IO 的初始化代码并且复位一下 PHY 芯片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));// 添加网络复位 IO 的初始化代码并且复位一下 PHY 芯片gpio_direction_output(ENET2_RESET, 1); gpio_set_value(ENET2_RESET, 0); mdelay(20); gpio_set_value(ENET2_RESET, 1); }
}
e.修改通用PHY 驱动函数
在路径 drivers/net/phy/ 找到 phy.c 文件
在前面添加:
static int lan8720_flag = 0;
int bmcr_reg = 0;
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;
}
按照教程使用 #ifdef CONFIG_PHY_SMSC 似乎不行,不知道为啥。
2、编译烧录验证
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_myself_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
i.mx6ull uboot移植相关推荐
- 野火i.MX6ULL Pro开发板U-Boot移植
之前一直用STM32跑RTT,最近想做一台游戏机,主屏采用960*640,但是发现STM32的运存实在着急,2M根本不够用,64M勉勉强强,但是看了看价格就呵呵了.于是在网上搜了搜发现i.MX6ULL ...
- I.MX6ULL 官方 U-Boot 移植系列教程 1 —— 前期准备
文章目录 前言 一.搭建开发环境 二.获取官方资料 1. 获取官方开发板资料 2. 获取官方 U-Boot 源码 总结 前言 去年入手了一块正点原子的 I.MX6U-ALPHA 开发板,跟着其配套的指 ...
- uboot移植到IMX6ULL平台详细过程
uboot移植到IMX6ULL平台详细过程 文章目录 uboot移植到IMX6ULL平台详细过程 1.解压 2 编译 NXP 官方开发板对应的 uboot 3 烧写验证与驱动测试 1.SD 卡和 EM ...
- [I.MX6UL] U-Boot移植(六) 网络驱动修改 LAN8720A(对比原子和NXP官方测试板的网络芯片LAN8720A , KSZ8081 (也是飞凌)唯独复位引脚不同595芯片也涉及改动)
I.MX6UL/ULL 内部有个以太网 MAC 外设,也就是 ENET,需要外接一个 PHY 芯片来实现网络通信功能,也就是内部MAC+外部 PHY 芯片的方案. I.MX6UL/ULL 有两个网络接 ...
- UBOOT学习1——UBOOT移植流程
UBOOT学习1--UBOOT移植流程 1.创建板级目录 在board/ 目录下创建目录更改文件(使用imx6ull) (1)创建板级.c文件 (2)更改镜像配置文件imximage.cfg 2.创建 ...
- 主线剧情03-NXP-i.MX系列的u-boot移植基础详解
u-boot 移植基础详解 本文系广泛撷取.借鉴和整理(相关的内容在网络上有很多,但很多相互抄,或者是版本太老,或者就是不通用的非常有平台针对性的步骤,碎片化泛滥,甚至就是有待分拣的垃圾厂,当然也有一 ...
- 【正点原子Linux连载】第三十三章 U-Boot移植 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- U-Boot 移植初探
1. NXP官方开发板uboot编译测试 uboot移植不需要从零开始将uboot移植到使用的开发板上.因为半导体厂商通常都会自己做一个开发板, 将uboot移植到他们自己的原厂开发板上,再将这个ub ...
- X-007 FriendlyARM tiny4412 u-boot移植之内存初始化
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- U-Boot移植教程之二:移植
内容来自 韦东山<嵌入式Linux应用开发完全手册> 一.U-Boot移植 开发板smdk2410的配置适用于大多数S3C2410单板,或是只需要极少的修改即可使用.但是目前U-Boot中 ...
最新文章
- Analysis Services基础知识——深入SQL Server 2008
- C# 中是否支持 Like 和 ln 条件的参数化查询 ?
- maven打包时跳过测试
- php token 表单重复提交,PHP生成token防止表单重复提交2个例子
- activiti启动流程实例,添加进businessKey
- Display yuv formatted video by shader
- 使用derby导入mongodb数据
- 乱码问题的原理及解决方法
- 批量下载wsdl文件
- Zabbix自定义报警提示声音
- Android 实战 - 天气(有缺陷)APP
- 请问:现正在广告上的丰胸产物是不是实的?
- 腾讯云服务器网站504,使用腾讯、百度云CDN现403和504错误的解决及使用CDN踩的坑...
- 苹果Airplay2学习
- 非wait线程即时唤醒epoll_wait
- Android实现收款成功金额的语音播报功能(Nice tone)
- C++中或运算符(||)执行的逻辑及顺序
- Json转List时,字符串多次toJson出现异常
- bootstrap 登录页面切图(一)
- python爬虫笔记(八) 实例3:用Python批量爬取全站小说【以书趣阁为例】