Browse Source

v1.3.0 update

pull/131/head
liqiaozhong 8 months ago
parent
commit
e98d038bf9
  1. 7
      README.md
  2. 9
      board/d2000_test/fio_mux.c
  3. 10
      board/e2000d_demo/fio_mux.c
  4. 6
      board/e2000q_demo/fio_mux.c
  5. 30
      board/firefly/fio_mux.c
  6. 9
      board/ft2004_dsk/fio_mux.c
  7. 4
      board/pd2308_demo/fio_mux.c
  8. 45
      doc/ChangeLog.md
  9. BIN
      doc/fig/kylin.png
  10. BIN
      doc/fig/linux.png
  11. BIN
      doc/fig/windows.png
  12. 139
      doc/reference/ide/debug.md
  13. BIN
      doc/reference/ide/figs/add_debug_config.png
  14. BIN
      doc/reference/ide/figs/add_include.png
  15. BIN
      doc/reference/ide/figs/breakpoints.png
  16. BIN
      doc/reference/ide/figs/build_done.png
  17. BIN
      doc/reference/ide/figs/build_elf.png
  18. BIN
      doc/reference/ide/figs/cmsis_dap_device.png
  19. BIN
      doc/reference/ide/figs/com_number.png
  20. BIN
      doc/reference/ide/figs/config_tftp.png
  21. BIN
      doc/reference/ide/figs/debug_as.png
  22. BIN
      doc/reference/ide/figs/debug_config_menu.png
  23. BIN
      doc/reference/ide/figs/debug_info.png
  24. BIN
      doc/reference/ide/figs/debug_output.png
  25. BIN
      doc/reference/ide/figs/directory.png
  26. BIN
      doc/reference/ide/figs/disassembly.png
  27. BIN
      doc/reference/ide/figs/e2000_terminal.png
  28. BIN
      doc/reference/ide/figs/git_addurl.png
  29. BIN
      doc/reference/ide/figs/git_commit.png
  30. BIN
      doc/reference/ide/figs/git_createfile.png
  31. BIN
      doc/reference/ide/figs/git_createremote.png
  32. BIN
      doc/reference/ide/figs/git_perspective.png
  33. BIN
      doc/reference/ide/figs/git_push.png
  34. BIN
      doc/reference/ide/figs/git_pushresult.png
  35. BIN
      doc/reference/ide/figs/git_remotes.png
  36. BIN
      doc/reference/ide/figs/git_reposselect.png
  37. BIN
      doc/reference/ide/figs/git_shareproj.png
  38. BIN
      doc/reference/ide/figs/gitclone_branch.png
  39. BIN
      doc/reference/ide/figs/gitclone_finish.png
  40. BIN
      doc/reference/ide/figs/gitclone_repository.png
  41. BIN
      doc/reference/ide/figs/gitrepos_create.png
  42. BIN
      doc/reference/ide/figs/gitview.png
  43. BIN
      doc/reference/ide/figs/gpio_src.png
  44. BIN
      doc/reference/ide/figs/host_ip.png
  45. BIN
      doc/reference/ide/figs/import_makefile_project.png
  46. BIN
      doc/reference/ide/figs/import_project.png
  47. BIN
      doc/reference/ide/figs/install_dir.png
  48. BIN
      doc/reference/ide/figs/install_ide.png
  49. BIN
      doc/reference/ide/figs/install_ok.png
  50. BIN
      doc/reference/ide/figs/installing.png
  51. BIN
      doc/reference/ide/figs/license.png
  52. BIN
      doc/reference/ide/figs/main_page.png
  53. BIN
      doc/reference/ide/figs/makefile_project.png
  54. BIN
      doc/reference/ide/figs/makefile_project_wizard.png
  55. BIN
      doc/reference/ide/figs/managedproj_config.png
  56. BIN
      doc/reference/ide/figs/memory.png
  57. BIN
      doc/reference/ide/figs/new_file.png
  58. BIN
      doc/reference/ide/figs/new_file_wizard.png
  59. BIN
      doc/reference/ide/figs/new_proj.png
  60. BIN
      doc/reference/ide/figs/open_new_terminal.png
  61. BIN
      doc/reference/ide/figs/phystudio_brand.png
  62. BIN
      doc/reference/ide/figs/phystudio_main.png
  63. BIN
      doc/reference/ide/figs/proj_explorer.png
  64. BIN
      doc/reference/ide/figs/proj_folder.png
  65. BIN
      doc/reference/ide/figs/project_wizard.png
  66. BIN
      doc/reference/ide/figs/registers.png
  67. BIN
      doc/reference/ide/figs/sdk_open_location.png
  68. BIN
      doc/reference/ide/figs/sdk_path.png
  69. BIN
      doc/reference/ide/figs/sdk_path_change.png
  70. BIN
      doc/reference/ide/figs/sdk_path_configprj.png
  71. BIN
      doc/reference/ide/figs/sdkconfig_menu.png
  72. BIN
      doc/reference/ide/figs/select_import_proj.png
  73. BIN
      doc/reference/ide/figs/serial_port.png
  74. BIN
      doc/reference/ide/figs/set_tftp.png
  75. BIN
      doc/reference/ide/figs/step_debug.png
  76. BIN
      doc/reference/ide/figs/terminal_tool.png
  77. BIN
      doc/reference/ide/figs/tftp_file_list.png
  78. BIN
      doc/reference/ide/figs/tftp_toolbar_started.png
  79. BIN
      doc/reference/ide/figs/tftp_upload.png
  80. BIN
      doc/reference/ide/figs/tftp_view.png
  81. BIN
      doc/reference/ide/figs/toggle_build.png
  82. BIN
      doc/reference/ide/figs/uninstall_ide.png
  83. BIN
      doc/reference/ide/figs/uninstall_ide_2.png
  84. BIN
      doc/reference/ide/figs/use_dap_or_jlink.png
  85. BIN
      doc/reference/ide/figs/welcome_page.png
  86. BIN
      doc/reference/ide/figs/workspace.png
  87. 396
      doc/reference/ide/ide.md
  88. BIN
      doc/reference/ide/pic/breakpoint.png
  89. BIN
      doc/reference/ide/pic/console.png
  90. BIN
      doc/reference/ide/pic/debugger.png
  91. BIN
      doc/reference/ide/pic/executables.png
  92. BIN
      doc/reference/ide/pic/memory.png
  93. BIN
      doc/reference/ide/pic/pic.png
  94. BIN
      doc/reference/ide/pic/pic1.png
  95. BIN
      doc/reference/ide/pic/pic10.png
  96. BIN
      doc/reference/ide/pic/pic11.png
  97. BIN
      doc/reference/ide/pic/pic12.png
  98. BIN
      doc/reference/ide/pic/pic13.png
  99. BIN
      doc/reference/ide/pic/pic2.png
  100. BIN
      doc/reference/ide/pic/pic3.png

