Skip to main content

40Pin接口复用关系

40Pin接口复用关系

开发者套件的40Pin接口中共有26个功能管脚可复用,复用关系如表1所示。

开发者套件的40Pin扩展接口涉及4组复用寄存器组,每组的复用寄存器基地址以及对应的管脚号、GPIO位号、复用寄存器取值等信息如表1所示。

其中Pad信号是端口的引脚名称,复用信号X是该端口所支持的复用功能。

表1 复用寄存器信息

复用寄存器基地址

管脚号

GPIO位号

控制器偏移地址

Pad信号

复用寄存器取值:复用信号1

复用寄存器取值:复用信号2

复用寄存器取值:复用信号3

复用寄存器取值:复用信号4

复用寄存器取值:复用信号5

复用寄存器取值:复用信号6

复用寄存器取值:复用信号7

0x00C4000000

32

GPIO12

0x0D0

PWM3

0x0:pad_pwm3

0x1:pad_ddr_urxd

0x3:pad_gpio1_01

0x7:pad_prb_a[29]

-

-

-

8

GPIO14

0x0B4

UTXD0

0x0:pad_utxd0

0x1:pad_ddr_utxd

0x2:pad_sda6

0x3:pad_gpio0_14

0x4:pad_spi5_sdo

0x7:pad_prb_a[22]

-

10

GPIO15

0x0B8

URXD0

0x0:pad_urxd0

0x1:pad_ddr_urxd

0x2:pad_scl6

0x3:pad_gpio0_15

0x4:pad_spi5_sclk

0x7:pad_prb_a[23]

-

18

GPIO24

0x100

PWM1_DET

0x0:pad_pwm1_det

0x3:pad_gpio0_25

0x6:pad_trap_rsv13

0x7:pad_prb_a[40]

-

-

-

22

GPIO25

0x018

PERST2_N

0x0:pad_perst2_n

0x3:pad_gpio0_02

0x6:pad_trap_rsv1

0x7:pad_prb_a[2]

-

-

-

37

GPIO26

0x01C

PERST3_N

0x0:pad_perst3_n

0x3:pad_gpio0_03

0x6:pad_trap_rsv2

0x7:pad_prb_a[3]

-

-

-

13

GPIO27

0x0F4

PWR_SEQ4

0x0:pad_pwr_seq4

0x2:pad_int_tpm_n

0x3:pad_gpio1_06

0x6:pad_trap_rsv11

0x7:pad_prb_a[37]

-

-

0x0082320000

24

GPIO8

0x064

SPI0_CSN

0x0:pad_spi0_csn

0x2:pad_sda11

0x3:pad_gpio2_26

0x4:pad_utxd3

0x7:pad_prb_e[15]

-

-

23

GPIO11

0x060

SPI0_SCLK

0x0:pad_spi0_sclk

0x2:pad_scl12

0x3:pad_gpio2_25

0x4:pad_urts3

0x7:pad_prb_e[14]

-

-

19

GPIO10

0x068

SPI0_SDO

0x0:pad_spi0_sdo

0x2:pad_sda12

0x3:pad_gpio2_27

0x4:pad_ucts3

0x7:pad_prb_e[16]

-

-

21

GPIO9

0x06C

SPI0_SDI

0x0:pad_spi0_sdi

0x2:pad_scl11

0x3:pad_gpio2_28

0x4:pad_urxd3

0x7:pad_prb_e[17]

-

-

31

GPIO6

0x04C

UCTS2

0x0:pad_ucts2

0x1:pad_can_tx2

0x3:pad_gpio2_20

0x7:pad_prb_e[9]

-

-

-

26

GPIO7

0x048

URTS2

0x0:pad_urts2

0x1:pad_can_rx2

0x3:pad_gpio2_19

0x7:pad_prb_e[8]

-

-

-

3

GPIO2

0x02C

SDA7

0x0:pad_sda7

0x1:pad_spi6_sdo

0x3:pad_gpio2_12

0x4:pad_ucts2

0x7:pad_prb_e[1]

-

-

5

GPIO3

0x028

SCL7

0x0:pad_scl7

0x1:pad_spi6_sclk

0x3:pad_gpio2_11

0x4:pad_urts2

0x7:pad_prb_e[0]

-

-

36

GPIO16

