6 lzs_blog

尚未进行身份认证

嵌入式

等级
TA的排名 4w+

51.Linux裸机开发--ARM基础概念及汇编环境搭建

之前学习了Linux的应用层开发,下面要开始linux的底层开发,当然最开始我们不是学习bootloader,也不是内核移植,而是开始ARM的裸机开发,那么我们老说ARM,那ARM是什么?目前比较火的,美国封锁我们的华为,ARM公司又和华为有什么关系?一.ARM基础概念详细的内容可以看一下我之前整理的博客:https://blog.csdn.net/lzs940320/article/details/90021068下面只对一些关键的知识进行一个复习总结。二.环境搭建及启动文件编写及

2020-05-26 16:02:10

50.在线词典项目1--需求分析及软件框架搭建

1引言1.1编写目的经过一段时间的学习,终于要开始一个实战项目了,这个项目目的就是为了回顾之前的知识,主要用到了网络编程客户端及并发服务器的实现,父子进程,信号,sql数据库等,我们先详细理解需求然后对框架及相关进行梳理,思路清晰后,再开始编程。1.2开发环境 开发环境 版本 linux gcc工具链 LIB sqlite3 1.3项目需求基于网络编程...

2020-05-19 16:33:15

49.SQLite 数据库 编程

在嵌入式设备的开发中,sqlite数据库是非常常用的,虽然听着很高大上,但是实际开发难度不是很大,主要对它的函数要使用熟练。那么它到底是一个什么东西?一. 数据库基本概念数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合。说的好难理解,其实就是个类似excel一样的东西,方便我们增删改查数据。二. 常用的数据库大型数据库Oracle关系数据库(甲骨文产品的市场占有率高)。IBM 的DB2(第一个具备网上功能的多媒体关系数据库管理系统,跨平台性强)中型数据.

2020-05-14 17:59:09

48.Linux网络编程--Unix 域套接字

一.Unix域套接字的产生原因及特性1.产生原因:在之前的学习中我们学习了网络套接字,实现了不同主机间的进程通讯,同时为了保证数据传输的可靠性,网络套接字中增加了许多校验,应答,序列号等机制,但是假如我们想要实现本机两个进程间通讯的话,使用同样的方法行不行??当然行,但是大材小用了,本来本地进程间通讯就比较可靠,不用这么麻烦,为了提高效率,出现了Unix域套接字。2.特性UNIX域套接字用于在同一台计算机上运行的进程之间的通信。 UNIX域套接字提供流和数据报两种接口。UNIX域数据报服.

2020-05-13 14:51:05

47.Linux网络编程-- 广播,组播

一 .广播编程1.前面介绍的数据包发送方式只有一个接受方,称为单播2.如果同时发给局域网中的所有主机,称为广播3.只有用户数据报(使用UDP协议)套接字才能广播4.广播地址以192.168.1.0 (255.255.255.0) 网段为例,最大的主机地址192.168.1.255代表该网段的广播地址发到该地址的数据包被所有的主机接收255.255.255.255在所有网段中都代表广播地址5.广播的发送:6.广播的接收实例:udp 客户端#inclu.

2020-05-13 11:10:10

46.Linux网络编程--网络超时优化

一.超时引用必要性在网络通信中,很多操作会使得进程阻塞例如TCP套接字中的recv/accept/connectUDP套接字中的recvfrom你也不能一直阻塞着不干活啊,避免进程在没有数据时无限制地阻塞,所以引入超时检测。当设定的时间到时,进程从原操作返回继续运行。二.设置超时的三种方法:1.设置socket的属性 SO_RCVTIMEO,我们上面讲的改属性例:设置接收超时:struct timeval tout;tout.tv_sec = 5;t...

2020-05-13 09:58:25

45.Linux编程---网络属性设置

一. 网络属性设置在前几节的编程中通过ctrl+C退出服务器端后,原本好用的代码再次执行的时候,却连接不上了,大约经过几分钟之后又能重新连接,后来添加了以下代码后,问题就解决了。int b_reuse =1;setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&b_reuse,sizeof(int));那么这两句代码是什么意思呢??其实这个函数就是改变了套接字fd的属性。那么我们详细看一下这个函数。 函数名 int se

2020-05-13 09:49:27

44.Linux网络编程--DNS域名解析

一.域名解析DNS域名解析,实现了主机域名地址到IP地址转换的过程。、比如我们访问百度 www.baidu.com主机向域名服务器请求服务,请求域名服务器解析www.baidu.com的IP地址;域名服务器接收到该请求后,在本地数据库中查找或者向其他域名服务器请求服务,以找到www.baidu.com对应的IP地址;域名服务器向主机返回解析出的IP地址;主机使用该IP地址与服务器建立连接,获取数据。解析过程如下图所示:概念了解了,详细的原理以后在深入研究,目前要考虑的是我们的编程中怎么应

2020-05-13 09:42:09

43.Linux网络编程--TCP IP原理深入剖析

前几节我们说了一下我们TCP/IP的一些发展历史,分层及各层一些关键的协议的一个简单介绍,然后详细的进行了TCP,UDP的一个网络编程。想要进一步的深入理解,编程上更游刃有余的话,需要详细的分析一下TCP/IP协议的一些关键机制。一. wirshark 工具学习网络编程的人,必然会接触这个工具,毕竟网络协议栈太大,太复杂,不抓包分析一下,又怎么能理解的了其中的原理。wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。安装过程我们就不说.

2020-05-12 15:07:19

42.Linux网络编程--IO多路复用(select poll epoll)

