rt-thread/bsp/phytium/libraries/standalone/doc/reference/usr/usage.md

11 KiB
Raw Blame History

使用方法

1.1前期配置

在正式调用SDK实例前需要对tftp进行一系列配置Windows下与Linux下的方法有很大的区别下面我们正式开始

对于权限不够的问题,普通用户可以在指令前加上sudo来暂时获得root权限

1.1.1 在 host 侧Ubuntu 20.04)配置 tftp 服务

  • 在开发环境host侧安装tftp服务
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
  • 新建 tftboot目录, /mnt/d/tftboot, 此目录应与项目编译脚本makefile中的USR_BOOT_DIR一致, 并确保 tftboot 目录有执行权限chmod 777 /**/tftboot

  • 配置主机 tftpboot 服务, 新建并配置文件/etc/xinetd.d/tftp

# /etc/xinetd.d/tftp

server tftp
{
  socket_type = dgram
  protocol = udp
  wait = yes
  user = root
  server =  /usr/sbin/in.tftpd
  server_args = -s /mnt/d/tftboot
  disable = no
  per_source = 11
  cps = 100 2
  flags = IPv4
}

在配置上述文件时如果之前没有使用过Linux文件编写可以使用自带的vim编辑器

vim /etc/xinetd.d/tftp

  • 启动主机tftp服务,生成默认配置
$ sudo service tftpd-hpa start
  • 修改主机tftp配置,指向tftboot目录 修改/etc/default/tftpd-hpa
vim /etc/default/tftpd-hpa
$ sudo vim /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/mnt/d/tftboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
  • 重启主机tftp服务
$ sudo service tftpd-hpa restart

注意每次进入Linux系统时都需要使用该代码重启主机tftp服务

  • 测试主机tftp服务的可用性 登录tftp服务,获取tftboot目录下的一个文件
$ tftp 192.168.4.50
tftp> get test1234
tftp> q

1.1.2 在 host 侧Windows配置 tftp 服务

  • tftp.zip解压到开发环境,如D:\**\phytium-dev-windows-nt\tftp

    如果phytium-dev-windows-nt\tftp已经存在,则直接进行下一步

  • 管理员权限打开Windows cmd进入D:\**\phytium-dev-windows-nt\tftp,运行.\reinstall.cmd完成Tftpd服务安装 输入图片说明 输入图片说明

    注意每次使用前都需要进入Windows服务手动将tftp服务打开

1.1.3 配置以太网ipv4设置

  • 为了连接串口打开windows下的以太网设置界面选择手动设置配置相关地址 输入图片说明

1.2 连接开发板,着手跑通用例

  • 在完成前面的步骤后就可以着手连接开发板。连接之前需要下载Windows下与的开发板配套软件 MobaXterm_Portable_v22.0

    提取码ROOT

  • 如果是不用内置Linux子系统的windows用户还需要在tftp中配置。配置完成后进入SDK双击D:\phytium-dev\phytium-standalone-sdk目录下的run_tftd.cmd启动tftp工具设置tftp目录和ip 输入图片说明

1.2.1 编译获取.elf与.bin文件

以WSL为例:

  • 进入SDK所在目录右键打开Windows终端输入以下指令
    wsl
    
    输入图片说明
  • 进入baremetal文件夹,选取一个希望执行的用例。以uart测试为例在wsl下输入如下指令进入测试用例所在文件夹
    cd baremetal/example/peripheral/serial/fpl011_test
    
  • 根据需求配置在不同芯片下32位或64位的编译模式这里以飞腾新四核芯片的32位为例输入以下指令
    make load_ft2004_aarch32 
    
  • 编译测试用例,输入以下指令
     make clean boot
    
  • 出现如下信息,表示编译成功,编译结果.elf与.bin文件已经保存至tftboot文件夹内 输入图片说明 输入图片说明

1.2.2 配置开发板ip连通host下载启动镜像

  • 连通开发板串口打开windows的设备管理器在端口栏确认串口是否成果接入 输入图片说明

  • 打开MobaXterm_Portable软件选择Session,然后选择Serial,选择串口(如上图所示串口号为COM3),设置波特率bps为115200

  • 进入u-boot界面输入如下指令配置开发板iphost侧ip和网关地址

    setenv ipaddr 192.168.4.20  
    setenv serverip 192.168.4.50 
    setenv gatewayip 192.168.4.1 
    
  • 随后烧录tftboot文件夹下的文件到开发板,输入以下指令

    tftpboot 0x90100000 baremetal.elf
    bootelf -p 0x90100000
    

    镜像启动的地址为0x80100000, 对于BIN文件,需要直接加载到0x80100000,对于ELF文件,启动地址会自动获取,需要加载到DRAM中一段可用的地址,这里选择0x90100000

  • 见到如下结果,表示成功进入测试环境,可以自行浏览每个测试用例文件夹下对应的README.md文件,根据其中的提示,进行用例调试 输入图片说明

1.2.3 设置板载FLASH自动启动避免人工干预

  • 此项设置是把bin镜像保存到和UBOOT相同的NOR FLASH芯片里。此芯片一般8MB。目前uboot里的flash读写命令最大支持16MB

  • uboot固件一般4MB左右。以下命令例子把前6MB给uboot从6MB到7MB的空间给bin镜像使用操作命令如下

  • 通过串口或者网络下载到内存