0x040

UTXD2

0x0:pad_utxd2

0x1:pad_can_tx3

0x3:pad_gpio2_17

0x7:pad_prb_e[6]

-

-

-

11

GPIO17

0x044

URXD2

0x0:pad_urxd2

0x1:pad_can_rx3

0x3:pad_gpio2_18

0x7:pad_prb_e[7]

-

-

-

15

GPIO22

0x038

UTXD1

0x0:pad_utxd1

0x3:pad_gpio2_15

0x7:pad_prb_e[4]

-

-

-

-

16

GPIO23

0x03C

URXD1

0x0:pad_urxd1

0x3:pad_gpio2_16

0x7:pad_prb_e[5]

-

-

-

-

0x0400140000

7

GPIO4

0x030

I2S0_MCLK

0x0:pad_i2s0_mclk

0x2:pad_gpclk0

0x3:pad_gpio7_02

0x4:pad_utxd7

0x5:pad_spi7_csn

0x7:pad_prb_d[2]

-

29

GPIO5

0x044

I2S1_MCLK

0x0:pad_i2s1_mclk

0x1:pad_i2s_mclk_dbg

0x2:pad_gpclk1

0x3:pad_gpio7_07

0x4:pad_urxd7

0x5:pad_spi7_sdi

0x7:pad_prb_d[7]

12

GPIO18

0x034

I2S0_BCLK_TX

0x0:pad_i2s0_bclk_tx

0x2:pad_spi8_csn

0x3:pad_gpio7_03

0x7:pad_prb_d[3]

-

-

-

35

GPIO19

0x038

I2S0_WS_TX

0x0:pad_i2s0_ws_tx

0x2:pad_spi8_sdi

0x3:pad_gpio7_04

0x7:pad_prb_d[4]

-

-

-

40

GPIO21

0x03C

I2S0_SD_TX

0x0:pad_i2s0_sd_tx

0x2:pad_spi8_sclk

0x3:pad_gpio7_05

0x4:pad_gpclk1

0x7:pad_prb_d[5]

-

-

38

GPIO20

0x040

I2S0_SD_RX

0x0:pad_i2s0_sd_rx

0x2:pad_spi8_sdo

0x3:pad_gpio7_06

0x4:pad_gpclk0

0x7:pad_prb_d[6]

-

-

0x00A0140000

33

GPIO13

0x0BC

GPIO4_00

0x0:pad_gpio4_00

0x2:pad_usb0_ovrcur

0x7:pad_prb_b[47]

-

-

-

-

父主题: 使用40Pin接口

准备

获取源码

  1. 下载[软件包](https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Ascend HDK/Ascend HDK 23.0.RC3/Ascend-hdk-310b-sdk-soc_23.0.rc3.zip)。
  2. 解压后获取工具链安装包toolchain.tar.gz与源码包Ascend310B-source tar.gz。

环境准备

  • 一台带网络端口且操作系统为Ubuntu 22.04的x86 Linux服务器。
  • Linux服务器已安装python、make、gcc、unzip、pigz、bison、flex、libncurses-dev、squashfs-tools、bc、device-tree-compiler、libssl-dev、cmake与交叉编译工具链。

:::note 说明

  • 所有的依赖必须用root用户进行安装。

  • 用户可以通过如下命令进行安装上述依赖。

    apt-get install -y python3 make gcc unzip pigz bison flex libncurses-dev squashfs-tools bc device-tree-compiler libssl-dev cmake :::

工具链安装

  1. 登录Linux服务器。

  2. 执行如下命令,切换至root用户。

    su - root

  3. 执行如下命令,创建/opt/compiler目录。

    mkdir /opt/compiler

  4. 将交叉编译工具链包“toolchain.tar.gz”上传至/opt/compiler目录。详细操作请参见Windows与开发者套件的文件传输

  5. 进入到/opt/compiler目录。

    cd /opt/compiler

  6. 执行如下命令,解压交叉编译工具。

    tar -xvf toolchain.tar.gz -C ./

  7. 在配置文件中增加交叉编译工具链路径。

    echo "export PATH=/opt/compiler/toolchain/bin:$PATH: " >> /etc/profile

  8. 执行如下命令,使环境变量生效。

    source /etc/profile

  9. 执行如下命令,查看交叉编译工具链版本。

    aarch64-target-linux-gnu-gcc -v

    显示有版本信息,则表明安装工具链成功。

