FreeRTOS+Lwip+STM32F407移植笔记

移植步骤:
1 - 先移植FreeRTOS的Demo;
2 - 再移植Lwip的文件(源码&sys_arch&lwip_comm);
3 - 单个实现TCPIP协议栈任务:TCP客户端、TCP服务器和UDP; 
模块:
    - 内存管理:需要给"以太网驱动"、"FreeRTOS"、"Lwip"三个部分分配内存;
        - 以太网DMA描述符&以太网DMA Buffer
        - Lwip的RAM部分:ram_heap&内存池部分:memp;
        - FreeRTOS占用RAM由配置文件定义大小,用于操作系统中动态操作的分配;
        - 另外原子实现的内存管理方式中的内存管理表也会占用很大内存,与内存块大小密切相关;
        - stm32F4的RAM分为普通内存128k和CCM内存64k,两个不能当作一块内存用!;
    - 定时器:操作系统下不需要单独实现Lwip的周期任务函数的调用;
    - LAN8720驱动:F407需要添加ST的官网以太网库,然后实现驱动;
    - FreeRTOS:接口调用需要注意任务级和中断级接口的区分;
    - sys_arch:解决操作系统和lwip的关系,主要是信号量和邮箱;
    - liwp_comm:解决lwip和以太网之间的关系:以太网驱动;
注意事项:
    - 以太网中断要调节到操作系统可屏蔽的范围内(进入临界区可屏蔽以太网中断);
    - TCP服务器、TCP客户端、UDP服务任务堆栈需要大一点;
    - 测试需要在DHCP完成之后开始;
    - 测试的PC防火墙需要关闭;
    - 测试的上位机要多个测试,某个上位机不一定能实现"全部"通信!;    
优化:
    - 网线热插拔(目前没有网线初始化不成功,插拔后应该可再次触发DHCP,怎么检测
       网线插拔事件的发生);
    - lwip任务的时基调到由操作系统提供(任务调度器挂起会不会影响获取到的TICK值?)
疑问:
    - MII,RMII......
    - 硬件帧校验(low_level_init()、)
    - 网络相关的调试工具
    - pbuf、netif结构
    - ethernetif.c文件被完全替换,看看源文件;
    - 滴答定时器中断在哪配置;
    - sys_arch中的信号量相关函数实现是否正确还不能保证,需要再看,尤其是创建函数的传参感觉有问题。
FreeRTOS+Lwip+STM32F407移植笔记_第1张图片

你可能感兴趣的:(个人笔记)