新增所有文件
This commit is contained in:
149
boards/e3_176_ref/app_demo/eth-xip/readme.txt
Normal file
149
boards/e3_176_ref/app_demo/eth-xip/readme.txt
Normal file
@@ -0,0 +1,149 @@
|
||||
## 简介
|
||||
|
||||
本demo介绍如何以xip方式运行eth tcp的收发, 特点为:
|
||||
1)sf core的程序xip运行在flash上;
|
||||
2)xip程序启动前,需先在iram中运行sf core的bootloader程序对xspi以及flash进行初始化,然后启动sf的XIP程序;
|
||||
3)bootloader程序作为sf core的boot package由ROM启动或由IAR IDE环境调试启动,
|
||||
sf的XIP程序以固定地址的形式下载到所指定的绝对地址, 下载方法见调试流程;
|
||||
4)storage layout:
|
||||
hyperflash:
|
||||
0x100c0000 boot package (sf bootloader程序 + BPT)
|
||||
0x10140000 sf XIP程序
|
||||
Norflash:
|
||||
0x10008000 boot package (sf bootloader程序 + BPT)
|
||||
0x10140000 sf XIP程序
|
||||
|
||||
## 硬件连接
|
||||
|
||||
- e3_176_ref参考板
|
||||
- Jlink debugger
|
||||
- 连接UART用于log输出
|
||||
- SSCOM工具;
|
||||
|
||||
##配置说明
|
||||
-控制器配置:使能了两路ETH控制器,默认使用ETH2通信。
|
||||
-ip设置:ETH2的ip必须和PC以太网的ip在同一个网段,假设PC的ip为10.18.252.79,ETH2的ip设置为10.18.252.70。
|
||||
|
||||
## 测试方法
|
||||
|
||||
使用以下工具编译本demo,并生成可执行文件:
|
||||
- IAR for ARM
|
||||
可以完成demo Debug模式的调试与FlashDebug模式的下载
|
||||
- SEGGER Embedded Studio for ARM
|
||||
可以完成demo Debug模式的调试与FlashDebug模式的下载
|
||||
|
||||
## Demo IAR工程调试流程说明
|
||||
|
||||
1. 使用JLINK连接到开发板,拨码到0b1110调试模式启动开发板
|
||||
(或者0b0000,保证此时Jlink可以连接即可);
|
||||
|
||||
2. 打开sfXIP工程,并编译;
|
||||
|
||||
3. 打开bootloader工程并切换到FlashDebug配置;
|
||||
0)点击编译,此时IAR会把SFS + bootloader程序 + sfXIP程序整体编译为一个elf文件;
|
||||
1)点击Erase memory 先擦除flash(推荐但非必须);
|
||||
2)点击Download active application按钮,IAR flashloader下载上述elf到flash中;
|
||||
3)以0b0000模式启动开发板,本Demo执行完成后,打开SSCOM软件,端口号选择为TCPServer,
|
||||
本地地址和函数netdemo_connect_server参数一致。
|
||||
使用JLINK下载镜像到e3_176_ref开发板,并启动调试。
|
||||
使用SSCOM软件给开发板发送数据,开发板通过uart打印接收到的数据。
|
||||
该demo会发送tcp报文,SSCOM软件窗口可以查看接收到的数据。
|
||||
|
||||
4. 将bootloader工程切换到Debug配置,点击Download and Debug按钮,即可对bootloader工程进行调试;
|
||||
(此时由于没有配置flashloader, download and Debug仅下载bootloader程序至iram)
|
||||
|
||||
5. 在bootloader程序启动sf之后, 打开sf的XIP程序
|
||||
选择Attach to Running Target, attach到sf的XIP程序进行调试;
|
||||
|
||||
6. 如果需要修改sf的XIP程序,可以直接使用debug and download 进行下载调试。
|
||||
|
||||
## Demo SES工程调试流程说明
|
||||
|
||||
1. 使用JLINK连接到开发板,拨码到0b1110调试模式启动开发板
|
||||
(或者0b0000,保证此时Jlink可以连接即可);
|
||||
|
||||
2. 打开bootloader XIP工程,并编译;
|
||||
|
||||
3. 打开sf XIP工程并切换到FlashDebug配置;
|
||||
0)点击编译;
|
||||
1)点击Target菜单中的Download sf,SES会把SFS、bootloader程序、sf XIP程序分别到flash中;
|
||||
2)以0b0000模式启动开发板,本Demo执行完成后,打开SSCOM软件,端口号选择为TCPServer,
|
||||
本地地址和函数netdemo_connect_server参数一致。
|
||||
使用JLINK下载镜像到e3_176_ref开发板,并启动调试。
|
||||
使用SSCOM软件给开发板发送数据,开发板通过uart打印接收到的数据。
|
||||
该demo会发送tcp报文,SSCOM软件窗口可以查看接收到的数据。
|
||||
|
||||
4. 在bootloader工程,对Project窗口中的Project 'sf'点击右键,在弹出的Debug菜单中选择
|
||||
Start Debugging,即可对bootloader工程进行调试;
|
||||
(此时由于没有配置flashloader, Start Debugging仅下载bootloader程序至iram)
|
||||
|
||||
5. sf工程切换到Debug配置,对Project窗口中的Project 'sf'点击右键,在弹出的Debug菜单中选择
|
||||
Start Debugging,即可对sf工程进行调试;
|
||||
(flashloader先把程序下载到flash,再以XIP的方式进行调试)
|
||||
|
||||
注意:
|
||||
如果需要修改Flash的类型,需根据使用的Flash是否为HyperFlash在bootloader工程配置中增加或者删除
|
||||
"CONFIG_HYPERBUS_MODE=1"的宏定义。
|
||||
|
||||
## bootloader程序的执行步骤
|
||||
|
||||
int main(void)
|
||||
{
|
||||
//xspi reset
|
||||
board_reset_init();
|
||||
|
||||
//sf core的时钟初始化reset
|
||||
sdrv_ckgen_init(&g_clock_config);
|
||||
|
||||
//sf core的管脚初始化
|
||||
sdrv_pinctrl_init(NUM_OF_CONFIGURED_PINS, g_pin_init_config);
|
||||
|
||||
//sf core的打印串口
|
||||
board_debug_console_init();
|
||||
|
||||
//xspi以及flash初始化
|
||||
board_norflash_init();
|
||||
|
||||
//bootloader初始化完成打印
|
||||
ssdk_printf(SSDK_CRIT, "SSDK E3 Bootloader Success!\r\n");
|
||||
udelay(1000*100);
|
||||
|
||||
//启动sf eth XIP程序
|
||||
sdrv_core_force_remap(SDRV_REMAP_SF, SF_MEM_BASE);
|
||||
for (;;);
|
||||
}
|
||||
|
||||
## 如何为USB下载形成pac文件
|
||||
|
||||
在ssdk的根目录下打开cmd执行环境执行如下命令(json默认为IAR工程文件,SES工程使用xxx_ses.json文件):
|
||||
Hyperflash:
|
||||
prebuilts\windows\python-3.7.0\python.exe tools\genpac.py -f [路径]\boards\e3_176_ref\app_demo\eth-xip\pac_config(_ses).json
|
||||
|
||||
Norflash:
|
||||
prebuilts\windows\python-3.7.0\python.exe tools\genpac.py -f [路径]\boards\e3_176_ref\app_demo\eth-xip\pac_config_ospi(_ses).json
|
||||
|
||||
注意:
|
||||
部分part需要根据实际情况修改json文件中downloader_path和dloader_entry,默认按照part 3110配置。
|
||||
以part 3210,flash类型hyperflash为例,downloader_path修改为"downloader_path": "devices\E3210\dloader\e3_176_ref_hyperflash.bin"
|
||||
当part为3104、3106、3206时,dloader_entry需修改为"dloader_entry": "0x504000";sf_entry需修改为"sf_entry": "0x504000",
|
||||
|
||||
## 如何将整个文件的函数放在ram上
|
||||
|
||||
IAR工程:
|
||||
在icf文件中,将section .text object file_exe_in_ram.o 放在 block RAM_TEXT 和 initialize by copy 中
|
||||
例:
|
||||
define block RAM_TEXT with alignment = 4 { section .ram.text, section .textrw, section .text object file_exe_in_ram.o};
|
||||
initialize by copy { section .tcmcode, section .tcmdata, section .ram.text, section .textrw, section .text object file_exe_in_ram.o};
|
||||
|
||||
SES工程:
|
||||
在ld文件中,将file_exe_in_ram.o的.text段排除在rom之外,并放入ram中
|
||||
例:
|
||||
.text : {
|
||||
KEEP(*(.intvec))
|
||||
*(.sram.text.glue_7* .gnu.linkonce.t.*)
|
||||
*(EXCLUDE_FILE(*file_exe_in_ram.o) .text*)
|
||||
} > ROM
|
||||
.ram.text : AT (__ram_text_load_start) ALIGN(4) {
|
||||
KEEP (*(.ram.text*))
|
||||
*file_exe_in_ram.o(.text*)
|
||||
} > RAM
|
||||
Reference in New Issue
Block a user