色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ElfBoard技術貼|如何在NXP源碼基礎上適配ELF 1開發板的UART功能

ElfBoard ? 2024-09-25 13:56 ? 次閱讀

UART即通用異步收發器,是一種支持全雙工串行通信協議的接口。在i.MX6ULL處理器平臺上,該處理器原生支持多達8路的UART接口,提供了豐富的串行通信能力。


針對ELF 1開發板,實際引出了4路UART接口供開發者使用,具體包括UART1、UART2、UART3以及UART7。其中UART1用于調試,UART2、UART3用于連接RS485收發芯片,UART7連接TTL轉RS232芯片。


接下來,我們將針對上述幾個UART接口逐一進行詳細的配置說明。本次源碼適配工作是在NXP i.MX6ULL EVK評估板的Linux內核源碼(特定版本:Linux-imx_4.1.15)基礎上進行的,以確保UART接口能夠正確無誤的在ELF 1開發板上工作。

一、 準備工作

NXP源碼路徑:ELF1開發板資料包\07-NXP 原廠資料\07-1 NXP官方源碼\linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2

1、將NXP源碼拷貝到開發環境home/root/work目錄下解壓

elf@ubuntu:~/work$ tar jvxf linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2 elf@ubuntu:~/work$ cd linux-imx-imx_4.1.15_2.0.0_ga/ elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ls

2、添加默認配置文件

將arch/arm/configs路徑下的imx_v7_mfg_defconfig復制一份,命名為imx6ull_elf1_defconfig

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ cp arch/arm/configs/imx_v7_mfg_defconfig arch/arm/configs/imx6ull_elf1_defconfig

3、添加ELF 1設備樹

將arch/arm/boot/dts路徑下的imx6ull-14x14-evk.dts復制一份,命名為imx6ull-elf1-emmc.dts

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ cp arch/arm/boot/dts/imx6ull-14x14-evk.dts arch/arm/boot/dts/imx6ull-elf1-emmc.dts

打開arch/arm/boot/dts/Makefile,找到CONFIG_SOC_IMX6ULL,將imx6ull-elf1-emmc.dts添加到Makefile中

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vi arch/arm/boot/dts/Makefile

wKgaomaEozOACVa-AAJgRX4X_ao385.png

4、建立交叉編譯腳本

建立一個編譯腳本build.sh

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vim build.sh

添加以下內容,保存退出

#!/bin/bash export CPUS=`grep -c processor /proc/cpuinfo` source /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi make distclean make imx6ull_elf1_defconfig make -j${CPUS} rm -rf ./.tmp make modules_install INSTALL_MOD_PATH=./.tmp/rootfs/ cd .tmp/rootfs/ tar -jcvf modules.tar.bz2 *

給予腳本權限

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ chmod 777 build.sh

二、適配UART

1、硬件原理

(1)UART1

wKgaombziNmAZXLHAAt3ivxgEvg416.pngwKgZombziNiAIt9kAACE-H_5DSU355.png

從原理圖中可以得到我們使用的UART1_RXD和UART1_TXD引腳對應的連接器引腳編號分別為27和28。

通過查表可以得到27和28的PAD NAME分別為UART1_RX_DATA和UART1_TX_DATA。

wKgaombziPKAQfunAAAzezsCapI852.png

(2)UART2

wKgZombziQ-AYzvcAAv481AiGVA377.pngwKgZombziQ-AbrVSAA1CoX7sQoQ480.png

從原理圖中可以得到我們使用的UART2_RXD和UART2_TXD引腳對應的連接器引腳編號分別為72和73。

通過查表可以得到72和73的PAD NAME分別為UART2_RX_DATA和UART2_TX_DATA。

wKgaombziSqAalscAAA0HxzC52c171.png

(3)UART3

wKgaombziUGAHVEzAA63IRXXR9c000.pngwKgZombziUGAdem-AACgEFyXqnc657.png

從原理圖中可以得到我們使用的UART3_RXD和UART3_TXD引腳對應的連接器引腳編號分別為77和78。

通過查表可以得到77和78的PAD NAME分別為UART3_RX_DATA和UART3_TX_DATA。

wKgZombziV-AfXM8AAA1e2suR1Y618.png

(4)UART7

wKgaombzoQKAULl2AA3Z37WV2WU848.pngwKgZombzoQGAPoE9AAClH7OqdmI102.png

從原理圖中可以得到我們使用的UART7_RXD和UART7_TXD引腳對應的連接器引腳編號分別為114和115。

通過查表可以得到114和115的PAD NAME分別為LCD_DATA17和LCD_DATA16。

wKgZombzoSaANKfyAAA3b01sMQo325.png

2、IOMUX配置