7
README.md

@ -1,6 +1,6 @@
# Phytium-Standalone-SDK
**v1.2.0** [ReleaseNote](./doc/ChangeLog.md)
**v1.3.0** [ReleaseNote](./doc/ChangeLog.md)
## 1. 项目概要
@ -80,15 +80,16 @@ release 分支:发布分支,包含核心启动代码、芯片外设驱动、
- 目前支持在Windows和Linux上使用SDK,支持在x86_64和ARM AARCH64设备上完成交叉编译
![windows](./doc/fig/windows.png)![linux](./doc/fig/linux.png)![输入图片说明](./doc/fig/kylin.png)
![windows](./doc/fig/windows.png)![linux](./doc/fig/linux.png)![输入图片说明](./doc/fig/kylin.png)![phystudio](./doc/reference/ide/figs/phystudio_brand.png)
- 参考[Windows10 WSL快速入门](./doc/reference/usr/install_windos_wsl.md),[Windows10 快速入门](./doc/reference/usr/install_windows.md),[Linux aarch64 快速入门](./doc/reference/usr/install_linux_aarch64.md), [Linux x86_64 快速入门](./doc/reference/usr/install_linux_x86_64.md)
- 参考[Windows10 WSL快速入门](./doc/reference/usr/install_windos_wsl.md),[Windows10 快速入门](./doc/reference/usr/install_windows.md),[Linux aarch64 快速入门](./doc/reference/usr/install_linux_aarch64.md), [Linux x86_64 快速入门](./doc/reference/usr/install_linux_x86_64.md), [PhyStudio用户手册快速入门](./doc/reference/ide/ide.md)
- 参考[使用说明](./doc/reference/usr/usage.md), 新建Phytium Standalone SDK的应用工程,与开发板建立连接
- 参考[例程](./example),开始使用SDK
- 参考[板卡](./doc/reference/usr/how_to_add_board.md),添加自定义板卡
- 参考[体系架构](./doc/reference/usr/how_to_set_architecture.md),配置工程体系架构
- 参考[编译选项](./doc/reference/usr/how_to_build_project.md),配置工程编译选项
- 参考[飞腾派](./doc/reference/usr/use_in_phytium_pi.md), 在飞腾派中使用SDK进行开发,参考[飞腾派镜像制作](./doc/reference/usr/partition_in_phytium_pi.md),制作用于裸机开发的飞腾派镜像
![](./doc/reference/ide/figs/phystudio_main.png)
---
## 3. 硬件参考

9
board/d2000_test/fio_mux.c

@ -32,6 +32,9 @@
FIOCtrl ioctrl;
#define FBOARD_IO_DEBUG_TAG "FBOARD_IO-CFG"
#define FBOARD_IO_ERROR(format, ...) FT_DEBUG_PRINT_E(FBOARD_IO_DEBUG_TAG, format, ##__VA_ARGS__)
#define FBOARD_IO_WARN(format, ...) FT_DEBUG_PRINT_W(FBOARD_IO_DEBUG_TAG, format, ##__VA_ARGS__)
#define FBOARD_IO_INFO(format, ...) FT_DEBUG_PRINT_I(FBOARD_IO_DEBUG_TAG, format, ##__VA_ARGS__)
#define FBOARD_IO_DEBUG(format, ...) FT_DEBUG_PRINT_D(FBOARD_IO_DEBUG_TAG, format, ##__VA_ARGS__)
/*****************************************************************************/
/**
@ -96,14 +99,10 @@ void FIOPadSetCanMux(u32 can_id)
{
FIOCtrlSetFunc(&ioctrl, FIOCTRL_NTRST_SWJ_PAD, FIOCTRL_FUNC1); /* can1-tx: func 1 */
FIOCtrlSetFunc(&ioctrl, FIOCTRL_SWDO_SWJ_PAD, FIOCTRL_FUNC1); /* can1-rx: func 1 */
}
else if (can_id == FCAN2_ID)
{
}
else
{
FBOARD_IO_ERROR("Can id error");
FBOARD_IO_DEBUG("No preconfiguration for CAN-%d iopad mux info.\r\n", can_id);
}
}

10
board/e2000d_demo/fio_mux.c

@ -144,7 +144,7 @@ void FIOPadSetCanMux(u32 can_id)
}
else
{
FBOARD_IO_ERROR("can id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for CAN-%d iopad mux info.\r\n", can_id);
}
}
@ -179,7 +179,7 @@ void FIOPadSetQspiMux(u32 qspi_id, u32 cs_id)
}
else
{
FBOARD_IO_ERROR("qspi cs id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for QSPI cs-%d iopad mux info.\r\n", cs_id);
}
}
@ -287,7 +287,7 @@ void FIOPadSetPwmMux(u32 pwm_id, u32 pwm_channel)
break;
default:
FBOARD_IO_ERROR("pwm id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for PWM-%d iopad mux info.\r\n", pwm_id);
break;
}
}
@ -331,13 +331,13 @@ void FIOPadSetAdcMux(u32 adc_id, u32 adc_channel)
FIOPadSetFunc(&iopad_ctrl, FIOPAD_E43_REG0_OFFSET, FIOPAD_FUNC7);/* adc0-7: func 7 */
break;
default:
FBOARD_IO_ERROR("adc %d channel %d is error.\r\n", adc_id, adc_channel);
FBOARD_IO_DEBUG("No preconfiguration for ADC-%d channel-%d iopad mux info.\r\n", adc_id, adc_channel);
break;
}
}
else
{
FBOARD_IO_ERROR("adc %d channel %d is error.\r\n", adc_id, adc_channel);
FBOARD_IO_DEBUG("No preconfiguration for ADC-%d iopad mux info.\r\n", adc_id);
}
}

6
board/e2000q_demo/fio_mux.c