一. 预备知识1.Unix五种IO模型[1] blocking IO - 阻塞IO[2] nonblocking IO - 非阻塞IO[3] IO multiplexing - IO多路复用[4] signal driven IO - 信号驱动IO[5] asynchronous IO - 异步IO2.用户空间 / 内核空间操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证.

2020-05-10 00:54:42

41.Linux网络编程--UDP编程

我们完成了TCP编程的学习,我们知道TCP是可靠性传输,是面向连接的,而UDP是无连接尽力传输。直观上感觉,udp的编程肯定要比TCP简单。一.API的补充API函数补充1.send()/write() 主要用在TCP 函数名 ssize_t send(int socket, const void *buffer, size_t length, ...

2020-05-08 16:05:10

40.Linux网络编程--TCP并发服务器

一.并发服务器模型常用的TCP服务器模型,我们上节写的是TCP循环服务器模型,这种模型很大的弊端就是没办法实现并发,在此基础上进行优化,就出现了多线程和多进程的服务器。他们的解决思路都是相同的,他们的数据处理都是单独在开一个线程或者进程进行处理。多线程和多进程的服务器模型是比较常见的,他们之间各具优势,需要根据不同应用场景进行选择。二.多线程并发实例客户端的实现和之前的...

2020-05-08 09:46:40

39.Linux网络编程--TCP编程

一.编程流程TCP的一个编程过程是怎样的呢??这是作为客户端和服务器(CS模式)的一个编程过程,我们要对这些要用到的参数进行学习,包括需要传什么参数,返回值是什么等等。这些函数的逻辑实现我们不关注,只关注怎么用。二.编程需要的函数1. socket() 函数名 int socket(int domain,int type, int proto...

2020-05-07 10:38:31

38.Linux网络编程--编程预备知识

在我们开始学习之前,一定要先学习的几个概念,这些概念我们在平时开发过程中经常听到,但是对他们不一定理解,那么我们开始学习他们一. socket1.socket是一个应用编程的接口,它是一种特殊的文件描述符(对它执行IO的操作函数,比如,read(),write(),close()等操作函数)socket代表着网络编程的一种资源2.socket的类型:流式套接字(SOCK_STR...

2020-04-30 11:46:17

37.linux网络编程--网络基础

一.网络的历史提到网络我们就会知道说的是TCP/IP协议栈。它的由来我们只做了解即可。他们是冷战的产物,苏联在和美国互相秀肌肉的时候,美国提出了建立国防部高级研究计划署的一个机构,然后这个机构在1968年提出了“资源共享计算机网络”,其实就是想让他们的电脑互联,有点像搞个局域网的样子,这个网络叫“啊帊网”也就是互联网的雏形。但是此时的网络肯定有很多的问题。后来有两个大牛Robert...

2020-04-29 21:31:43

SystemView 应用笔记

一 .什么是Systemview?SystemView 是一个可以在线调试嵌入式系统的工具,它可以分析有哪些中断、任务执行了,以及这些中断、任务执行的先后关系。还可以查看一些内核对象持有和释放的时间点,比如信号量、互斥量、事件、消息队列等。这在开发和处理具有多个线程和事件的复杂系统时尤其有效。说白了就是我们可以通过这个软件实时监控我们实时系统的任务切换及调度情况,并且这个软件支持多种实时系...

2020-04-27 14:27:18

将Keil工程移植到IAR中-stm32F1标准库+freeRTOS

在项目应用中,随着代码量的增加,Keil的编译速度实在是难以忍受,虽然最新的Keil版本在编译速度上有了很大的提升,但是在一些地方和IAR还是有一些差距,虽然IAR的兼容性是真的让人头疼,但是项目要求,现在要将一个可运行的Keil工程移植到IAR上。虽然代码不会更改,但是移植过程还是让很多新手头疼的,现在记录一下移植过程。我使用的是stm32F103REt6 使用的是标准库V3.5.0...

2020-04-29 13:47:29

深入学习lwip

引入: 物联网时代,我们的终端设备都需要连入互联网中,将终端各个节点的信息进行汇总,上传到云进行大数据分析,最终得到用户想要的信息。作为开发者的角度,设备连网后可以远程升级程序,远程调试等,大大降低了生产调试人的工作量。而我们的设备呢,接入网络比较常见的方式就是连接网线啊,或者内置wifi模块,或者接了GPRS的模块等。单片机的以太网方案,可参考以前的文章https://blo...

2020-04-15 19:43:57

36.Linux 应用层开发--进程间通讯

最近因为项目原因耽误了一些时间,导致进程间的通讯一直没有来的及学习及整理。在我们之前学过进程相关的概念和操作,还学习了轻量级的进程的线程,在我们之后的开发和面试中,多线程,多进程开发都是非常重要的,那么进程间通讯的机制是非常重要的,那么linux中进程间有哪些通讯方式呢?接下来我们详细的开始学习一下。目前的linux中包含很多种的通信机制,现在的进程通讯可谓是集百家之长,从各种机制中继承而来。...

2020-04-04 13:37:58

LSM6DSL学习2

特性:上节主要对LSM6DSL的一些特性做了一些简单了解,对他的驱动方式做了一个说明并提供了一个简单的测试代码,能够正常的获取加速度,并且能够正常的通过IN1产生个中断。在简单的应用中是够用了,但是在实际的项目中这个了解程度是不够的,LSM6DSL 封装小,功耗低,功能强大,但是资料确实不多,这么多的寄存器哪些控制阈值,哪些配置加速度,哪些配置倾角,怎么获取步数,得到的值又是什么...

2020-03-26 11:10:40

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享达人
    分享达人
    成功上传6个资源即可获取