確定好引腳之后,我們就可以在設備樹中添加相關引腳的IOMUX配置。
(1)UART1、UART2打開NXP BSP的arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件,可以看到關于UART1和UART2的IOMUX配置信息,這是因為,i.MX6ULL EVK板也引出了UART1(UART1一般都是作為調試串口使用)和UART2。
既然已經有了UART1和UART2的IOMUX配置,那我們就只需對比一下其配置的相應引腳跟ELF1開發板使用的引腳是否一致即可。上一節中已經確定了我們使用的UART1和UART2對應的引腳PAD NAME,UART1:UART1_RX_DATA和UART1_TX_DATA,UART2:UART2_RX_DATA和UART2_TX_DATA,對比arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件中已配置好的IOMUX信息,可以看到是一致的:

wKgZombzoVGACiqaAAC_Ldt2wT8228.png

由上圖可知,UART2的IOMUX節點uart2grp下配置了流控引腳RTS和CTS,我們板子沒有引出流控引腳,所以這里注釋掉流控配置:

wKgaombzoXuAHFonAAC_JIfBlTM948.png

(2)UART3

由上一節確定了我們使用的UART3收發引腳PAD NAME分別為UART3_RX_DATA和UART3_TX_DATA。
在arch/arm/boot/dts/imx6ul-pinfunc.h文件中分別搜索UART3_RX_DATA和UART3_TX_DATA,找到其復用成UART功能的宏:

MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX

然后在arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件建立UART3的IOMUX配置節點,并添加上這兩條宏配置,其PAD寄存器的值參考了UART1和UART2:

pinctrl_uart3: uart3grp { fsl,pins = < MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b0b1 MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1 >; };

添加后效果如下:

wKgZombzoc6AXcnHAADA0gL2RDw675.png

(3)UART7

同理,UART7的PAD NAME分別為LCD_DATA17和LCD_DATA16,在arch/arm/boot/dts/imx6ul-pinfunc.h文件中分別搜索LCD_DATA17和LCD_DATA16,找到其復用成UART功能的宏:

MX6UL_PAD_LCD_DATA17__UART7_DCE_RX MX6UL_PAD_LCD_DATA16__UART7_DCE_TX

在arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件建立UART7的IOMUX配置節點,并添加上這兩條宏配置:

pinctrl_uart7: uart7grp { fsl,pins = < MX6UL_PAD_LCD_DATA17__UART7_DCE_RX 0x1b0b1 MX6UL_PAD_LCD_DATA16__UART7_DCE_TX 0x1b0b1 >; };

添加后效果如下:

wKgZombzovaAXbByAACczd5dRO8298.png

注意:LCD_DATA17和LCD_DATA16這兩個引腳默認復用為了LCD的data17和data16功能,所以,需要注釋掉這兩個引腳的LCD復用,在pincrtl_lcdif_dat節點中:

wKgZombzov2AVdmkAAGV_tbZa74264.png

3、添加設備節點

UART1-UART8的設備節點在arch/arm/boot/dts/imx6ull.dtsi設備樹文件中已經存在,我們只需在arch/arm/boot/dts/imx6ull-elf1-emmc.dts將需要的UART使能即可,如已經使能的UART1:

&uart1 { pinctrl-names = “default”; pinctrl-0 = <&pinctrl_uart1>; status = “okay”; }

使能UART功能主要是設置pinctrl-0屬性和status屬性,pinctrl-names屬性設置pingctrl的name,不是必需的,pinctrl-0屬性主要用于配置UART接口相關引腳的IOMUX,status屬性主要是使能該串口功能。UART2也已經配置好,我們只需將其中的流控功能去掉就可以了:

&uart2 { pinctrl-names = “default”; pinctrl-0 = <&pinctrl_uart2>; /* fsl,uart-has-rtscts; */ /* for DTE mode,add below change */ /* fsl,dte-mode; */ /* pinctrl-0 = <&pinctrl_uart2dte>; */ status = “okay”; }

wKgZombzo2SAGXhoAACMd3fYr3Q947.png

依照上述方法,依次添加UART3和UART7節點相關屬性:

&uart3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart3>; status = "okay"; }; &uart7 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart7>; status = "okay"; };

添加后效果如下:

wKgaombzpJGAMWGSAADqPJqrpZM161.png

4、編譯

單獨編譯設備樹:

. /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make dtbs

使用scp將設備樹拷貝到開發板:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf\1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/

進行sync操作后重啟開發板:

wKgaomXq0qKAduI_AAAdZ8LYDwM472.png

啟動之后,可以看到在/dev目錄下生成節點ttymxc0、ttymxc1、ttymxc2、ttymxc6,分別對應我們添加的UART1,UART2,UART3,UART7。