父主题: 接口复用操作

编译

  1. 登录Linux服务器。

  2. 执行如下命令,切换至root用户。

    su - root

  3. 将源码包“Ascend310B-source.tar.gz”上传至Linux系统root用户属组目录下,例如/opt。详细操作请参见传输文件

  4. 执行如下命令,进入源码包所在目录,例如/opt。

    cd /opt

  5. 执行如下命令,解压源码包“Ascend310B-source.tar.gz”。

    tar -xzvf Ascend310B-source.tar.gz

    tar -xzvf 源码包

  6. 执行如下命令,进入product目录。

    cd Ascend310B-source/dtb/dts/hi1910b/hi1910BL/product

  7. 执行如下命令编辑hi1910B-pinctrl-M100-B51.dtsi文件。

    vim hi1910B-pinctrl-M100-B51.dtsi

    根据表格表1管脚19、21、23与24的端口复用寄存器基地址为0x0082320000,管脚19、21、23与24的复用寄存器偏移地址分别为0x068、0x06c、0x060和0x064。

    找到pinmux@82320000节点,修改SPI0节点的复用寄存器的值即可。

    当前寄存器值0x0为SPI功能,将其更改为0x3,0x3为gpio功能。

    更改后如下图所示,图中红色方框内为修改内容。

    用户可根据自身需要配置端口复用寄存器的值,寄存器的值与复用功能的对应关系请参见表1

  8. (可选)hi1910B-pinctrl-M100-B51.dtsi文件未全部包含表1中涉及的管脚,当用户需要复用文件中未涉及的管脚,可参考此步骤添加。

    • 当管脚的复用寄存器基地址为0x00C4000000、0x0082320000或0x0400140000时,可在hi1910B-pinctrl-M100-B51.dtsi文件中对应节点下参考如下格式进行配置。

      示例:在0x00C4000000节点下新增配置,将管脚22复用为gpio0_02,红框内为新增内容。

    • 当管脚的复用寄存器基地址为0x00A0140000时,hi1910B-pinctrl-M100-B51.dtsi文件中无此节点,此时可参考hi1910B-pinctrl-M150-B50.dtsi中的配置。

      :::note 说明 hi1910B-pinctrl-M150-B50.dtsi在“Ascend310B-source/dtb/dts/hi1910b/hi1910BL/product”目录下。 :::

  9. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

    :wq!

  10. 执行以下命令,返回至opt目录。

    cd /opt

  11. 禁用SPI0功能。

    由于SPI0的管脚被改成GPIO功能,SPI0的驱动无法使用,需要将其功能进行屏蔽。

    执行以下命令,打开Ascend310B-source/dtb/dts/hi1910b/hi1910BL/base路径下的“hi1910B-spi.dtsi”文件。

    vim Ascend310B-source/dtb/dts/hi1910b/hi1910BL/base/hi1910B-spi.dtsi

    在SPI0设备节点中添加语句“status = "disabled";”以禁用SPI0管脚的主功能。修改完成后如下图所示,图中红色方框内为新增内容。

    :::note 说明 本节以SPI0为例,修改dts文件,若复用其他管脚功能,请根据实际情况修改dts文件,禁用不使用的功能或添加新功能。 :::

  12. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

    :wq!

  13. 执行如下命令,编译dtb文件。

    c****d /opt/Ascend310B-source

    bash build.sh dtb

    出现如下回显,表示编译内核dtb文件成功。

    generate /opt/Ascend310B-source/output/dt.img success!
    sign /opt/Ascend310B-source/output/dt.img success!

    :::note 说明 编译后的dt.img文件会自动存放于output目录下。 :::

父主题: 接口复用操作

生效dtb文件

  1. 登录开发者套件系统环境。

  2. 将编译后的“dt.img”文件上传至任意目录下,例如/opt。详细操作请参见传输文件

  3. 执行以下命令,进入/opt目录。

    cd /opt

  4. 升级dt.img文件。

    dd if=dt.img of=/dev/mmcblk1 count=4096 seek=114688 bs=512

  5. 升级完成后重启生效。

    reboot

父主题: 接口复用操作

在线提单