Browse Source

!31 支持newlibc,修改sdk开发环境安装方法

Merge pull request !31 from zhugengyu/newlibc
pull/32/MERGE
zhugengyu 3 years ago
committed by 王晓东
parent
commit
1e79c2a6f6
  1. 2
      Kconfig
  2. 375
      README.md
  3. 4
      baremetal/example/can_test/sdkconfig
  4. 4
      baremetal/example/can_test/sdkconfig.h
  5. 4
      baremetal/example/gdma_test/sdkconfig
  6. 4
      baremetal/example/gdma_test/sdkconfig.h
  7. 2
      baremetal/example/letter_shell_test/sdkconfig
  8. 2
      baremetal/example/libmetal_test/configs/d2000_amp_core0_aarch32_defconfig
  9. 2
      baremetal/example/libmetal_test/configs/d2000_amp_core0_aarch64_defconfig
  10. 2
      baremetal/example/libmetal_test/configs/d2000_amp_core1_aarch32_defconfig
  11. 2
      baremetal/example/libmetal_test/configs/d2000_amp_core1_aarch64_defconfig
  12. 2
      baremetal/example/libmetal_test/core0/sdkconfig
  13. 2
      baremetal/example/libmetal_test/core0/sdkconfig.h
  14. 2
      baremetal/example/libmetal_test/core1/sdkconfig
  15. 2
      baremetal/example/libmetal_test/core1/sdkconfig.h
  16. 4
      baremetal/example/lwip_test/sdkconfig
  17. 4
      baremetal/example/lwip_test/sdkconfig.h
  18. 4
      baremetal/example/nand_flash_test/sdkconfig
  19. 2
      baremetal/example/nand_flash_test/sdkconfig.h
  20. 11
      baremetal/example/newlibc_test/Kconfig
  21. 81
      baremetal/example/newlibc_test/README.md
  22. 20
      baremetal/example/newlibc_test/main.c
  23. 26
      baremetal/example/newlibc_test/makefile
  24. 106
      baremetal/example/newlibc_test/sdkconfig
  25. 97
      baremetal/example/newlibc_test/sdkconfig.h
  26. 4
      baremetal/example/overall_test/sdkconfig
  27. 4
      baremetal/example/overall_test/sdkconfig.h
  28. 4
      baremetal/example/pcie_test/sdkconfig
  29. 4
      baremetal/example/pcie_test/sdkconfig.h
  30. 4
      baremetal/example/qspi_nor_flash/sdkconfig
  31. 4
      baremetal/example/qspi_nor_flash/sdkconfig.h
  32. 4
      baremetal/example/spi_test/sdkconfig
  33. 4
      baremetal/example/spi_test/sdkconfig.h
  34. 6
      baremetal/example/template-mingw64/makefile
  35. 4
      baremetal/example/template-mingw64/sdkconfig
  36. 4
      baremetal/example/template-mingw64/sdkconfig.h
  37. 7
      baremetal/example/template/makefile
  38. 4
      baremetal/example/template/sdkconfig
  39. 4
      baremetal/example/template/sdkconfig.h
  40. 4
      baremetal/example/timer_tacho/sdkconfig
  41. 4
      baremetal/example/timer_tacho/sdkconfig.h
  42. 4
      baremetal/example/uart_test/sdkconfig
  43. 4
      baremetal/example/uart_test/sdkconfig.h
  44. 4
      baremetal/example/wdt_test/sdkconfig
  45. 4
      baremetal/example/wdt_test/sdkconfig.h
  46. 4
      baremetal/example/xmac_test/sdkconfig
  47. 4
      baremetal/example/xmac_test/sdkconfig.h
  48. 10
      board/d2000/early_uart.c
  49. 30
      board/d2000/early_uart.h
  50. 12
      common/Kconfig
  51. 4
      configs/d2000_aarch32_amp_master_defconfig
  52. 4
      configs/d2000_aarch32_amp_slave_defconfig
  53. 4
      configs/d2000_aarch32_defconfig
  54. 4
      configs/d2000_aarch64_defconfig
  55. 4
      configs/e2000_aarch32_defconfig
  56. 4
      configs/e2000_aarch64_defconfig
  57. 4
      configs/ft2004_aarch32_defconfig
  58. 4
      configs/ft2004_aarch64_defconfig
  59. 16
      doc/ChangeLog.md
  60. 132
      install.py
  61. 15
      lib/Kconfig
  62. 15
      lib/lib.mk
  63. 79
      make/complier.mk
  64. 2
      make/ld/Kconfig
  65. 2
      run_mingw64.cmd
  66. 2
      run_tftd.cmd
  67. 5
      scripts/compress.md
  68. 27
      scripts/update_dev_path.sh
  69. 2
      third-party/Kconfig

2
Kconfig

@ -3,7 +3,7 @@
STANDALONE_DIR := $(STANDALONE_SDK_ROOT)
menu "Board Setting"
menu "Platform Setting"
source "$(STANDALONE_DIR)/arch/Kconfig"
source "$(STANDALONE_DIR)/board/Kconfig"
source "$(STANDALONE_DIR)/drivers/Kconfig"

375
README.md