@ -191,7 +191,7 @@ void FIOPadSetCanMux(u32 can_id)
}
else
{
FBOARD_IO_ERROR("can id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for CAN-%d iopad mux info.\r\n", can_id);
}
}
@ -228,7 +228,7 @@ void FIOPadSetQspiMux(u32 qspi_id, u32 cs_id)
}
else
{
FBOARD_IO_ERROR("qspi cs id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for QSPI cs-%d iopad mux info.\r\n", cs_id);
}
}
@ -335,7 +335,7 @@ void FIOPadSetPwmMux(u32 pwm_id, u32 pwm_channel)
break;
default:
FBOARD_IO_ERROR("pwm id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for PWM-%d iopad mux info.\r\n", pwm_id);
break;
}
}

30
board/firefly/fio_mux.c

@ -61,6 +61,10 @@ void FIOPadSetSpimMux(u32 spim_id)
FIOPadGetFunc(&iopad_ctrl, FIOPAD_W53_REG0_OFFSET), FIOPadGetFunc(&iopad_ctrl, FIOPAD_U55_REG0_OFFSET),
FIOPadGetFunc(&iopad_ctrl, FIOPAD_U53_REG0_OFFSET));
}
else
{
FBOARD_IO_DEBUG("No preconfiguration for SPI-%d iopad mux info.\r\n", spim_id);
}
}
/**
@ -80,7 +84,7 @@ void FIOPadSetGpioMux(u32 gpio_id, u32 pin_id)
FIOPadSetFunc(&iopad_ctrl, FIOPAD_N43_REG0_OFFSET, FIOPAD_FUNC6);
break;
default:
FBOARD_IO_ERROR("pin_id error.");
FBOARD_IO_DEBUG("No preconfiguration for GPIO-%d pin-%d iopad mux info.\r\n", gpio_id, pin_id);
break;
}
}
@ -104,7 +108,7 @@ void FIOPadSetGpioMux(u32 gpio_id, u32 pin_id)
FIOPadSetFunc(&iopad_ctrl, FIOPAD_AW55_REG0_OFFSET, FIOPAD_FUNC5);
break;
default:
FBOARD_IO_ERROR("pin_id error.");
FBOARD_IO_DEBUG("No preconfiguration for GPIO-%d pin-%d iopad mux info.\r\n", gpio_id, pin_id);
break;
}
}
@ -116,7 +120,7 @@ void FIOPadSetGpioMux(u32 gpio_id, u32 pin_id)
FIOPadSetFunc(&iopad_ctrl, FIOPAD_A37_REG0_OFFSET, FIOPAD_FUNC6);
break;
default:
FBOARD_IO_ERROR("pin_id error.");
FBOARD_IO_DEBUG("No preconfiguration for GPIO-%d pin-%d iopad mux info.\r\n", gpio_id, pin_id);
break;
}
}
@ -131,7 +135,7 @@ void FIOPadSetGpioMux(u32 gpio_id, u32 pin_id)
FIOPadSetFunc(&iopad_ctrl, FIOPAD_A51_REG0_OFFSET, FIOPAD_FUNC6);
break;
default:
FBOARD_IO_ERROR("pin_id error.");
FBOARD_IO_DEBUG("No preconfiguration for GPIO-%d pin-%d iopad mux info.\r\n", gpio_id, pin_id);
break;
}
}
@ -150,13 +154,13 @@ void FIOPadSetGpioMux(u32 gpio_id, u32 pin_id)
FIOPadSetFunc(&iopad_ctrl, FIOPAD_AA47_REG0_OFFSET, FIOPAD_FUNC6);
break;
default:
FBOARD_IO_ERROR("pin_id error.");
FBOARD_IO_DEBUG("No preconfiguration for GPIO-%d pin-%d iopad mux info.\r\n", gpio_id, pin_id);
break;
}
}
else
{
FBOARD_IO_ERROR("Gpio id error.");
FBOARD_IO_DEBUG("No preconfiguration for GPIO-%d iopad mux info.\r\n", gpio_id);
}
}
@ -182,7 +186,7 @@ void FIOPadSetCanMux(u32 can_id)
}
else
{
FBOARD_IO_ERROR("can id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for CAN-%d iopad mux info.\r\n", can_id);
}
}
@ -201,7 +205,7 @@ void FIOPadSetQspiMux(u32 qspi_id, u32 cs_id)
}
else
{
FBOARD_IO_ERROR("qspi id id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for QSPI-%d iopad mux info.\r\n", qspi_id);
}
if (cs_id == FQSPI_CS_0)
@ -231,11 +235,11 @@ void FIOPadSetPwmMux(u32 pwm_id, u32 pwm_channel)
}
else
{
FBOARD_IO_ERROR("pwm channel is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for PWM-%d channel-%d iopad mux info.\r\n", pwm_id, pwm_channel);
}
break;
default:
FBOARD_IO_ERROR("pwm id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for PWM-%d iopad mux info.\r\n", pwm_id);
break;
}
}
@ -275,7 +279,7 @@ void FIOPadSetMioMux(u32 mio_id)
}
break;
default:
FBOARD_IO_ERROR("mio id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for MIO-%d iopad mux info.\r\n", mio_id);
break;
}
}
@ -297,7 +301,7 @@ void FIOPadSetTachoMux(u32 pwm_in_id)
FIOPadSetFunc(&iopad_ctrl, FIOPAD_AE59_REG0_OFFSET, FIOPAD_FUNC1);
break;
default:
FBOARD_IO_ERROR("pwm_in id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for pwm-in-%d iopad mux info.\r\n", pwm_in_id);
break;
}
}
@ -321,7 +325,7 @@ void FIOPadSetUartMux(u32 uart_id)
FIOPadSetFunc(&iopad_ctrl, FIOPAD_A49_REG0_OFFSET, FIOPAD_FUNC0);
break;
default:
FBOARD_IO_ERROR("Uart id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for UART-%d iopad mux info.\r\n", uart_id);
break;
}
}

9
board/ft2004_dsk/fio_mux.c

@ -32,6 +32,9 @@
FIOCtrl ioctrl;
#define FBOARD_IO_DEBUG_TAG "FBOARD_IO-CFG"
#define FBOARD_IO_ERROR(format, ...) FT_DEBUG_PRINT_E(FBOARD_IO_DEBUG_TAG, format, ##__VA_ARGS__)
#define FBOARD_IO_WARN(format, ...) FT_DEBUG_PRINT_W(FBOARD_IO_DEBUG_TAG, format, ##__VA_ARGS__)
#define FBOARD_IO_INFO(format, ...) FT_DEBUG_PRINT_I(FBOARD_IO_DEBUG_TAG, format, ##__VA_ARGS__)
#define FBOARD_IO_DEBUG(format, ...) FT_DEBUG_PRINT_D(FBOARD_IO_DEBUG_TAG, format, ##__VA_ARGS__)
/*****************************************************************************/
/**
@ -90,14 +93,10 @@ void FIOPadSetCanMux(u32 can_id)
{
FIOCtrlSetFunc(&ioctrl, FIOCTRL_NTRST_SWJ_PAD, FIOCTRL_FUNC1); /* can1-tx: func 1 */
FIOCtrlSetFunc(&ioctrl, FIOCTRL_SWDO_SWJ_PAD, FIOCTRL_FUNC1); /* can1-rx: func 1 */
}
else if (can_id == FCAN2_ID)
{
}
else
{
FBOARD_IO_ERROR("Can id error");
FBOARD_IO_DEBUG("No preconfiguration for CAN-%d iopad mux info.\r\n", can_id);
}
}

