11 2022 档案
摘要:使用ZMQ进行多线程编程(MT编程)将会是一种享受。在多线程中使用ZMQ套接字时,你不需要考虑额外的东西,让它们自如地运作就好。 使用ZMQ进行多线程编程时,不需要考虑互斥、锁、或其他并发程序中要考虑的因素,你唯一要关心的仅仅是线程之间的消息。 什么叫“完美”的多线程编程,指的是代码易写易读,可以跨
阅读全文
摘要:在之前的示例中,主程序的循环体内会做以下几件事: 1、等待套接字的消息。 2、处理消息。 3、返回第一步。 如果我们想要读取多个套接字中的消息呢?最简单的方法是将套接字连接到多个端点上,让ZMQ使用公平队列的机制来接受消息。如果不同端点上的套接字类型是一致的,那可以使用这种方法。但是,如果一个套接字
阅读全文
摘要:一、连接的区别 1、使用多种协议,inproc(进程内)、ipc(进程间)、tcp、pgm(广播)、epgm。 2、当客户端使用zmq_connect()时连接就已经建立了,并不要求该端点已有某个服务使用zmq_bind()进行了绑定。 3、连接是异步的,并由一组消息队列做缓冲。 4、连接会表现出某
阅读全文
摘要:一、 Reuqest-Reply(请求-应答模式) 1、使用Request-Reply模式,需要遵循一定的规律。 2、客户端必要先发送消息,在接收消息;服务端必须先进行接收客户端发送过来的消息,在发送应答给客户端,如此循环 3、服务端和客户端谁先启动,效果都是一样的。 4、服务端在收到消息之前,会一
阅读全文
摘要:内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig等等,它们的功能都是一样的,区别应该从名字上就能看出来,只有make oldconfig是指用系统当前的设置(./.config)作为缺省值。这里用的是make menu
阅读全文
摘要:一、驱动简介 Linux的驱动在本质上就是一种软件程序,上层软件可以在不了解硬件特性的情况下,通过驱动提供的接口,和计算机硬件进行通信。 系统调用是内核和应用程序之间的接口,而驱动程序是内核和硬件之间的接口。它为应用程序屏蔽了硬件的细节,故对应用程序而言,硬件设备只是一个设备文件,应用程序可以像操作
阅读全文
摘要:一、Linux发展历程 1.1、Linux前身-Unix 1968年Multics 项目 MIT|、Bell 实验室、美国通用电气有限公司走到了一起,致力于开发Multics项目。到后期由于开发进度不是很好,MIT 和Bell实验室相继离开这个项目的开发,最终导致项目搁浅。 1970年 Unix诞生
阅读全文
摘要:一、Linux启动流程图 二、硬件启动流程 2.1、POST Linux开机加电后,系统开始开机自检,该过程主要对计算机各种硬件设备进行检测,如CPU、内存、主板、硬盘、CMOS芯片等。主要完成检测硬件能否满足运行的基本条件,叫做“硬件自检(Power-OnSelf-Test)”,简称POST。 如
阅读全文
摘要:一、Linux内核兼容多处理器要求 有多个 CPU 处理器 的 系统中 , Linux 内核需要处理的问题 : 1、公平共享 : CPU 的负载 , 需要公平地共享 , 不能出现某个CPU空闲 , 造成资源浪费。 2、可设置进程 与 CPU 亲和性 : 可以为 某些类型的 进程 与 指定的 处理器设
阅读全文
摘要:一、DTS配置 1)、找到kernel/arch/arm64/boot/dts/tsingmicro/ts-tx536-evb.dts 2)、添加如下配置: npu_misc: npu_misc { compatible = "npu,misc"; npu-interrupt = <&porta 4
阅读全文
摘要:一、Linux驱动调试方法 Linux驱动调试主要有以下几种方法: 1、利用printk。 2、查看OOP消息。 3、利用strace。 4、利用内核内置的hacking选项。 5、利用ioctl方法。 6、利用/proc 文件系统。 7、使用kgdb。 1.1、printk 这是驱动开发中最朴实无
阅读全文
摘要:一、简介 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生
阅读全文
摘要:一、简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,为软件的持续集成提供了一种便捷的方式。 二、Jenkins自动化部署实现原理 Jenkins的自动化部署实现原理如下图所示: 三、安装Jenkins 前面讲过Je
阅读全文
摘要:本篇文章致力于从开发的角度思考问题,而不是搞学术的东西。 文章目录 前言一、项目概况1.1项目需求1.2项目来源1.3项目开发环境1.4项目意义 二、开发步骤2.1了解什么是摩斯码 2.2构建项目流程图2.3找到合适的模板2.4增加文件2.5添加代码 总结 前言 在点亮led灯之后,接连写了两篇理论
阅读全文
摘要:一、编译安装 1.1、安装依赖 sudo apt-get install libtool pkg-config build-essential autoconf automake 1.2、编译安装ZMQ使用的加密库 git clone git://github.com/jedisct1/libsod
阅读全文
摘要:提示:本篇文章依旧是了解为主,实际做项目时直接找开源的类似项目做模板更效率。 文章目录 一、前言二、新建工程三、使用模板工程四、总结 一、前言 前面的学习,都是文件内的代码联系,这一篇,是学习文件与目录的联系。当然你可以依据这些理论创建自己风格的工程,但是我更建议新手的话还是找模板,直接在上面改比较
阅读全文
摘要:1、什么是ZMQ ZeroMQ(也称为ÖMQ、0MQ或zmq)看起来像是一个可嵌入的网络库,但它的作用类似于一个并发框架。它为您提供了在进程内、进程间、TCP和多播等各种传输中传递原子消息的套接字。您可以使用扇出、发布订阅、任务分发和请求回复等模式将套接字N到N连接起来。它的速度足以成为集群产品的结
阅读全文
摘要:提示:本篇文章主要以了解为主。 文章目录 前言一、库目录及文件简介二、常用资料总结 前言 上一篇说到,其实我们不必去直接操作寄存器,也不必自己去写库函数,stm32官方函数库已经满足我们绝大部分的需求了,这一篇文章,一起来看看这个函数库。 一、库目录及文件简介 野火资料中,源码第一个就是固件库。 打
阅读全文
摘要:创建自己的函数库 前言一、什么是STM32标准函数库1.定义:2.作用:3.对比: 二、构建库函数1.修改寄存器地址封装2.定义访问的结构体指针和引脚3.创建封装函数3.1创建拉低引脚函数3.2创建引脚初始化函数 总结 前言 回顾一下,前面点亮led灯我们都进行了哪些操作。 首先需要看电路图,然后找
阅读全文
摘要:接上一篇文章,这一篇,我们来具体学习一下点亮LED灯的main文件该如何写。 首先需要创建一个main()函数和一个SystemInit()函数,这里注意的是,这是在启动文件的汇编语言中已经固定好的,即使你用不到SystemInit(),你要么创建,要么去屏蔽启动文件里对应位置的代码,否则编译会报错
阅读全文
摘要:上篇我们主要学习的是环境搭建和实际操作,这篇详细记录一下整个思考的过程。 首先,我们需要想一个问题,这个灯为什么会亮? 物理上来说,LED灯属于发光二极管,只要有正确的电压就会发亮。也就是说,我们烧写的代码,让led灯有了电压,那么电压又是如何形成的呢?我们来看一下原理图。 通过原理图我们可以看到,
阅读全文
摘要:在嵌入式学习里,点亮LED灯的地位就如同编程语言学习里的“hello world”,是每个初学者都必须经历的一关,因为点亮了LED灯,至少可以说明几件事: 1.开发环境没问题,包括软件,硬件都没问题。 2.能正常烧写代码,烧写工具没问题。 3.软件的基础框架没问题。 有了这几点的基础,我们就可以去一
阅读全文
摘要:首先,什么嵌入式开发? 百度百科:嵌入式开发是指利用分立元件或集成器件进行电路设计、结构设计,再进行软件编程(通常是高级语言),实验,经过多轮修改设计、制作,最终完成整个系统的开发。 官方的话语为了严谨总是说的让人难以理解,我的理解: 夏天很热,冬天很冷,我要做一个夏天吹冷风,冬天吹热风的设备——空
阅读全文