平台:335xD 系统:Linux 通过查阅CPU手册,335平台可以最多复用出6路串口,UART0 – UART5。本次以复用UART5为例,讲解如何在335平台添加串口设备。 1、查阅Sitara AM335x ARM Cortex-A8 Microprocessors (MPUs) (Rev. F)手册,查看该手册中球特性的内容,该部分列举了CPU各球号对应的复用功能,搜索UART5,找到可复用为UART5的球号,选择合适的两个球号(我们CPU用的是zcz的封装模式),作为uart5_rxd与uart5_txd,如图MII1_COL在选择mode3时,功能为uart5_rxd,并对该引脚做uart5_rxd时相关的配置做了定义,比如reset state为低速(L)等等。 从实际出发,应该先考虑核心板是否把与UART5相关的球号引出,如果引出,那该引脚是否复用做其他功能,该功能可否去掉,衡量之后选择两个合适的引脚。 本次选择mii1_col与rmii1_refclk两个引脚,核心板上已经引出,但在底板上没有引出,需要飞线。 2、该平台的串口驱动已经调好,所以只需要修改板级文件即可。路径为: kernel-3.2/arch/arm/mach-omap2/board-am335xevm.c。 该文件中已经有UART5的pinmux配置,如下: static struct pinmux_config
uart5_pin_mux_s2[] = { {"mii1_col.uart5_rxd",OMAP_MUX_MODE3
| AM33XX_SLEWCTRL_SLOW | AM33XX_PIN_INPUT_PULLUP}, {"rmii1_refclk.uart5_txd",OMAP_MUX_MODE3
| AM33XX_PULL_UP | AM33XX_PULL_DISA | AM33XX_SLEWCTRL_SLOW}, // {"mii1_rxerr.uart5_rtsn",
OMAP_MUX_MODE5 | AM33XX_PIN_OUTPUT | AM33XX_PULL_ENBL}, // {"mii1_crs.uart5_ctsn",OMAP_MUX_MODE5
| AM33XX_PIN_INPUT_PULLUP}, {NULL,0}, }; 注释:“OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW | AM33XX_PIN_INPUT_PULLUP”是对uart5_rxd引脚的控制状态寄存器(CONTROL_MODULE
REGISTERS)的配置,这三个量都是宏定义,具体的含义可在mux.h文件中查到,路径同为:kernel-3.2/arch/arm/mach-omap2/,通过解读,该值为01110011。
控制状态寄存器(CONTROL_MODULE REGISTERS)如何配置要参考CPU手册,AM335x ARM
Cortex-A8 Microprocessors (MPUs) Technical Reference Manual (Rev. H)。该手册的第九章中的Table
9-10对CPU的各引脚的控制状态寄存器进行了列举,找到mii1_col,如下图: |
|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )
GMT+8, 2024-11-22 16:03
Powered by Discuz! X3.4
© 2001-2013 Comsenz Inc.