4
board/pd2308_demo/fio_mux.c

@ -167,7 +167,7 @@ void FIOPadSetQspiMux(u32 qspi_id, u32 cs_id)
}
else
{
FBOARD_IO_ERROR("qspi cs id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for QSPI cs-%d iopad mux info.\r\n", cs_id);
}
}
@ -207,7 +207,7 @@ void FIOPadSetPwmMux(u32 pwm_id, u32 pwm_channel)
break;
default:
FBOARD_IO_ERROR("pwm id is error.\r\n");
FBOARD_IO_DEBUG("No preconfiguration for PWM-%d iopad mux info.\r\n", pwm_id);
break;
}
}

45
doc/ChangeLog.md

@ -1,3 +1,48 @@
# Phytium Standalone SDK 2024-03-25 v1.3.0 ChangeLog
Change Log since 2024-3-19
## example
- solve compile problem when use no-letter-shell mode
- solve fp print err in SD examples
- solve print err in SERIAL exmaples
- README update
- solve the oversize interval problem in generic_timer physical example
## board
- update iomux err output into debug form
# Phytium Standalone SDK 2024-03-19 ChangeLog
Change Log since 2024-03-18
## driver
- modify function FXmacDetect:return error when phy_status is not a standard value.
## third-party
- add FXmacBdRingUnAlloc call when system run into some problems after FXmacBdRingAlloc.
- adjusted the location of interrupt protection code, which make the system more robust.
- Changing the order in which resources are released, which solved problems with tx buffers not being cleared in time.
- add the code which can clear the netif when call function LwipPortAdd.
# Phytium Standalone SDK 2024-03-14 ChangeLog
Change Log since 2024-03-19
## IDE
- Add IDE related document
Change Log since 2024-03-13
## example
- update I2C, PIN, SD, SFUD, SPIFFS, SPI, SERIAL etc. examples to adapt to new auto test tool
# Phytium Standalone SDK 2024-03-13 ChangeLog
Change Log since 2024-03-08

BIN
doc/fig/kylin.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 22 KiB

BIN
doc/fig/linux.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 18 KiB

BIN
doc/fig/windows.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

139
doc/reference/ide/debug.md

@ -0,0 +1,139 @@
## 调试教程
### 创建调试配置
* 点击调试按钮下拉框,进入Debug Configurations.
![](pic/pic.png)
* 单击左上角红框中图标,或者双击Phytium GDB OpenOCD Debugging,创建调试配置。
![](pic/pic1.png)
* 选中工程,Main选项卡中C/C++ Application自动填充好工程编译后生成的同名二进制文件。
![](pic/pic3.png)
* Debugger选项卡中,包含启动openocd和gdb的调试配置。Probe对应使用的调试适配器。选择不同的Probe会有不同的Config options启动脚本来启动openocd。
![](pic/pic2.png)
* Startup选项卡,包括一些用于配置调试会话的openocd选项。
![](pic/pic4.png)
上述字段会按照如下顺序生成命令发送给gdb:
```csharp
monitor reset init
monitor halt
monitor arm semihosting enable
symbol-file ".../wdt/Debug/est.elf"
load ".../wdt/Debug/est.elf"
monitor gdb_breakpoint_override hardware
break main
monitor reset halt
monitor halt
```
* Common选项卡,选择调试配置保存的位置。选择Local file,即保存在本地工作区;选择Shared file,即保存在工程中。
![](pic/pic5.png)
### 启动调试会话
* 启动调试会话前,确保:
* 开发板具有JTAG接口,并且通过调试适配器将开发板的JTAG接口和主机的USB接口连接起来。
* 开发板上电。
* 选中工程,完成调试配置后,点击Debug按钮,启动调试,默认断点在main函数入口。
![](pic/pic6.png)
* 如果需要再次启动同一工程的调试,可以点击Debug下拉图标,选择第一项,启动调试。
![](pic/pic7.png)
* 注意:启动调试会话时,Phytium的视图会发生更改。
* 如果成功启动了调试会话,可以看到openocd和aarch-none-elf-gdb这两个进程。
![](pic/pic8.png)
* 同时,PhyStudio中的视图会从Edit视图切换到Debug视图,Debug视图中会展示:
* 函数调用堆栈。
* 源代码视图显示断点位置。
* Variables、Expressions、Breaks等视图也会处于打开状态。
* Console视图打开。
如果是第一次在PhyStudio进入调试,可能会弹出一个确认视图切换的对话框,点击Switch按钮切换即可。
![](pic/pic9.png)
![](pic/pic10.png)
### 调试应用
* 基本调试功能位于顶部的栏中。下图按钮从左至右依次为:
![](pic/pic11.png)
* Resume:继续执行程序;如果没有断点就一直执行,直到执行结束;如果运行过程中有断点,就跳转到该断点。
* Suspend:停止执行。
* Terminate:终止调试会话。
* Connect/Disconnect:断开调试连接,已禁用。
* Step Into:下一步,若下一步是函数,则会进入函数体内部执行。
* Step Over:下一步,不会进入函数体。
* Step Return:从进入的函数中跳出来或者跳转到所在函数中的下一个断点。
* Variables视图
![](pic/variables.png)
该视图中自动填充调试程序的上下文中存在的变量。包含三列:
* Name 变量名称。
* Type 变量数据类型。
* Value 变量的值。
* 注:该视图不允许添加或删除行,只允许自动填充变量。
* Breakpoints视图
显示当前所有断点信息。
![](pic/breakpoint.png)
添加断点方式:在源代码区域。双击需要添加的断点的代码显示代码行数的位置。
![](pic/pic12.png)
* Disassembly视图
点击红框中图标将会跳出Disassembly视图,可以查看对应执行的汇编指令。
![](pic/pic13.png)
* Console视图
显示openocd进程执行情况。
![](pic/console.png)
* Registers视图
显示所有寄存器的值。
![](pic/registers.png)
* Problems视图
显示编译、运行和调试过程中产生的警告和错误信息。
![](pic/problems.png)
* Executables视图
![](pic/executables.png)
* Debugger Console视图
显示gdb调试信息。
![](pic/debugger.png)
可添加需要监测的地址,监测该地址中的值的变化。
![](pic/memory.png)
* Terminal视图
点击Window->Show View->Terminal,生成该视图,显示连接开发板的串口信息。
![](pic/terminal.png)