wKgZombzpNeAehVlAAAh2ZQiHlA809.png

三、測試

我們對UART2\UART3\UART7進行測試(UART1是調試串口,這里不測試),UART2和UART3分別對應板子上的RS485_1和RS485_2,我們將RS485_1和RS485_2進行收發互測,將兩路RS485的A1-A2和B1-B2進行相連。UART7對應RS232,我們收發短接測試,將TX-RX收發互連。

wKgaombzpPiAd3DIAABERJ4K7f8060.pngwKgZombzpRuAAL4zAAwb7TpHBXw127.png

可以直接使用開發板文件系統/usr/bin/下的elf1_cmd_serialport進行測試。測試RS485_1(UART2)和RS485_2(UART3)輸入以下命令,注意空格:

root@ELF1:~# elf1_cmd_serialport ttymxc1 & root@ELF1:~# elf1_cmd_serialport ttymxc2 -o -b 9600 -t aabbccddeeff 1

wKgaombzpTmAI7zOAABogWW28vo706.png

上圖顯示信息中/dev/ttymxc2 nwrite表示通過RS485_2(UART3)發送的具體數據,/dev/ttymxc1 nread表示通過RS485_1(UART2)接收到的數據。測試RS232(UART7)使用命令:

root@ELF1:~# elf1_cmd_serialport ttymxc6 -o -b 9600 -t aabbccddeeff 1

wKgZombzpV2AHKWbAAA3KJQfuuU952.png

至此,就完成了在NXP源碼基礎上適配ELF 1開發板的UART功能,期望這份詳實的指南能為正在閱讀的小伙伴帶來實質性的助益與啟發。在開發之旅上,愿我們攜手共進,探索無限可能。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5083

    文章

    19131

    瀏覽量

    305456
  • 恩智浦
    +關注

    關注

    14

    文章

    5861

    瀏覽量

    107507
  • Linux
    +關注

    關注

    87

    文章

    11310

    瀏覽量

    209594
  • 開發板
    +關注

    關注

    25

    文章

    5059

    瀏覽量

    97535
