You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
zhugengyu 1e79c2a6f6 !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
.gitee !29 v0.1.4 提交 3 years ago
.vscode !28 合入sdmmc cmd模块,合入sdio驱动,修改sdmmc驱动 3 years ago
arch !29 v0.1.4 提交 3 years ago
baremetal/example !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
board !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
common !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
configs !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
doc !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
drivers !29 v0.1.4 提交 3 years ago
lib !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
make !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
scripts !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
third-party !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
tools !29 v0.1.4 提交 3 years ago
.gitattributes !14 v0.0.6 提交 3 years ago
.gitignore !30 v0.1.5 支持Windows10 + mingw64开发 3 years ago
Kconfig !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
LICENSE !14 v0.0.6 提交 3 years ago
README.md !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
install.py !31 支持newlibc,修改sdk开发环境安装方法 3 years ago
install.sh !30 v0.1.5 支持Windows10 + mingw64开发 3 years ago
requirements.txt !28 合入sdmmc cmd模块,合入sdio驱动,修改sdmmc驱动 3 years ago
standalone.mk !29 v0.1.4 提交 3 years ago
uninstall.py !30 v0.1.5 支持Windows10 + mingw64开发 3 years ago

README.md

Phytium-Standalone-SDK

v0.1.6 ReleaseNote


1. 介绍

本项目发布了 Phytium 系列 CPU 的 BSP 源码,Baremetal 参考例程及其配置编译工具

title


2. 安装方法

2.1 获取SDK的开发环境

  • 按照不同开发平台获取DEV压缩包

  • Windows10

提取码:WX64

提取码:LX64 linux-x86_64

提取码:LA64

linux-aarch64

Q:如何解压SDK开发环境压缩包

Windows环境下可以用通用的unzip工具解压,如7zip和winrar

Linux/KylinOS环境下可以用unzip命令解压

2.2 安装SDK开发环境

对于Windows 10平台,2.1章节的开发环境压缩包中通过msys2控制台提供了git工具

对于Linux/KylinOS平台,可以通过sudo apt-get install build-essential安装git等工具

2.2.1 Windows 10

  • Windows10下使用SDK依赖Msys2, 推荐使用2.1章提供的开发环境, 也可以参考2.3章手动安装Msys2
  • (1). 添加Windows环境变量,PHYTIUM_DEV_PATH(环境变量名不能自定义),例如,指向文件夹E:\phytium-dev-windows-nt(可以自定义)

配置环境变量

  • (2). 进入DEV目录,双击脚本run_msys2.cmd, 进入msys2控制台, 运行source ./update_sdk_dev.sh,安装开发环境

安装开发环境

开发环境安装完成

2.2.2 Kylin OS/Ubuntu 20.04

  • (1). 解压开发环境压缩包,形成DEV目录

解压DEV

  • (2). 进入DEV目录,运行source ./update_sdk_dev.sh,安装开发环境

安装开发环境

安装完成

2.2.3 检查安装是否成功

  • 打印下列环境变量,观察各变量是否存在,指向的目录是否正确

PHYTIUM_DEV_PATH指向DEV目录

STANDALONE_SDK_ROOT指向SDK源文件目录

AARCH32_CROSS_PATH指向32位交叉编译链目录

AARCH64_CROSS_PATH指向64位交叉编译链目录

echo $PHYTIUM_DEV_PATH $STANDALONE_SDK_ROOT $AARCH32_CROSS_PATH $AARCH64_CROSS_PATH 

检查环境变量

2.3 Windows 10安装Msys2(可选)

提取码:MGW6

  • msys2, msys2-x86_64-20210725.exe

  • mingw64-arm交叉编译链, gcc-arm-10.3-2021.07-mingw-w64-i686-arm-none-eabi.tar.xz, gcc-arm-10.3-2021.07-mingw-w64-i686-aarch64-none-elf.tar.xz

  • tftp工具,tftp.zip

  • (2). 创建Windows集成开发环境(DEV目录),如D:/phytium-dev, 将DEV目录添加在Windows环境变量中,变量名为PHYTIUM_DEV_PATH,如下图所示,保存环境变量,

对于Windows 10,在桌面左下角系统搜索框中输入“环境变量”即可进入环境变量编辑界面

DEV目录中不要留空格

输入图片说明

  • (3). 保存DEV环境变量后,打开一个控制台,输入echo %PHYTIUM_DEV_PATH%,检查环境变量是否设置成功,

输入图片说明

  • (4). 双击msys2-x86_64-20210725.exe,设置Msys2的安装路径在DEV路径下,其余设置按默认安装,注意安装完成后不要马上启动,最后一步取消勾选“马上启动Msys2”

输入图片说明

Msys2安装过程

  • (5). Msys2安装完成后,需要添加国内软件源,否则下载速度会很慢,进入D:\phytium-dev\msys64\etc\pacman.d目录下,找到以下三个文件,在文件末尾分别添加对应的软件源

  • mirrorlist.mingw32

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
  • mirrorlist.mingw64
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
  • mirrorlist.msys
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
  • (6). 进入D:\phytium-dev\msys64目录,双击msys2_shell.cmd启动运行Msys2,输入以下命令,更新Msys2软件,安装必要组件

