半导体厂商会将uboot移植到我们所使用的开发板上官方开发板uboot

您所在的位置:网站首页 i510400电压多少V 半导体厂商会将uboot移植到我们所使用的开发板上官方开发板uboot

半导体厂商会将uboot移植到我们所使用的开发板上官方开发板uboot

#半导体厂商会将uboot移植到我们所使用的开发板上官方开发板uboot| 来源: 网络整理| 查看: 265

半导体厂商会将uboot移植到她们自己的原厂开发板上,测试好之后还会将这个uboot发布出去,这就是你们常说的原厂BSP包。我们通常做产品的时侯才会参考原厂的开发板做硬件,之后在原厂提供的BSP包上做更改,将uboot或则linuxkernel移植到我们的硬件上。这个就是uboot移植的通常流程:

①、在uboot中找到参考的开发平台,通常是原厂的开发板。

②、参考原厂开发板移植uboot到我们所使用的开发板上

官方开发板uboot编译

其实我们用的是NXP官方I.MX6ULL开发板的ubootlinux vps,并且在正点原子的I.MX6ULL开发板上是可以正常启动的。但LCD驱动与网路驱动有问题,须要更改;

总结一下NXP官方I.MX6ULLEVK开发板的uboot在正点原子EMMC版本I.MX6ULL开发板上的运行情况:

①、uboot启动正常,DRAM辨识正确,SD卡和EMMC驱动正常。

②、uboot上面的LCD驱动默认是给4.3寸480x272码率的,假如使用的其他码率的屏幕须要更改驱动。

③、网络不能工作,辨识不下来网路信息,须要更改驱动。

linux嵌入安装gcc_嵌入式驱动 linux_linux驱动教程

接出来我们要做的工作如下:

①、前面我们仍然使用着NXP官方开发板的uboot配置,接出来须要在uboot中添加我们自己的开发板,也就是正点原子的I.MX6ULL开发板。

②、解决LCD驱动和网路驱动的问题。

在U-Boot中添加自己的开发板

1.添加开发板默认配置文件

先在configs目录下创建默认配置文件,例如复制mx6ull_14x14_evk_emmc_defconfig,之后重命名为mx6ull_alientek_emmc_defconfig,简单更改

2.添加开发板对应的头文件

在目录include/configs下添加I.MX6ULL-ALPHA开发板对应的头文件,复制include/configs/mx6ullevk.h,并重命名为mx6ull_alientek_emmc.h,mx6ull_alientek_emmc.h上面有好多宏定义,这种宏定义基本用于配置uboot。mx6ull_alientek_emmc.h文件中基本都是“CONFIG_”开头的宏定义,这也说明mx6ull_alientek_emmc.h文件的主要功能就是配置或则剪裁uboot。假如须要某个功能的话就在上面添加这个功能对应的CONFIG_XXX宏即可,倘若不须要某个功能的话就删掉掉对应的宏即可。

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

uboot中每位板子都有一个对应的文件夹来储存板级文件,例如开发板上外设驱动文件等等。NXP的I.MX系列芯片的所有板级文件夹都储存在board/freescale目录下,在这个目录下有个名为mx6ullevk的文件夹,这个文件夹就是NXP官方I.MX6ULLEVK开发板的板级文件夹。复制mx6ullevk,将其重命名为mx6ull_alientek_emmc,之后对mx6ull_alientek_emmc目录下的文件做一些更改,基本就是将mx6ullevk改为mx6ull_alientek_emmc

4.更改U-Boot图形界面配置文件

更改arch/arm/Kconfig这个文件,添加完成之后的Kconfig文件如图:

到此为止,I.MX6U-ALPHA开发板就早已添加到uboot中了,接出来就是编译这个新添加的开发板。

LCD驱动更改

通常更改LCD驱动重点注意以下几点:

①、LCD所使用的GPIO,查看uboot中LCD的IO配置是否正确。

②、LCD背光引脚GPIO的配置。

③、LCD配置参数是否正确。

在mx6ull_alientek_emmc.c中定义了LCD信息结构体,其中包括了LCD的帧率,象素格式,LCD的各个参数等。结构体display_info_t还有个mode成员变量,此成员变量也是个结构体,其中name:LCD名子,要和环境变量中的panel相等。其他参数定义了LCD的各类参数,

