国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

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

王鑫 ? 來源:jf_11001711 ? 作者:jf_11001711 ? 2024-09-29 11:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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開發板資料包7-NXP 原廠資料7-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

wKgZomb4zkiAehupAAB1WkVXQrc743.jpg


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

wKgaomb4zkiAfPizAAArHF9JbLM620.jpg

chaijie_default.png

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

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

wKgZomb4zkmABsuRAAALUta8H0A746.jpg

添加圖片注釋,不超過 140 字(可選)

(2)UART2

wKgaomb4zkqAFrAbAABAZMF0FN4161.jpg


wKgZomb4zkqAAkLTAABO4CLsr3o330.jpg


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

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

wKgaomb4zkuADfd9AAANMlGQo0M039.jpg


(3)UART3

chaijie_default.png

添加圖片注釋,不超過 140 字(可選)

wKgZomb4zkyAMOq2AAA3EKsW7I8200.jpg


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

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

wKgZomb4zkyADEh1AAALpipN4l4881.jpg

(4)UART7

wKgaomb4zk2ADx8AAABHEqr38Y0096.jpg

chaijie_default.png

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

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

wKgZomb4zk6ARnIuAAAMTnbuMTE552.jpg

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信息,可以看到是一致的:

wKgaomb4zk6AQ9u6AAA6oGveB9A822.jpg

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

wKgZomb4zk-ACvOfAAA-pFOFN7o854.jpg

(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

>;

};

添加后效果如下:

wKgaomb4zk-AW9CfAAA_Arme-LM862.jpg


(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

>;

};

添加后效果如下:

wKgZomb4zlCAZqGkAAAvliMmlnE778.jpg


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

wKgZomb4zlCAG2S7AACHELbJtJw855.jpg


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”;

}

wKgaomb4zlGAZXR6AAAqBqiZwfY861.jpg


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

&uart3 {

pinctrl-names = "default";

pinctrl-0 = <&pinctrl_uart3>;

status = "okay";

};

&uart7 {

pinctrl-names = "default";

pinctrl-0 = <&pinctrl_uart7>;

status = "okay";

};

添加后效果如下:

chaijie_default.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-elf1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/

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

wKgZomb4zlKAXAqoAAAJyEvGxpw738.jpg

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

chaijie_default.png

三、測試

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

wKgaomb4zlOAUZK6AADB910h8ec468.png

添加圖片注釋,不超過 140 字(可選)

wKgZomb4zlOAe9HZAABZtJrFG7E002.jpg

可以直接使用開發板文件系統/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

wKgaomb4zlSAfo1dAAAuNnxWI3s096.jpg

上圖顯示信息中/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

wKgZomb4zlSAXBLwAAAZWO_iJ-k933.jpg

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

