Atlas 200I DK A2 管脚复用软件功能说明
收藏回复举报
Atlas 200I DK A2 管脚复用软件功能说明
发表于2025-04-12 15:23:37
0 查看

 一. Atlas 200I DK A2 管脚复用功能说明 

 

- 需求背景 

 

 

1. Atlas 200I DK A2的40pin管脚的复用配置修改后,需要重新生成dt.img,然后重新打包到run包中进行升级,操作复杂; 

2. 需要内核态提供管脚复用的模块(dk_40pin_mux.ko); 

3. 提供管脚复用关系方案,支持DK在线配置40pin并且掉电不丢失. 

 

内核模块(dk_40pin_mux.ko) 

 

 

1. 对每个pin提供读写的接口,针对读写接口,读接口用来对外展示当前管脚复用的功能以及可以支持的复用功能;写接口用来配置管脚复用的功能。 

    > cat /proc/dk_40pin_mux/3 

    pin [3] current fuction : UART2_CTS 

    pin [3] can reconfig function as follow: 

    I2C7_SDA 

    GPIO2_12 

    UART2_CTS 

 

2. 允许向复用的管脚文件写入的信息,例如:I2C7_SDA/GPIO2_12 

   此时,该内核模块将复用的功能对应的值写入到3管脚对应的寄存器中。 

 

3. 提供当前配置保存功能,将当前的管脚复用配置保存为dk_40pin_mux_config.bin,在单板启动过程中如果此文件存在,解析此文件中的信息进行配置。 

   当向 /proc/dk_40pin_mux/operation,写入save时, 生成 dk_40pin_mux_config.bin,放在 /etc 下, 属主和属组均为root,权限为400。 

   如果保存时已经存在 dk_40pin_mux_config.bin, 会将 dk_40pin_mux_config.bin 拷贝为备份 dk_40pin_mux_config.bin.bak。 

 

4. 提供恢复当前配置的功能,将当前的管脚复用配置进行解析配置。 

   当向/proc/dk_40pin_mux/operation,写入restore时,对保存的配置文件进行解析然后配置寄存器. 

 

5. 提供退出按钮 

 

 用户态提供管脚复用配置脚本(dk_menu.py) 

 

1. 提供当前管脚复用功能的展示界面,展示管脚当前默认功能 

 @^^^^^^^^^^^^ Atlas 200I DK A2 40pin configure Tool ^^^^^^^^^^^^^@ 

 [                                                                ] 

 [                                                                ] 

 [                      3.3V ( 1)  ( 2) 5.0V                      ] 

 [                 UART2_CTS ( 3)  ( 4) 5.0V                      ] 

 [                 UART2_RTS ( 5)  ( 6) GND                       ] 

 [                  UART7_TX ( 7)  ( 8) GPIO0_14                  ] 

 [                       GND ( 9)  (10) GPIO0_15                  ] 

 [                  UART2_RX (11)  (12) SPI8_CSN                  ] 

 [                  GPIO1_06 (13)  (14) GND                       ] 

 [                  GPIO2_15 (15)  (16) GPIO2_16                  ] 

 [                      3.3V (17)  (18) PWM1-DET                  ] 

 [                 UART3_CTS (19)  (20) GND                       ] 

 [                  UART3_RX (21)  (22) GPIO0_02                  ] 

 [                 UART3_RTS (23)  (24) UART3_TX                  ] 

 [                       GND (25)  (26) CAN2_RX                   ] 

 [                  I2C6_SDA (27)  (28) I2C6_SCL                  ] 

 [                  UART7_RX (29)  (30) GND                       ] 

 [                   CAN2_TX (31)  (32) PWM3                      ] 

 [                  GPIO4_00 (33)  (34) GND                       ] 

 [                  SPI8_SDI (35)  (36) UART2_TX                  ] 

 [                  GPIO0_03 (37)  (38) SPI8_SDO                  ] 

 [                       GND (39)  (40) SPI8_SCLK                 ] 

 [                                                                ] 

 [                                                                ] 

 [                                                                ] 

 [              Configure  40-pin combined functions              ] 

 [              Configure  40-pin for GPIO functions              ] 

 [                Save and exit without rebooting                 ] 

 [                      Discard pin changes                       ] 

 [                              Exit                              ] 

 

 2. 提供管脚复用功能复用界面 

    · 上下箭头选择复用关系 

    · 空格选择/取消复用关系 

    · 如果某个管脚已经被其他功能占用,则给出提示 

    · 如果某个管脚已经被复用为GPIO,需要在下个页面取消复用 

 @^^^^^^^^^^^ Atlas 200I DK A2 40pin configure Tool ^^^^^^^^^^^^^^@ 

 [                                                                ] 

 [             Select desired functions (for pins):               ] 

 [                                                                ] 

 [                                                                ] 

 [     [   ] I2C6                          (8, 10)                ] 

 [     [   ] I2C7                          (3, 5)                 ] 

 [     [   ] I2C11                         (21, 24)               ] 

 [     [   ] I2C12                         (19, 23)               ] 

 [     [   ] I2S0                          (7, 12, 35, 38, 40)    ] 

 [     [   ] UART0                         (8, 10)                ] 

 [     [   ] UART1                         (15, 16)               ] 

 [     [ * ] UART2_with_RTS_CTS            (3, 5, 11, 36)         ] 

 [     [   ] UART2                         (11, 36)               ] 

 [     [ * ] UART3_with_RTS_CTS            (19, 21, 23, 24)       ] 

 [     [   ] UART3                         (21, 24)               ] 

 [     [ * ] UART7                         (7, 29)                ] 

 [     [ * ] PWM3                          (32,)                  ] 

 [     [ * ] PWM1                          (18,)                  ] 

 [     [   ] SPI0                          (19, 21, 23, 24)       ] 

 [     [ * ] SPI8                          (12, 35, 38, 40)       ] 

 [     [ * ] CAN2                          (26, 31)               ] 

 [     [   ] CAN3                          (11, 36)               ] 

 [                                                                ] 

 [                                                                ] 

 [                               back                             ] 

 [                                                                ] 

 [                                                                ] 

 [                                                                ] 

 [    The pins has been used. Please check and reconfigure it!    ] 

 

