Cfly
Cfly - 认证专家

注册于 2 years ago

回答
6
文章
2
关注者
5

这个简单,我来描述下我怎么实现的:

  1. 将这个物理串口虚拟成两个device,读写接口都实现
  2. 设置一个全局变量,0代表数据模式,1代表调试模式
  3. 在物理串口的rx_indicate回调里面判断模式,然后读取数据发送到虚拟设备的接收缓冲里并调用虚拟设备的rx_indicate
  4. 发送时判断模式决定要不要通过物理串口发出去
  5. 将其中一个虚拟设备设置为调试口

需要在 console_be 里面把它的outpout中 rt_hw_console_output(log) 替换为 rt_kprintf("%.*s", len, log);

在 console_be 里面把它的outpout中 rt_hw_console_output(log) 替换为 rt_kprintf("%.*s", len, log);

这是因为ymodem使用的是调试串口,而你插拔网线会调用 LOG--->console_write 打印日志,从而导致升级失败

我一般是这样实现的:
1.使用EasyFlash做变量的存储:URL地址、OTA使能标志
2.接收到OTA命令后,保存URL地址并将OTA标志使能,然后重启程序
3.启动后检查OTA标志是否使能,使能则其他多余的线程皆不创建,只创建与OTA关联的
4.OTA抓取文件重试多次,如果多次都失败或者抓取成功,OTA标志清0,然后重启
5.系统正常运行,如果是要连接云平台的话,每次连接成功都会上报当前软件版本。或者与上位机通信的话,上位机可以看到版本来判断有没有升级成功
6.由用户端查看升没升级成功来判断要不要再发升级指令

bernard 发表于 2019-4-12 07:58
这里没有Makefile呀。Makefile本身并未生成出来,暂时性的,你可以从bsp/qemu-vexpress-a9目录下把Makefile ...


生成的。

bernard 发表于 2019-4-10 21:36
这个scons --target=makefile -s并不是给eclipse使用的,后面还会有scons --target=eclipse -s。

以Makefi ...


使用的是bsp里stm32的探索者,输入make还是出错`(@ZIEA%_%IRM309_DV{V@E.png

bevis 发表于 2019-3-6 22:56
额,关于GPIO驱动引脚索引,menuconfig配置就填一个引脚数字,虽然等同于GET_PIN的值,但是GET_PIN这个宏 ...


通过drv_gpio.c这个驱动里那个数组可以知道

首先这里的两个引脚对应的PIN不是芯片的引脚号而是gpio驱动里代表的索引,所以你的GET_PIN才能用;其次,power这个引脚不是直接连接SIM800C的,而是经过一次三极管会电平翻转一次,status这个引脚是直接连的。

发布
问题