LWIP PPP个人学习记录(2)修改代码结构&加入shell功能

    技术2022-07-10  81

    概述

    根据个人习惯,进行源码结构的修改,目的是熟悉lwip ppp基本例程所需要的文件。调整源码命名方式等,有助于理解程序机构。

    keil目录结构

    工程源文件目录

    移植开源letter shell

    letter-shell非常小巧,移植比较简单,只有shell.c/.h、shell_ext.c/.h和shell_cfg.h五个文件。

    1. 使能shell默认任务
    /** * @brief 是否使用默认shell任务 * 使能之后可以使用`shellTask()`建立shell任务,或者使用`shellTask()`进行轮询 */ #define SHELL_USING_TASK 1
    2.提供shell所需的串口读写接口
    /* shell 对接程序 */ static void shell_port_send(const char _ucByte) { comSendChar(COM1,_ucByte); } static signed char shell_port_read(char *_pByte) { while( comGetChar(COM1, (uint8_t*)_pByte) == 0) { osDelay(10); } return 0; }
    3. 创建shell任务,并添加测试代码
    /* 创建shell任务 */ void create_shell_task(void) { shell.read = shell_port_read; shell.write = shell_port_send; shellInit(&shell); osThreadDef(shellTask, shellTask, osPriorityNormal, 0, 1024); shellTaskHandle = osThreadCreate(osThread(shellTask), &shell); } /* 打印RTOS任务列表 */ static void cmd_list_tasks(int argc, char *argv[]) { char pcWriteBuffer[512]; printf("任务名 任务状态 优先级 剩余栈 任务序号\r\n"); vTaskList((char *)&pcWriteBuffer); printf("%s\r\n", pcWriteBuffer); } SHELL_EXPORT_CMD(ps, cmd_list_tasks, list tasks); /* TCP发送数据 */ static void cmd_tcp_send(int argc, char *argv[]) { if(argc > 1) tcp_write(pcb, argv[1], strlen(argv[1]), 0); } SHELL_EXPORT_CMD(send, cmd_tcp_send, tcp send test);

    成果

    计划

    将lwip 2.0.3版本替换为2.1.2
    Processed: 0.048, SQL: 9