DongshanPI-D1s开发板使用基础文档【编译、烧录、adb、gpio-led、c】

官方资料

编译与烧录:

  • 官方指导:

  • 源码:

  • 工具:

  • 编译:使用docker环境

    # ========主机操作========
    # 建立工作目录
    mkdir tina-d1-h
    # 将 d1s-nehza-package.tar.gz 拷贝到tina-d1-h目录中
    
    # 运行docker
    docker run --name tina -v $(pwd)/tina-d1-h:/root -it liangdi/d1-tina-build-env /bin/bash
    
    
    # ========docker内操作========
    cd /root
    
    # 生成ssh key,一路回车
    ssh-keygen -t rsa
    # 将生成后的 ~/.ssh/id_rsa.pub拷贝到 https://open.allwinnertech.com/#/sdk/0/key 【公钥管理】
    
    # 设置git
    git config --global user.email "you@example.com"
    git config --global user.name "YourName"
    
    # 安装repo,一路yes
    git clone ssh://YourName@sdk.allwinnertech.com/git_repo/repo.git
    sed -e -i 's#ssh://username#ssh://YourName#' repo/repo
    cp repo/repo /usr/bin/
    chmod a+x /usr/bin/repo
    
    # 下载源码,一路Y/yes
    mkdir /sdk
    cd /sdk
    mkdir tina-d1-h
    cd tina-d1-h
    repo init -u ssh://123456@sdk.allwinnertech.com/git_repo/D1_Tina_Open/manifest.git -b master -m tina-d1-h.xml
    repo sync
    repo start product-smartx-d1-tina-v1.0-release --all
    
    # 打补丁
    cp /root/d1s-nehza-package.tar.gz /sdk/tina-d1-h/
    cd /sdk/tina-d1-h/
    tar xvf d1s-nehza-package.tar.gz
    
    # 环境设置
    source build/envsetup.sh
    
    # 设置目标板:
    lunch
    # 选择d1s_nezha_nor-tina,生成的固件,使用 PhoeniSuit 直接烧录DC开发板上
    
    # 编译:
    make FORCE_UNSAFE_CONFIGURE=1
    
    # 打包
    pack
    
    # 拷贝固件:
    cp /sdk/tina-D1-H/out/d1s-nezha_nor/tina_d1s-nezha_nor_uart0_nor.img /root/
    
  • 烧录:

    • 打开 PhoeniSuit ,选一键烧录,再选择主机上 tina-D1-H 目录内的 tina_d1s-nezha_nor_uart0_nor.img
    • 使用Type-C连接开发板的OTG(左边)接口,再按住FEL按键,然后将Type-C接上电脑
    • PhoeniSuit识别后,将自动进入烧录,并提示开始烧录,此时即可松开FEL,等待烧录完成即可
    • 烧录完成后,断开连接OTG的数据线,使用type-c,将开发板的DEBUG连接到电脑

测试GPIO:

  • 将PG13、PG14、PG15连接LED
  • 使用type-c,将开发板的DEBUG连接到电脑
  • 按照步骤编写测试脚本并执行:
# ========主机操作========
# Windows:使用串口工具连接

# macOS/Linux:使用picocom连接
# 查看串口设备
ls /dev/ | grep -Ei "(cu|tty).*usb"
 cu.usbmodem14202
 tty.usbmodem14202

# 连接串口设备
picocom -b 115200 -d 8 /dev/cu.usbmodem14202
# 回车后,会显示命令行提示符

# =======开发板操作========
uname -a

cd /root
vim test_leds.sh   # 按i,再粘贴如下内容,再按esc,然后wq!
#!/bin/sh

cd  /sys/class/gpio/
gpios=$(seq 205 207)
for i in $gpios;do echo $i > export ;done
for i in $gpios;do echo out > gpio$i/direction ;done
for i in $gpios;do echo 1 > gpio$i/value;done
for i in $gpios;do echo 0 > gpio$i/value;done

sleep 2

gpios=$(seq 205 207)
index=0
delay=99
for i in $(seq 1 100);
do for i in $gpios;do echo 0 > gpio$i/value;done
    echo pin=$((205+$index%2)) delay=$delay
    echo 1 > gpio$((205+$index%3))/value
    let index=index+1
    sleep 0.$delay
    if [[ $delay -lt 30 ]];
    then
        let delay=delay-1
    else
        let delay=delay-3
    fi
    if [[ $delay -lt 1 ]];then delay=99;fi
done

# 执行
chmod u+x test_leds.sh
./test_leds.sh

# LED应交替闪烁

adb连接开发板操作:

# ========开发板操作========
# 开启usb device模式
cd /sys/devices/platform/soc@3000000/soc@3000000:usbc0@0
echo usb_device > otg_role

# 写入/etc/rc.local,添加到exit 0之前,让开发板自动进入device模式,便于adb连接
vim /etc/rc.local
echo usb_device > /sys/devices/platform/soc@3000000/soc@3000000:usbc0@0/otg_role
exit 0	

# 使用type-c,将开发板的OTG连接到电脑

# ========主机操作========
# 查看设备:如果为空,说明链接不正确,或者没有开启usb device模式
adb devices
  List of devices attached
  20080411	device
  
# 通过adb连接到开发板
adb shell
 root@TinaLinux:/#

c程序编写和运行测试:

# ========主机操作========
cd tina-d1-h
mkdir -p projects/test
cd projects/test

# 编写测试程序:
vim hello_world.c
#include <stdio.h>
int main(int argc, char const *argv[])
{
    printf("Hello D1s\n");
    return 0;
}

# 编译:
export PATH=/sdk/tina-d1-h//prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/:$PATH
riscv64-unknown-linux-gnu-gcc -o hello_word hello_word.c

# 查看编译结果:
ls -l
 hello_wolrd
 hello_world.c

# 上传hello_wolrd
adb push hello_wolrd /root/

# ========开发板操作========
cd /root/
./hello_world
 Hello D1s

其他见参考:

2 个赞