电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
MY-IMX6-EK140(MINI)-6Y2D开发板(不带屏):上电新姿势
分 享
扫描二维码分享
MY-IMX6-EK140(MINI)-6Y2D开发板(不带屏):上电新姿势
IMX6ULL
EK140
tftp
HackforFun
关注
发布时间: 2019-08-01
丨
阅读: 2323
# MYIMX6-EK140 tftp 更新内核 ## 1、简介 MYIMX6 EK140 是 [明远智睿](http://www.myzr.com.cn) 基于 NXP(前 Freescale,现在被 NXP 收购了) [i.MX6ULL](https://www.nxp.com.cn/products/processors-and-microcontrollers/arm-based-processors-and-mcus/i.mx-applications-processors/i.mx-6-processors/i.mx-6ull-single-core-processor-with-arm-cortex-a7-core:i.MX6ULL) 设计的工控板,很是精巧。具体硬件配置如下: | Module | Configuration | | ------------ | ---------------------- | | CPU | ARM Cortex A7 ,528MHZ | | DDR | 256M DDR3 | | Storage | eMMC 4G | | Ethernet | 10/100M RJ34 | | USB | USB 2.0 TYPE-A HOST | | Debug UART | baude rate 115200 | | Power Supply | Micro USB 5V | 这里顺带讲一下 i.MX6 处理器,i.MX 是 Freescale(当然现在叫 NXP) 的众多 CPU 产品线之一,主打多核,多媒体和显示应用,NXP 还有很多其他的 CPU 产品线,比如主打网络和通信功能的 QorIQ® Layerscape 处理器,虽然这些 CPU 都是采用 Arm 核,但是根据具体应用领域的不同,在外设上会做差异化设计。比如 i.MX 系列主要面向多媒体和显示,就会加入 GPU、HDMI 等图象加速和输出模块,Layerscape 由于面向网络,它需要有强大的连接和数据处理能力,所以集成了大量的高速以太网口以及 PCIE GEN4,而没有显示相关的 IP。 i.MX 应该是大家接触的最多的一个产品线,目前包括 i.MX28、i.MX6、i.MX7、i.MX8、i.MX RT、其中iMX28 系列是 Arm9 内核,算是比较老的了;i.MX6 系列有 Cortex A7/A9 内核,有部分芯片里面还集成了Cortex M4;i.MX7 系列的内核是 Cortex A7 + M4, 主要面穿戴和物联网市场;i.MX8 是新推出的64位芯片,CPU内核有A35、A72、A53,性能比较强劲;i.MX RT 是一个比较特殊的系列,它的 CPU 是cortex M7,而不是我们常见的 Cortex A 处理器,这是一颗 MCU 芯片,但是频率却高达 600MHZ,主要面向有实时要求的工业互联网领域,市场对这颗芯片的期待也很高。 在目前的整个i.MX 产品线中, i.MX6 变种最多,根据应用场景的不同(主要基于成本、可靠性),CPU 有 Cortex A9、Cortex A7、在实现上有单核、双核和四核(i.MX系列的芯片后面都带有Q、D、S、L这样的后缀, Q 代表 Quad, 四核,D 代表 Dual,双核,S 就是单核,L一般就是低成本或者低功耗,所以大家从名字就可以大概判断出这颗芯片的定位),应用范围从消费级到车规级(注意,级别不同,对芯片稳定性的要求差别是很大的,比如工业级的芯片一般要求芯片在零下 40度到正85度的环境温度中能正常工作,不能出问题,而消费级别的芯片则没有这么苛刻,它侧着强大的音视频处理能力。 所以大家在设计产品,做方案选型的时候,一定要理清楚这些芯片所面向的应用场景。本文所提到的 EK140 这款开发板所使用的 i.MX6 ULL 主要是面向低成本的设计,CPU 为单核 Cortex A7,标准运行频率为 528MHZ,据说超频可以到 900MHZ,没有 GPU、HDMI,但是它也有明显的有点,比如它有8路 UART,还带有两路 CAN,非常适合需要数据传送通路比较多的工业控制领域,所以如果想跑 Android 这种侧重图形应用的操作系统就不合适,但是在成本敏感的领域,却是一个不错的选择。 ## 2、外观 开发板外形 ![](https://cf05.ickimg.com/bbsimages/201908/428d52fcf372d3e2685023fe0ddd7648.png) 中间的红色的方框内封的是 CPU、DDR、NAND,左下角那个小芯片看不清,不知道是什么。 这里面需要注意的是 Debug 口,板子上已经加了一颗 SP3232 芯片,把 UART 出来的 TTL 电平转换为 RS232 电平,所以这里需要接 RS232 接口,如果接 TTL 接口的转接芯片,是不能正常输出打印信息的。 ![](https://cf05.ickimg.com/bbsimages/201908/e42f72f8e55ad41a7e0931bf04932abd.jpg) ![](https://cf05.ickimg.com/bbsimages/201908/5e410acc4f304bec39ac055affed86d3.png) 背面带有 TF 卡插槽,这颗芯片支持从 TF 卡启动,有机会可以试试。 ## 3、上电 开发板通过 Micro USB 供电,所以接上 USB 就会自动启动,连上 RS232 转 USB 线,可以看到启动 log。 ![](https://cf05.ickimg.com/bbsimages/201908/1bc13a48eceddad2ef85dd4d88635f6e.gif) 启动到最后要求输入登录用户名:root, 不需要密码就可以直接进入命令行。 从启动 log 中我们还是可以看到很多关于这块板子的信息。 ## 4、运行自己编译的内核 EK140 板子上带有一个以太网口,这给我们提供了很方便的途径来更新自己编译的内核:通过 tftp 把自己编译的内核下载到板子的 ddr 上然后启动,这样做的好处是不用烧写固件到 eMMC 上,也就不用但系破坏板子上自带的系统了,万一自己编译的固件有问题,仅仅这一次起不来,下次还可以以板子上原有的固件启动。如果固件测试正常后,可以通过相关命令写到 eMMC 里面固化。 ### 4.1 搭建 tftp 服务器 tftp 服务是在局域网内通过 tftp 把文件从 tftp 服务器(开发电脑主机)上下载到开发板上,所以我们先要确保开发主机上有运行 tftp 服务。 如果电脑上没有安装 tftp 相关服务,通过如下命令安装: ``` sudo apt install xinetd tftpd-hpa ``` 安装完成后会在你的电脑上自动生成如下目录:`/var/lib/tftpboot/` ### 4.2 下载内核镜像 然后把你编译好的内核 zImage 和 dtb 拷贝到 tftpboot 目录 ``` sudo cp arch/arm/boot/zImage /var/lib/tftpboot/imx-zImage sudo cp arch/arm/boot/dts/myimx6ek140-6y-256m-emmc.dtb /var/lib/tftpboot/ ``` U-Boot 启动过程中有一个读秒的过程,在读秒结束前敲键盘上的任意按键会进入 U-Boot 交互命令行。在命令行里通过 `printenv` 命令可以看到默认设置的各种启动参数: ![](https://cf05.ickimg.com/bbsimages/201908/732773d64ca960620bf084265bf81d72.png) 这里面有些比较关键的信息需要注意: ipaddr 和 serverip 分别是开发板的 ip 地址和 tftp 服务器的ip 地址,所以这里你要根据自己的网段情况改成和自己网段相匹配的地址,注意开发板的 ipaddr 要选一个和本网段内其他机器不冲突的: ``` setenv ipaddr 172.16.12.49;setenv gateaway 172.16.121;setenv serverip 172.16.12.67 ``` fdt_addr_r 和 kernel_addr_r 分别是 dtb 和 kernel zImage 下载到 ddr 中的目标地址,下载命令如下: ``` tftp 0x80800000 imx-zImage; tftp 0x83000000 myimx6ek140-6y-256m-emmc.dtb ``` 要注意这里的文件名字要和主机 tftpboot 目录下一致。如果一切顺利,大概场景如下: ![](https://cf05.ickimg.com/bbsimages/201908/507697c5c2f075f493d64093501d3e3f.png) 这说明 imx-zImage 和 dtb 已经下载到 ddr 上对应的地址上了。 ### 4.3 启动 - 设置传递给内核的 cmdline 信息 ``` run bootargs_mmc ``` 因为我这里是从 mmc 加载 rootfs,所以运行的是 bootargs_mmc,根据 rootfs 启动介质的不同,还有 bootargs_net 通过nfs 启动,bootargs_mfg 从 nand 启动。 - 启动内核 ``` run bootzcmd ``` 如果一切顺利,会从串口上看到内核启动的信息,并能顺利进入命令行: ![](https://cf05.ickimg.com/bbsimages/201908/508b2a074ed1bc83ce32d86f175da422.png) ## 5、参考资料 - http://wiki.myzr.com.cn/index.php?title=MY-IMX6-EK140
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
HackforFun
擅长:消费电子
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交