loadx 0x90100000
tftpboot 0x90100000 baremetal.elf
  • 将下载的镜像写入 QSPI NOR-Flash位置为 0x600000镜像大小为 0x100000

如果下载的 bin/elf 镜像大小超过 0x100000 字节,需要随镜像大小进行调整

flashe 0x600000   0x100000
flashw 0x90100000 0x600000 0x100000 
cmp.b  0x600000   0x90100000 0x100000 
cp.b   0x600000   0x90100000 0x100000
  • 然后就可以下电、上电启动,自动从 QSPI NOR-Flash 引导系统

使用 saveenv 前,需要找 FAE 确认 u-boot 版本是否支持

csetenv bootcmd "cp.b  0x600000  0x90100000 0xa00000; bootvx32 0x90100000"
saveenv
  • 如果用baremetal.bin文件则把0x90100000改成0x80100000即可

1.2.4 将镜像放置在 SD 卡文件系统中,进行启动

  • 以 Windows 10为例, 首先利用读卡器或者 SD 卡套将 SD 插入 Windows10 电脑接口,找到 SD 卡对应的磁盘

  • 在 SD 卡磁盘上创建一个分区,格式为 FAT由于 FAT 格式限制,分区不能超过太大,我们这里创建 256 MB 分区就可以了

  • 将编译生成的 bin 文件或者 elf 文件放置在刚刚创建的 FAT 格式分区中

  • 将 SD 卡从 Windows10 电脑中正常弹出,将 SD 卡插入开发板卡槽

  • 启动开发板,进入 u-boot 控制台,输入下列命令找到 bin/elf 镜像文件

以 E2000-Demo 板为例SD 卡槽连接的是 SD-1 控制器,

mmc dev 1
mmc info
fatls mmc 1:1

  • 输入下列命令加载 elf 镜像,开始启动
fatload mmc 1:1 0xa0100000 baremetal.elf
bootelf -p 0xa0100000
  • 使用 bin 镜像启动前,需要确保刷新过 cache
fatload mmc 1:1 0x80100000 baremetal.bin
dcache flush
go 0x80100000
  • 输入下列命令,可以下电、上电启动,自动从 SD 卡介质中引导系统

使用 saveenv 前,需要找 FAE 确认 u-boot 版本是否支持

setenv bootcmd "mmc dev 1; fatload mmc 1:1 0x90100000 baremetal.elf; bootelf -p 0x90100000"
saveenv

1.2.5 将镜像放置在 U盘文件系统中进行启动

  • 以 Windows 10为例, 首先将 U 盘插入 Windows10 电脑接口,找到 SD 卡对应的磁盘
  • 在 U 盘上创建一个分区,格式为 FAT由于 FAT 格式限制,分区不能超过太大,我们这里创建 128 MB 分区就可以了

  • 将编译生成的 bin 文件或者 elf 文件放置在刚刚创建的 FAT 格式分区中

  • 将 U 盘从 Windows10 电脑中正常弹出,将 U 盘插入开发板USB插槽

  • 启动 USB 控制器,找到 U 盘中的
usb start
usb storage
fatls usb 0

  • 输入下列命令加载 elf 镜像,开始启动
fatload usb 0 0xa0100000 baremetal.elf
bootelf -p 0xa0100000
  • 使用 bin 镜像启动前,需要确保刷新过 cache
ffatload usb 0 0x80100000 baremetal.bin
dcache flush
go 0x80100000
  • 输入下列命令,可以下电、上电启动,自动从 U盘引导系统

使用 saveenv 前,需要找 FAE 确认 u-boot 版本是否支持

setenv bootcmd "usb start; fatload usb 0 0x90100000 baremetal.elf; bootelf -p 0x90100000"
saveenv

1.3 新建一个baremetal应用工程

如果您希望自己建立一个应用工程,可以参考下面的流程

1.3.1 选择工程模板

  • 复制~/standalone-sdk/example/template目录,作为 baremetal 应用工程

    * 表示可选文件/目录

    $ ls
    Kconfig       --> 应用工程配置menu文件
    makefile      --> makefile
    main.c        --> 包含main函数
    sdkconfig     --> 配置输出
    sdkconfig.h   --> 配置输出
    inc           --> 用户头文件*
    src           --> 用户源文件*
    

    请注意使用小写makefile使用Makefile在部分平台不能被识别

1.3.2 选择目标平台

  • 切换目标平台, e.g FT2000/4 AARCH32, 加载默认配置

    make config_ft2004_aarch32
    

    使用FT2000-4作为目标编译平台,通过make config_ft2004_aarch32make config_ft2004_aarch64加载默认配置

    使用D2000作为目标编译平台,通过make config_d2000_aarch32make config_d2000_aarch64加载默认配置

  • 编译应用工程, 生成*.bin文件用于下载到开发板

    $ make
    $ ls
    template.bin   --> 二进制文件
    template.dis   --> 反汇编文件
    template.elf   --> ELF文件
    template.map   --> 内存布局文件
    

    输入图片说明

1.3.3 快速使用例程

  • BIN文件或者ELF文件复制到tftpboot目录
    $ cp ./baremetal.bin /mnt/d/tftboot
    $ cp ./baremetal.elf /mnt/d/tftboot
    

    ~/standalone-sdk/example/aarch32_hello_world 输入图片说明

  • 结合1.2节中的操作,即可快速使用自己创建的例程