收藏 人收藏

    評論

    相關推薦

    ELF 1技術|在NXP源碼基礎上適配開發板的按鍵功能

    ELF1開發板。接下來,我們將詳細闡述適配過程中關于按鍵功能實現的完整步驟。值得一提的是,ELF1開發
    的頭像 發表于 03-08 16:58 ?969次閱讀
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|在<b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎上</b><b class='flag-5'>適配</b><b class='flag-5'>開發板</b>的按鍵<b class='flag-5'>功能</b>

    何在NXP源碼基礎上適配ELF 1開發板的PWM功能

    本次源碼適配項目是在NXP i.MX6ULL EVK評估所搭載的Linux內核源碼(版本為Linux-imx_4.1.15)
    的頭像 發表于 09-10 10:00 ?942次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎上</b><b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發板</b>的PWM<b class='flag-5'>功能</b>

    ElfBoard技術|ELF 1開發板適配攝像頭詳解

    ELF1ELF1S開發板適配的OV5640攝像頭,集成了CMOS圖像傳感器,作為一款500萬像素級別的攝像頭,不僅能夠支持最高達2592x1944分辨率的QSXGA圖像輸出,幀率可達
    的頭像 發表于 12-27 10:16 ?505次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發板</b><b class='flag-5'>適配</b>攝像頭詳解

    嵌入式學習-ElfBoard ELF 1板卡-在nxp源碼基礎上適配ELF 1開發板的LED功能

    源碼適配即在NXP i.MX6ULL EVK評估對應的Linux內核源碼(linux-imx_4.1.15 版本)
    發表于 01-05 14:35

    飛凌ElfBoard ELF 1板卡-如何在ELF 1開發板實現對java的支持

    Java作為一種功能強大且廣泛應用的編程語言,具有廣泛的適應性和實用性。在ELF 1開發板上集成Java支持,無疑將賦予嵌入式開發者更廣闊的
    發表于 03-20 09:51

    飛凌嵌入式ElfBoard ELF 1板卡-在NXP源碼基礎上適配ELF 1開發板的按鍵功能

    的鍵值是103,KEY3上報的鍵值是108,與在設備樹中配置的鍵值一致。 至此,就完成了在NXP源碼基礎上適配ELF
    發表于 07-03 09:07

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-在NXP源碼基礎上適配ELF 1開發板的按鍵功能

    的鍵值是103,KEY3上報的鍵值是108,與在設備樹中配置的鍵值一致。 至此,就完成了在NXP源碼基礎上適配ELF
    發表于 07-04 09:11

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內核移植之內核簡介

    \\02-Linux 源代碼\\02-0 出廠內核和uboot源碼\\內核源碼\\linux-4.1.15-elf1.tar.bz2后面我們也會介紹如何在
    發表于 12-13 09:03

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-Linux內核移植之內核簡介

    開發板資料包\\02-Linux 源代碼\\02-0 出廠內核和uboot源碼\\內核源碼\\linux-4.1.15-elf1.tar.bz2 后面我們也會介紹如
    發表于 12-16 13:08

    ELF 1技術|在NXP源碼基礎上適配ELF 1開發板的LED功能

    本次源碼適配工作是在NXPi.MX6ULLEVK評估的Linux內核源碼(特定版本:Linux-imx_4.1.15)基礎上進行的。主要目
    的頭像 發表于 12-29 10:04 ?862次閱讀
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|在<b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎上</b><b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發板</b>的LED<b class='flag-5'>功能</b>

    ELF 1技術|如何將Python3.6.9移植到開發板

    如何進行交叉編譯并移植到ELF1開發板。在網址:https://www.python.org/ftp/python/下載Python-3.6.9.tar.xz壓縮
    的頭像 發表于 02-22 14:06 ?435次閱讀
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|如何將Python3.6.9移植到<b class='flag-5'>開發板</b><b class='flag-5'>上</b>

    ELF技術|如何在開發板實現對Java的支持

    Java作為一種功能強大且廣泛應用的編程語言,具有廣泛的適應性和實用性。在ELF1開發板上集成Java支持,無疑將賦予嵌入式開發者更廣闊的選擇空間,今天就為各位小伙伴詳細解析如
    的頭像 發表于 03-13 16:47 ?517次閱讀
    <b class='flag-5'>ELF</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|如<b class='flag-5'>何在</b><b class='flag-5'>開發板</b><b class='flag-5'>上</b>實現對Java的支持

    ElfBoard技術|在NXP源碼基礎上適配ELF 1開發板的按鍵功能

    本次源碼適配工作是在NXPi.MX6ULLEVK評估的Linux內核源碼(特定版本:Linux-imx_4.1.15)基礎上進行的。主要目
    的頭像 發表于 07-10 09:54 ?619次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|在<b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎上</b><b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發板</b>的按鍵<b class='flag-5'>功能</b>

    ElfBoard技術|如何在ELF 1開發板搭建流媒體服務器

    流媒體服務器是一種專門用于傳輸實時數據流的服務器軟件,廣泛用于視頻直播、視頻會議、音頻播放等應用場景。在嵌入式開發領域,將流媒體服務器部署到開發板可以實現諸如視頻監控、實時數據傳輸等功能
    的頭像 發表于 08-20 14:48 ?573次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|如<b class='flag-5'>何在</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發板</b><b class='flag-5'>上</b>搭建流媒體服務器

    NXP源碼基礎上如何適配ELF 1開發板UART功能

    UART即通用異步收發器,是一種支持全雙工串行通信協議的接口。在i.MX6ULL處理器平臺上,該處理器原生支持多達8路的UART接口,提供了豐富的串行通信能力。 針對ELF 1
    的頭像 發表于 09-29 11:49 ?361次閱讀
    在<b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎上</b>如何<b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發板</b>的<b class='flag-5'>UART</b><b class='flag-5'>功能</b>
    主站蜘蛛池模板: 国产精品成人久久久久A伋| 最近的2019中文字幕国语完整版 | 久久亚洲伊人中字综合精品| 亚洲人成人毛片无遮挡| 国产午夜精品理论片久久影视| 色姊姊真舒服| 国产乱人伦AV麻豆网| 午夜国产精品影院在线观看| 国产成人精品视频播放| 四虎影院网红美女| 国产色精品久久人妻无码看片软件 | 久久综合给合久久狠狠狠…| 曰本真人00XX动太图| 老师真棒无遮瑕版漫画免费| 99精品视频在线观看re| 人妖干美女| 国产精品国产三级国产an| 新香蕉少妇视频网站| 黄页网址大全免费观看| 中文乱码35页在线观看| 女人一级毛片免费视频观看| qvod在线| 我和妽妽在厨房里的激情区二区 | 99精品小视频| 日日干夜夜啪蕉视频| 国产乱对白精彩在线播放| 亚洲精品一线二线三线无人区| 久久免费国产| 憋尿调教绝望之岛| 新版孕妇bbwbbwbbw| 久久综合给会久久狠狠狠| ASIAN大陆明星裸休合成PICS| 日韩视频中文字幕精品偷拍| 国产精品人妻无码99999| 在教室轮流被澡高H林萌| 欧美日韩在线亚洲一| 国产精品内射久久久久欢欢 | av淘宝 在线观看| 午夜十八岁禁| 美女网站免费久久久久久久| 高潮久久久久久久久不卡 |