嵌入式linux
郭忠伟-写录
总结|记录.
电力行业,扎根,参与开发:融合终端|能源控制器|集中器|采集器|拓扑识别设备.
涉及协议:mqtt,698,10x,3761,13762,645等.
联系方式:
邮箱:guozhongwl@163.com
微信:ai-3456------596---
展开
-
内存管理:分页,分段,段页结合
内存管理:分页,分段,段页结合转载 2021-05-30 10:18:55 · 350 阅读 · 0 评论 -
linux下,应用程序中的全局变量与so库中的全局变量名冲突,怎么办?
文章目录-Wl,-Bsymbolic动态库与应用,如果存在同名全局变量,会如何?实现了一个动态库,封装了一些方法。然后基于这个动态库,实现了一个应用程序。应用程序中含有全局变量A,动态库中也含有全局变量A,当调用动态库中函数后,发现应用程序的A发生了变化!-Wl,-Bsymbolic在创建动态链接库时,gcc/g++选项中添加编译选项-Wl,-Bsymbolic其中Wl表示将紧跟其后的参数,传递给连接器ld。Bsymbolic表示强制采用本地的全局变量定义,这样就不会出现动态链接库的全局变量定转载 2020-12-06 16:51:27 · 832 阅读 · 0 评论 -
线程互斥量死锁,与sleep没有关联
文章目录死锁问题死锁原因产生死锁的几个常见场景死锁产生的四个必要条件==仅供参考互斥条件占有和等待条件不可抢占条件环路等待条件pthread_mutex_lock(),线程互斥量死锁,与sleep没有关联.项目上,定位死锁原因,无意中看到pthread_mutex_lock()以及 sleep()字样的文章.说的模糊不清,但是又貌似有些因果.反复查阅资料以及测试,完全可以确认:pthread_mutex_lock(),线程互斥量死锁,与sleep没有关联.死锁问题死锁原因如果一个线程试图对同原创 2020-11-29 17:37:40 · 1017 阅读 · 3 评论 -
c语言,函数声明的误区
文章目录结论官方依据项目上,使用一个未声明的,返回值为float类型的函数;结果,返回值完全非预期.被整的怀疑人生.根深蒂固的一个错误认知:在C语言中,函数在调用前不一定非要声明。如果没有声明,那么编译器会自己主动依照一种隐式声明的规则,为调用函数的C代码产生汇编代码。结论期望,全部的人,全部的函数,都严格声明,不是很切实际.大的工程,人多眼杂.但是要谨记:返回值为非int类型的函数,务必要进行声明.至少:返回值为float/double类型的函数,务必要进行声明.官方依据C98原创 2020-11-28 15:31:21 · 2353 阅读 · 0 评论 -
paho mqtt c库,一个进程创建多客户端,mqtt侧,实际仅创建一个线程.
文章目录场景:问题原因场景:客户端A,与本地代理通信;客户端B,与远端的代理通信(物管平台).问题两个客户端的消息到达函数(MQTTAsync_messageArrived类型),不能并行.互相阻塞.原因翻阅源码,得出结论:同进程,仅可创建一个线程,不会因为多个客户端而创建多个线程....原创 2020-11-04 20:21:12 · 1031 阅读 · 2 评论 -
动态库中的全局变量,多进程使用,是否存在问题.
为什么动态库中的全局变量是可以用的?之前在linux下做过一个测试:写一个so,该so中有一个全局变量。so中的代码在运行时会修改该全局变量的值。然后,有多个程序都需要该so,而且这些应用程序都启动了。此时,很显然so只被加载了一份,那么,当这么多程序在运行调用该so时,该so中的全局变量的值会被覆盖来覆盖去么?答案是不会。这是测试的答案。现在知道原理了,尽管这是windows via C/C++中解释的windows的做法,但是我想linux也是这么类似处理的。windows 使用memory转载 2020-11-04 20:05:53 · 916 阅读 · 0 评论 -
linux中,<rc.d>,<rc.local>等带有rc的文件或目录 含义
文章目录在linux中经常会碰到bashrc,rc.d,rc.local等带有rc的文件或目录,一般都是启动时需要加载的。英文原义:RC (runcom,run command)中文释义:含有程序(应用程序甚至操作系统)启动指令的脚本文件注 解:这一文件在操作系统启动时会自动执行,它含有要运行的指令(命令或其它脚本)列表。文章出处:【Linux】——常见的rc的含义...转载 2020-10-29 11:01:54 · 812 阅读 · 0 评论 -
linux 查看服务是否存在,是否启动
文章目录linux常见服务列表:查看服务是否存在服务的概念:查看当前系统环境,是否存在指定的服务sudo service --status-all查看指定的服务是否已经运行service 服务名 statusps aux如何查看当前系统支持的服务程序有哪些?下边,以ssh服务为例进行说明.linux常见服务列表:首先,我们应该对系统可能支持的服务,有个大概的印象.参见:LINUX常见服务列表查看服务是否存在服务的概念:服务(service) 本质就是进程,不过是运行在后台的进程,服务通常都会原创 2020-08-19 20:32:03 · 5356 阅读 · 0 评论 -
linux 终端特殊组合键
<unix环境高级编程>中,经常提及终端特殊组合键,这里记录方便后来者.终端中断[字]符:Ctrl+C组合键或者delete按键.终端退出[字]符:Ctrl+\组合键终端停止/挂起[字]符:Ctrl+Z组合键文件结束符EOF(End of File):Ctrl+D组合键...原创 2020-05-07 17:24:30 · 438 阅读 · 0 评论 -
linux shell脚本语法笔记(待续)
文章目录反引号单引号''双引号""单小括号 ()双小括号 (( ))单中括号 []双中括号[[ ]]反引号引用命令如果需要调用命令的输出,或把命令的输出赋予变量,则命令必须使用反引号包含,这条命令才会执行,反引号的作用和 $(命令) 是一样的,但是反引号非常容易和单引号搞混,所以推荐大家使用 $(命令) 的方式引用命令的输出。单引号’’关闭所有的特殊字符功能,使特殊字符变成普通字符,不...原创 2020-04-13 19:58:15 · 254 阅读 · 0 评论 -
Linux SIGPIPE信号产生原因与解决方法
文章目录原因SIGPIPE(Broken pipe)解决方法忽略SIGPIPE信号调整socket发送函数的flags参数参考:潜水同行技术群,有人遇到如下场景,拿出来分享/记录,场景:大厂的嵌入式平台,多个厂家,多进程间socket通信.,A进程作为客户端,连接作为服务器的B进程,A连接B,顺畅A进程close此套接字A连接B,失败………最后发现,A进程close套接字...原创 2020-04-10 20:15:12 · 3426 阅读 · 0 评论 -
Makefile 语法以及关键字说明
include、sinclude在 Makefile 使用 include 关键字可以把别的 Makefile 包含进来,这很像 C 语言的#include,被包含的文件会原模原样的放在当前文件的包含位置。include 的语法是:include <filename> filename 可以是当前操作系统 Shell 的文件模式 (可以保含路径和通配符) 在 incl...原创 2020-02-16 08:16:18 · 2572 阅读 · 0 评论 -
linux c设置/获取网卡参数
依据SIOCSIFFLAGS见glibc源码:glibc\sysdeps\mach\hurd\bits\ioctls.h/* socket i/o controls */#define SIOCADDRT _IOW('r', 10, struct ortentry) /* add route */#define SIOCDELRT _IOW('r', 11, struct ortentr...原创 2019-12-26 15:20:44 · 1253 阅读 · 0 评论 -
Linux系统编程知识体系框图
参加:Linux系统编程知识体系框图原创 2019-11-18 19:23:09 · 263 阅读 · 0 评论 -
apue读书笔记: 自己手敲代码并自行编译链接(非官方源码环境).与原书的效果不一致.
关注:1.操作系统版本.2.makefile参数.原创 2019-11-17 11:02:13 · 128 阅读 · 0 评论 -
apue读书笔记:实例10-10 带时间限制调用read
文章目录实例FAQalarm函数,在其中什么作用?为何能达到解阻塞作用?自己手敲代码,自行编译链接.(非官方源码环境)但与原书的效果不一致.实例程序中有一个读低速设备的会阻塞的操作(见10.5节),我们希望它超过一定时间后就停止执行该操作。程序实现了这一点,它从标准输入读一行,然后将其写到标准输出上。#include "apue.h"static void sig_alrm(in...原创 2019-11-17 10:57:01 · 167 阅读 · 0 评论 -
linux下 core dump文件不能生成的可能原因
配置了core 的生成环境,但core就是无法生成.此时,请参阅,也许会有帮助.linux下生成core dump文件的环境配置方法作为参照,参见:linux core dump 永久生成Linux下生成Core Dump文件的方法(总结)文件不能生成的可能原因生成core文件的信号被用户程序捕捉(操作系统在程序发生异常而异常信号在进程内部又没有被捕获的情况下,方可生成core文...原创 2019-11-13 18:51:40 · 4268 阅读 · 0 评论 -
linux 信号类别/列表-概述
文章目录本机linux系统支持的信号列表查看本机linux系统支持的信号列表信号术语解释:相关信号解释SIGHUP(Hangup,挂断)SIGINT(Interrupt)SIGQUIT(Quit)SIGILL(Illegal Instruction)SIGTRAP(Trace/breakpoint trap)SIGABRT(Abort)SIGBUS(Bus error )SIGFPE(Floati...原创 2019-11-13 15:37:46 · 1132 阅读 · 0 评论 -
通俗理解:实际用户ID/有效用户ID/保存的设置用户ID(saved set-user-ID)
文章目录从文件的角度,看用户/组的权限.linux对文件的描述从用户/组的角度,看文件的权限.实际用户ID/有效用户ID/保存的设置用户ID(saved set-user-ID)实例对应:阅<unix高级环境编程>过程中,高频出现:实际用户ID/有效用户ID/保存的设置用户ID(saved set-user-ID),看着很乱,摘不清楚.因为Linux是多用户多任务系统,所以一个...原创 2019-11-09 22:36:12 · 1701 阅读 · 0 评论 -
uboot 配置编译流程,以及配置过程的本质分析
uboot使用流程:make <BOARD_NAME>_config//配置make all//编译uboot配置指令的流程如下:在顶层 Makefile 中可以看到如下代码:SRCTREE := $(CURDIR)……MKCONFIG := $(SRCTREE)/mkconfig……smdk2410_config : unconfig ...转载 2018-03-21 17:08:13 · 374 阅读 · 1 评论 -
Makefile中的调试打印方法
使用info/warning/error增加调试信息info$(info "here add the debug info")注,info信息,不打印信息所在行号warning$(warning "here add the debug info")error$(error "error: this will stop the compile")这个可以停止当前makefil...原创 2019-03-20 16:53:32 · 26143 阅读 · 0 评论 -
vi 实用快捷键
g+d选中当前光标位置的字符串原创 2019-03-18 18:35:04 · 172 阅读 · 0 评论 -
Linux下添加Windows磁盘映射
实现:linux上共享一个文件夹,在window可以访问linux共享的该文件夹.本机环境:linux上共享的文件夹路径:/home/jzq/smb-work用户名:jzqlinux环境上准备具备samba工具sudo apt-get install sambawhich samba编辑smb配置文件sudo vim /etc/samba/smb.conf #编辑smb配...原创 2019-04-24 13:41:44 · 1615 阅读 · 0 评论 -
嵌入式,GDB在线远程调试
嵌入式开发,习惯了mdk,iar等IDE+JLink调试工具的搭配(在线debug很顺手),linux上的在线debug如何开展?概念:所谓远程调试,就是开发板上建立一个gdb服务端,同时待调试的程序也位于开发板,然后在PC机上使用gdb发起远程连接来进行调试。也就是说,在PC端调试开发板上的程序。请注意,在PC端需要包含被调试程序的符号调试信息(symbolic debug informa...原创 2019-04-24 14:52:41 · 638 阅读 · 0 评论 -
linux /pro文件 常用信息记录
Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即:虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点...原创 2019-04-30 15:58:47 · 574 阅读 · 0 评论 -
linux systemd.service说明
翻译描述名称以“.service”结尾的单元配置文件对有关由systemd控制和监督的进程的信息进行编码。此手册页列出了特定于此单元类型的配置选项。有关所有单元配置文件的常用选项,请参阅systemd.unit(5)。通用配置项在通用“[Unit]”和“[Install]”部分中配置。特定于服务的配置选项在“[服务]”部分中配置。systemd.exec(5)中列出了其他选项,它们定义了执...翻译 2019-09-06 18:12:54 · 12352 阅读 · 0 评论 -
Linux下生成Core Dump文件的方法(总结)
日常工作中,不可避免的出现程序跑飞崩溃等情况.此时,我们需要coredump文件的支撑.但总有一些时候,莫名其妙的无法生成coredump.本文,针对此问题,描述该如何生成一个coredump,需要具备哪些条件.剩下的,请各位看官自行比对.Coredump定义Coredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情...原创 2019-09-16 14:25:51 · 3012 阅读 · 0 评论 -
paho MQTT Client 库
源码下载:官方源码:Eclipse Paho Downloads包含C/C++/java/python/Embedded C/C++等这里关注C版本MQTT C Client for Posix and Windows共享库形式libmqttv3a.so - asynchronous=异步-明文libmqttv3as.so - asynchronous with SSL =使用SS...原创 2018-12-22 16:06:02 · 2122 阅读 · 0 评论 -
paho MQTT C API接口描述
通信模式分类:包含同步客户端/异步客户端两种同步/异步通信接口命名规范:同步客户端API命名:MQTTClient*****异步客户端API命名:MQTTAsync*****常用同步API解释:MQTTClient_create()该函数创建了一个用于连接到特定服务器,使用特定持久存储的MQTT客户端。int MQTTClient_create(MQTTClient...原创 2018-12-22 14:54:59 · 9735 阅读 · 0 评论 -
linux 实用命令/工具(持续更新)
查找包含某字符串的文件及位置:find .|xargs grep -ri &amp;amp;amp;amp;amp;amp;quot;要查找的字符串&amp;amp;amp;amp;amp;amp;quot;查找文件位置:find [查找路径] -name &amp;amp;amp;amp;amp;amp;quot;文件名&amp;amp;amp;amp;amp;amp;quot;eg:find / -nam原创 2018-05-11 16:01:58 · 868 阅读 · 0 评论 -
嵌入式linux根文件系统制作--busybox
busybox是构造文件系统最常用的软件工具包,它被非常形象地称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的Linux命令和工具结合到了一个单独的可执行程序(busybox)中。 虽然与相应的GNU工具比较起来,busybox所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中已经足够了。 busybox在设计上就充分考虑了硬件资源受限的特殊工作环境。它采用一种...转载 2018-04-16 16:26:09 · 1444 阅读 · 0 评论 -
uboot 移植流程
开发环境: 处理器:s3c2440(arm920t) uboot版本:u-boot-2012.04.01下载、编译、烧写tar xjf u-boot-2012.04.01.tar.bz2 //解压make smdk2410_config //配置,smdk2410_config 的解释见顶层Makefilemake//编译效果:无输出分析u-boot:通过链接...转载 2018-04-16 12:05:59 · 961 阅读 · 0 评论 -
uboot移植异常集锦 待完善
网上下载uboot源码(最新), 解压、配置、编译make编译不通过:官方源码,编译不通过, 提示:segmentation fault 排除源码问题, 定位为:源码中用到了编译器的某些新属性,需要更新编译器为相关的时间版本。make通过后,十之八九依旧用不了,可能串口无打印信息,分析uboot:查看make后的最好链接指令信息,可知大概的一些文件组织形式,查看...原创 2018-04-01 20:17:17 · 141 阅读 · 0 评论 -
u-boot 第一段程序start.S 分析
本文学习目标:微观上,对此start.S的每一行,都有了基本的了解宏观上,对基于ARM核的S3C24X0的CPU的启动过程,有更加清楚的概念start.S结构流程:uboot第一阶段:设置处理器进入管理模式——关闭看门狗——关闭中断——设置时钟分频——关闭MMU和CACHE——初始化SDRAM———-设置栈——-代码重定位(flash–>SDRAM)——清.BS...转载 2018-03-20 22:50:59 · 347 阅读 · 0 评论 -
u-boot Makefile分析
目的:了解uboot结构层次,方便阅读源码。捷径配合make后的打印信息;Makefile文件结构前言注释确定版本号及主机信息实现静默编译功能设置各种路径设置编译工具链设置规则设置与cpu相关的伪目标源码分析参考: u-boot-1.1.6顶层目录Makefile非常详细的分析 U-boot主Makefile详尽分析结论:uboot...转载 2018-03-20 14:13:40 · 236 阅读 · 0 评论 -
Linux-hexdump命令调试event驱动
hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用描述我们以event1为例,当我们insmod挂载了键盘驱动后,出现一个event1设备,此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从来哪里来?通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层hexdump因为键盘驱动的input_handler ...转载 2018-03-19 17:04:08 · 376 阅读 · 0 评论 -
嵌入式linux开发-网络设置及nfs挂载
网络设置:ubuntu环境下, 1、编辑/etc/network/interfaces 文件(网卡配置文件)vi /etc/network/interfaces 2、增加静态ip:auto 网卡名称iface 网卡名称 inet staticaddress X.X.X.Xnetmask 255.255.0.0gateway X.X.X.Xdns-nameserver 1...转载 2018-06-04 14:43:47 · 730 阅读 · 0 评论 -
VMware tools工具的安装
目的:解决各种疑难杂症1、已经/一直显示“重新安装VMware tools”,但找不到安装包? 2、点击“安装VMware tools”,提示CD/DVD被占用等等一些信息 3、其他衍生问题。VMware tools 功能:只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享, 同时可支持自由拖拽的功能, 鼠标也可在虚拟机与主机之前自由...原创 2018-06-11 22:04:48 · 950 阅读 · 0 评论 -
linux进程/线程调度策略(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
目的:系统性的认识linux的调度策略(SCHED_OTHER、SCHED_FIFO、SCHED_RR);实时调度?分时调度?混搭系统(实时任务+分时任务),怎样调度。linux的调度策略linux内核的三种 调度策略 :SCHED_OTHER 分时调度策略,(默认的)SCHED_FIFO实时调度策略,先到先服务SCHED_RR实时调度策略,时间片轮转 实时进程将得...转载 2018-05-30 20:34:01 · 3418 阅读 · 0 评论 -
MQTT概述
示意图:涉及的消息三元素:代理服务器/发布者/订阅者简介:MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消...转载 2018-12-22 01:25:02 · 1409 阅读 · 0 评论