04 交叉编译
交叉编译CMake交叉编译工具链sysroot 在使用==Cmake==搭建交叉编译环境时,需要指定sysroot,这个sysroot到底是什么呢? 在嵌入式开发中,sysroot是一个为了方便移植和交叉编译而创建的特殊目录。他包含了用于目标系统的头文件、库文件。在交叉编译时,我们通常不希望用宿主机的头文件和库文件,而仅使用sysroot中的头文件和库文件,以保证生成的东西能够在目标系统运行 未设置--sysroot 设置了--sysroot=dir后 头文件搜索路径 /usr/include dir/usr/include 依赖库搜索路径 /usr/lib dir/usr/lib 如何查看sysroot可以用以下方式查看sysroot 1${CC}...
IP地址
IP地址1.IP地址:IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。通常用点分十进制表示法。 2.子网掩码:子网掩码就是判断两个IP地址,是不是在同一个网段(或称子网),在同一网段的两个地址,可以直接通信。 它指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。 子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。 3.网关网关(Gateway)又称网间连接器、协议转换器。网关就是一个网络连接到另一个网络的“关口”。也就是网络关卡。所有网络都有一个边界,限制与直接连接到它的设备的通信。因此,如果网络想要与该边界之外的设备,节点或网络通信,则它们需要网关的功能。网关通常被表征为路由器和调制解调器的组合。 路由:是指分组从源到目的地时,决定端到端路径的网络范围的进程 ...
多线程编程
...
多进程编程
多进程编程1.程序和进程1.1程序如何被调用 通常我们的一个程序都由main()函数开始,那么main()函数又是如何被调用的呢? 操作系统内核中实现了一个叫加载器的程序,该程序在我们准备运行某个程序时,负责将我们要运行的程序加载到内存中去执行。 int main(int argc, char *argv[]) 中的那些参数是如何传入的? 在运行一个程序的main()函数之前,需要运行该程序的引导代码,引导代码是在编译后被链接器加到可执行文件中的,不需要人为去编写。当我们在终端中运行一个程序并传入参数arg1 arg2...时,shell会解析这些参数并传给加载器,加载器在加载程序时会把这些参数再传给引导代码,由引导代码传入这些参数到main()中。 1.2程序如何被终止一个进程的终止可以分为:正常终止和异常终止 正常终止: 在main()中return...
08 并发编程
并发编程 C++11之后提供了丰富的库函数来进行并发编程,现在分模块来依次做笔记 线程创建C++11主要使用std::thread来创建一个新的线程,要创建一个线程,需要传递一个可调用对象(函数、lambda 表达式、函数对象、std::function)作为参数。 123456789// 构造函数thread() noexcept;thread( thread&& other ) noexcept;template< class F, class... Args >explicit thread( F&& f, Args&&... args );thread( const thread& ) = delete; 使用例子: 123456789101112#include <iostream>#include <thread>void thread_function() { std::cout << "Hello from...
11 异步编程
异步编程 多线程本身就是异步任务,但异步编程不一定是多线程(比如NodeJS依靠单线程+事件队列)。并且 什么是异步编程异步编程是一种范式,允许程序在等待某些操作完成的时候去做别的任务,而不是一直阻塞等待。在耗时操作完成时,可以发出通知。 比如:服务器在读取某个已连接socket时,如果该socket的数据还未准备好,此线程会一直阻塞,直到数据准备好,这会造成CPU资源的浪费,如果使用了异步编程,则此线程就可以在等待数据时先去做别的操作。当然非阻塞I/O也能做到这点,但是非阻塞I/O最后还是会有个同步操作。 std::futurestd::future是一个模板类,用于表示一个异步操作的结果,它提供一种机制,允许用户在未来的某个时刻获取异步操作的结果。该类通常不是主动创建,而是由std::async,...
ESP8266
ESP82661.ESP8266的工作模式ESP8266为一个WiFi透传模块,和蓝牙透传模块具有主从两种工作模式一样,也具有两种工作模式:STA模式(Station)和AP模式(Access Point),一般WiFi模块还会有一个STA+AP模式,即可以在两种模式下切换的状态。(1)AP模式下,相当于无线局域网中的基站。WiFi模块产生热点,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。该模式对应TCP传输协议中的服务端(TCP Server)。(2)STA模式下,相当于无线局域网中的移动站。WiFi模块为连接到无线网络的终端(站点),可以连接到AP,一般无线网卡工作在STA模式下。该模式对应TCP传输协议中的客户端(TCP...
MPU6050
...
半导体器件总结
...
电机驱动
电机驱动直流电机一般是通过H桥电路来驱动的,市面上的电机驱动模块可以分为2种: 基于集成电机驱动芯片(内部自带H桥电路)的电机驱动:TB6612、L298n 这种电机驱动的电路比较简单,但由于H桥集成在了芯片内部,所以支持的电机最大电流较小 栅极驱动IC +...







