首页
壁纸
直播
留言板
更多
视频
统计
友情链接
实用工具
Search
1
给孙小姐的一封情书
321 阅读
2
LabVIEW | 各版本及开发工具模块下载
172 阅读
3
armUbuntu系统构建
150 阅读
4
OpenWRT | 作为 旁路由/单臂路由/透明网关 设置 DDNS
150 阅读
5
armUbuntu | 开发板 移植 openssl 库
131 阅读
取次花丛懒回顾
默认分类
C#
MySQL
LabVIEW
Java
Android
PHP
Python
handsome
相册
百度地图
嵌入式
嵌入式Ubuntu
I.MX6ULL
linux
Unity
Golang
Rust
OpenHD
教学计划
Search
标签搜索
C#
handsome
Git
动态壁纸
开源
Unity3d
Unity
csharp
魔傲手记
累计撰写
161
篇文章
累计收到
22
条评论
首页
栏目
取次花丛懒回顾
默认分类
C#
MySQL
LabVIEW
Java
Android
PHP
Python
handsome
相册
百度地图
嵌入式
嵌入式Ubuntu
I.MX6ULL
linux
Unity
Golang
Rust
OpenHD
教学计划
页面
壁纸
直播
留言板
视频
统计
友情链接
实用工具
搜索到
7
篇与
的结果
2025-03-27
I.MX6ULL || 工具下载
开发板相关小计拨码开关拨码开关状态功能1 0 1 0 0 1 1 0EMMC 启动1 0 0 0 0 0 1 0SD卡启动1 0 0 0 1 0 0 1NAND FLASH 启动0 1 x x x x x x串行下载(烧写镜像文件)刷机工具(Windows)开发板需要拨码开关拨到下载模式,然后通电,连接OTG口工具可以自动识别(免驱的)驱动了 4G 模块(ME3630 4G 模块)和5路串口(urat1-uart5)下载地址:https://cnwy.lanzouo.com/itnP72rtcsfe 备用下载:mfgtool_withmem3630ppp_com5.7z使用的根文件系统为 Ubuntu 16.04.7 LTS,ttymxc0 配置成调试端口(com登录口)zImage 文件:主要更改 模块驱动(.c文件编辑方面):添加USB设备信息(ME3630 PID 和 VID 信息);添加 ECM 支持程序(ME3630支持EMC接口联网,所以内核也添加了EMC支持)主要更改 模块驱动(Linux内核配置方面,菜单配置):使能 USBNET 功能,路径如下:-> Device Drivers -> -*- Network device support -> USB Network Adapters -> -*- Multi-purpose USB Networking Framework使能 USB 串口 GSM、CDMA 驱动,路径如下:-> Device Drivers -> [*] USB support -> <*> USB Serial Converter support -> <*> USB driver for GSM and CDMA modems使能 USB 的 CDC ACM 模式,配置路径如下:-> Device Drivers -> [*] USB support -> <*> Support for Host-side USB -> <*> USB Modem (CDC ACM) support主要更改 ppp联网(.c文件编辑方面):打开 Linux 内核的 ppp 功能,配置路径如下:-> Device Drivers -> [*] Network device support -> <*> PPP (point-to-point protocol) support -> <*> PPP BSD-Compress compression -> <*> PPP Deflate compression -> [*] PPP filtering -> <*> PPP MPPE compression (encryption) -> [*] PPP multilink support -> <*> PPP over Ethernet -> <*> PPP support for async serial ports -> <*> PPP support for sync tty portsdtb 文件们:比较复杂不在此处列举,详情查看这个文章:https://blog.1okk.com/archives/408.html
2025年03月27日
8 阅读
0 评论
0 点赞
2025-03-27
I.MX6ULL || 开发板多路串口配置
前言学习过正点原子I.MX6ULL开发板的小伙伴知道正点原子I.MX6ULL开发板出厂默认配置了两路串口,其中一路UART1用于打印开发板串口调试信息、一路UART3可以用于串口通信。但是有的小伙伴觉得意犹未尽,看到开发板上有UART2、UART4、UART5的管脚,但是出厂系统上却没有配置这些,只能干着急。不用怕,I.MX6ULL开发板多路串口配置方法,今天它来了。 首先先帮一些小伙伴解决一些疑惑:一、为什么出厂系统上不配置多路串口呢?因为开发板的一个管脚可以配置多种复用功能,我们可以通过修改设备树来实现自己需要的功能,出厂系统为了功能更全面些,把管脚外设都分配好了,所以一些管脚就没配置成串口功能,而是配置成了I2C等这些功能了。如果配置了多路串口的话,出厂系统上可能某些默认的管脚配置就不一样了,具体可以看下设备树修改的地方。 二、我没改过设备树怎么办?有学习过正点原子Linux驱动开发指南的小伙伴修改设备树顺心应手,没有学习过的小伙伴也不着急,通过学习这篇文章你也可以自己修改,配置出多路串口也是一种小小的成就有木有。当然啦,如果是想直接使用修改好的设备树的小伙伴,也可以直接下载链接里的设备树,替换到出厂烧录工具里直接烧录后使用。 修改好的设备树文件下载链接:https://pan.baidu.com/s/1UbCsM3Ube5ePJdnSVWrmjg提取码:8w0b修改好多路串口的烧录工具:https://pan.baidu.com/s/1ykt-SCDwYGZECd6gOkE5ng提取码:7gf9话已至此,让我们动手吧。目的修改正点原子I.MX6ULL出厂系统内核源码设备树,实现开发板UART2\3\4\5多路串口的功能。硬件信息I.MX6ULL阿尔法开发板板载了uart1和uart3的接口,以及一排32pin的排针。出厂系统默认配置了uart1(ttymxc0)和uart3(ttymxc2),其中uart1做debug信息调试使用。排针上有引出uart2(ttymxc1)、uart3(ttymxc2)、uart4(ttymxc3)和uart5(ttymxc4)。板子上有多个uart3的丝印,我们只要选择一组即可。使用源码正点原子Uboot和Linux出厂源码,linux-imx-4.1.15-2.1.0-g14132a2-v1.8.tar.bz2(注意:这里笔者使用的是v1.8版本的出厂源码,其他版本的也是一样的)我们将这个源码拷贝到Ubuntu下解压,用vscode打开,方便我们修改。我们主要修改的是内核源码的arch\arm\boot\dts目录下的设备树文件。UART2配置首先确认UART2串口功能的定义。打开arch\arm\boot\dts\imx6ul-pinfunc.h文件。为什么是imx6ul-pinfunc.h,不是应该在imx6ull-pinfunc.h里找吗?因为打开imx6ull-pinfunc.h,可以看到里面的定义很少,而且引用了imx6ul-pinfunc.h这个头文件,说明imx6ull和imx6ul的大部分引脚复用功能是一样的,不一样的只是imx6ull-pinfunc.h这个文件里多定义了一些imx6ul没有的,因此要在imx6ul-pinfunc.h中才能搜索到UART2的功能引脚。在 imx6ul-pinfunc.h 文件搜索:MX6UL_PAD_UART2_TX_DATA,可以看到这个管脚的复用功能,如下图所示。这里可以看到MX6UL_PAD_UART2_TX_DATA管脚作为UART2的TX功能的话,其定义的名字是MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX。同理搜索MX6UL_PAD_UART2_RX_DATA,可以知道此管脚做UART2的RX功能的话,其定义的名字是MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX。打开设备树imx6ull-14x14-evk.dts,修改pinctrl信息,将UART2的流控注释。检查功能引脚是否存在其他复用,在设备树文件中搜索PAD_UART2_TX_DATA和 PAD_UART2_RX_DATA。找到 pinctrl_uart2dte节点和pinctrl_ecspi3节点里有用到这两个管脚的地方,将其注释掉。添加/修改节点标签&uart2,status修改为okay,修改完如下。至此,UART2串口功能配置完成。UART3配置出厂系统上默认配置了UART3串口功能了,这里不需要修改。UART4配置在imx6ul-pinfunc.h文件中搜索UART4_TX_DATA和UART4_RX_DATA得到UART4收发引脚的定义,即:MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX修改设备树imx6ull-14x14-evk.dts,搜索uart4,注释掉相关复用管脚功能。添加uart4节点(小贴士:可以拷贝uart3的来修改)添加/修改节点标签&uart4(小贴士:可以拷贝uart3的来修改)至此,UART4串口功能配置完成。UART5配置在imx6ul-pinfunc.h文件中搜索UART5_TX_DATA和UART5_RX_DATA得到UART5收发引脚的定义,即MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX这里值得注意的是,NXP官方源码这里寄存器配置有点问题,配置完只能发送不能接收,所以需要处理下。具体说明可以参考https://blog.1okk.com/archives/377.html这个帖子。需要进行以下修改:要将#defineMX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX0x00C00x034C 0x0644 0x0 0x5改为#defineMX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX0x00C00x034C 0x0644 0x0 0x7保存文件,修改完的配置:修改设备树imx6ull-14x14-evk.dts,搜索uart5,注释掉相关复用管脚功能。disabled掉相关复用节点。添加uart5节点。添加uart5节点标签至此uart5的修改已经完成了,记得保存修改好的文件。编译生成设备树打开终端,进到出厂内核源码目录下,执行build.sh脚本开始编译。(前提是按照【正点原子】I.MX6U用户快速体验.pdf文档第四章安装好出厂交叉编译器)如果没有修改错误的话,编译成功的设备树会复制到内核源码的tmp目录下。多路串口测试拷贝一份正点原子出厂烧录工具到桌面上,把前面编译生成的全部设备树拷贝替换到烧录工具的mfgtool\Profiles\Linux\OSFirmware\files\boot中即可。然后执行烧录脚本烧写到板子上。如果不会使用出厂烧录工具的小伙伴,可以先学习下《【正点原子】I.MX6U用户快速体验.pdf》这个文档第二章。启动开发板,进入文件系统,输入ls/dev可以查看到串口设备,分别为ttymxc0(对应uart1)、ttymxc1(对应uart2)、ttymxc2(uart3)、ttymxc3(uart4)、ttymxc4(对应uart5)这里笔者使用正点原子的USB转TTL串口模块用于测试。串口模块RXD接口接开发板排针的U2_TX,串口模块TXD接口接开发板排针的U2_RX,GND接GND。查看设备管理器中串口端口号,这里为笔者USB串口模块为COM3。开发板UART1用于查看信息,这里笔者为COM5。打开USB串口模块终端软件xcom,设置波特率115200,8N1,取消勾选流控制。在开发板系统中使用microcom工具进行串口测试。这里注意下,microcom默认没有本地回显,大家可以学习驱动开发指南63.6.2小节的minicom工具来测试,这里笔者为方便大家快速测试,使用的是microcom工具。输入指令microcom/dev/ttymxc1 -s 115200,测试uart2收发功能。在COM3端输入,在COM5端就会打印,如下图所示。在COM5端输入,在COM3端就会打印,如下图所示。测试uart2收发功能完成。接下来测试uart3,开发板系统输入ctrl和x键可以退出测试。串口模块RXD接口接开发板排针的U3_TX,串口模块TXD接口接开发板排针的U3_RX,GND接GND。开发板系统输入microcom/dev/ttymxc2 -s 115200,测试方法和uart2一样。测试uart3收发功能完成。接下来测试uart4,开发板系统输入ctrl和x键可以退出测试。串口模块RXD接口接开发板排针的U4_TX,串口模块TXD接口接开发板排针的U4_RX,GND接GND。开发板系统输入microcom/dev/ttymxc3 -s 115200,测试方法和uart3一样。测试uart4收发功能完成。接下来测试uart5,开发板系统输入ctrl和x键可以退出测试。串口模块RXD接口接开发板排针的U5_TX,串口模块TXD接口接开发板排针的U5_RX,GND接GND。开发板系统输入microcom/dev/ttymxc4 -s 115200,测试方法和uart4一样。至此,多路串口配置修改及测试完成。
2025年03月27日
8 阅读
0 评论
0 点赞
2025-03-27
I.MX6ULL || UART5问题
最近调试IMX6ULL新项目,配置了UART1~UART6(arm下映射成ttymxc0~ttymxc5),短接了RX和TX用minicom测试了UART1~ttymxc6,发现UART5只能发,不能收。后来配置成GPIO的方式调试,确认UART5的RX和TX的硬件连接没有问题。最后结合datasheet和imx6ull-pinfunc.h,发现是freescale官方配置管脚寄存器的值有错误。下面记录一下:管脚配置: pinctrl_uart5: uart5grp { fsl,pins = < MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x1b0b1 MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX 0x1b0b1 >; }; ...... &uart5 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart5>; status = "okay"; };imx6ull.dtsi 下包含了imx6ull-pinfunc.h 管脚寄存配置头文件/* * Copyright 2015-2016 Freescale Semiconductor, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include <dt-bindings/clock/imx6ul-clock.h> #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/interrupt-controller/arm-gic.h> #include "imx6ull-pinfunc.h" #include "imx6ull-pinfunc-snvs.h" #include "skeleton.dtsi" / { aliases { can0 = &flexcan1; can1 = &flexcan2; ethernet0 = &fec1; ethernet1 = &fec2;打开imx6ull-pinfunc.h 发现,里面的内容就只有ENET2,LCD,CSI的一些管脚配置,其他部分跟IMX6UL的管脚配置头文件(imx6ul-pinfunc.h)共用 /* 2 * Copyright (C) 2016 Freescale Semiconductor, Inc. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 as 6 * published by the Free Software Foundation. 7 */ 8 9 #ifndef __DTS_IMX6ULL_PINFUNC_H 10 #define __DTS_IMX6ULL_PINFUNC_H 11 12 #include "imx6ul-pinfunc.h" 13 /* 14 * The pin function ID is a tuple of 15 * <mux_reg conf_reg input_reg mux_mode input_val> 16 */ 17 #define MX6UL_PAD_ENET2_RX_DATA0__EPDC_SDDO08 0x00E4 0x0370 0x0000 0x9 0x0 18 #define MX6UL_PAD_ENET2_RX_DATA1__EPDC_SDDO09 0x00E8 0x0374 0x0000 0x9 0x0 19 #define MX6UL_PAD_ENET2_RX_EN__EPDC_SDDO10 0x00EC 0x0378 0x0000 0x9 0x0 20 #define MX6UL_PAD_ENET2_TX_DATA0__EPDC_SDDO11 0x00F0 0x037C 0x0000 0x9 0x0 21 #define MX6UL_PAD_ENET2_TX_DATA1__EPDC_SDDO12 0x00F4 0x0380 0x0000 0x9 0x0 22 #define MX6UL_PAD_ENET2_TX_EN__EPDC_SDDO13 0x00F8 0x0384 0x0000 0x9 0x0 23 #define MX6UL_PAD_ENET2_TX_CLK__EPDC_SDDO14 0x00FC 0x0388 0x0000 0x9 0x0 24 #define MX6UL_PAD_ENET2_RX_ER__EPDC_SDDO15 0x0100 0x038C 0x0000 0x9 0x0 25 #define MX6UL_PAD_LCD_CLK__EPDC_SDCLK 0x0104 0x0390 0x0000 0x9 0x0 26 #define MX6UL_PAD_LCD_ENABLE__EPDC_SDLE 0x0108 0x0394 0x0000 0x9 0x0 27 #define MX6UL_PAD_LCD_HSYNC__EPDC_SDOE 0x010C 0x0398 0x0000 0x9 0x0 28 #define MX6UL_PAD_LCD_VSYNC__EPDC_SDCE0 0x0110 0x039C 0x0000 0x9 0x0 29 #define MX6UL_PAD_LCD_RESET__EPDC_GDOE 0x0114 0x03A0 0x0000 0x9 0x0 30 #define MX6UL_PAD_LCD_DATA00__EPDC_SDDO00 0x0118 0x03A4 0x0000 0x9 0x0 31 #define MX6UL_PAD_LCD_DATA01__EPDC_SDDO01 0x011C 0x03A8 0x0000 0x9 0x0 32 #define MX6UL_PAD_LCD_DATA02__EPDC_SDDO02 0x0120 0x03AC 0x0000 0x9 0x0 33 #define MX6UL_PAD_LCD_DATA03__EPDC_SDDO03 0x0124 0x03B0 0x0000 0x9 0x0 34 #define MX6UL_PAD_LCD_DATA04__EPDC_SDDO04 0x0128 0x03B4 0x0000 0x9 0x0 35 #define MX6UL_PAD_LCD_DATA05__EPDC_SDDO05 0x012C 0x03B8 0x0000 0x9 0x0 36 #define MX6UL_PAD_LCD_DATA06__EPDC_SDDO06 0x0130 0x03BC 0x0000 0x9 0x0 37 #define MX6UL_PAD_LCD_DATA07__EPDC_SDDO07 0x0134 0x03C0 0x0000 0x9 0x0 38 #define MX6UL_PAD_LCD_DATA14__EPDC_SDSHR 0x0150 0x03DC 0x0000 0x9 0x0 39 #define MX6UL_PAD_LCD_DATA15__EPDC_GDRL 0x0154 0x03E0 0x0000 0x9 0x0 40 #define MX6UL_PAD_LCD_DATA16__EPDC_GDCLK 0x0158 0x03E4 0x0000 0x9 0x0 41 #define MX6UL_PAD_LCD_DATA17__EPDC_GDSP 0x015C 0x03E8 0x0000 0x9 0x0 42 #define MX6UL_PAD_LCD_DATA21__EPDC_SDCE1 0x016C 0x03F8 0x0000 0x9 0x0 43 44 #define MX6UL_PAD_CSI_MCLK__ESAI_TX3_RX2 0x01D4 0x0460 0x0000 0x9 0x0 45 #define MX6UL_PAD_CSI_PIXCLK__ESAI_TX2_RX3 0x01D8 0x0464 0x0000 0x9 0x0 46 #define MX6UL_PAD_CSI_VSYNC__ESAI_TX4_RX1 0x01DC 0x0468 0x0000 0x9 0x0 47 #define MX6UL_PAD_CSI_HSYNC__ESAI_TX1 0x01E0 0x046C 0x0000 0x9 0x0 48 #define MX6UL_PAD_CSI_DATA00__ESAI_TX_HF_CLK 0x01E4 0x0470 0x0000 0x9 0x0 49 #define MX6UL_PAD_CSI_DATA01__ESAI_RX_HF_CLK 0x01E8 0x0474 0x0000 0x9 0x0 50 #define MX6UL_PAD_CSI_DATA02__ESAI_RX_FS 0x01EC 0x0478 0x0000 0x9 0x0 51 #define MX6UL_PAD_CSI_DATA03__ESAI_RX_CLK 0x01F0 0x047C 0x0000 0x9 0x0 52 #define MX6UL_PAD_CSI_DATA04__ESAI_TX_FS 0x01F4 0x0480 0x0000 0x9 0x0 53 #define MX6UL_PAD_CSI_DATA05__ESAI_TX_CLK 0x01F8 0x0484 0x0000 0x9 0x0 54 #define MX6UL_PAD_CSI_DATA06__ESAI_TX5_RX0 0x01FC 0x0488 0x0000 0x9 0x0 55 #define MX6UL_PAD_CSI_DATA07__ESAI_T0 0x0200 0x048C 0x0000 0x9 0x0 56 57 #endif /* __DTS_IMX6ULL_PINFUNC_H */对比datasheet发现,IMX6UL 和IMX6ULL关于UART5_RX的功能选择有些差异:IMX6UL:(<mux_reg conf_reg input_reg mux_mode input_val>)#define MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x00C0 0x034C 0x0644 0x0 0x5IMX6ULL:(<mux_reg conf_reg input_reg mux_mode input_val>)所以总得来说,解决IMX6ULL UART5无法接受数据的的问题,需要imx6ul-pinfunc.h下的#define MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x00C0 0x034C 0x0644 0x0 0x5改为:#define MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x00C0 0x034C 0x0644 0x0 0x7问题解决。————————————————参考文章:https://blog.csdn.net/WXXGoodJob/article/details/82690386
2025年03月27日
11 阅读
0 评论
0 点赞
2023-11-08
i.mx6ull | 开发板系统更新笔记
暂无简介
2023年11月08日
50 阅读
0 评论
0 点赞
2023-10-31
Ubuntu | arm ubuntu armv7l 开发板 ubuntu 系统添加开机启动脚本
写一个守护进程,每10秒检测一次,如果存在就没事,如果不存在就启动添加sshd开机自启在目录/root/下创建sshd守护进程脚本sshd_daemon.sh#!/bin/bash while true;do count=`ps -ef |grep "/sbin/sshd" |grep -v "grep" |wc -l` # echo $count if [ $count -eq 0 ];then nohup /sbin/sshd >~/sshd.log 2>&1 & fi sleep 10 done在/etc/rc.local中添加守护进程执行/root/sshd_daemon.sh &重新启动一下开机服务以确保修改生效sudo systemctl restart rc-local.service添加pppd开机自启在目录/root/下创建sshd守护进程脚本ppp-on_daemon.sh#!/bin/bash while true;do count=`ps -ef |grep "/etc/gosuncn/gosuncn_ppp_dialer" |grep -v "grep" |wc -l` # echo $count if [ $count -eq 0 ];then cd /etc/gosuncn/ && nohup ./ppp-on >~/ppp-on.log 2>&1 & fi sleep 10 done在/etc/rc.local中添加守护进程执行/root/ppp-on_daemon.sh &重新启动一下开机服务以确保修改生效sudo systemctl restart rc-local.service两个添加完,/etc/rc.local完成文件如下:vim /etc/rc.localvim /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # rc.local this files is exist /etc/rc.local /root/sshd_daemon.sh & /root/ppp-on_daemon.sh & exit 0重新启动一下开机服务以确保修改生效sudo systemctl restart rc-local.service
2023年10月31日
62 阅读
0 评论
0 点赞
1
2