TCP
tcpTCP(传输控制协议,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的通信协议。它是互联网协议套件(TCP/IP协议栈)的一部分,用于在网络上可靠地传输数据。
以下是 TCP 协议的主要特点和介绍:
可靠性: TCP 提供可靠的、面向连接的通信。通过使用确认机制和超时重传机制,确保数据的可靠性传输。如果数据包在传输过程中丢失或损坏,TCP 会负责重新发送丢失的数据。
面向连接: 在进行数据传输之前,TCP 首先在通信的两端建立连接。这个连接是全双工的,双方可以同时进行数据的收发。连接的建立、维护和释放是由 TCP 协议负责的。
流控制: TCP 使用流控制机制来防止发送方发送过多的数据导致接收方无法处理。通过窗口大小的动态调整,TCP 可以在发送和接收之间实现平衡。
拥塞控制: TCP 通过拥塞控制机制来适应网络的变化。它通过监测网络的拥塞状况来调整数据的传输速率,以避免过多的数据导致网络拥塞。
字节流传输: TCP 将数据看作是字节流,而不是分割成独立的消息。这意味着发送的数据可以按照任意大小的块进行划分,而 ...
嵌入式面试题
memcpy和strcpy的区别?
1)、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2)、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符”\0”才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3)、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
信号量与互斥锁的区别?
(1)、互斥锁用于线程的互斥,信号量用于线程的同步。
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
(2)、互斥量值只能为0/1,信号量值可以为非负整数。
也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥 ...
libusb库
libusb库学习libusb是一个使用C编写的库,它提供USB设备的通用的访问方法。APP通过它,可以方便地访问USB设备,无需编写USB设备驱动程序。
libusb源码的移植通过网址下载源码https://github.com/libusb/libusb/releases,之后进行交叉编译。
1./configure --host=arm-linux --disable-udev --prefix=/home/moss/linux/tool/libusb --CC=arm-linux-gnueabihf-gcc
配置完成后就可以进行编译了,
12makemake install
之后可以发现生成了libusb.h文件,但是缺少里面调用的usb.h文件,所以需要将usbcompat的源码包进行交叉编译。
下载usbcompat源码包
1./configure --host=arm-linux --disable-udev --prefix=/home/moss/linux/tool/libusb --CC=arm-linux-gnueabihf-gcc
配置完以后进行编译
12 ...
cmake的学习
Cmake简易工程学习cmake 是一个跨平台的自动构建工具 ,用来生成Makefile,不用动手编写Makefile。
对于一个初始的C语言程序来说使用cmke进行构建。
12345#include <stdio.h>int main(void){ printf("hello world");}
创建CMakeLists.txt文件,CMakeLists.txt文件会被cmake工具解析 ,写入内容
12project(HELLO) #设置工程名称add_executable(hello ./main.c) #第一个参数生成可执行文件用,空格分开传入的参数,第二个参数表示对应的源文件
执行cmake命令
1cmake ./
之后就会生成makefile文件,可以使用make进行编译。
使用out-of-source方式进行构建,来将工程生成的文件何源文件分离开。
然后在工程目录下创建一个 build 目录
123cd build/cmake ../make
这样 cmake 生成的中间文件以及 make 编译生成的可 ...
USB协议学习
USBUSB作为通用串行总线,可以看到这种总线具备通用性。它是以主机为主,设备为从的主从通讯模式,
USB描述符
所有USB描述符都是存储在USB设备中的。USB描述符有设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符,HID类设备会多出HID描述符、报告描述符、物理描述符三种描述符,描述符架构如下图。
USB传输
USB传输分为控制传输、同步传输、批量传输、中断传输四种,其中批量传输、同步传输每次传输需要一个或多个事务,中断传输一次需要一个事务,控制传输包括三个过程(建立过程、数据过程、状态过程),建立过程和状态过程分别需要一个事务,数据过程则可能包含0个多个事务。看实例协议分析,要知道transfer是传输,transaction为事务。
控制传输有三种类型,控制写传输、控制读传输、无数据的控制传输三种。控制写传输和控制读传输数据阶段是根据传输情况可有可无,无数据控制传输无数据阶段。
USB事务
事务通常由两三个包组成:令牌包,数据包和握手包。为什么说是通常呢?因为有一个特例同步传输的事务中没有握手包,只有令牌包和数据包。事务就是完成一件事的意思,完成一个事务 ...
WIFI驱动
wifi驱动的移植使用的wifi模块为SDIO WIFI,芯片为RTL8189FTV,这款产品是给驱动的,只需要将其添加到内核编译,就可以使用。
使用RTL8XXX WIFI 驱动源码-> realtek 将这个目录包放入Linux 内核源码中的 drivers/net/wireless 目录下,此目录下存放着所有 WIFI 驱动文件 。
修改 drivers/net/wireless/Kconfig
打开这个文件在最后加入
1source "drivers/net/wireless/realtek/Kconfig"
添加到 drivers/net/wireless/Kconfig 中的内容
修改 drivers/net/wireless/Makefile
打开文件在最后加入
1obj-y += realtek/
这样就能在内核菜单中配置它这个选项了。
配置内核配置wifi
配置支持IEEE802.11
最后编译WIFI驱动
使用sd ...
学习计划
目前先打算做个规划进行一段时间的复习,并且准备开题报告。复习的主要内容如下:
复习数组和结构体的传输参数,堆栈,内存的概念对于驱动开发的复习每天进行代码的练习高级IO的复习进程、线程的复习
硬件传输
双闪存模式,这也是ASPI最常用的接口协议模式之一。
双闪存模式。即QSPI 使用两个外部四线 SPI Flash(FLASH 1 和 FLASH 2),在每个周期中发送/接收 8 位(在 DDR 模式下为16 位),能够有效地将吞吐量和容量扩大一倍。每个 Flash 使用同一个 CLK 并可选择使用同一个 nCS 信号,但其 IO0、IO1、IO2 和 IO3 信号是各自独立的。双闪存模式可与单比特模式、双比特模式以及四比特模式结合使用,也可与 SDR 或 DDR 模式相结合。在双闪存模式下读取 Flash 状态寄存器时,需要读取的字节数是单闪存模式下的 2 倍。在双闪存模式下,FLASH 1 接口信号的行为基本上与正常模式下相同。在指令、地址、交替字节以及空指令周期阶段,FLASH 2 接口信号具有与 FLASH 1 接口信号完全相同的波形。
IIC协议对接口电平时序的理解,开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。应答信号:接收数据的IC在接收到8bit数据后,向发送数据的 ...
boa服务器发布
这个东西配置cgi的路径要一次配置出来,不要安装完再配置,否则容易出现cgi的跳转404的现象。
Boa介绍其可执行代码只有大约60KB左右,Boa是一个单任务的HTTP服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。Boa支持CGI。Boa的设计目标是速度和安全。(CGI只是一个进程,用来提供接口),自动目录生成和自动文件枪支进行拼接。Boa的主要设计目标是速度和安全性。安全性在“不能被恶意用户破坏”的意义上,不是“细粒度访问控制和加密通信”。
特点:可靠性和可移植性,Boa不是作为功能强大的服务器。开发平台:GNU / Linux是目前的开发平台。
下载源码http://www.boa.org/
12tar -xvf boa-0.94.13.tar.gzcd ./boa-0.94.13/src/
更改文件
在boa-0.94.13/src目录下,新建install.mk文件,使用Makefile命令install和uninstall安装和卸载软件及软件配置信息:
123456789101112131415161718192 ...
串口应用编程
串口串口全称叫做串行接口,串行接口指的是数据一个一个的按顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。串口通信距离远,但是速度相对会低,串口是一种很常用的工业接口。
终端⚫本地终端: 例如对于我们的个人 PC 机来说, PC 机连接了显示器、键盘以及鼠标等设备,这样的一个显示器/键盘组合就是一个本地终端;同样对于开发板来说也是如此,开发板也可以连接一个LCD 显示器、键盘和鼠标等,同样可以构成本地终端。⚫ 用串口连接的远程终端: 对于嵌入式 Linux 开发来说,这是最常见的终端—串口终端。譬如我们的开发板通过串口线连接到一个带有显示器和键盘的 PC 机,在 PC 机通过运行一个终端模拟程序,譬如 Windows 超级终端、 putty、 MobaXterm、 SecureCRT 等来获取并显示开发板通过串口发出的数据、同样还可以通过这些终端模拟程序将用户数据通过串口发送给开发板 Linux 系统,系统接收到数据之后便会进行相应的处理、譬如执行某个命令,这就是一种人机交互!⚫ 基于网络的远程终端: 譬如我们可以通过 ssh、 Telnet ...

