explorer

万丈高楼平地起,勿在浮沙筑高台

0%

要养成好的习惯:永远在使用对象之前先将它初始化。

  • 对于内置类型,在定义时就初始化
  • 对于类类型,在构造函数初始值列表中按照声明顺序初始化
    • 类类型中的私有变量是内置类型时,也可以在声明时初始化,这样可以避免初始值列表过长。
    • 如果期望类类型中的对象以默认构造函数初始化时,那也可以不用放在初始值列表中
阅读全文 »

QWidget 中就具有类 QTabWidget 以 Table 的方式来切换各个窗口,但是在 QtQuick 中并没有一个叫 TabWidget 的组件。

与之较为接近的便是 TabBar 这个组件,但其没有提供子窗口的动态增加和删除。

这里主要关注同类型窗口的动态创建

阅读全文 »

ERPC 将传统数据流的分析及处理的实现封装了起来,那么它的执行效率如何?

这里仅仅关注 ERPC 在收发方面的实现,而不深入整体架构。

依然是以之前的 demo代码来分析,按照客户端和服务端的收发来顺藤摸瓜。

阅读全文 »

在 ERPC 的 IDL 说明文档中,对于接口内存的申请和释放是这样描述的:

  • On the client side: All memory space has to be allocated and provided by the user code. The shim code only reads from or writes into this memory space.
  • On the server side: All memory space is allocated and provided by the shim code. The user code only reads from or writes into this memory space.

为了避免在实际使用中产生内存泄漏,还是需要实际查看代码来理解。

其实这里分两种情况:

  1. 以指针作为返回参数
  2. 以指针作为形参
阅读全文 »

NXP 官方提供了 M4 和 A53 通信的 demo,但是仅仅是演示作用:

  • M4 端仅使用 rpmsg 与 A53 进行通信,没有 ERPC 封装
  • A53 端将 rpmsg 操作暴露成了一个 tty 设备,仅适合 echo 演示,不适合编写代码完成通信
  • 需要在 rpmsg 的基础上进行 ERPC 封装

那么完成的步骤就是:

  1. 完成用户态代码实现与 M4 进行 rpmsg 通信
  2. 对 rpmsg 进行 ERPC 封装
阅读全文 »

在使用 EPRC 进行 TCP 通信的过程中,如果需要同时运行一个客户端和服务端就会出现异常。

这是因为其提供的 erpc_setup_tcp.cpp 只能初始化一个实例,那就需要对其进行理解并修改。

阅读全文 »