打开mx6ull_alientek_emmc.h,设置panel=TFT7016,重新启动后在uboot命令模式输入“print”来查看环境变量panel的值,会发觉panel的值不是TFT7016,这是由于之前有将环境变量保存到EMMC中嵌入式驱动 linux,uboot启动之后会先从EMMC中读取环境变量,假如EMMC中没有环境变量的话就会使用mx6ull_alientek_emmc.h中的默认环境变量。

假如EMMC中的环境变量panel不等于TFT7016,这么LCD显示肯定不正常,我们只须要在uboot中更改panel的值为TFT7016即可android linux,在uboot的命令模式下输入命令:

setenvpanelTFT7016

saveenv

网路驱动更改

I.MX6UL/ULL内部有个以太网MAC外设,也就是ENET,须要外接一个PHY芯片来实现网路通讯功能,也就是内部MAC+外部PHY芯片的方案。更换PHY芯片之后怎样调整网路驱动,使网路工作正常。

这儿以phy芯片LAN87208720A为例,内部是有寄存器的,I.MX6ULL会读取LAN8720内部寄存器来判定当前的化学链接状态、连接速率(10M还是100M)和双工状态(半双工还是全双工)。I.MX6ULL通过MDIO插口来读取PHY芯片的内部寄存器,MDIO插口有两个引脚,ENET_MDC和ENET_MDIO,ENET_MDC提供时钟嵌入式驱动 linux,ENET_MDIO进行数据传输。一个MDIO插口可以管理32个PHY芯片,同一个MDIO插口下的那些PHY使用不同的元件地址来做分辨,MIDO插口通过不同的元件地址即可访问到相应的PHY芯片。

1.网路PHY地址更改

linux嵌入安装gcc_linux驱动教程_嵌入式驱动 linux

首先更改uboot中的ENET1和ENET2的PHY地址和驱动,打开mx6ull_alientek_emmc.h这个文件,更改phy的实际地址;文件中定义了一个宏CONFIG_PHY_MICREL,此宏用于使能uboot中Micrel公司的PHY驱动,KSZ8081这颗PHY芯片就是Micrel公司生产的,假如要使用LAN87208720A,这么就得将CONFIG_PHY_MICREL改为CONFIG_PHY_SMSC,也就是使能uboot中的SMSC公司中的PHY驱动,由于LAN87208720A就是SMSC公司生产的。

2.网路复位引脚的驱动更改

我们所使用的开发板相比原厂板ENET外设复位引脚发生变化,在mx6ull_alientek_emmc.c中找到board_init函数,此函数是板子初始化函数,会被board_init_r调用

在mx6ull_alientek_emmc.c中找到结构体链表fec1_pads和fec2_pads是ENET1和ENET2这两个网口的IO配置参数,在这两个字段中添加两个网口的复位IO配置参数

ENET1的复位引脚联接到SNVS_TAMPER7上。并在其中初始化网路IO的代码中,复位一下PHY芯片。

3.更改drivers/net/phy/phy.c文件中的函数genphy_update_link

函数genphy_update_link,这是个通用PHY驱动函数,此函数用于更新PHY的联接状态和速率。读取LAN87208720A的BMCR寄存器(寄存器地址为0),此寄存器为LAN87208720A的配置寄存器,这儿先读取此寄存器的默认值并保存上去。向寄存器BMCR寄存器写入BMCR_RESET(值为0X8000),由于BMCR的bit15是软件复位控制位,因而就是软件复位LAN87208720A,复位完成之后此位会手动清零。等待LAN87208720A软件复位完成,也就是判定BMCR的bit15位是否为1,为1的话表示还没有复位完成。重新向BMCR寄存器写入原先的值,也就是刚才读出的那种值。至此网路的复位引脚驱动更改完成。

编译测试网路

在uboot中使用网路之前要先设置几个环境变量,例如开发板IP地址,开发板网卡MAC地址等;通过ping命令来测试一下网路联接,“host192.168.1.250isalive”这句,说明ping主机成功,说明ENET2网路工作正常。至此uboot的驱动部份就更改完成了,uboot移植也完成了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3