BIN
doc/reference/ide/figs/add_debug_config.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
doc/reference/ide/figs/add_include.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
doc/reference/ide/figs/breakpoints.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

BIN
doc/reference/ide/figs/build_done.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
doc/reference/ide/figs/build_elf.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
doc/reference/ide/figs/cmsis_dap_device.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
doc/reference/ide/figs/com_number.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
doc/reference/ide/figs/config_tftp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
doc/reference/ide/figs/debug_as.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
doc/reference/ide/figs/debug_config_menu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
doc/reference/ide/figs/debug_info.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
doc/reference/ide/figs/debug_output.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 KiB

BIN
doc/reference/ide/figs/directory.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
doc/reference/ide/figs/disassembly.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 KiB

BIN
doc/reference/ide/figs/e2000_terminal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
doc/reference/ide/figs/git_addurl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
doc/reference/ide/figs/git_commit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
doc/reference/ide/figs/git_createfile.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
doc/reference/ide/figs/git_createremote.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
doc/reference/ide/figs/git_perspective.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
doc/reference/ide/figs/git_push.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
doc/reference/ide/figs/git_pushresult.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
doc/reference/ide/figs/git_remotes.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
doc/reference/ide/figs/git_reposselect.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
doc/reference/ide/figs/git_shareproj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
doc/reference/ide/figs/gitclone_branch.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
doc/reference/ide/figs/gitclone_finish.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
doc/reference/ide/figs/gitclone_repository.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
doc/reference/ide/figs/gitrepos_create.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
doc/reference/ide/figs/gitview.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
doc/reference/ide/figs/gpio_src.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

BIN
doc/reference/ide/figs/host_ip.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
doc/reference/ide/figs/import_makefile_project.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
doc/reference/ide/figs/import_project.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
doc/reference/ide/figs/install_dir.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
doc/reference/ide/figs/install_ide.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
doc/reference/ide/figs/install_ok.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
doc/reference/ide/figs/installing.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

BIN
doc/reference/ide/figs/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
doc/reference/ide/figs/main_page.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
doc/reference/ide/figs/makefile_project.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
doc/reference/ide/figs/makefile_project_wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
doc/reference/ide/figs/managedproj_config.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
doc/reference/ide/figs/memory.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

BIN
doc/reference/ide/figs/new_file.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
doc/reference/ide/figs/new_file_wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
doc/reference/ide/figs/new_proj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
doc/reference/ide/figs/open_new_terminal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
doc/reference/ide/figs/phystudio_brand.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
doc/reference/ide/figs/phystudio_main.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
doc/reference/ide/figs/proj_explorer.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
doc/reference/ide/figs/proj_folder.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

BIN
doc/reference/ide/figs/project_wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
doc/reference/ide/figs/registers.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

BIN
doc/reference/ide/figs/sdk_open_location.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
doc/reference/ide/figs/sdk_path.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

BIN
doc/reference/ide/figs/sdk_path_change.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
doc/reference/ide/figs/sdk_path_configprj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
doc/reference/ide/figs/sdkconfig_menu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

BIN
doc/reference/ide/figs/select_import_proj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

BIN
doc/reference/ide/figs/serial_port.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

BIN
doc/reference/ide/figs/set_tftp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
doc/reference/ide/figs/step_debug.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
doc/reference/ide/figs/terminal_tool.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
doc/reference/ide/figs/tftp_file_list.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
doc/reference/ide/figs/tftp_toolbar_started.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

BIN
doc/reference/ide/figs/tftp_upload.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

BIN
doc/reference/ide/figs/tftp_view.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

BIN
doc/reference/ide/figs/toggle_build.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
doc/reference/ide/figs/uninstall_ide.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
doc/reference/ide/figs/uninstall_ide_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
doc/reference/ide/figs/use_dap_or_jlink.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
doc/reference/ide/figs/welcome_page.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
doc/reference/ide/figs/workspace.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

396
doc/reference/ide/ide.md

