ppp_device icon indicating copy to clipboard operation
ppp_device copied to clipboard

lwIP PPP porting for GSM modem (like sim800)

Results 4 ppp_device issues
Sort by recently updated
recently updated
newest added

if (device->state == PPP_STATE_PREPARE) { ...... /* throw away the dirty data in the uart buffer */ rt_device_read(device->uart, 0, buffer, PPP_RECV_READ_MAX); ..... } 在ppp_recv_entry中,模块拨号成功后,加了清理脏数据处理。如果真有脏的数据,这样最多也只能清理掉PPP_RECV_READ_MAX(32字节)长度的数据吧,如果RT_SERIAL_RB_BUFSZ比PPP_RECV_READ_MAX大,是清理不干净的

目前只支持4种网卡的选择,而且必须选择一种。若用户使用自己的网卡如N720等,需要自己修改Kconfig文件。一旦更新了Kconfig文件,就会覆盖之前的设置,需要重新设置。建议可参考AT DEVICE的选项,即可使用列表中的网卡,也可自己在其他地方添加网卡。

文档中说明建议不要打开`RT_DEVICE_FLAG_DMA_TX`,现实情况是一定不能打开该标志。原因是RTT串口发送时,是直接将数据地址传送给DMA(在打开DMA时并且开启RT_DEVICE_FLAG_DMA_TX),这样在DMA发送数据时,一定不能修改传给serial层的数据,如果是动态分配的内存更不能释放该内存,否则会导致发送数据出错或者崩溃。 但是,某些情况下,需要开启DMA以节省CPU资源,这时需要ppp_device能够保证数据不出错而且还能异步(DMA)发送,这就需要简单实现一下异步发送的功能。我简单写了一个串口异步发送数据的示例,你看是否可行或者是否有必要: ```c #define MIN(a,b) (((a) > (b)) ? (b) : (a)) #define SEND_TIMEOUT 1000 uint8_t ppp_tx_buf[1500] = {0}; /*发送完成信号*/ rt_sem_t tx_sem; rt_inline rt_err_t __send_complete_callback(rt_device_t dev, void *buffer) { rt_sem_release(tx_sem);...