刚在咸鱼买了块开发板,比较老了14年的,SOC为imx6solo,内核3.10,uboot2009的,准备先移植一个较新的uboot

到nxp的git下获取他们维护的uboot,网址http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git

选择imx_v2016.03_4.1.15_2.0_ga的brance,git太慢了,直接下载rel_imx_4.1.15_1.2.0_ga.tar.bz2源码包。

到Makefile中更改CROSS_COMPILE

make riotboard_defconfig

make -j8

出现

riotboard/rel_imx_4.1.15_1.2.0_ga/arch/arm/imx-common/cpu.c:199: undefined reference to `uclass_get_device'

查看配置文件是没定义CONFIG_DM相关的就是驱动模型,因为这个板子uboot是维护的,所以就换了个版本

仓库地址https://gitlab.denx.de/u-boot/u-boot/tree/v2016.09

这次顺利通过编译,下载到tf卡上启动没有反应,串口无输出。中间反复检查了很多方面,到最终成功启动有两个问题

1.烧写命令dd iflag=dsync oflag=dsync if=u-boot.imx of=/dev/sdb seek=2

seek=blocks:从输出文件开头跳过blocks个块后再开始复制

uboot.imx = ivt + dcd + uboot.bin

imx的soc通过sd启动时,u-boot.imx要有一个0x400的offset,也就是1024字节,sd卡一个扇区512byte,所以跳过2个扇区,从第三个扇区烧写

开始时没搞清seek的定义,一直用的seek=3....

2.拨码开关

使用手册的截图

重点来了,这个是背后的SD大卡的启动选项。。。。

发现这点是在网上搜到的一个pdf

调整后顺利启动

调老板子运气真的挺重要的,这个开发板国内资料真的没多少,而且都是3.x的。

还有个小细节,上面说的u-boot.imx是通过uboot自带的工具./tool/imximage实现的在正常的uboot.bin前加上必要的数据(例如内存初始化等),其中的数据想DCD等都是保存在/board/xxx/xxx.cfg 里的,但是这块开发板下没有 .cfg,而在/configs/riotboard_defconfig中指定了CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024,ENV_IS_IN_MMC"

即nitrogen6s的板子,查看发现其中一句 BOOT_FROM      spi ,修改为sd。后来测试即使是spi也可以正常启动,没有深入研究。

最终uboot还是用的rel_imx_4.1.15_2.0.0_ga,就是nxp git下的,make riotboard_defconfig 出现找不到ldo_mode_set这个函数的定义,

因为在board/embest/mx6boards/mx6boards.c中没有实现,在bug信息的xxx/cpu.c中有如下代码

#if defined(CONFIG_LDO_BYPASS_CHECK)
ldo_mode_set(check_ldo_bypass());
#endif

于是在include/configs/embestmx6boards.h 最后 #undef CONFIG_LDO_BYPASS_CHECK

编译通过。

启动后ping不通:

Using FEC device

ARP Retry count exceeded; starting again
ping failed; host 192.168.0.12 is not alive

试了网上说的增加TIMEOUT的值,试了也没有效果。后来参考embest维护的3.x的uboot

注释掉board/embest/mx6boards/mx6boards.c中

#if 1
int mx6_rgmii_rework(struct phy_device *phydev)
{
/* from linux/arch/arm/mach-imx/mach-imx6q.c :
* Ar803x phy SmartEEE feature cause link status generates glitch,
* which cause ethernet link down/up issue, so disable SmartEEE
*/
phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x7);
phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x805d);
phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x4003);

return 0;
}
#endif

添加

int mx6_rgmii_rework(struct phy_device *phydev)
{
unsigned short val;

/* To enable AR8031 ouput a 125MHz clk from CLK_25M */
phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x7);
phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x8016);
phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x4007);

val = phy_read(phydev, MDIO_DEVAD_NONE, 0xe);
val &= 0xffe3;
val |= 0x18;
phy_write(phydev, MDIO_DEVAD_NONE, 0xe, val);

/* introduce tx clock delay */
phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x5);
val = phy_read(phydev, MDIO_DEVAD_NONE, 0x1e);
val |= 0x0100;
phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, val);

return 0;

}

顺利ping通。

rIoTboard学习系列的更多相关文章

  1. 分布式学习系列【dubbo入门实践】

    分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...

  2. Entity Framework Code First学习系列目录

    Entity Framework Code First学习系列说明:开发环境为Visual Studio 2010 + Entity Framework 5.0+MS SQL Server 2012, ...

  3. WCF学习系列汇总

    最近在学习WCF,打算把一整个系列的文章都”写“出来,包括理论和实践,这里的“写”是翻译,是国外的大牛写好的,我只是搬运工外加翻译.翻译的不好,大家请指正,谢谢了.如果觉得不错的话,也可以给我点赞,这 ...

  4. EF(Entity Framework)系统学习系列

    好久没写博客了,继续开启霸屏模式,好了,废话不多说,这次准备重新系统学一下EF,一个偶然的机会找到了一个学习EF的网站(http://www.entityframeworktutorial.net/) ...

  5. MVC学习系列4--@helper辅助方法和用户自定义HTML方法

    在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...

  6. YYKit学习系列 ---- 开篇

    准备花半年时间系统学习YYKit,  学习过程会放入"YYKit学习系列"这个分类, 喜欢YYKit的可以随时留意我的文章, 一起学习!!!

  7. RabbitMQ学习系列(四): 几种Exchange 模式

    上一篇,讲了RabbitMQ的具体用法,可以看看这篇文章:RabbitMQ学习系列(三): C# 如何使用 RabbitMQ.今天说些理论的东西,Exchange 的几种模式. AMQP协议中的核心思 ...

  8. RabbitMQ学习系列(三): C# 如何使用 RabbitMQ

    上一篇已经讲了Rabbitmq如何在Windows平台安装,还不了解如何安装的朋友,请看我前面几篇文章:RabbitMQ学习系列一:windows下安装RabbitMQ服务 , 今天就来聊聊 C# 实 ...

  9. [翻译svg教程]svg学习系列 开篇

    目录 [翻译svg教程]svg学习系列 开篇 [翻译svg教程 ]svg 的坐标系统 [翻译svg教程]svg 中的g元素 [翻译svg教程]svg中矩形元素 rect [翻译svg教程]svg中的c ...

随机推荐

  1. NXP官方的i.mx6ul板级uboot源码适配

    1.前言 CoM-P6UL是盈鹏飞科技有限公司基于NXP原厂I.MX6UL芯片生产研发的核心板,本文将对CoM-P6UL适配NXP的基于Linux4.1.15版本的uboot板级源码. 2.开发环境 ...

  2. HTML+css基础 css的几种形式 css选择器的两大特性

    3.外联样式 css选择器的两大特性 1.继承性:所有跟文本字体有关的属性都会被子元素继承.且权重是0000. 2.层叠性:就是解决选择器权重大小的一种能力,就是看那个选择器的权重大.谁的权重大听谁的 ...

  3. RestController 能不能通过配置关闭

    https://stackoverflow.com/questions/29958231/can-a-spring-boot-restcontroller-be-enabled-disabled-us ...

  4. 修改设置notepad++默认保存文件格式

    设置notepad++保存文件的默认格式 在使用notepad++新建文件保存后,有的时候会有一个all type 然后没有文件扩展名,很不方便 网上有很多帖子都是如下图所示的提示,但是却不生效

  5. 基本认证(Basic Authorization)

    ---------------------------------- import arcpy from base64 import encodestring username = 'xxx' pas ...

  6. PIE调用Python获得彩色直方图

    前段时间我一直在研究PIE SDK与Python的结合,因为在我的开发中,我想获取一张图片的统计直方图,虽然在SDK中有提供关于直方图的类接口(如IStatsHistogram 接口.Histogra ...

  7. Anchor 和 Dock 属性的使用

    Anchor 是一个常用属性,用来控制当窗体大小变化,控件如何自动调整自身大小和位置 一 仅设置一个值 如果此时将窗体放大,将会变成这样: 由于固定了top, 所以top不变,那么bottom自然会因 ...

  8. Linux文件查找与打包

    一.文件查找 locate与find是经常使用的Linux 命令,刚接触Linux时对这两个命令的使用傻傻的分不清.现在我们来对比一下两个命令到底有哪些区别. 1.1 locate locate让使用 ...

  9. PHP json中文

    json_encode 和 json_decode 只支持utf-8编码的字符串,GBK的字符串要用json就得转换成utf-8字符串 看效果 <?php header("Conten ...

  10. Android四大组件:BroadcastReceiver 介绍

    介绍 BroadcastReceiver 即广播组件,是 Android 的四大组件之一.用于监听和接收广播消息,并做出响应.有以下一些应用: 不同组件之间的通信(应用内或不同应用之间). 多线程之间 ...