如果执行失败,可以多次尝试,直到没有报错

安装过程全部选用默认方式default或选择y,注意如果没有default = all,需要输入y

$ pacman -Syu
$ pacman -S  mingw-w64-x86_64-toolchain
$ pacman -S  base-devel git python3 python3-pip

更新Msys2软件源

  • (7). 运行以下命令,检查组件是否安装完全
$ pacman -Q make git wget python3 python3-pip

2.4 卸载开发环境

  • 在DEV目录下双击run_msys2.cmd, 启动Msys2控制台,在控制台输入./uninstall.py完成SDK卸载

  • Msys2控制台运行rm /etc/profile.d/phytium_standalone_sdk.sh,删除SDK配置文件

  • 在DEV目录D:\phytium-dev\tftp下以管理员权限打开Windows命令行中断,运行uninstall.cmd完成Tftd卸载


3. 使用方法

3.1 新建一个 baremetal 应用工程

3.1.1 选择工程模板

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

* 表示可选文件/目录

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

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

3.1.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   --> 内存布局文件

输入图片说明

3.2 快速使用例程

~/standalone-sdk/example/aarch32_hello_world

输入图片说明

3.3 下载镜像跳转启动

3.3.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, 确保 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
}
  • 启动主机tftp服务,生成默认配置
$ sudo service tftpd-hpa start
  • 修改主机tftp配置,指向tftboot目录 修改/etc/default/tftpd-hpa
$ sudo nano /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
  • 测试主机tftp服务的可用性

    登录tftp服务,获取tftboot目录下的一个文件

$ tftp 192.168.4.50
tftp> get test1234
tftp> q

3.3.2 在 host 侧(Windows)配置 tftp 服务

  • 将2.1.1章下载的tftp.zip解压到开发环境,如D:\phytium-dev\tftp
  • 管理员权限打开Windows cmd,进入D:\phytium-dev\tftp,运行.\reinstall.cmd完成Tftpd服务安装

输入图片说明

输入图片说明

  • 之后每次使用前,进入Windows服务,手动将一下服务打开

输入图片说明

  • 进入SDK,双击D:\phytium-dev\phytium-standalone-sdk目录下的run_tftd.cmd,启动tftp工具,设置tftp目录和ip

输入图片说明

  • 将镜像文件放置在上图所示的%PHYTIUM_IDE_PATH%\tftp目录下,开发板即可通过tftpboot加载镜像

template_mingw64工程中,通过定义USR_BOOT_DIR可以将编译的镜像自动拷贝带tftp目录下

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

  • BIN文件或者ELF文件复制到tftpboot目录
$ cp ./baremetal.bin /mnt/d/tftboot
$ cp ./baremetal.elf /mnt/d/tftboot
  • 连通开发板串口,进入u-boot界面,配置开发板iphostip和网关地址
# setenv ipaddr 192.168.4.20
# setenv serverip 192.168.4.50
# setenv gatewayip 192.168.4.1

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

  • 支持使用以下几种方式跳转启动
    1. AARCH32/AARCH64支持加载BIN文件到启动地址,刷新缓存后,通过go命令跳转启动
# tftpboot 0x80100000 baremetal.bin
# dcache flush
# go 0x80100000
    1. AARCH32/AARCH64支持加载ELF文件到DRAM,通过bootelf解析跳转启动
# tftpboot 0x90100000 baremetal.elf
# bootelf -p 0x90100000

4. SDK 源代码结构

.
├── Kconfig               --> 配置定义
├── LICENSE               --> 版权声明
├── README.md             --> 使用说明
├── arch                  
│   └── armv8             --> 架构相关
├── baremetal
│   └── example           --> 裸机例程
├── board                  
│   ├── d2000
│   ├── e2000
│   └── ft2004            --> 平台相关
├── common                
│   ├── f_printf.c
│   ├── f_printf.h
│   ├── fsleep.c
│   └── fsleep.h          --> 通用方法
├── configs
│   ├── ft2004_aarch32_defconfig
│   └── ft2004_aarch64_defconfig  --> 各平台默认配置
├── doc
│   ├── ChangeLog.md
│   └── system.dio        --> 文档和修改记录
├── drivers
│   ├── can
│   ├── dma
│   └── watchdog          --> 外设驱动
├── install.py            --> 安装脚本
├── lib             
│   ├── Kconfiglib
│   ├── lib.mk
│   ├── libc
│   └── nostdlib          --> 依赖库
├── make
│   ├── build_baremetal.mk
│   ├── buildinfo.mk
│   ├── complier.mk
│   └── preconfig.mk      --> 编译脚本和链接脚本
├── requirements.txt      --> python环境依赖组件
├── scripts
├── standalone.mk
├── third-party
│   ├── letter-shell-3.1
│   └── yaffs2            --> 第三方库
├── tools
└── uninstall.py          --> 卸载脚本