@ -0,0 +1,396 @@
# PhyStudio IDE 开发环境
- PhyStudio 基于 Eclipse CDT C/C++ 开发,可以便利开发人员在集成开发环境中开发面向 Phytium 系列 CPU 平台的 Standalone 应用程序。本开发环境集成了编辑、编译、网络下载和调试等基础功能,还有管理工程硬件平台、配置 SDK 和 TFTP 服务器等附加功能,可以简化开发工具的安装流程、提升开发调试体验、增加 Standalone 应用程序的开发体验
- PhyStudio 目前支持 Windows x64 操作系统
- PhyStudio 目前支持 E2000 D/Q Demo 板(开发下载和调试)和飞腾派(开发和下载)
- PhyStudio 集成了如下运行环境
- `OpenJDK17`,开源的 JAVA SE 平台实现
- `Python 3.8`,Python 平台支持
- `Eclipse Embedded CDT 2023-03`,基于开源 Eclipse 环境进行了修改
- `OpenOCD 0.12.0`, 本环境中的 openocd.exe 基于开源软件修改后编译,如果需要修改后的源码,可以联系 `opensource_embedded@phytium.com.cn` 获取
- `xpack-aarch64-none-elf-gcc-11.3.1-1.2`, xpack 发布的[64位交叉编译链](https://github.com/xpack-dev-tools/aarch64-none-elf-gcc-xpack),用于 Windows 环境交叉编译 ARM64 目标码
- `xpack-arm-none-eabi-gcc-12.2.1-1.2-win32-x64`,xpack 发布的[32位交叉编译链](https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack),用于 Windows 环境交叉编译 ARM32 目标码
- `xpack-windows-build-tools-4.3.0-1`, xpack 发布的[Windows平台构建工具](xpack-windows-build-tools-4.3.0-1),包含 win32 平台的 make, busybox 工具
- `Phytium Standalone SDK`,用于 Phytium 系列 CPU 的 嵌入式软件开发工具包
## 1. 快速开始
### 1.1 下载 PhyStudio 安装包
- 从下面的链接中下载开发环境安装包
- [PhyStudio_Setup_V0.1.3.exe](https://pan.baidu.com/s/1azuFUjzg0jZgilQB4r1OlA)
> 提取码: phyt
### 1.2 安装/卸载 PhyStudio
- 安装 PhyStudio 通过双击安装包 .exe 文件,安装界面如图所示
![](./figs/install_ide.png)
![](./figs/license.png)
![](./figs/directory.png)
![](./figs/install_dir.png)
![](./figs/installing.png)
- 点击`安装`后,开始安装,等待安装完成后,勾选`运行 PhyStudio`,然后点击`完成`启动 PhyStudio
![](./figs/install_ok.png)
- 启动后会提示选择一个 workspace, 选择一个目录点击 `Launch`即可,勾选`Use this as the default and do not ask again`下次启动会记住这次选择不再询问
![](./figs/workspace.png)
- 卸载 PhyStudio 通过双击安装目录下的 uninst.exe 完成
![](./figs/uninstall_ide.png)
![](./figs/uninstall_ide_2.png)
- 卸载完成后手动删除安装目录即可
### 1.3 工作主界面介绍
- PhyStudio 基于 Eclipse 平台开发,界面风格继承自 Eclipse,启动后的欢迎界面如下图所示,从上至下,依次是使用文档中心,使用 issue 提交中心、管理 SDK 的入口,以及导入managed工程和makefile工程
![](./figs/welcome_page.png)
- 创建/导入工程后进入工作主界面,如下图所示,主界面主要包括四大区域:
- 工程视图区
- 编辑区
- 透视图区
- 信息输出区
- 其中,工程视图区顾名思义是管理特定工程项目的,通过在工程视图选中一个工程,在菜单栏可以进行编译、调试等操作,同时,一些常用操作会在工具栏以图标的形式提供快捷方式
- 编辑区提供编码、调试视图等一系列特定功能,窗口可以移动、关闭、最大化和最小化
- 透视图定义了当前界面呈现的菜单栏,工具栏,以及功能窗口集合及其布局,不同透视图提供了完成特定类型任务的功能集合,例如 C 透视图组合了项目开发,源文件编辑,项目构建等常用的开发功能窗口,菜单和功能按钮,调试透视图包含了调试项目程序常用的调试功能窗口,菜单和功能按钮
- 信息输出区提供了各种信息的输出窗口,包括编译过程信息,调试过程信息、串口终端信息等
![](./figs/main_page.png)
### 1.4 Phytium Standalone SDK管理
在PhyStudio中SDK可以分为全局SDK和工程SDK:
1. 全局的SDK作用是在创建工程的时候提供模板示例工程,并初始化工程
2. 工程的SDK作用是提供头文件包含,组件文件链接等
#### 1.4.1 修改全局SDK路径
- 在离线的情况下,可以提前下载好Phytium Standalone SDK,然后在工具栏点击SDK Manage下拉菜单->Config SDK Path配置新的SDK路径,点击`Apply and Close`后就会加载新的SDK模板工程,可能会耗时几分钟
![](./figs/sdk_path_change.png)
#### 1.4.2 在线更新SDK
- 如果用户需要在现有的SDK上面进行更新,则需要按照上面步骤先找到SDK Path(默认是PhyStudio的安装路径)
- 进入 Phytium Standalone SDK 的路径,通过 git 工具更新 SDK,需要注意的是可能会出现冲突
```
cd ./phytium_standalone_sdk
git remote add pub https://gitee.com/phytium_embedded/phytium-standalone-sdk.git
git fetch pub
git pull
```
- 进入 `tools\export_ide` 目录,双击运行脚本 `gen_proj.bat`,将 Standalone SDK 的 example 转换为 PhyStudio 工程
- Phytium Standalone SDK 资源的详细介绍可以[参考](https://gitee.com/phytium_embedded/phytium-standalone-sdk)
#### 1.4.3 修改工程的SDK路径
- 全局的SDK主要是在创建工程的时候加载模板工程并给工程设置初始的SDK路径,对创建完成的工程不生效
- 如果某个工程需要修改SDK的路径,选中工程右键点击Properties->Resource->Linked Resources->SDK_DIR,按照下图的操作进行修改
![](./figs/sdk_path_configprj.png)
#### 1.4.4 打开工程的SDK路径
- 通过选中工程,右键菜单选择`Open SDK Location`可以打开工程所在的SDK目录,如下图所示:
![](./figs/sdk_open_location.png)
### 1.5 导入或新建项目
PhyStudio支持`Managed工程`和`makefile工程`两种类型,用户需要根据自己的使用场景和使用习惯进行选择,两者的区别如下:
- `Managed工程`通过界面配置,编译时会自动生成makefile文件,工程的用户文件保存在Workspace下面,通过文件链接的方式引用SDK
- `makefile工程`配置编译选项需要修改makefile文件,工程保存在SDK的example目录下面,使用灵活度较高
#### 1.5.1 Managed工程
在PhyStudio中可以创建一个空的工程或者基于SDK的example导入工程此类工程,推荐通过导入的方式创建,以导入example工程为例:
- 点击 File > New > Import Phytium Project,可以导入现有的 Phytium Standalone SDK 工程
![](./figs/import_project.png)
- 进入项目导入界面后,选择一个导入例程,选择运行平台,如 e2000d 和运行模式,如 aarch64,最后点击 Finish 开始导入
![](./figs/project_wizard.png)
- 等待一段时间导入完成,然后可以通过工程浏览器查看文件
![](./figs/proj_explorer.png)
![](./figs/proj_folder.png)
- 如上图所示,其中
- inc 和 src 是工程的头文件和源文件目录,文件存在在 workspace 的工程目录下
- SDK 是工程依赖的 Standalone SDK 目录,以文件链接的方式存在,不在工程目录下
- linkscripts 是工程编译依赖的链接脚本
- README.md 和 fig 是工程的说明文档及相关图片
- sdkconfig 是用于本工程的 SDK 配置
- 配置编译和链接选项,选中工程右键点击Properties->C/C++ Build->Settings->Tool Settings,如果是配置汇编的选项则是在GNU Arm Cross Assembler下,C和C++同理,链接选项在Linker下面配置。以包含C的头文件路径为例,在GNU Arm Cross C Compiler下面进行配置,需要注意的是,在选择路径的时候可以选择Workspace或者File system,如果头文件路径是在工程内就选择Workspace,然后找到对应工程下面的文件夹:
![](./figs/managedproj_config.png)
- 此外,可以通过 File > New > Phytium Project,进入工程创建向导,创建一个新的项目
![](./figs/new_proj.png)
- 创建完成后的工程与导入的工程类似
#### 1.5.2 Makefile工程
此工程类型需要用户自己管理makefile源文件以及头文件的编译,开发方式与命令行方式一样,适用于比较熟悉makefile的用户,目前支持通过SDK的示例工程导入,需要注意的是此类工程是完全链接SDK下的示例工程
- 点击 File > New > Import Phytium Makefile Project,可以导入现有的 Phytium Standalone SDK 工程
![](./figs/import_makefile_project.png)
- 进入项目导入界面后,选择一个导入例程,选择运行平台,如 e2000d 和运行模式,如 aarch64,最后点击 Finish 开始导入
![](./figs/makefile_project_wizard.png)
- 等待一段时间导入完成并初始化后,然后可以通过工程浏览器查看文件
![](./figs/makefile_project.png)
- 如上图所示,其中
- inc 和 src 是工程的头文件和源文件目录,文件存在于SDK的example目录下
- SDK 是工程依赖的 Standalone SDK 目录,以文件链接的方式存在,不在工程目录下
- linkscripts 是工程编译依赖的链接脚本
- README.md 和 fig 是工程的说明文档及相关图片
- sdkconfig 是用于本工程的 SDK 配置
- makefile 用于编译的makefile,用户需要自己管理
- 配置编译链接选项可以直接修改makefile或者配置sdkconfig来实现,sdkconfig的配置方式将在后面章节中进行介绍
- 如果增加了新的头文件和源文件需要在makefile中进行添加,才能编译通过。如果增加了工程路径之外的源文件编译和头文件包含,除了在makefile中添加之外,还需要在工程中配置头文件的包含路径,才能在编辑器中找到符号表,右键选中工程点击Properties->C/C++ General->Paths and Symbols->选择为Assembly/C/C++添加头文件路径。配置宏定义和库文件路径分别是在Symbols和Library Paths下
![](./figs/add_include.png)
### 1.6 配置和构建项目
#### 1.6.1 配置sdkconfig
PhyStudio支持通过sdkconfig配置工程,`Makefile工程`类型支持绝大多数的sdkconfig配置,而`Managed工程`目前仅支持配置组件,其他的一些配置通过sdkconfig可能不会生效,如编译选项,target类型等。
- 双击工程浏览器(Project Explorer)中的 sdkconfig 进入 SDK 配置界面
![](./figs/sdkconfig_menu.png)
- 在 SDK 配置界面可以按需要选择或者删除配置,例如,选中 Drivers configuration > Use gpio 和 Use FGPIO,然后按 Ctrl + S 保存配置后,工程会新增一个 fgpio 的路径,后面就可以使用 GPIO 驱动了
![](./figs/gpio_src.png)
#### 1.6.2 构建项目
- 完成配置后选中编译的工程,点击工具栏的`Build`图标开始编译
![](./figs/toggle_build.png)
![](./figs/build_done.png)
- 编译完成后,生成的 ELF 文件保存在 Debug 目录下
![](./figs/build_elf.png)
### 1.7 使用串口工具连接开发板
- 启动开发板,PhyStudio 所在的主机通过串口连接开发板
![](./figs/com_number.png)
- 在 Windows > Show View > Terminal 中启动串口终端工具,通过`Open a Terminal` 启动一个新的串口终端,
![](./figs/terminal_tool.png)
![](./figs/open_new_terminal.png)
- 这里连接的是串口 COM5,点击`OK`连接成功后可以和开发板进行交互
![](./figs/com5.png)
![](./figs/e2000_terminal.png)
> 注意有些开发板启动后默认会进入 Linux 环境,要进行后续开发和调试,需要在 U-Boot 界面中修改 bootcmd 使得开发板启动后停留在 U-Boot 界面
### 1.8 通过网络下载程序
- 对于有网口的开发板,可以使用 TFTP 直接将镜像加载到开发板上进行启动,首先需要用网线连接开发板,PhyStudio 主机侧连接开发板的网络需要配置好 ip 网段与开发板后续配置的 ip 配套
- 如下图所示,进入连接开发板的网络适配器配置,PhyStudio 主机侧的 ip 地址设置为 `192.168.4.50`,子网掩码设置为 `255.255.255.0`,网关设置为 `192.168.4.1`
![](./figs/host_ip.png)
- 然后点击 PhyStudio 的 Window > Show View > TFTPServerView,配置 TFTP 服务
![](./figs/tftp_view.png)
- 点击 `Config FTP Server` 进入配置界面
![](./figs/config_tftp.png)
- 配置 `Listener Host` 为之前设置的主机 ip `192.168.4.50`,TFTP 服务的路径默认为安装路径下的tftp目录,也可以进行修改,配置完成后点击 `Apply and Close` 生效配置
![](./figs/set_tftp.png)
- 配置完成之后点击`Start FTP server`按钮启动 TFTP 服务,启动成功之后按钮状态显示为这样![](./figs/tftp_toolbar_started.png),对工程进行编译,elf文件会自动拷贝到TFTP目录下面去,用户也可以手动拖拽elf文件到TFTP视图中去。*注意:如果启动失败,请检查网络配置、是否已经启动过TFTP服务了,或是端口被占用。*
![](./figs/tftp_file_list.png)
- 在连接开发板的串口终端中,依次输入下列命令,配置开发板网络,加载并启动镜像 get-start.elf
```
setenv ipaddr 192.168.4.20
setenv serverip 192.168.4.50
setenv gatewayip 192.168.4.1
tftpboot 0xa0100000 get-start.elf
bootelf -p 0xa0100000
```
> 镜像的名字根据实际情况设置
![](./figs/tftp_upload.png)
- 随后可以看到开发板的运行输出
### 1.9 启动程序调试运行
- 对于有 FJTAG 接口的开发板,可以使用调试运行功能,首先参考[jtag_debugging.md](../jtag_debugging/jtag_debugging.md)进行硬件连接
> 目前支持 FJTAG 调试的开发板包括 E2000 D/Q Demo 板
- 如果使用 CMSIS DAP/DAPLink 作为 JTAG 适配器,连接成功后,设备管理器上应该会看到枚举出的 HID 设备
> 具体设备类型取决于 CMSIS DAP 的生成厂家
![](./figs/cmsis_dap_device.png)
- 如果使用 Jlink 作为适配器,连接成功后,设备管理器上应该会看到枚举出的 Bulk 设备
> 注意 PhyStudio 使用 OpenOCD 作为调试代理,用 Jlink 作为适配器时不能使用 Jlink 的官方驱动,必须用 libusb 将 Jlink 设备识别为 USB Bulk 设备,相关内容可以参考 [Using J-Link with OpenOCD](https://wiki.segger.com/OpenOCD),[解决 OpenOCD 不能识别 J-Link的方法](https://blog.csdn.net/weixin_45467056/article/details/119886361)
- 用适配器连接 PhyStudio 主机和开发板后,在 PhyStudio 的工程中创建调试配置,通过 Debug Configurations 进入调试配置界面,双击 Phytium GDB OpenOCD Debug 创建一个调试配置
![](./figs/add_debug_config.png)
![](./figs/debug_config_menu.png)
- 进入调试配置界面,一般只需要选择适配器(Probe)是 Jlink 还是 DAP,其他配置可以参考 Eclipse OpenOCD 的[配置说明](https://eclipse-embed-cdt.github.io/debug/openocd/)修改,修改完成后点击`Apply`保存配置
![](./figs/use_dap_or_jlink.png)
- 然后复位开发板,保证开发板停留在 U-Boot 界面,然后选中待调试的工程,点击 `Debug As` 启动调试
![](./figs/debug_as.png)
- 启动调试后进入调试视图,默认会停在在 main 函数入口断点
![](./figs/debug_output.png)
- 如果启动后调试后没有显示符号表,可能是elf文件较大还在下载中,请耐心等待一会。或者是没有勾选sdkconfig中的Generate debug symbols选项,勾选之后重新编译即可
- 在调试过程中,通过工具栏的`Step Into`、`Step Over` 和 `Continue` 等控制程序的运行
![](./figs/step_debug.png)
- 通过`Variables`、`Breakpoints` 和 `Expressions` 等窗口进行调试观察
![](./figs/debug_info.png)
![](./figs/breakpoints.png)
- 通过 Windows > Show View > Disassembly 查看反汇编信息
![](./figs/disassembly.png)
- 通过 Windows > Show View > Register 查看实时寄存器信息
![](./figs/registers.png)
> 选择 Number Format > Hex 可以显示16进制的寄存器值
- 通过 Windows > Show View > Memory 查看运行实时内存
![](./figs/memory.png)
### 1.10 Git版本控制
- PhyStudio加入了EGit插件,支持git版本控制,具体使用方法参照官方文档[EGit用户指导](https://wiki.eclipse.org/EGit/User_Guide "EGit用户指导"),这里介绍一些基本的用法
#### 1.10.1 从远程仓库克隆
- 点击右上角的按钮,切换到Git透视图,如下图所示,或者点击菜单栏的Window->Show View->Other..->Git->Git Repositories
![](./figs/git_perspective.png)
- 在Git视图中点击克隆远程仓库的按钮,输入仓库地址,输入用户名和密码,点击Next按钮
![](./figs/gitclone_repository.png)
- 选择需要克隆的分支,然后点击Next按钮
![](./figs/gitclone_branch.png)
- 选择目录,然后点击Finish按钮,等待克隆完成之后会在Git视图中显示
![](./figs/gitclone_finish.png)
![](./figs/gitview.png)
#### 1.10.2 创建一个新的Git仓库
- 在Git视图中点击创建Git新仓库按钮,选择仓库目录,点击`Create`按钮
![](./figs/gitrepos_create.png)
- 创建完之后关联远程仓库,在仓库的Remotes节点上面右键点击`Create Remote..`按钮,然后在弹出的对话框中点击`Create`按钮
![](./figs/git_createremote.png)
- 点击左侧的`Change..`按钮,在右侧输入仓库地址和用户名密码,点击`Finish`按钮,然后点击左侧的`Save`按钮
![](./figs/git_addurl.png)
- 添加完成后在仓库下就能看见远程仓库,如果没有显示就点击一下Git视图的刷新按钮
![](./figs/git_remotes.png)
#### 1.10.3 把代码推送到远程仓库
- 如果代码还没有加入到git仓库里面,需要右键点击工程->Team->Share Project..
![](./figs/git_shareproj.png)
- 选择一个已有的仓库或者新建一个仓库然后选择,点击`Finish`按钮,此时工程代码已经被添加到了代码库。注意:如果代码已经添加到仓库了,直接忽略添加的步骤。
![](./figs/git_reposselect.png)
- 右键选择工程->Team->Commit,把要提交的内容从Unstaged Changes加入到Staged Changes中去,然后输入提交信息,最后点击`Commit`按钮
![](./figs/git_commit.png)
- 右键选择工程->Team->Push Branch 'master',在弹出的对话框中点击`Push`按钮进行推送。
> 注意: 如果推送失败,有可能是远程分支上面的提交没有同步,此时可能需要fetch、pull或是merge之后才能进行推送
![](./figs/git_push.png)
![](./figs/git_pushresult.png)
### 1.11 开发技巧
#### 1.11.1 常用快捷键
Alt+/ 代码提示
F3或者Ctrl+鼠标左键 查看定义或声明
F4 查看继承关系
Ctrl+Alt+H 选中函数,查看调用关系
Ctrl+Shift+G 查看所有引用
Ctrl+Shift+F 格式化代码(可能和其他应用的快捷键冲突)
Ctrl+H 全局搜索
Ctrl+D 删除当前行
Ctrl+Alt+ ↓或↑ 向下或者向上复制
Ctrl+/ 注释当前行, 再按则取消注释
Ctrl+Shift+/ 块注释
Ctrl+Shift+\ 取消块注释
Alt+ ←或→ 光标定位到前一个或者后一个位置
Ctrl+Q 定位到最后编辑的地方
Ctrl+K 参照选中的 Word 快速定位到下一个
Ctrl+L 定位到某行
Shift+Enter 在当前行的下一行插入空行

BIN
doc/reference/ide/pic/breakpoint.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
doc/reference/ide/pic/console.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

BIN
doc/reference/ide/pic/debugger.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
doc/reference/ide/pic/executables.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
doc/reference/ide/pic/memory.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
doc/reference/ide/pic/pic.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
doc/reference/ide/pic/pic1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
doc/reference/ide/pic/pic10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

BIN
doc/reference/ide/pic/pic11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
doc/reference/ide/pic/pic12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
doc/reference/ide/pic/pic13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

BIN
doc/reference/ide/pic/pic2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
doc/reference/ide/pic/pic3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save