審核編輯 黃宇

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

    關注

    61

    文章

    1396

    瀏覽量

    197599
  • uart
    +關注

    關注

    22

    文章

    1314

    瀏覽量

    106634
  • 源碼
    +關注

    關注

    8

    文章

    685

    瀏覽量

    31317
  • elf
    elf
    +關注

    關注

    0

    文章

    13

    瀏覽量

    2547
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    ElfBoard技術貼|借助AI編程,輕松搞定ELF-RK3506開發板上光照傳感器的數據讀取

    特別感謝北京理工大學的李海老師提供以下文章,供大家學習與參考。一篇文章介紹了ELF-RK3506開發板搭建AI編程環境的方法,但測試場
    的頭像 發表于 01-29 16:55 ?1371次閱讀
    ElfBoard技術貼|借助AI編程,輕松搞定<b class='flag-5'>ELF</b>-RK3506<b class='flag-5'>開發板</b>上光照傳感器的數據讀取

    【超值首選!僅88元】ELF-RK3506開發板限時優惠震撼來襲

    ElfBoard特別推出了ELF-RK3506開發板,助力大家快速掌握實際應用場景下的嵌入式Linux開發技能?!拘阅茏吭剑夹g領先】ELF-RK3506
    的頭像 發表于 01-16 16:41 ?1167次閱讀
    【超值首選!僅88元】<b class='flag-5'>ELF</b>-RK3506<b class='flag-5'>開發板</b>限時優惠震撼來襲

    ElfBoard技術貼|如何在【RK3588】ELF 2開發板實現GPIO功能復用

    【RK3588】ELF2開發板的GPIO引腳為例,詳細闡述從硬件查找到軟件配置的完整流程。1.引腳確認開始配置之前,首先需要了解【RK3588】E
    的頭像 發表于 12-29 10:37 ?1071次閱讀
    ElfBoard技術貼|如何在【RK3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>實現GPIO<b class='flag-5'>功能</b>復用

    探索NXP FRDM - MCXN947開發板:快速上手指南

    探索NXP FRDM - MCXN947開發板:快速上手指南 在當今電子技術飛速發展的時代,一款性能優越、易于上手的開發板對于電子工程師來說至關重要。NXP的FRDM - MCXN94
    的頭像 發表于 12-24 15:00 ?1029次閱讀

    探索NXP FRDM - RW612開發板功能特性與應用指南

    探索NXP FRDM - RW612開發板功能特性與應用指南 在當今的電子設計領域,一款功能強大且性價比高的開發板對于工程師們來說至關重要
    的頭像 發表于 12-24 13:55 ?398次閱讀

    ElfBoard技術貼|如何在【RK3588】ELF 2開發板實現I2C功能復用

    等。由于此項配置的具體實現因SoC平臺而異,本文特以【RK3588】ELF 2開發板的I2C6引腳為例,系統說明從硬件規格查詢到軟件驅動配置的完整步驟。
    的頭像 發表于 12-04 10:10 ?7792次閱讀
    ElfBoard技術貼|如何在【RK3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>實現I2C<b class='flag-5'>功能</b>復用

    ElfBoard技術貼|如何在【RK3588】ELF 2開發板上進行UART引腳復用配置

    IOMUX(引腳功能復用)是芯片廠商為高效利用有限硬件引腳資源而設計的關鍵技術,它允許單個物理引腳通過軟件配置為多種不同的功能(如GPIO、UART、I2C等)。不同SoC芯片的配置方式各異,本文將以【RK3588】
    的頭像 發表于 11-18 16:54 ?5471次閱讀
    ElfBoard技術貼|如何在【RK3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>上進行<b class='flag-5'>UART</b>引腳復用配置

    ElfBoard技術貼|如何在【RK3588】ELF 2開發板上進行根系統的定制

    ELF 2開發板已經適配了Linux 5.10及Elf2 Desktop 22.04操作系統,其中Elf2 Desktop 22.04系統是
    的頭像 發表于 07-02 16:33 ?3006次閱讀
    ElfBoard技術貼|如何在【RK3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>上進行根系統的定制

    ElfBoard技術貼|如何在ELF 2開發板適配 AX200NGW WiFi模塊

    ELF2開發板適配AX200NGWWi-Fi6模塊,是開發嵌入式設備中實現高速無線聯網的實際需求,更是解鎖其全場景無線通信能力的關鍵升
    的頭像 發表于 06-24 09:09 ?2367次閱讀
    ElfBoard技術貼|如何在<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>中<b class='flag-5'>適配</b> AX200NGW WiFi模塊

    飛凌嵌入式ElfBoard ELF 1板卡-uboot移植之IOMUX介紹

    本章節主要講,如何將NXP官方i.MX6ULL EVK評估的uboot源碼移植適配ELF 1
    發表于 05-30 09:28

    飛凌嵌入式ElfBoard ELF 1板卡-Uboot

    適配于該評估一套軟件系統,也就是說NXP的工程師完成了大量的平臺移植工作,ElfBoard開發板與EVK評估又有些許差異,我們只需要在
    發表于 05-22 10:44

    來自資深工程師對ELF 2開發板的產品測評

    來自資深工程師對ELF 2開發板的使用測評
    的頭像 發表于 04-28 15:03 ?1878次閱讀
    來自資深工程師對<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>的產品測評

    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制UART外設

    1、實驗簡介本實驗將演示如何在小凌派-RK2206開發板使用IOT庫的UART接口,進行UART編程
    的頭像 發表于 04-22 14:22 ?1068次閱讀
    基于小凌派RK2206<b class='flag-5'>開發板</b>:OpenHarmony如何使用IoT接口控制<b class='flag-5'>UART</b>外設

    嵌入式學習-飛凌嵌入式ElfBoard ELF1板卡-開發板適配之USB攝像頭

    本節增加ELF 1開發板對USB攝像頭的支持,使用Webcam C270進行測試。 直接在內核配置界面中增加UVC功能支持即可。 內核配置
    發表于 03-06 09:08

    飛凌嵌入式ElfBoard ELF 1板卡-開發板適配之USB轉網絡

    本節介紹如何使ELF 1開發板增加USB轉網絡的支持,使用USB轉百兆網模塊進行測試,該模塊使用ASIX的USB 2.0 to 10/100M網絡控制器芯片AX88772B方案實現,
    發表于 03-06 09:06