3. 单独提供GPIO功能复用界面 

    · 如果某个管脚已经被复用其他功能,需要在上一个页面取消复用 

 @^^^^^^^^^^^^^^^^^ Atlas 200I DK A2 40pin configure Tool ^^^^^^^^@ 

 [                                                                ] 

 [                                                                ] 

 [                                                                ] 

 [                       Configure the pins for GPIO:             ] 

 [                                                                ] 

 [           [   ]                     GPIO2_12 (3)               ] 

 [           [   ]                     GPIO2_11 (5)               ] 

 [           [   ]                     GPIO7_02 (7)               ] 

 [           [ * ]                     GPIO0_14 (8)               ] 

 [           [ * ]                     GPIO0_15 (10)              ] 

 [           [   ]                     GPIO2_18 (11)              ] 

 [           [   ]                     GPIO7_03 (12)              ] 

 [           [ * ]                     GPIO2_15 (15)              ] 

 [           [ * ]                     GPIO2_16 (16)              ] 

 [           [   ]                     GPIO0_25 (18)              ] 

 [           [   ]                     GPIO2_27 (19)              ] 

 [           [   ]                     GPIO2_28 (21)              ] 

 [           [   ]                     GPIO2_25 (23)              ] 

 [           [   ]                     GPIO2_26 (24)              ] 

 [           [   ]                     GPIO2_19 (26)              ] 

 [           [   ]                     GPIO7_07 (29)              ] 

 [           [   ]                     GPIO2_20 (31)              ] 

 [           [   ]                     GPIO1_01 (32)              ] 

 [           [   ]                     GPIO7_04 (35)              ] 

 [           [   ]                     GPIO2_17 (36)              ] 

 [           [   ]                     GPIO7_06 (38)              ] 

 [           [   ]                     GPIO7_05 (40)              ] 

 [                                                                ] 

 [                                                                ] 

 [                                back                            ] 

 [                                                                ] 

 

 4. 提供脚本退出的功能 

    退出并保存当前复用功能:Save and exit without rebooting 

    恢复当前功能:Discard pin changes 

    退出程序:Exit 

 

  @^^^^^^^^^^^^^^^^^ Atlas 200I DK A2 40pin configure Tool ^^^^^^^^@ 

 [                                                                 ] 

 [                                                                 ] 

 [                                                                 ] 

 [                    Save and exit without rebooting              ] 

 [                          Discard pin changes                    ] 

 [                                  Exit                           ] 

 [                                                                 ] 

 [                                                                 ] 

``` 

 

- 编译内核模块(dk_40pin_mux.ko) 

  

1. 下载 Ascend-hdk-310X-sdk-soc_24.1.rc2.zip,解压后上传 交叉编译工具链(toolchain.tar.gz) 和 源码包(Ascend310X-source.tar.gz) 

https://www.hiascend.com/hardware/firmware-drivers/community?product=1&model=30&cann=8.0.0.beta1&driver=1.0.28.alpha 

 

2. 配置交叉编译工具 

    > mkdir /opt/compiler 

    > tar -xvf toolchain.tar.gz -C /opt/compiler 

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

    > source /etc/profile 

    > aarch64-target-linux-gnu-gcc -v (有 gcc version .. 输出表示配置正常) 

 

3. 编译内核模块 

    > tar -xzvf Ascend310X-source.tar.gz -C /opt 

    > cd Ascend310X-source 

    > bash build.sh kernelSource (最后会输出:kernel_directory is [/opt/Ascend310X-source/driver/kernel/linux-4.19]) 

    > mkdir /opt/dk_40_pin_mux && cd /opt/dk_40_pin_mux, 将 dk_40pin_mux.c 和 Makefile 拷贝到当前目录 

    > make -C /opt/Ascend310X-source/driver/kernel/linux-4.19 ARCH=arm64  M=`pwd` modules CROSS_COMPILE=aarch64-target-linux-gnu- 

    > 将编译好的 dk_40pin_mux.ko 上传到DK, insmod dk_40pin_mux.ko 加载 

本帖最后由 匿名用户2025/05/26 10:21:42 编辑

我要发帖子