@ -1,6 +1,6 @@
# Phytium-Standalone-SDK
**v0.1.5** [ReleaseNote](./doc/ChangeLog.md)
**v0.1.6** [ReleaseNote](./doc/ChangeLog.md)
---
@ -12,259 +12,154 @@
---
## 2. 安装使用
## 2. 安装方法
### 2.1 Windows 10 x86_64 环境下使用 Standalone SDK
### 2.1 获取SDK的开发环境
#### 2.1.1 在线安装`Msys2`搭建开发环境
- 按照不同开发平台获取DEV压缩包
> 如果不想安装,可以参考 2.1.2 使用已经安装好的Portable开发环境
- [Windows10](https://pan.baidu.com/s/1i7rkUPzXwhbyasbhlUKPmQ)
>提取码:WX64
##### 2.1.1.1 准备安装包
- [Ubuntu 20.04 x86_64](https://pan.baidu.com/s/1GrXHCygjcySKxARQ5UduTA )
>提取码:LX64
![linux-x86_64](https://images.gitee.com/uploads/images/2021/1019/095533_a960e2a6_8736513.png "linux-x86_64.png")
1. 获取[Windows环境安装包](https://pan.baidu.com/s/17WX5hec7t8_ubAKzFCwQAA)
- [Ubuntu/Kylis OS aarch64](https://pan.baidu.com/s/1pDWZIdI-dRle4NOIsP-TQA )
>提取码:LA64
> 提取码:MGW6
![linux-aarch64](https://images.gitee.com/uploads/images/2021/1019/101040_ff6c194e_8736513.png "linux-aarch64.png")
- 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`
Q:如何解压SDK开发环境压缩包
> Windows环境下可以用通用的unzip工具解压,如7zip和winrar
##### 2.1.1.2 配置开发环境目录
> Linux/KylinOS环境下可以用unzip命令解压
1. 创建Windows集成开发环境(DEV目录),如`D:/phytium-dev`, 将DEV目录添加在Windows环境变量中,变量名为`PHYTIUM_DEV_PATH`,如下图所示,保存环境变量,
### 2.2 安装SDK开发环境
> 对于Windows 10,在桌面左下角系统搜索框中输入“环境变量”即可进入环境变量编辑界面
> 对于Windows 10平台,2.1章节的开发环境压缩包中通过msys2控制台提供了git工具
> DEV目录中不要留空格
> 对于Linux/KylinOS平台,可以通过`sudo apt-get install build-essential`安装git等工具
![输入图片说明](https://images.gitee.com/uploads/images/2021/1013/192453_4e609b79_8736513.png "配置环境变量.png")
#### 2.2.1 Windows 10
2. 保存DEV环境变量后,打开一个控制台,输入`echo %PHYTIUM_DEV_PATH%`,检查环境变量是否设置成功,
- Windows10下使用SDK依赖Msys2, 推荐使用2.1章提供的开发环境, 也可以参考2.3章手动安装Msys2
- (1). 添加Windows环境变量,`PHYTIUM_DEV_PATH`(环境变量名**不能自定义**),例如,指向文件夹`E:\phytium-dev-windows-nt`(可以自定义)
![输入图片说明](https://images.gitee.com/uploads/images/2021/1013/164646_3fbc5df8_8736513.png "检查环境变量.png")
![配置环境变量](https://images.gitee.com/uploads/images/2021/1019/105259_18e64169_8736513.png "配置环境变量.png")
##### 2.1.1.3 安装`Msys2`到开发环境中
- (2). 进入DEV目录,双击脚本`run_msys2.cmd`, 进入msys2控制台, 运行`source ./update_sdk_dev.sh`,安装开发环境
1. 双击`msys2-x86_64-20210725.exe`,设置`Msys2`的安装路径在DEV路径下,其余设置按默认安装,注意安装完成后不要马上启动,最后一步取消勾选“马上启动Msys2”
![安装开发环境](https://images.gitee.com/uploads/images/2021/1019/105848_f49f8f72_8736513.png "安装开发环境.png")
![输入图片说明](https://images.gitee.com/uploads/images/2021/1013/164805_4169d4d2_8736513.png "安装Msys2.png")
![开发环境安装完成](https://images.gitee.com/uploads/images/2021/1019/110311_eeb15589_8736513.png "开发环境安装完成.png")
![Msys2安装过程](https://images.gitee.com/uploads/images/2021/1013/135101_c8fc0454_8736513.png "Msys2安装过程.png")
#### 2.2.2 Kylin OS/Ubuntu 20.04
2. `Msys2`安装完成后,需要添加国内软件源,否则下载速度会很慢,进入`D:\phytium-dev\msys64\etc\pacman.d`目录下,找到以下三个文件,在文件末尾分别添加对应的软件源
- (1). 解压开发环境压缩包,形成DEV目录
- mirrorlist.mingw32
```
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
```
![解压DEV](https://images.gitee.com/uploads/images/2021/1019/110732_609695c3_8736513.png "解压DEV.png")
- mirrorlist.mingw64
```
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
```
- (2). 进入DEV目录,运行`source ./update_sdk_dev.sh`,安装开发环境
- mirrorlist.msys
```
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
```
![安装开发环境](https://images.gitee.com/uploads/images/2021/1019/110951_4ce01ea1_8736513.png "安装开发环境.png")
3. 进入`D:\phytium-dev\msys64`目录,双击`msys2_shell.cmd`启动运行`Msys2`,输入以下命令,更新`Msys2`软件,安装必要组件
![安装完成](https://images.gitee.com/uploads/images/2021/1019/111228_e0c5ea48_8736513.png "安装完成.png")
> 如果执行失败,可以多次尝试,直到没有报错
#### 2.2.3 检查安装是否成功
> 安装过程全部选用默认方式`default`或选择`y`,注意如果没有`default = all`,需要输入`y`
- 打印下列环境变量,观察各变量是否存在,指向的目录是否正确
> `PHYTIUM_DEV_PATH`指向DEV目录
```
$ pacman -Syu
$ pacman -S mingw-w64-x86_64-toolchain
$ pacman -S base-devel git python3 python3-pip
```
![更新Msys2软件源](https://images.gitee.com/uploads/images/2021/1013/140545_6cda8ecc_8736513.png "更新Msys2软件源.png")
4. 运行以下命令,检查组件是否安装完全
```
$ pacman -Q make git wget python3 python3-pip
```
> `STANDALONE_SDK_ROOT`指向SDK源文件目录
##### 2.1.1.4 安装SDK和交叉编译链
> `AARCH32_CROSS_PATH`指向32位交叉编译链目录
- 通过 Gitee 拉取 Standalone SDK 源代码到DEV目录下,如`D:\PHYTIUM-DEV\phytium-standalone-sdk`
> `AARCH64_CROSS_PATH`指向64位交叉编译链目录
```
$ git clone https://gitee.com/phytium_embedded/phytium-standalone-sdk.git
./phytium-standalone-sdk
$ cd ./phytium-standalone-sdk
echo $PHYTIUM_DEV_PATH $STANDALONE_SDK_ROOT $AARCH32_CROSS_PATH $AARCH64_CROSS_PATH
```
![检查环境变量](https://images.gitee.com/uploads/images/2021/1019/111414_f7639144_8736513.png "检查环境变量.png")
- 将交叉编译链压缩包`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`放置在`D:\PHYTIUM-DEV\phytium-standalone-sdk\tools`下
- 创建SDK的profile文件,并添加读写权限
```
$ touch /etc/profile.d/phytium_standalone_sdk.sh
$ chmod 666 /etc/profile.d/phytium_standalone_sdk.sh
```
- 在`D:\phytium-dev\phytium-standalone-sdk`目录下通过`Msys2`运行`./install.py`
> 如果出现安装成功信息`[5]: Success!!!`表示安装成功,否则根据相应提示信息排查错误
> Windows环境不支持使用在线安装,即不支持使用`./install.py -online`
![检查安装需要的组件](https://images.gitee.com/uploads/images/2021/1014/153121_815cdc26_8736513.png "检查安装需要的组件.png")
### 2.3 Windows 10安装Msys2(可选)
![SDK安装过程](https://images.gitee.com/uploads/images/2021/1014/153155_ccaba2ab_8736513.png "SDK安装过程.png")
- (1). 获取[Windows环境安装包](https://pan.baidu.com/s/17WX5hec7t8_ubAKzFCwQAA)
![SDK安装完成](https://images.gitee.com/uploads/images/2021/1014/153529_929928b2_8736513.png "SDK安装完成.png")
- **安装完成后重启系统,生效 Standalone SDK 环境**, 检查SDK路径是否与环境变量`STANDALONE_SDK_ROOT`一致
![SDK安装完成环境变量](https://images.gitee.com/uploads/images/2021/1014/153641_9ceb3358_8736513.png "SDK安装完成环境变量.png")
#### 2.1.2 使用Portable的开发环境
- 下载开发环境然后解压,如`D:\PHYTIUM-DEV`
[下载链接](https://pan.baidu.com/s/1rF0fh4RwgiIpuTI0pk47xg)
> 提取码:MGW6
- 添加Windows环境变量,`PHYTIUM_DEV_PATH`(环境变量名不能自定义,必须用这个名字,SDK内部会使用)指向`D:\PHYTIUM-DEV`(可以自定义)
![输入图片说明](https://images.gitee.com/uploads/images/2021/1013/164551_934da3d7_8736513.png "配置环境变量.png")
- 通过 Gitee 拉取 Standalone SDK 源代码到DEV目录下的`D:\PHYTIUM-DEV\phytium-standalone-sdk`
```
$ git clone https://gitee.com/phytium_embedded/phytium-standalone-sdk.git ./phytium-standalone-sdk
$ cd ./phytium-standalone-sdk
```
- 将交叉编译链压缩包`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`放置在`D:\PHYTIUM-DEV\phytium-standalone-sdk\tools`下
- 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`
- 创建SDK的profile文件,并添加读写权限
```
$ touch /etc/profile.d/phytium_standalone_sdk.sh
$ chmod 666 /etc/profile.d/phytium_standalone_sdk.sh
```
- (2). 创建Windows集成开发环境(DEV目录),如`D:/phytium-dev`, 将DEV目录添加在Windows环境变量中,变量名为`PHYTIUM_DEV_PATH`,如下图所示,保存环境变量,
- 在`D:\phytium-dev\phytium-standalone-sdk`目录下双击`run_mingw64.cmd`, 启动`Msys2`控制台,在控制台输入`./install.py`完成SDK安装
> 对于Windows 10,在桌面左下角系统搜索框中输入“环境变量”即可进入环境变量编辑界面
- **安装完成后关闭shell重新打开,生效 Standalone SDK 环境**, 检查SDK路径是否与环境变量`STANDALONE_SDK_ROOT`一致
> DEV目录中不要留空格
#### 2.1.3 卸载开发环境
![输入图片说明](https://images.gitee.com/uploads/images/2021/1013/192453_4e609b79_8736513.png "配置环境变量.png")
- 在SDK目录`D:\phytium-dev\phytium-standalone-sdk`目录双击`run_mingw64.cmd`, 启动`Msys2`控制台,在控制台输入`./uninstall.py`完成SDK卸载
- (3). 保存DEV环境变量后,打开一个控制台,输入`echo %PHYTIUM_DEV_PATH%`,检查环境变量是否设置成功,
- 在`Msys2`控制台运行`sudo rm /etc/profile.d/phytium_standalone_sdk.sh`,删除SDK配置文件
![输入图片说明](https://images.gitee.com/uploads/images/2021/1013/164646_3fbc5df8_8736513.png "检查环境变量.png")
- 在DEV目录`D:\phytium-dev\tftp`下以**管理员权限**打开Windows命令行中断,运行`uninstall.cmd`完成Tftd卸载
- (4). 双击`msys2-x86_64-20210725.exe`,设置`Msys2`的安装路径在DEV路径下,其余设置按默认安装,注意安装完成后不要马上启动,最后一步取消勾选“马上启动Msys2”
### 2.2 Ubuntu 20.04 x86_64 环境下使用 Standalone SDK
![输入图片说明](https://images.gitee.com/uploads/images/2021/1013/164805_4169d4d2_8736513.png "安装Msys2.png")
#### 2.2.1 选择在线方式安装 SDK
![Msys2安装过程](https://images.gitee.com/uploads/images/2021/1013/135101_c8fc0454_8736513.png "Msys2安装过程.png")
- 通过 Gitee 拉取 Standalone SDK 源代码
- (5). `Msys2`安装完成后,需要添加国内软件源,否则下载速度会很慢,进入`D:\phytium-dev\msys64\etc\pacman.d`目录下,找到以下三个文件,在文件末尾分别添加对应的软件源
- mirrorlist.mingw32
```
$ git clone https://gitee.com/phytium_embedded/phytium-standalone-sdk.git ~/standalone_sdk
$ cd ~/standalone_sdk
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
```
- 检查 install.py 的执行权限, 如果没有执行权限`x`,需要利用`chmod +x ./install.py`添加执行权限
- mirrorlist.mingw64
```
$ ls ./install.py -l
-rwxrwxrwx 1 usr usr 6353 Jul 21 10:13 ./install.py
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
```
- 在线下载源代码和编译环境,创建SDK的profile,并为用户添加读写权限,然后完成 Standalone SDK 安装
> 注意不要使用'sudo ./install.py',否则环境变量配置可能不正确
- mirrorlist.msys
```
$ sudo touch /etc/profile.d/phytium_standalone_sdk.sh
$ sudo chmod 666 /etc/profile.d/phytium_standalone_sdk.sh
$ ./install.py -online
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
```
![输入图片说明](https://images.gitee.com/uploads/images/2021/1014/112439_2a038045_8736513.png "安装过程.png")
- **安装完成后重启系统,生效 Standalone SDK 环境**
>请注意使用虚拟机进行开发时不要将sdk安装在挂载的共享文件夹下,否则交叉编译链的部分链接文件可能无法工作
- (6). 进入`D:\phytium-dev\msys64`目录,双击`msys2_shell.cmd`启动运行`Msys2`,输入以下命令,更新`Msys2`软件,安装必要组件
#### 2.2.2 选择离线方式安装 SDK
- 下载[Phytium Standalone SDK](https://gitee.com/phytium_embedded/phytium-standalone-sdk)源代码
- 下载[AARCH32](https://gitee.com/phytium_embedded/phytium-standalone-sdk/attach_files/776847/download/gcc-arm-x86_64-none-eabi-10-2020-q4-major.tar.xz)编译器
- 下载[AARCH64](https://gitee.com/phytium_embedded/phytium-standalone-sdk/attach_files/776846/download/gcc-arm-x86_64-aarch64-none-elf-10.2-2020.11.tar.xz)编译器
> 如果执行失败,可以多次尝试,直到没有报错
- 解压 phytium_standalone_sdk.zip 为`~/standalone_sdk`(路径名可以自定义)
- 将 AARCH32、AARCH64 编译器压缩包放置在`~/standalone_sdk/tools`(必须放置在 tools 路径下)
- 确保 install.py 有执行权限,`~/standalone_sdk`Standalone SDK 安装
> 安装过程全部选用默认方式`default`或选择`y`,注意如果没有`default = all`,需要输入`y`
```
$ sudo touch /etc/profile.d/phytium_standalone_sdk.sh
$ sudo chmod 666 /etc/profile.d/phytium_standalone_sdk.sh
$ ./install.py
$ pacman -Syu
$ pacman -S mingw-w64-x86_64-toolchain
$ pacman -S base-devel git python3 python3-pip
```
- **安装完成后重启系统,生效 Standalone SDK 环境**
#### 2.2.3 卸载开发环境
- 在SDK目录运行`./uninstall.py`完成SDK卸载
- 运行`sudo rm /etc/profile.d/phytium_standalone_sdk.sh`,删除SDK配置文件
### 2.3 Kylin OS/Ubuntu 20.04 AARCH64 环境下使用 Standalone SDK
#### 2.3.1 选择在线方式安装 SDK
参考 2.3.1 选择在线方式安装 SDK
#### 2.3.2 选择离线方式安装 SDK
- 下载[Phytium Standalone SDK](https://gitee.com/phytium_embedded/phytium-standalone-sdk)源代码
- 下载[AARCH32](https://gitee.com/phytium_embedded/phytium-standalone-sdk/attach_files/779742/download/gcc-arm-aarch64-none-eabi-10-2020-q4-major.tar.xz)编译器
- 下载[AARCH64](https://gitee.com/phytium_embedded/phytium-standalone-sdk/attach_files/779743/download/gcc-arm-10.2-2020.11-aarch64-aarch64-none-elf.tar.xz)编译器
- 解压 phytium_standalone_sdk.zip 为`~/standalone_sdk`(路径名可以自定义)
- 将 AARCH32、AARCH64 编译器压缩包放置在`~/standalone_sdk/tools`(必须放置在 tools 路径下)
- 确保 install.py 有执行权限,`~/standalone_sdk`Standalone SDK 安装
![更新Msys2软件源](https://images.gitee.com/uploads/images/2021/1013/140545_6cda8ecc_8736513.png "更新Msys2软件源.png")
- (7). 运行以下命令,检查组件是否安装完全
```
$ sudo touch /etc/profile.d/phytium_standalone_sdk.sh
$ ./install.py
$ pacman -Q make git wget python3 python3-pip
```
### 2.4 新建一个 baremetal 应用工程
#### 2.4.1 选择工程模板
### 2.4 卸载开发环境
##### 2.4.1.1 Window环境使用工程
- 在DEV目录下双击`run_msys2.cmd`, 启动`Msys2`控制台,在控制台输入`./uninstall.py`完成SDK卸载
- 复制`~/standalone-sdk/example/template-mingw64`目录,作为baremetal应用工程
- 在`Msys2`控制台运行`rm /etc/profile.d/phytium_standalone_sdk.sh`,删除SDK配置文件
> `*` 表示可选文件/目录
```
Kconfig --> 应用工程配置menu文件
makefile --> makefile
main.c --> 包含main函数
sdkconfig --> 配置输出
sdkconfig.h --> 配置输出
run_mingw64.cmd --> 启动msys-mingw64控制台*
inc --> 用户头文件*
src --> 用户源文件*
```
- 在DEV目录`D:\phytium-dev\tftp`下以**管理员权限**打开Windows命令行中断,运行`uninstall.cmd`完成Tftd卸载
![输入图片说明](https://images.gitee.com/uploads/images/2021/1013/144914_9e06694b_8736513.png "屏幕截图.png")
---
## 3. 使用方法
- 双击run_mingw64.cmd,在当前目录启动mingw64控制台
### 3.1 新建一个 baremetal 应用工程
##### 2.4.1.2 Linux环境使用工程
#### 3.1.1 选择工程模板
- 复制`~/standalone-sdk/example/template`目录,作为 baremetal 应用工程
@ -283,7 +178,7 @@ src --> 用户源文件*
>请注意使用小写makefile,使用Makefile在部分平台不能被识别
#### 2.4.2 选择目标平台
#### 3.1.2 选择目标平台
- 切换目标平台, e.g `FT2000/4 AARCH32`, 加载默认配置
@ -308,15 +203,15 @@ template.map --> 内存布局文件
![输入图片说明](https://images.gitee.com/uploads/images/2021/0709/141655_f20b6d98_8736513.png "屏幕截图.png")
### 2.5 快速使用例程
### 3.2 快速使用例程
> ~/standalone-sdk/example/aarch32_hello_world
![输入图片说明](https://images.gitee.com/uploads/images/2021/0709/145025_398f6501_8736513.png "屏幕截图.png")
### 2.6 下载镜像跳转启动
### 3.3 下载镜像跳转启动
#### 2.6.1 在 host 侧(Ubuntu 20.04)配置 tftp 服务
#### 3.3.1 在 host 侧(Ubuntu 20.04)配置 tftp 服务
- 在开发环境`host`侧安装`tftp`服务
@ -381,7 +276,7 @@ tftp> get test1234
tftp> q
```
#### 2.6.2 在 host 侧(Windows)配置 tftp 服务
#### 3.3.2 在 host 侧(Windows)配置 tftp 服务
- 将2.1.1章下载的`tftp.zip`解压到开发环境,如`D:\phytium-dev\tftp`
- 以**管理员权限**打开Windows cmd,进入`D:\phytium-dev\tftp`,运行`.\reinstall.cmd`完成Tftpd服务安装
@ -402,7 +297,7 @@ tftp> q
> 在`template_mingw64`工程中,通过定义`USR_BOOT_DIR`可以将编译的镜像自动拷贝带tftp目录下
#### 2.6.3 配置开发板 ip,连通 host 下载启动镜像
#### 3.3.3 配置开发板 ip,连通 host 下载启动镜像
- 将`BIN`文件或者`ELF`文件复制到`tftpboot`目录
@ -442,61 +337,61 @@ $ cp ./baremetal.elf /mnt/d/tftboot
---
## 3. SDK 源代码结构
## 4. SDK 源代码结构
```
.
├── Kconfig --> 配置定义
├── LICENSE --> 版权声明
├── README.md
├── standalone.mk
├── Kconfig --> 配置定义
├── LICENSE --> 版权声明
├── README.md --> 使用说明
├── arch
│   └── armv8 --> 架构相关
├── baremetal
│ └── example --> 裸机例程
| ├── can_test
| └── i2c_eeprom
| └── sdci_test ...
├── arch --> 架构相关
| ├── armv8
| | ├── aarch32
| | └── aarch64
| └── common
├── common
├── drivers --> 外设驱动
| ├── can
| └── eth
| └── gic ...
├── board --> 目标平台相关
| ├── d2000
| └── ft2004
| └── e2000
├── configs --> 各目标平台的默认配置
│ ├── d2000_aarch32_defconfig
│ └── d2000_aarch64_defconfig
| └── e2000_aarch32_defconfig
| └── e2000_aarch64_defconfig
| └── ft2004_aarch32_defconfig
| └── ft2004_aarch64_defconfig
│   └── 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
│ └── checklist.md
├── install.py --> 环境变量安装脚本
├── lib --> 依赖库
│ ├── Kconfiglib
│ ├── libc
│ └── nostdlib
├── make --> Makefile文件
├── scripts --> 相关脚本
├── third-party --> 第三方库
└── tools --> 编译构建相关工具
├── README.md
├── gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf
│   ├── 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 --> 卸载脚本
```
---
## 4. 硬件平台
## 5. 硬件平台
### 4.1 FT2000-4
### 5.1 FT2000-4
FT-2000/4 是一款面向桌面应用的高性能通用 4 核处理器。每 2 个核构成 1 个处理器核簇(Cluster),并共享 L2 Cache。主要技术特征如下:
@ -512,7 +407,7 @@ FT-2000/4 是一款面向桌面应用的高性能通用 4 核处理器。每 2
- 集成 4 个 UART,1 个 LPC,32 个 GPIO,4 个 I2C,1 个 QSPI,2 个通 用 SPI,2 个 WDT,16 个外部中断(和 GPIO 共用 IO)
- 集成温度传感器
### 4.2 D2000
### 5.2 D2000
D2000 是一款面向桌面应用的高性能通用 8 核处理器。每 2 个核构成 1 个处理器核簇(Cluster),并共享 L2 Cache。存储系统包含 Cache 子系统和 DDR,I/O 系统包含 PCIe、高速 IO 子系统、千兆位以太网 GMAC 和低速 IO 子系统,主要技术特征如下,
@ -530,9 +425,9 @@ D2000 是一款面向桌面应用的高性能通用 8 核处理器。每 2 个
---
## 5. 支持情况
## 6. 支持情况
### 5.1 外设驱动支持情况
### 6.1 外设驱动支持情况
| Hardware Interface | Platform Supported | Platform Developing | Component |
| ------------------------------ | -------------------------- | ------------------- | -------------------- |
@ -562,7 +457,7 @@ D2000 是一款面向桌面应用的高性能通用 8 核处理器。每 2 个
| Yaffs2 | | E2000 | |
---
## 6. 参考资源
## 7. 参考资源
- ARM Architecture Reference Manual
- ARM Cortex-A Series Programmer’s Guide
@ -578,7 +473,7 @@ D2000 是一款面向桌面应用的高性能通用 8 核处理器。每 2 个
---
## 7. 贡献方法
## 8. 贡献方法
请联系飞腾嵌入式软件部
@ -590,6 +485,6 @@ wangxiaodong1030@phytium.com.cn
---
## 8. 许可协议
## 9. 许可协议
Apache-2.0

4
baremetal/example/can_test/sdkconfig

@ -74,7 +74,7 @@ CONFIG_ENABLE_F_CAN=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX=y
#
# Cross-Compiler Setting
@ -111,7 +111,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/can_test/sdkconfig.h

@ -63,7 +63,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX
/* Cross-Compiler Setting */
@ -96,7 +96,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

4
baremetal/example/gdma_test/sdkconfig

@ -70,7 +70,7 @@ CONFIG_ENABLE_F_GDMA=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX=y
#
# Cross-Compiler Setting
@ -107,7 +107,7 @@ CONFIG_STACK_TOP_ADDR=0x82000000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/gdma_test/sdkconfig.h

@ -61,7 +61,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX
/* Cross-Compiler Setting */
@ -94,7 +94,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

2
baremetal/example/letter_shell_test/sdkconfig

@ -62,7 +62,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX=y
#
# Cross-Compiler Setting

2
baremetal/example/libmetal_test/configs/d2000_amp_core0_aarch32_defconfig

@ -77,7 +77,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting

2
baremetal/example/libmetal_test/configs/d2000_amp_core0_aarch64_defconfig

@ -76,7 +76,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting

2
baremetal/example/libmetal_test/configs/d2000_amp_core1_aarch32_defconfig

@ -69,7 +69,7 @@ CONFIG_EBABLE_GICV3=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting

2
baremetal/example/libmetal_test/configs/d2000_amp_core1_aarch64_defconfig

@ -68,7 +68,7 @@ CONFIG_EBABLE_GICV3=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting

2
baremetal/example/libmetal_test/core0/sdkconfig

@ -76,7 +76,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting

2
baremetal/example/libmetal_test/core0/sdkconfig.h

@ -66,7 +66,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */

2
baremetal/example/libmetal_test/core1/sdkconfig

@ -68,7 +68,7 @@ CONFIG_EBABLE_GICV3=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting

2
baremetal/example/libmetal_test/core1/sdkconfig.h

@ -60,7 +60,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */

4
baremetal/example/lwip_test/sdkconfig

@ -79,7 +79,7 @@ CONFIG_F_GMAC_PHY_AR803X=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -116,7 +116,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/lwip_test/sdkconfig.h

@ -69,7 +69,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -102,7 +102,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

4
baremetal/example/nand_flash_test/sdkconfig

@ -59,7 +59,7 @@ CONFIG_EBABLE_GICV3=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX=y
#
# Cross-Compiler Setting
@ -96,7 +96,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

2
baremetal/example/nand_flash_test/sdkconfig.h

@ -52,7 +52,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */

11
baremetal/example/newlibc_test/Kconfig

@ -0,0 +1,11 @@
mainmenu "Phytium Baremetal Configuration"
menu "Project Configuration"
config TARGET_NAME
string "Build Target Name"
default "baremetal"
help
Build Target name for the demo
endmenu
source "$(STANDALONE_SDK_ROOT)/Kconfig"

81
baremetal/example/newlibc_test/README.md

@ -0,0 +1,81 @@
<!--
* Copyright (c) 2021 Phytium Information Technology, Inc.
*
* SPDX-License-Identifier: Apache-2.0.
*
* @Date: 2021-08-27 10:37:27
* @LastEditTime: 2021-10-19 14:10:07
* @Description:  This files is for
*
* @Modify History:
* Ver   Who        Date         Changes
* ----- ------     --------    --------------------------------------
-->
# Newlib
## 1. 例程介绍
><font size="1">介绍例程的用途,使用场景,相关基本概念,描述用户可以使用例程完成哪些工作</font><br />
Newlib是一个面向嵌入式系统的C运行库。最初是由Cygnus Solutions收集组装的一个源代码集合,取名为newlib,现在由Red Hat维护,本SDK中使用的是4.1.0版本,newlib可移植性强,具有可重入特性、功能完备等特点,已广泛应用于各种嵌入式系统中,相比于Glibc,newlib对嵌入式应用的支持更好
## 2. 如何使用例程
><font size="1">描述开发平台准备,使用例程配置,构建和下载镜像的过程</font><br />
在Library Configuration中选择Use New Lib
### 2.1 硬件配置方法
><font size="1">哪些硬件平台是支持的,需要哪些外设,例程与开发板哪些IO口相关等(建议附录开发板照片,展示哪些IO口被引出)</font><br />
- FT2000/4
- D2000
### 2.2 SDK配置方法
><font size="1">依赖哪些驱动、库和第三方组件,如何完成配置(列出需要使能的关键配置项)</font><br />
- 依赖本SDK提供的交叉编译链
### 2.3 构建和下载
><font size="1">描述构建、烧录下载镜像的过程,列出相关的命令</font><br />
- host侧设置重启host侧tftp服务器
```
sudo service tftpd-hpa restart
```
- 开发板侧使用bootelf命令跳转
```
setenv ipaddr 192.168.4.20
setenv serverip 192.168.4.50
setenv gatewayip 192.168.4.1
tftpboot 0x90100000 baremetal.elf
bootelf -p 0x90100000
```
### 2.4 输出与实验现象
><font size="1">描述输入输出情况,列出存在哪些输出,对应的输出是什么(建议附录相关现象图片)</font><br />
- 通过u-boot启动,完成浮点打印
```
# bootelf -p 0x90100000
## Starting application at 0x80100000 ...
hello baremetal phytium 3.141500
```
## 3. 如何解决问题
><font size="1">主要记录使用例程中可能会遇到的问题,给出相应的解决方案</font><br />
## 4. 修改历史记录
><font size="1">记录例程的重大修改记录,标明修改发生的版本号 </font><br />
- v0.1.6,2021/10/19 首次合入

20
baremetal/example/newlibc_test/main.c

@ -0,0 +1,20 @@
/*
* Copyright (c) 2021 Phytium Information Technology, Inc.
*
* SPDX-License-Identifier: Apache-2.0.
*
* @Date: 2021-07-09 08:08:39
* @LastEditTime: 2021-10-15 18:29:13
* @Description:  This files is for phytium baremetal hello world
*
* @Modify History:
* Ver   Who        Date         Changes
* ----- ------     --------    --------------------------------------
*/
#include <stdio.h>
int main()
{
printf("hello baremetal phytium %f\r\n", 3.1415);
return 0;
}

26
baremetal/example/newlibc_test/makefile

@ -0,0 +1,26 @@
# 指定工程项目根目录为当前(只能指定一个目录)
export PROJECT_DIR ?= .
# 用户添加的源文件夹和头文件夹(可以指定多个)
export USR_SRC_DIR ?= . \
./src
export USR_INC_DIR ?= . \
./inc
# 用户定义的编译目标文件上传路径
ifeq ($(OS),Windows_NT)
USR_BOOT_DIR ?= $(subst \,/, $(PHYTIUM_DEV_PATH))/tftp
else
USR_BOOT_DIR ?= /mnt/d/phytium-dev/tftp
endif
# 设置启动镜像名
BOOT_IMG_NAME ?= baremetal
# 指定编译freertos项目使用的makefile
include $(STANDALONE_SDK_ROOT)/make/build_baremetal.mk
# 完成编译
boot:
make
@cp ./$(CONFIG_TARGET_NAME).elf $(USR_BOOT_DIR)/$(BOOT_IMG_NAME).elf
@ls $(USR_BOOT_DIR)/$(BOOT_IMG_NAME).elf -l

106
baremetal/example/newlibc_test/sdkconfig

@ -0,0 +1,106 @@
#
# Project Configuration
#
CONFIG_TARGET_NAME="d2000_baremetal_a32"
# end of Project Configuration
#
# Platform Setting
#
#
# Arch Configuration
#
CONFIG_TARGET_ARMV8_AARCH32=y
# CONFIG_TARGET_ARMV8_AARCH64 is not set
# CONFIG_TARGET_ARMV7 is not set
CONFIG_USE_CACHE=y
CONFIG_USE_L3CACHE=y
CONFIG_USE_MMU=y
# CONFIG_USE_SYS_TICK is not set
CONFIG_USE_AARCH64_L1_TO_AARCH32=y
# end of Arch Configuration
#
# Board Configuration
#
# CONFIG_TARGET_F2000_4 is not set
# CONFIG_TARGET_E2000 is not set
CONFIG_TARGET_D2000=y
# end of Board Configuration
#
# Components Configuration
#
# CONFIG_USE_SPI is not set
# CONFIG_USE_QSPI is not set
CONFIG_USE_GIC=y
CONFIG_EBABLE_GICV3=y
# CONFIG_USE_SERIAL is not set
# CONFIG_USE_GPIO is not set
# CONFIG_USE_IOMUX is not set
# CONFIG_USE_ETH is not set
# CONFIG_USE_CAN is not set
# CONFIG_USE_I2C is not set
# CONFIG_USE_TIMER is not set
# CONFIG_USE_SDMMC is not set
# CONFIG_USE_PCIE is not set
# CONFIG_USE_WDT is not set
# CONFIG_USE_DMA is not set
# CONFIG_USE_NAND is not set
# end of Components Configuration
# end of Platform Setting
#
# Building Option
#
#
# Cross-Compiler Setting
#
CONFIG_COMPILER_NO_STD_STARUP=y
# CONFIG_USE_EXT_COMPILER is not set
# end of Cross-Compiler Setting
# CONFIG_LOG_VERBOS is not set
# CONFIG_LOG_DEBUG is not set
CONFIG_LOG_INFO=y
# CONFIG_LOG_WARN is not set
# CONFIG_LOG_ERROR is not set
# CONFIG_LOG_NONE is not set
#
# Linker Options
#
CONFIG_AARCH32_RAM_LD=y
# CONFIG_AARCH64_RAM_LD is not set
# CONFIG_QEMU_AARCH32_RAM_LD is not set
# CONFIG_USER_DEFINED_LD is not set
CONFIG_LINK_SCRIPT_ROM=y
CONFIG_ROM_START_UP_ADDR=0x80100000
CONFIG_ROM_SIZE_MB=1
CONFIG_LINK_SCRIPT_RAM=y
CONFIG_RAM_START_UP_ADDR=0x81000000
CONFIG_RAM_SIZE_MB=64
CONFIG_HEAP_SIZE=0x04000
CONFIG_STACK_SIZE=0x1000
# end of Linker Options
# end of Building Option
#
# Library Configuration
#
CONFIG_USE_G_LIBC=y
# CONFIG_USE_NEW_LIBC is not set
# end of Library Configuration
#
# Third-Party Configuration
#
# CONFIG_USE_LWIP is not set
# CONFIG_USE_LETTER_SHELL is not set
# CONFIG_USE_AMP is not set
# CONFIG_USE_YAFFS2 is not set
# CONFIG_USE_SDMMC_CMD is not set
# end of Third-Party Configuration

97
baremetal/example/newlibc_test/sdkconfig.h

@ -0,0 +1,97 @@
#ifndef SDK_CONFIG_H__
#define SDK_CONFIG_H__
/* Project Configuration */
#define CONFIG_TARGET_NAME "d2000_baremetal_a32"
/* end of Project Configuration */
/* Platform Setting */
/* Arch Configuration */
#define CONFIG_TARGET_ARMV8_AARCH32
/* CONFIG_TARGET_ARMV8_AARCH64 is not set */
/* CONFIG_TARGET_ARMV7 is not set */
#define CONFIG_USE_CACHE
#define CONFIG_USE_L3CACHE
#define CONFIG_USE_MMU
/* CONFIG_USE_SYS_TICK is not set */
#define CONFIG_USE_AARCH64_L1_TO_AARCH32
/* end of Arch Configuration */
/* Board Configuration */
/* CONFIG_TARGET_F2000_4 is not set */
/* CONFIG_TARGET_E2000 is not set */
#define CONFIG_TARGET_D2000
/* end of Board Configuration */
/* Components Configuration */
/* CONFIG_USE_SPI is not set */
/* CONFIG_USE_QSPI is not set */
#define CONFIG_USE_GIC
#define CONFIG_EBABLE_GICV3
/* CONFIG_USE_SERIAL is not set */
/* CONFIG_USE_GPIO is not set */
/* CONFIG_USE_IOMUX is not set */
/* CONFIG_USE_ETH is not set */
/* CONFIG_USE_CAN is not set */
/* CONFIG_USE_I2C is not set */
/* CONFIG_USE_TIMER is not set */
/* CONFIG_USE_SDMMC is not set */
/* CONFIG_USE_PCIE is not set */
/* CONFIG_USE_WDT is not set */
/* CONFIG_USE_DMA is not set */
/* CONFIG_USE_NAND is not set */
/* end of Components Configuration */
/* end of Platform Setting */
/* Building Option */
/* Cross-Compiler Setting */
#define CONFIG_COMPILER_NO_STD_STARUP
/* CONFIG_USE_EXT_COMPILER is not set */
/* end of Cross-Compiler Setting */
/* CONFIG_LOG_VERBOS is not set */
/* CONFIG_LOG_DEBUG is not set */
#define CONFIG_LOG_INFO
/* CONFIG_LOG_WARN is not set */
/* CONFIG_LOG_ERROR is not set */
/* CONFIG_LOG_NONE is not set */
/* Linker Options */
#define CONFIG_AARCH32_RAM_LD
/* CONFIG_AARCH64_RAM_LD is not set */
/* CONFIG_QEMU_AARCH32_RAM_LD is not set */
/* CONFIG_USER_DEFINED_LD is not set */
#define CONFIG_LINK_SCRIPT_ROM
#define CONFIG_ROM_START_UP_ADDR 0x80100000
#define CONFIG_ROM_SIZE_MB 1
#define CONFIG_LINK_SCRIPT_RAM
#define CONFIG_RAM_START_UP_ADDR 0x81000000
#define CONFIG_RAM_SIZE_MB 64
#define CONFIG_HEAP_SIZE 0x04000
#define CONFIG_STACK_SIZE 0x1000
/* end of Linker Options */
/* end of Building Option */
/* Library Configuration */
#define CONFIG_USE_G_LIBC
/* CONFIG_USE_NEW_LIBC is not set */
/* end of Library Configuration */
/* Third-Party Configuration */
/* CONFIG_USE_LWIP is not set */
/* CONFIG_USE_LETTER_SHELL is not set */
/* CONFIG_USE_AMP is not set */
/* CONFIG_USE_YAFFS2 is not set */
/* CONFIG_USE_SDMMC_CMD is not set */
/* end of Third-Party Configuration */
#endif

4
baremetal/example/overall_test/sdkconfig

@ -72,7 +72,7 @@ CONFIG_USE_F_SDMMC=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -109,7 +109,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/overall_test/sdkconfig.h

@ -64,7 +64,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -97,7 +97,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

4
baremetal/example/pcie_test/sdkconfig

@ -103,7 +103,7 @@ CONFIG_ENABLE_F_PCIE=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -140,7 +140,7 @@ CONFIG_STACK_TOP_ADDR=0x82000000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/pcie_test/sdkconfig.h

@ -85,7 +85,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -118,7 +118,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

4
baremetal/example/qspi_nor_flash/sdkconfig

@ -57,7 +57,7 @@ CONFIG_EBABLE_GICV3=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -94,7 +94,7 @@ CONFIG_STACK_TOP_ADDR=0x82000000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/qspi_nor_flash/sdkconfig.h

@ -52,7 +52,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -85,7 +85,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

4
baremetal/example/spi_test/sdkconfig

@ -94,7 +94,7 @@ CONFIG_ENABLE_FIOMUX=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -131,7 +131,7 @@ CONFIG_STACK_TOP_ADDR=0x82000000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/spi_test/sdkconfig.h

@ -78,7 +78,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -111,7 +111,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

6
baremetal/example/template-mingw64/makefile

@ -7,7 +7,11 @@ export USR_INC_DIR ?= . \
./inc
# 用户定义的编译目标文件上传路径 (建议放置在tftp工具目录下)
USR_BOOT_DIR ?= $(subst \,/, $(PHYTIUM_DEV_PATH))/tftp
ifeq ($(OS),Windows_NT)
USR_BOOT_DIR ?= $(subst \,/, $(PHYTIUM_DEV_PATH))/tftp
else
USR_BOOT_DIR ?= /mnt/d/phytium-dev/tftp
endif
# 设置启动镜像名
BOOT_IMG_NAME ?= baremetal

4
baremetal/example/template-mingw64/sdkconfig

@ -54,7 +54,7 @@ CONFIG_EBABLE_GICV3=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -91,7 +91,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/template-mingw64/sdkconfig.h

@ -49,7 +49,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -82,7 +82,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

7
baremetal/example/template/makefile

@ -7,7 +7,11 @@ export USR_INC_DIR ?= . \
./inc
# 用户定义的编译目标文件上传路径
USR_BOOT_DIR ?= /mnt/d/tftboot/
ifeq ($(OS),Windows_NT)
USR_BOOT_DIR ?= $(subst \,/, $(PHYTIUM_DEV_PATH))/tftp
else
USR_BOOT_DIR ?= /mnt/d/phytium-dev/tftp
endif
# 设置启动镜像名
BOOT_IMG_NAME ?= baremetal
@ -19,3 +23,4 @@ include $(STANDALONE_SDK_ROOT)/make/build_baremetal.mk
boot:
make
@cp ./$(CONFIG_TARGET_NAME).elf $(USR_BOOT_DIR)/$(BOOT_IMG_NAME).elf
@ls $(USR_BOOT_DIR)/$(BOOT_IMG_NAME).elf -l

4
baremetal/example/template/sdkconfig

@ -53,7 +53,7 @@ CONFIG_EBABLE_GICV3=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -90,7 +90,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/template/sdkconfig.h

@ -48,7 +48,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -81,7 +81,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

4
baremetal/example/timer_tacho/sdkconfig

@ -60,7 +60,7 @@ CONFIG_ENABLE_TIMER_TACHO=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -97,7 +97,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/timer_tacho/sdkconfig.h

@ -53,7 +53,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -86,7 +86,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

4
baremetal/example/uart_test/sdkconfig

@ -62,7 +62,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -99,7 +99,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/uart_test/sdkconfig.h

@ -55,7 +55,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -88,7 +88,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

4
baremetal/example/wdt_test/sdkconfig

@ -69,7 +69,7 @@ CONFIG_ENABLE_FWDT=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -106,7 +106,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/wdt_test/sdkconfig.h

@ -60,7 +60,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -93,7 +93,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

4
baremetal/example/xmac_test/sdkconfig

@ -93,7 +93,7 @@ CONFIG_ENABLE_F_XMAC=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -130,7 +130,7 @@ CONFIG_STACK_TOP_ADDR=0x82000000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
baremetal/example/xmac_test/sdkconfig.h

@ -76,7 +76,7 @@
/* Building Option */
#define CONFIG_ENVI_UBUNTU_20_04
#define CONFIG_ENVI_LINUX_X86_64
/* Cross-Compiler Setting */
@ -109,7 +109,7 @@
/* Library Configuration */
#define CONFIG_USE_LIBC
#define CONFIG_USE_G_LIBC
/* end of Library Configuration */
/* Third-Party Configuration */

10
board/d2000/early_uart.c

@ -4,7 +4,7 @@
* SPDX-License-Identifier: Apache-2.0.
*
* @Date: 2021-08-06 08:07:52
* @LastEditTime: 2021-09-18 15:23:02
* @LastEditTime: 2021-10-15 16:32:50
* @Description:  This files is for
*
* @Modify History:
@ -16,13 +16,6 @@
#include "parameters.h"
#include "early_uart.h"
#define EARLY_UART_BASE FT_UART1_BASE_ADDR
#define EARLY_UART_UARTDR (EARLY_UART_BASE + 0x0) /* UART 数据寄存器地址 */
#define EARLY_UART_UARTFR (EARLY_UART_BASE + 0x18) /* UART 状态寄存器地址 */
#define EARLY_UART_TXFF BIT(5) /* 发送 FIFO 已满标志位 */
#define EARLY_UART_RXFE BIT(4) /* 接收 FIFO 为空标志位 */
#define EARLY_UART_DATA_MASK GENMASK(7, 0)
void OutByte(s8 byte)
{
/* wait until tx fifo is not full */
@ -44,3 +37,4 @@ char GetByte(void)
return (char)(EARLY_UART_DATA_MASK & FtIn32(EARLY_UART_UARTDR));
}

30
board/d2000/early_uart.h

@ -4,7 +4,7 @@
* SPDX-License-Identifier: Apache-2.0.
*
* @Date: 2021-08-06 08:07:52
* @LastEditTime: 2021-10-12 21:54:30
* @LastEditTime: 2021-10-15 17:19:40
* @Description:  This files is for
*
* @Modify History:
@ -20,6 +20,34 @@ extern "C"
#endif
#include "ft_types.h"
#include "kernel.h"
#include "parameters.h"
#ifdef CONFIG_TARGET_EARY_UART0
#define EARLY_UART_BASE FT_UART0_BASE_ADDR
#define EARLY_UART_IRQ_NUM FT_UART0_IRQ_NUMa
#else
#define EARLY_UART_BASE FT_UART1_BASE_ADDR
#define EARLY_UART_IRQ_NUM FT_UART1_IRQ_NUM
#endif // CONFIG_TARGET_EARY_UART1
#define EARLY_UART_UARTDR (EARLY_UART_BASE + 0x0) /* UART 数据寄存器地址 */
#define EARLY_UART_UARTFR (EARLY_UART_BASE + 0x18) /* UART 状态寄存器地址 */
#define EARLY_UART_UARTCR (EARLY_UART_BASE + 0x30)
#define EARLY_UART_UARTCR_UARTEN BIT(0)
#define EARLY_UART_UARTCR_TXE BIT(8)
#define EARLY_UART_UARTCR_RXE BIT(9)
#define EARLY_UART_UARTCR_INIT (EARLY_UART_UARTCR_UARTEN | EARLY_UART_UARTCR_TXE | \
EARLY_UART_UARTCR_RXE)
#define EARLY_UART_UARTIMSC (EARLY_UART_BASE + 0x38)
#define EARLY_UART_UARTIMSC_RXIM BIT(4)
#define EARLY_UART_UARTIMSC_RTIM BIT(6)
#define EARLY_UART_UARTMIS (EARLY_UART_BASE + 0x40)
#define EARLY_UART_UARTICR (EARLY_UART_BASE + 0x44)
#define EARLY_UART_TXFF BIT(5) /* 发送 FIFO 已满标志位 */
#define EARLY_UART_RXFE BIT(4) /* 接收 FIFO 为空标志位 */
#define EARLY_UART_DATA_MASK GENMASK(7, 0)
#define EARLY_UART_RXI_MASK BIT(4)
void OutByte(s8 byte);
char GetByte(void);

12
common/Kconfig

@ -1,16 +1,4 @@
choice SDK_ENVI_TYPE
prompt "SDK Develope Platfrom"
default ENVI_UBUNTU_20_04
help
SDK development host environment type.
config ENVI_UBUNTU_20_04
bool
prompt "Ubuntu 20.04 x85_64"
endchoice # SDK_ENVI_TYPE
menu "Cross-Compiler Setting"
config COMPILER_NO_STD_STARUP
bool "Non-Use GCC Provide Startup Files"

4
configs/d2000_aarch32_amp_master_defconfig

@ -68,7 +68,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -105,7 +105,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
configs/d2000_aarch32_amp_slave_defconfig

@ -75,7 +75,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -112,7 +112,7 @@ CONFIG_STACK_SIZE=0x1000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
configs/d2000_aarch32_defconfig

@ -52,7 +52,7 @@ CONFIG_EBABLE_GICV3=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -81,7 +81,7 @@ CONFIG_AARCH32_RAM_LD=y
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
configs/d2000_aarch64_defconfig

@ -62,7 +62,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -99,7 +99,7 @@ CONFIG_STACK_TOP_ADDR=0x82000000
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
configs/e2000_aarch32_defconfig

@ -50,7 +50,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -80,7 +80,7 @@ CONFIG_AARCH32_RAM_LD=y
# Library Configuration
#
# CONFIG_USE_NOSTD_LIBC is not set
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
configs/e2000_aarch64_defconfig

@ -50,7 +50,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -80,7 +80,7 @@ CONFIG_AARCH64_RAM_LD=y
# Library Configuration
#
# CONFIG_USE_NOSTD_LIBC is not set
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
configs/ft2004_aarch32_defconfig

@ -59,7 +59,7 @@ CONFIG_ENABLE_Pl011_UART=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -88,7 +88,7 @@ CONFIG_AARCH32_RAM_LD=y
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

4
configs/ft2004_aarch64_defconfig

@ -53,7 +53,7 @@ CONFIG_EBABLE_GICV3=y
#
# Building Option
#
CONFIG_ENVI_UBUNTU_20_04=y
CONFIG_ENVI_LINUX_X86_64=y
#
# Cross-Compiler Setting
@ -82,7 +82,7 @@ CONFIG_AARCH64_RAM_LD=y
#
# Library Configuration
#
CONFIG_USE_LIBC=y
CONFIG_USE_G_LIBC=y
# end of Library Configuration
#

16
doc/ChangeLog.md

@ -1,3 +1,19 @@
# Phytium Standalone SDK v0.1.6 ChangeLog
Change Log since v0.1.5, 2021.10.19
## example
- add project to demo usage of newlib
## script
- add `PHYTIUM_DEV_PATH` for all platforms
- install cross tool to `PHYTIUM_DEV_PATH`
- update GNU CC version to 10.3.1-2021.07
- modify CC libc.a for printf issue
- merge newlib to CC tool
# Phytium Standalone SDK v0.1.5 ChangeLog
Change Log since v0.1.4, 2021.10.14

132
install.py

@ -35,10 +35,6 @@ windows_msys2 = 2
### environment constant
sdk_profile_path = "/etc/profile.d/phytium_standalone_sdk.sh"
# argv[1]: online/offline
# print(sys.argv)
is_online = False
# check file attributes
def is_readable(path, user):
user_info = pwd.getpwnam(user)
@ -65,6 +61,7 @@ def is_executable(path, user):
return (((s[stat.ST_UID] == uid) and (mode & stat.S_IXUSR > 0)) or ((s[stat.ST_GID] == gid) and (mode & stat.S_IXGRP > 0)) or (mode & stat.S_IXOTH > 0))
def un_tar(src_path, dst_dir):
print("- untar {} in progress...".format(src_path))
tar = tarfile.open(name=src_path)
for member_info in tar.getmembers():
@ -75,16 +72,8 @@ def un_tar(src_path, dst_dir):
#################################################################
# STEP 1: Check environment
# check if it is offline install or online install
for i in range(1, len(sys.argv)):
if('-online' == sys.argv[i]) or ('-on' == sys.argv[i]) or ('-o' == sys.argv[i]):
is_online = True
print("[1]: Online install" if is_online else "[1]: Offline install")
# check install environment
install_platform = -1
if (platform.system() == 'Linux' ) and (platform.processor() == 'x86_64'):
install_platform = linux_x86
elif (platform.system() == 'Linux' ) and (platform.processor() == 'aarch64'):
@ -96,16 +85,12 @@ else:
exit()
# features for msys2 platform, windows platform do not support online
#########################################
if (install_platform == windows_msys2):
if (is_online == True):
print("[1]: Windows Msys2 do not support online install!!!")
exit()
if (None == os.environ.get("PHYTIUM_DEV_PATH")):
print("[1]: Please set 'PHYTIUM_DEV_PATH' fisrt!!!")
exit()
#########################################
phytium_dev_path = os.environ.get("PHYTIUM_DEV_PATH")
# to compatible with Windows path, replace \\ with /
phytium_dev_path = '/'.join(phytium_dev_path.split('\\'))
if (None == phytium_dev_path):
print("[1]: Please set 'PHYTIUM_DEV_PATH' first!!!")
exit()
# create '/etc/profile.d/phytium_standalone_sdk.sh' need sudo right, ask user to create it first
if not os.path.exists(sdk_profile_path):
@ -168,37 +153,42 @@ os.system("sed -i '/export PATH=\$PATH:\$AARCH64_CROSS_PATH/d' " + old_profile_p
os.system("sed -i '/export STANDALONE_SDK_ROOT=/d' " + old_profile_path)
os.system("sed -i '/### PHYTIUM STANDALONE SDK SETTING END/d' "+ old_profile_path)
# remove environment variables
# os.system("sed -i '/### PHYTIUM STANDALONE SDK SETTING START/d' "+ sdk_profile_path)
# os.system("sed -i '/export AARCH32_CROSS_PATH=/d' " + sdk_profile_path)
# os.system("sed -i '/export PATH=\$PATH:\$AARCH32_CROSS_PATH/d' " + sdk_profile_path)
# os.system("sed -i '/export AARCH64_CROSS_PATH=/d' " + sdk_profile_path)
# os.system("sed -i '/export PATH=\$PATH:\$AARCH64_CROSS_PATH/d' " + sdk_profile_path)
# os.system("sed -i '/export STANDALONE_SDK_ROOT=/d' " + sdk_profile_path)
# os.system("sed -i '/### PHYTIUM STANDALONE SDK SETTING END/d' "+ sdk_profile_path)
print("[2]: Reset environment")
## STEP 3: install cross-platform compiler
cc_install_path = standalone_sdk_path + '/' + 'tools' + '/'
## STEP 3: get cross-platform compiler
cc_install_path = phytium_dev_path + '/' + 'cross_tool' + '/'
# set cc package name, download url and install dst dir
if (install_platform == linux_x86):
aarch32_cc = 'gcc-arm-x86_64-none-eabi-10-2020-q4-major'
aarch64_cc = 'gcc-arm-x86_64-aarch64-none-elf-10.2-2020.11'
aarch32_cc = 'gcc-arm-10.3-2021.07-x86_64-arm-none-eabi'
aarch64_cc = 'gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf'
# cc package name
aarch32_cc_pack = aarch32_cc + '.tar.xz'
aarch64_cc_pack = aarch64_cc + '.tar.xz'
aarch32_cc_url = 'https://gitee.com/phytium_embedded/phytium-standalone-sdk/attach_files/776847/download/gcc-arm-x86_64-none-eabi-10-2020-q4-major.tar.xz'
aarch64_cc_url = 'https://gitee.com/phytium_embedded/phytium-standalone-sdk/attach_files/776846/download/gcc-arm-x86_64-aarch64-none-elf-10.2-2020.11.tar.xz'
aarch32_cc_install_path = cc_install_path + aarch32_cc
aarch64_cc_install_path = cc_install_path + aarch64_cc
elif (install_platform == linux_aarch64):
aarch32_cc = 'gcc-arm-aarch64-none-eabi-10-2020-q4-major'
aarch64_cc = 'gcc-arm-10.2-2020.11-aarch64-aarch64-none-elf'
aarch32_cc = 'gcc-arm-10.3-2021.07-aarch64-arm-none-eabi'
aarch64_cc = 'gcc-arm-10.3-2021.07-aarch64-aarch64-none-elf'
# cc package name
aarch32_cc_pack = aarch32_cc + '.tar.xz'
aarch64_cc_pack = aarch64_cc + '.tar.xz'
aarch32_cc_url = 'https://gitee.com/phytium_embedded/phytium-standalone-sdk/attach_files/779742/download/gcc-arm-aarch64-none-eabi-10-2020-q4-major.tar.xz'
aarch64_cc_url = 'https://gitee.com/phytium_embedded/phytium-standalone-sdk/attach_files/779743/download/gcc-arm-10.2-2020.11-aarch64-aarch64-none-elf.tar.xz'
aarch32_cc_install_path = cc_install_path + aarch32_cc
aarch64_cc_install_path = cc_install_path + aarch64_cc
@ -222,83 +212,51 @@ aarch32_cc_is_installed = os.path.exists(aarch32_cc_install_path)
aarch64_cc_is_installed = os.path.exists(aarch64_cc_install_path)
# cc download target
aarch32_cc_dl_dst = cc_install_path + aarch32_cc_pack
aarch64_cc_dl_dst = cc_install_path + aarch64_cc_pack
# aarch32_cc_dl_dst = cc_install_path + aarch32_cc_pack
# aarch64_cc_dl_dst = cc_install_path + aarch64_cc_pack
aarch32_cc_dl_dst = phytium_dev_path + '/' + aarch32_cc_pack
aarch64_cc_dl_dst = phytium_dev_path + '/' + aarch64_cc_pack
# features for msys2 platform, copy cc package from DEV PATH to SDK PATH
#########################################
if (install_platform == windows_msys2) and (not os.path.exists(aarch32_cc_dl_dst)):
aarch32_cc_dev_path = os.environ.get('PHYTIUM_DEV_PATH') + '\\' + aarch32_cc_pack
if (os.path.exists(aarch32_cc_dev_path)):
print("[3] Copy AARCH32 CC from {}".format(aarch32_cc_dev_path))
shutil.copy2(aarch32_cc_dev_path, aarch32_cc_dl_dst)
if (install_platform == windows_msys2) and (not os.path.exists(aarch64_cc_dl_dst)):
aarch64_cc_dev_path = os.environ.get('PHYTIUM_DEV_PATH') + '\\' + aarch64_cc_pack
if (os.path.exists(aarch64_cc_dev_path)):
print("[3] Copy AARCH64 CC from {}".format(aarch32_cc_dev_path))
shutil.copy2(aarch64_cc_dev_path, aarch64_cc_dl_dst)
#########################################
if not os.path.exists(aarch32_cc_dl_dst):
print("[3]: Failed, AARCH32 CC package {} non found !!!".format(aarch32_cc_dl_dst))
exit()
if is_online: #online
import wget
# download aarch32 cc package
if not aarch32_cc_is_installed:
print("[3] Download AARCH32 CC from {}...".format(aarch32_cc_url))
cc_file = wget.download(aarch32_cc_url, aarch32_cc_dl_dst)
if not os.path.exists(cc_file) or not (cc_file == aarch32_cc_dl_dst):
print("[3]: Download AARCH32 CC failed!!!")
exit()
else:
print("[3]: Download AARCH32 CC at {}".format(aarch32_cc_dl_dst))
# download aarch64 cc package
if not aarch64_cc_is_installed:
print("[3] Download AARCH64 CC from {}...".format(aarch64_cc_url))
cc_file = wget.download(aarch64_cc_url, aarch64_cc_dl_dst)
if not os.path.exists(cc_file) or not (cc_file == aarch64_cc_dl_dst):
print("[3]: Download AARCH64 CC failed!!!")
exit()
else:
print("[3]: Download AARCH64 CC at {}".format(aarch64_cc_dl_dst))
else: #offline, assert cc package exists
if not os.path.exists(aarch32_cc_dl_dst):
print("[3]: Failed, AARCH32 CC package {} non found !!!".format(aarch32_cc_dl_dst))
exit()
if not os.path.exists(aarch64_cc_dl_dst):
print("[3]: Failed, AARCH64 CC package {} non found !!!".format(aarch64_cc_dl_dst))
exit()
if not os.path.exists(aarch64_cc_dl_dst):
print("[3]: Failed, AARCH64 CC package {} non found !!!".format(aarch64_cc_dl_dst))
exit()
## STEP 4:install cc
# untar aarch32 cc
if not aarch32_cc_is_installed:
if os.path.exists(aarch32_cc_dl_dst):
print("[3]: Install AARCH32 CC...")
print("[4]: Install AARCH32 CC...")
un_tar(aarch32_cc_dl_dst, cc_install_path)
# write aarch32 cc path
if os.path.exists(aarch32_cc_install_path):
print("[3]: AARCH32 CC install success at {}".format(aarch32_cc_install_path))
print("[4]: AARCH32 CC install success at {}".format(aarch32_cc_install_path))
else:
print("[3]: AARCH32 CC install failed !!!")
print("[4]: AARCH32 CC install failed !!!")
exit()
# untar aarch64 cc
if not aarch64_cc_is_installed:
if os.path.exists(aarch64_cc_dl_dst):
print("[3]: Install AARCH64 CC...")
print("[4]: Install AARCH64 CC...")
un_tar(aarch64_cc_dl_dst, cc_install_path)
# write aarch64 cc path
if os.path.exists(aarch64_cc_install_path):
print("[3]: AARCH64 CC install success at {}".format(aarch64_cc_install_path))
print("[4]: AARCH64 CC install success at {}".format(aarch64_cc_install_path))
else:
print("[3]: AARCH64 CC install failed !!!")
print("[4]: AARCH64 CC install failed !!!")
exit()
## STEP 4: write environment variables
print("[4]: GNU CC version: 10.3.1-2021.07")
## STEP 5: write environment variables
os.environ['STANDALONE_SDK_ROOT'] = standalone_sdk_path
os.environ['AARCH32_CROSS_PATH'] = aarch32_cc_install_path
os.environ['AARCH64_CROSS_PATH'] = aarch64_cc_install_path

15
lib/Kconfig

@ -1,12 +1,17 @@
choice
prompt "StdLibC or NonStdLibC"
default USE_LIBC
prompt "Select C Standard Library"
default USE_G_LIBC
config USE_LIBC
bool "Use C Standard Library"
config USE_G_LIBC
bool "Use GLibC"
select USE_CACHE
config USE_NEW_LIBC
bool "Use NewLibC"
#config USE_NOSTD_LIBC
# bool "Use NoStdLbC"
endchoice

15
lib/lib.mk

@ -3,15 +3,12 @@
LIB_CUR_DIR := $(STANDALONE_DIR)/lib
ifdef CONFIG_USE_LIBC
SRC_DIR += $(LIB_CUR_DIR)/libc
INC_DIR += $(LIB_CUR_DIR)/libc
ifneq ($(CONFIG_USE_G_LIBC)_$(CONFIG_USE_NEW_LIBC), 0_0)
SRC_DIR += $(LIB_CUR_DIR)/libc
INC_DIR += $(LIB_CUR_DIR)/libc
endif
ifdef CONFIG_USE_NOSTD_LIBC
SRC_DIR += $(LIB_CUR_DIR)/nostdlib
INC_DIR += $(LIB_CUR_DIR)/nostdlib
endif
SRC_DIR += $(LIB_CUR_DIR)/nostdlib
INC_DIR += $(LIB_CUR_DIR)/nostdlib
endif

79
make/complier.mk

@ -90,6 +90,12 @@ define EOL =
endef
ifdef CONFIG_DUMMY_COMPILE
DO_ECHO = @echo
else
DO_ECHO =
endif
RM_FILES = $(foreach file,$(1),rm -f $(file)$(EOL))
RM_DIRS = $(foreach dir,$(1),rm -rf $(dir)$(EOL))
@ -99,27 +105,7 @@ CPPFLAGS = $(DEFINES) $(INCLUDES) $(DEPEND_FLAGS) $(CPPFLAGS_EXTRA)
CFLAGS = $(DEBUG_FLAGS) -DGUEST -ffreestanding -Wextra -g -O$(OPT_LEVEL) -lnosys #-Wall
ASFLAGS = $(CFLAGS)
LIBC ?=
LIBPATH ?=
ifdef CONFIG_TARGET_ARMV8_AARCH32
LIBPATH += $(CROSS_PATH)/arm-none-eabi/lib/thumb/v7/nofp
# support float and div, turn on by default for aarch64 -mfpu=crypto-neon-fp-armv8。
ASFLAGS := $(ASFLAGS) -mfpu=crypto-neon-fp-armv8 -ftree-vectorize -mfloat-abi=softfp -ffast-math -fsingle-precision-constant -march=$(ARCH)
CFLAGS := $(CFLAGS) -mfpu=crypto-neon-fp-armv8 -mfloat-abi=softfp -march=$(ARCH)
endif
ifdef CONFIG_TARGET_ARMV8_AARCH64
CROSS_PATH := $(AARCH64_CROSS_PATH)
endif
LDFLAGS = -Wl,--build-id=none
ifdef CONFIG_USE_LIBC
ifdef CONFIG_TARGET_ARMV8_AARCH32
LDFLAGS += -lgcc -L $(LIBPATH)
endif
else
LDFLAGS += -nostdlib -nostartfiles
endif
#LIBC ?=
TARGET_ARCH = -march=$(ARCH)
@ -135,14 +121,52 @@ OBJ_FILES := $(patsubst %, $(OUTPUT_DIR)/%, $(APP_S_SRC:.S=.o)) \
EXCL_OBJS ?= $(patsubst %, $(OUTPUT_DIR)/%, $(EXCL_SRC:.c=.o))
OBJ_FILES := $(filter-out $(EXCL_OBJS), $(OBJ_FILES))
OBJ_FILES += $(LIBC)
#OBJ_FILES += $(LIBC)
DEP_FILES := $(OBJ_FILES:%=%.d)
ifdef CONFIG_DUMMY_COMPILE
DO_ECHO = @echo
else
DO_ECHO =
LIBPATH ?=
CC_VERSION = 10.3.1
ifdef CONFIG_TARGET_ARMV8_AARCH32
# support float and div, turn on by default for aarch64 -mfpu=crypto-neon-fp-armv8。
ASFLAGS := $(ASFLAGS) -mfpu=crypto-neon-fp-armv8 -ftree-vectorize -mfloat-abi=softfp -ffast-math -fsingle-precision-constant -march=$(ARCH)
CFLAGS := $(CFLAGS) -mfpu=crypto-neon-fp-armv8 -mfloat-abi=softfp -march=$(ARCH)
endif
# 使用编译链自带的Glibc
ifdef CONFIG_USE_G_LIBC
ifdef CONFIG_TARGET_ARMV8_AARCH32
LIBPATH += $(CROSS_PATH)/arm-none-eabi/lib/thumb/v7/nofp
LDFLAGS += -lgcc -L $(LIBPATH)
INC_DIR := $(INC_DIR) $(CROSS_PATH)/arm-none-eabi/include
OBJ_FILES += $(CROSS_PATH)/arm-none-eabi/lib/thumb/v7/nofp/libc.a \
$(CROSS_PATH)/lib/gcc/arm-none-eabi/$(CC_VERSION)/libgcc.a
endif
endif
# 使用外链的NewLibc
ifdef CONFIG_USE_NEW_LIBC
ifdef CONFIG_TARGET_ARMV8_AARCH32
LIBPATH := $(CROSS_PATH)/newlib/arm-none-eabi/newlib
INC_DIR := $(INC_DIR) $(CROSS_PATH)/newlib/newlib/libc/include
OBJ_FILES += $(CROSS_PATH)/newlib/arm-none-eabi/newlib/libc.a \
$(CROSS_PATH)/lib/gcc/arm-none-eabi/$(CC_VERSION)/libgcc.a
endif
ifdef CONFIG_TARGET_ARMV8_AARCH64
LIBPATH := $(CROSS_PATH)/newlib/aarch64-none-elf/newlib
INC_DIR := $(INC_DIR) $(CROSS_PATH)/newlib/newlib/libc/include
OBJ_FILES += $(CROSS_PATH)/newlib/aarch64-none-elf/newlib/libc.a \
$(CROSS_PATH)/lib/gcc/aarch64-none-elf/$(CC_VERSION)/libgcc.a
endif
LDFLAGS += -nostdlib -nostartfiles
LDFLAGS += -lgcc -L $(LIBPATH)
endif
# 不使用Libc库
ifdef CONFIG_USE_NOSTD_LIBC
LDFLAGS += -nostdlib -nostartfiles
endif
.phony: all linkscript clean rebuild
@ -188,9 +212,6 @@ clean:
$(call RM_FILES,*.map)
$(call RM_FILES,*.tar.gz)
# Make sure everything is rebuilt if this makefile is changed
$(OBJ_FILES) $(APP): makefile

2
make/ld/Kconfig

@ -82,7 +82,7 @@ menu "Linker Options"
config HEAP_SIZE
hex "Heap Size"
default "0x0400"
default "0x04000"
help
Assign Heap size in Linkscript

2
run_mingw64.cmd

@ -1,2 +0,0 @@
%PHYTIUM_DEV_PATH%\msys64\msys2_shell.cmd -where %CD% -msys2 -shell bash
pause

2
run_tftd.cmd

@ -1,2 +0,0 @@
%PHYTIUM_DEV_PATH%\tftp\tftpd64_gui.exe
pause

5
scripts/compress.md

@ -4,7 +4,7 @@
* SPDX-License-Identifier: Apache-2.0.
*
* @Date: 2021-07-22 11:46:04
* @LastEditTime: 2021-10-12 18:51:28
* @LastEditTime: 2021-10-18 15:36:46
* @Description:  This files is for
*
* @Modify History:
@ -16,7 +16,8 @@
- 将文件夹xxx压缩成tar.xz格式
```shell
tar -cvf xxx.tar xxx # 生成xxx.tar文件
xz -z xxx.tar # 生成xxx.tar.xz文件, 耗时较长,压缩效率高
xz -z -k 8 xxx.tar # 生成xxx.tar.xz文件, 耗时较长,压缩效率高
tar -Jcvf xxx.tar.xz xxx
```
- 解压缩tar.xz文件

27
scripts/update_dev_path.sh

@ -0,0 +1,27 @@
###
# @ : Copyright (c) 2021 Phytium Information Technology, Inc.
#
# SPDX-License-Identifier: Apache-2.0.
#
# @Date: 2021-10-19 08:10:14
# @LastEditTime: 2021-10-19 08:29:14
# @Description:  This files is for
#
# @Modify History:
# Ver   Who        Date         Changes
# ----- ------     --------    --------------------------------------
###
# 指定sdk profle文件
export sdk_profile=/etc/profile.d/phytium_standalone_sdk.sh
# 检查sdk profile文件是否存在
ls $sdk_profile -l
# 删除profile文件可能存在的DEV目录
sudo sed -i "/export PHYTIUM_DEV_PATH=/d" $sdk_profile
# 将PHYTIUM_DEV_PATH记录在Profile中
echo "export PHYTIUM_DEV_PATH=/mnt/d/phytium-dev" >> $sdk_profile
# 检查DEV目录环境变量是否已定义
cat $sdk_profile | grep PHYTIUM_DEV_PATH
# 在当前控制台窗口中生效PHYTIUM_DEV_PATH
source $sdk_profile
# 检查DEV目录
echo $PHYTIUM_DEV_PATH

2
third-party/Kconfig

@ -1,6 +1,6 @@
# config USE_COREMARK
# bool
# depends on USE_LIBC
# depends on USE_G_LIBC
# prompt "Use Coremark"
# help
# Include Coremark for Benchmark

Loading…
Cancel
Save