5. 硬件平台

5.1 FT2000-4

FT-2000/4 是一款面向桌面应用的高性能通用 4 核处理器。每 2 个核构成 1 个处理器核簇(Cluster),并共享 L2 Cache。主要技术特征如下:

  • 兼容 ARM v8 64 位指令系统,兼容 32 位指令
  • 支持单精度、双精度浮点运算指令
  • 支持 ASIMD 处理指令
  • 集成 2 个 DDR4 通道,可对 DDR 存储数据进行实时加密
  • 集成 34 Lane PCIE3.0 接口:2 个 X16(每个可拆分成 2 个 X8),2 个 X1
  • 集成 2 个 GMAC,RGMII 接口,支持 10/100/1000 自适应
  • 集成 1 个 SD 卡控制器,兼容 SD 2.0 规范
  • 集成 1 个 HDAudio,支持音频输出,可同时支持最多 4 个 Codec
  • 集成 SM2、SM3、SM4 模块
  • 集成 4 个 UART,1 个 LPC,32 个 GPIO,4 个 I2C,1 个 QSPI,2 个通 用 SPI,2 个 WDT,16 个外部中断(和 GPIO 共用 IO)
  • 集成温度传感器

5.2 D2000

D2000 是一款面向桌面应用的高性能通用 8 核处理器。每 2 个核构成 1 个处理器核簇(Cluster),并共享 L2 Cache。存储系统包含 Cache 子系统和 DDR,I/O 系统包含 PCIe、高速 IO 子系统、千兆位以太网 GMAC 和低速 IO 子系统,主要技术特征如下,

  • 兼容 ARM v8 64 位指令系统,兼容 32 位指令
  • 支持单精度、双精度浮点运算指令
  • 支持 ASIMD 处理指令
  • 集成 2 个 DDR 通道,支持 DDR4 和 LPDDR4,可对 DDR 存储数据进行实时加密
  • 集成 34 Lane PCIE3.0 接口:2 个 X16(每个可拆分成 2 个 X8),2 个 X1
  • 集成 2 个 GMAC,RGMII 接口,支持 10/100/1000 自适应
  • 集成 1 个 SD 卡控制器,兼容 SD 2.0 规范
  • 集成 1 个 HDAudio,支持音频输出,可同时支持最多 4 个 Codec
  • 集成 SM2、SM3、SM4、SM9 模块
  • 集成 4 个 UART,1 个 LPC,32 个 GPIO,4 个 I2C,1 个 QSPI,2 个通用 SPI,2 个 WDT,16 个外部中断(和 GPIO 共用 IO)
  • 集成 2 个温度传感器

6. 支持情况

6.1 外设驱动支持情况

Hardware Interface Platform Supported Platform Developing Component
Generic Intrrupt Controller v3 FT2000/4
E2000
D2000
gic/gicv3
Generic Timer FT2000/4
E2000
D2000
generic_timer
UART (PrimeCell PL011) FT2000/4
E2000
D2000
usart/pl011_uart
10/100/1000MB-ETHERNET FT2000/4
D2000
E2000 eth/f_gmac
CAN FT2000/4 E2000 can/ft_can
GPIO FT2000/4
E2000
D2000
gpio/f_gpio
I2C FT2000/4
D2000
E2000 i2c/dw_i2c
IOMUX FT2000/4
D2000
iomux/f_iomux
QSPI (Nor Flash) FT2000/4
D2000
E2000 qspi/nor_qspi
SPI FT2000/4
D2000
E2000 spi/f_spi
TIMER & TACHO E2000 timer/hw_timer_tacho
SDMMC FT2000/4
D2000
mmc/f_sdmmc
PCIE FT2000/4 E2000
D2000
pcie/fpcie
GDMA E2000 dma/gdma
WDT FT2000/4
D2000
E2000
watchdog/fwdt
NAND E2000 nand/fnand
Third-Party Platform Supported Platform Developing Component
LWIP 2.1.2 FT2000/4
D2000
E2000 lwip-2.1.2
Letter shell 3.1 FT2000/4
D2000
E2000 letter-shell-3.1
Libmetal 1.0.0 FT2000/4
D2000
E2000 libmetal-1.0.0
Sdmmc FT2000/4
D2000
E2000 sdmmc
Yaffs2 E2000

7. 参考资源

  • ARM Architecture Reference Manual
  • ARM Cortex-A Series Programmer’s Guide
  • Programmer Guide for ARMv8-A
  • ARM System Developers Guide Designing and Optimizing System Software
  • FT-2000/4 软件编程手册-V1.4
  • D2000 软件编程手册-V1.0
  • Bare-metal programming for ARM —— A hands-on guide
  • Using the GNU Compiler Collection
  • Using ld, The GNU Linker
  • Using as, The GNU Assembler
  • Armv8-A memory model guide

8. 贡献方法

请联系飞腾嵌入式软件部

huanghe@phytium.com.cn

zhugengyu@phytium.com.cn

wangxiaodong1030@phytium.com.cn


9. 许可协议

Apache-2.0