一、固化
-
在 SDK 的菜单“New -> Application Project”,建立一个 FSBL工程;
-
在New Project界面,Project name:FSBL(可以自己定义工程名,不能中文),OS Platform:standalone,最后点击”Next”;
-
工程模板选择,选择Zynq FSBL,最后点击”Finish”;
-
创建BOOT文件,选择 工程,右键选择 Create Boot Image ;
-
弹出的”Create Boot Image”窗口中可以看到生成的 BIF 文件路径,BIF 文件是生成 BOOT 文件的配置文件,还有生成的BOOT.bin文件路径,BOOT.bin文件是我们需要的启动文件,可以烧写到QSPI Flash,最后点击”Create Image”;
-
在SDK菜单Xilinx -> Program Flash;
-
在Program Flash Memory界面Hardware Platform:最新硬件平台,Image File:添加BOOT文件,FSBL File:添加fsbl文件,勾选Verify after flash,最后点击”Program”;
二、AMP模式下,DEBUG注意事项
三、FreeRTOS中导入lwip
- 添加lwip支持包;
- 勾选"lwip202";
- 修改lwip202配置参数;
设置lwip_memory_options 选项。将mem_size 设置为524288,增加可得到的总的堆空间;将memp_n_pbuf设置为 1024,增加pbuf 数;将 memp_n_tcp_seg 设置为1024,提高同时排队的TCP 段数。如下图所示。
设置 pbuf_options 选项。将 pbuf_pool_size 为 pbuf 池中的缓冲区数量。对于高性能系统,可以考虑将pbuf 池大小增加到一个较高的值,此处设为16384,如下图所示。
设置 tcp_options 选项,将 tcp_snd_buf 和 tcp_wnd 设为 65535,增大 tcp 发送缓冲空间和窗口大小,如下图所示:
设置temac_adapter_options 选项,将n_rx_descriptors 和 n_tx_descriptors 设置为 512,以提高系统性能,如下图所示 :
其余选项保持默认即可,无需修改。 - 打开网口发送和接收超时等待宏定义;
LWIP_SO_RCVTIMEO(1476):打开接收阻塞延时;
LWIP_SO_SNDTIMEO(1468):打开发送阻塞延时;
5. 修改网口没插网线,上电延时等待30秒,改成任务调度器延时函数;
用下面方法搜索 get_TI_phy_speed
、get_Marvell_phy_speed
和get_Realtek_phy_speed
三个函数;
(1)get_TI_phy_speed
修改内容
(2)get_Marvell_phy_speed
修改内容;
(3)get_Realtek_phy_speed
修改内容;
6. 打开netconn_accept定义处,在空白处点击下空格键,然后点击全保存,解决无法网口连接的BUG;
7. 设置系统节拍为300us
8. void tcp_listen_task(void *arg)
任务延时时间设置
9. void udp_task(void *arg)
任务延时时间设置
10. void uart_task( void *pvParameters )
任务延时时间设置
四、链接库
- 点击工程文件,右键,选择Properties;
- 选择 C/C++ Build 下的Setting 选择:Libraries 添加m文件(即math.h中包含的库)。
此操作可解决调用math.h中库函数时报的undefined reference to 'xxxx'
错误,如下图: