自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

boke_LIN

记录成长记录我

  • 博客(51)
  • 资源 (4)
  • 收藏
  • 关注

原创 chrony+gpsd部署pps校时

将外部gps信号输出通过串口转usb线接到自己电脑或者直接接入到控制器查看串口输出数据是否有RMC信息。pps信号线接好之后在控制器 通过sudo ppstest ./dev/pps0 测试pps信号是否正常。直接使用apt方式安装软件,需要的软件有chrony、gpsd、pps-tools。注:如有之前已经配置过的控制器,此步骤建议直接拷贝之前控制器的配置到新控制器。chrony配置路径为 /etc/chrony/chrony.conf。2、通过gpsmon确认输出信息,如下图正常。

2023-03-17 15:59:31 2795 1

原创 如何实现fastdds的topic调试工具

在使用fastdds进行实际的开发调试中发现,常常需要对已经发布的话题进行进一步的调试,比如话题存在,话题内容,话题频率等等信息都需要确认,尤其是话题内容。这时候就需要一个能进行这项操作的调试工具。可能对于用过ros的同学来说,这很简单,因为ros、ros2提供的命令行调试调试工具就已经包含了该功能。那么fastdds作为ros2的底层支持是否直接支持了调试功能呢?如果想开发类似ros topic 的命令行的话题调试工具需要如何实现?

2022-11-29 15:40:47 2303 2

原创 ROS2架构分析总结(一)

ros2其中比较重要的就是ROS1中所有节点都需要在节点管理器ROS Master的管理下进行工作,一旦Master出现问题,系统就面临宕机的风险,ROS2实现了真正的分布式,不再有Master这个角色,借助一种全新的通信框架DDS,为所有节点的通信提供可靠保障。

2022-11-10 16:54:14 2627

原创 时间同步,校时问题总结

前段时间测试现场车辆上报云端数据的延迟,使用的测试方案是车端上报数据中携带精确到毫秒的时间戳,云端收到协议之后在本身的日志存储接收时的时间戳,比对两者的差异从而确认网络+业务延迟。当然正常情况下测试两者延迟的方法是客户端发送时记录时间戳,然后服务端接收后马上进行业务处理同步的返回回复协议,客户端计算发收时间间隔的1/2就是延迟。这里不使用这种方法的原因有二,一是车和平台目前只有个别这样同步收发消息的业务,难以做长时间的拷机稳定测试;二是我们不关想测试网络延迟,是想测试车云真正的业务处理延迟,所以为了不增加新

2022-07-06 19:56:02 1527

原创 交叉编译过程中常遇见的问题

1、Find_package没有对应的cmake文件怎么处理?SET(fastrtps_DIR /home/share/Lib_DIR)不行,Find_package运行成功的最终目的是 在工程的顶层目录中的CMakeLists.txt 文件添加 include_directories(XXX_INCLUDE_DIRS) 来包含库的头文件,添加target_link_libraries(XXX_LIBRARIES)命令将源文件与库文件链接起来。所以如果我们知道要链接的头文件和库路径,手动在cmakelist

2022-06-17 15:49:04 1016

原创 fastdds交叉编译

之前在虚拟机安装过fastdds,不过在真正用到项目中,一般都是使用交叉编译的。网上搜索相关的参考资料比较少,所以记录下这两天编译库踩过的坑;首先先介绍下fastdds的核心库,建议不了解的先去git了解下基础资料;做应用开发的话主要涉及到fastrtps,fastcdr三个核心库的编译;其中fastrtps库的编译依赖fastcdr,TinyXML2,asio,Foonathan_memory四个库;下面依次介绍各个库的编译安装;1、fastcdrfastcdr是做idl序列化和反序列化的..

2022-02-08 18:14:14 7018 14

转载 CMake交叉编译配置

很多时候,我们在开发的时候是面对嵌入式平台,因此由于资源的限制需要用到相关的交叉编译。即在你host宿主机上要生成target目标机的程序。里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等,我今天仅仅简单介绍下相关CMake在面对交叉编译的时候,需要做的一些准备工作。 CMake给交叉编译预留了一个很好的变量即CMAKE_TOOLCHAIN_FILE,它定义了一个文件的路径,这个文件即toolChain,里面set了一系列你需要改变的变量和属性,包括C_COMPILER,CXX...

2022-02-08 14:34:58 824

原创 fastdds通信中间件-简介(一)

一、先了解下DDS介绍fastdds前先了解下dds,dds是用于分布式软件应用通信的数据中心的通信协议,主要定义了通信应用程序的接口API和通信语义。同时DDS又是一个以数据为中心的发布订阅模型,因此定义了三个关键实体:发布者、订阅者、话题;OMG组织定义了DDS通信协议和通信api,但是各个厂商对DDS协议进行了编译语言的实现,从而有了各种DDS的通信中间件;类似的还有opendds这些;有兴趣的同学可以去OMG的官网看下原版协议https://www.omg.org/二、fastdds简介

2022-01-28 09:27:41 4284

原创 十年,你们

就在刚刚结束的国庆假期,从小玩到大的最好的哥们结婚了。婚礼前几天松哥一直说他紧张,毕竟长这么大,这是第一次这么多人为自己的事情忙活,自己第一站在C位。他们俩初中相识,有幸见证了,他们后来相知相爱,至今近十年之久。最近我突然很羡慕他们,毕竟如今到现在这个年纪,基本不可能再有他们相恋十年,爱情长跑的经历了。其实这放到原来,高中或者大学,我都没有这种羡慕别人感情的情况的,最近可能是受到周围朋友圈子的影响,周围结婚订婚的朋友越来越多,自己的心态也和原来不一样了,现在觉得早点结婚也挺好的,给自己一份归属,也让家人

2021-10-10 20:03:53 131

原创 应用程序debug调试方案

linux环境下debug调试问题怎样才能做到最方便?像单片机可以直接重写printf(puts)函数,直接将打印输出到串口;而linux下的应用程序如何实现,问题困扰了我好久,最近恰好想到一个比较不错的解决方案,仅供参考;需求:1、应用程序可以通过终端操作将日志重定向到指定位置(包括指定log文件,ssh终端,串口终端等)2、应用程序的打印日志可以通过命令调节打印等级;3、整个方案不涉及内核修改,方便做跨平台开发;...

2021-09-30 15:15:52 270

原创 关于终端和console

一个好的应用程序,要提供给开发人员和维护人员一个好用的日志系统;最近在做打印系统模块,把需要的知识点简单记录下;一、终端百度下终端的概念,可以看到很多解释;我大概的理解就是一个程序的IO控制端口;linux系统原始有7个真正的终端,可以通过ctrl+alt+F1-F7切换,在终端中可以看到linux最初的模样,完全命令行模式的;处理这几个终端外,我们可以新建无数个虚拟终端,来方面使用;例如我们可以在linux的桌面端通过ctrl+alt+t的方式新建无数个终端,特殊的还有ssh终端,串口终端;我

2021-09-30 09:48:16 767

原创 posix定时器失效问题记录

个别定时器线程处理接口存在阻塞情况;从而导致所有定时器失效;从这个问题看,定时器内部也是轮训处理机制,单个定时器问题会导致整个定时系统异常

2021-09-29 18:45:40 349

原创 第一次跳槽,转战北京

这周公司组织培训,周六周日培训两天,看了下课表大都和我没有关系;今天下午的课老师讲的很快所以提前结束了,正好借下班打卡钱这段时间,随笔写一写最近这个个月的变动;其实主要就是向记录下这次离职到入职,杭州到北京的一些事情;离职是迟早的事儿,很多方面都让我不满意。比如待遇,加班,离家远,没社交等等等等。所以新的工作,一定要解决我上面的大部分痛点同时不带来新的麻烦;其实六月份开始就一直在投简历了,一直到七月中才最后决定来到现在这个公司;面了大概不到十家,有第一轮就挂的,也有顺利发offer的,之所以犹豫很久也是

2021-09-05 17:16:06 500

原创 H.264基础知识总结

简介H264是视频编解码格式;学习H264之前首先要搞明白一个问题,视频为什么要编码,编码传输不行吗?视频就是一堆图片按时间顺序播放,在编码标准出现之前,不经过编码的原始码流,可以这么理解成就是携带时间戳的图片。可以随便找个图片看下他的大小小则几十K,比较清晰的甚至需要十几M。这么大的数据量造成了,视频在存储时会耗费大量的存储空间,网络传输时占用大量带宽和流量,而编码就是为了减少视频的数据量,减少存储和网络中浪费的资源,在发送端做压缩在接收端做解压;接收端播放时将压缩后的数据量依据编解码算法和编解码规则,

2021-04-24 17:59:57 538

原创 MQTT——快速搭建客户端和服务器

MQTT是物联网中应用及其广泛的应用协议,mqtt由于其带宽低和基于发布订阅的模式的优点,被各物联网平台推广使用。MQTT首先有三个角色:订阅者、发布者、中间代理。订阅者通过订阅指定消息类型可收到发布者发布的制定类型消息。服务器作为代理做消息的转发。这种基于发布订阅的模式与物联网中边缘终端1对N的特征完全匹配。不得不说MQTT协议天生为物联网而生。本文将分两部分总结下搭建基于MQTT协议的服务端和客户端。一、serverMQTT作为一种协议被各厂家实现了各种版本,mqtt的官网https://mqt

2021-01-31 18:26:02 939

原创 浅谈内存函数栈中的栈帧

栈是函数调用的实现基础,而栈帧就是函数调用栈中的一个基础知识点。对栈帧理解后能更好的理解函数运行过程。简单来理解,程序运行过程中,PC指针每遇到一个函数,栈都会新增一个栈帧。栈帧记录着函数的参数,返回地址,父函数的栈底指针和自身相关的局部变量等。理解栈帧前先明确以下几个寄存器概念:esp,栈顶指针ebp,栈底指针pc,指向程序运行的下一行程序地址注意:ebp指向当前位于系统栈最上边一个栈帧的底部,而不是系统栈的底部。严格说来,“栈帧底部”和“栈底”是不同的概念;esp所指的栈帧顶部和系统栈的顶部

2020-12-10 22:29:00 405

原创 一种基于ajax的动态网页框架设计方法

ajax由于其可以做到不用重新加载整个页面而获取后台数据刷新局部网页,而广泛为web开发中应用。后台管理系统一般都是左侧或上方存在导航栏,固定不变,其余部分作为真正的数据部分。如上图,功能是点击导航栏中的1或2标签可以实现内容DIV的对应功能显示。传统的设备方案是使用iframe标签将整个页面分成两个部分,做到互不影响。但是又因为两个页面的独立性不能做到整体页面显示的统一控制。这时候想到使用ajax做刷新内容解决问题。1、将各个功能内容页面的HTML独立加到对应的HTML文件中,例如导航1->

2020-11-29 22:19:00 391

原创 基础学习总结——线程池

经常听到线程池的概念,不过在实际工作和项目里没有应用过线程池。线程池可能是作为服务端的开发经常用到的技术架构,所以最近我也通过网络简单的学习了下线程池的概念,稍微理解了线程池的应用场景。在高并发的服务环境下,存在多个客户端访问服务端相同服务的场景,而传统方式,是为多客户端创建一一对应的处理线程,这在高并发场景下极大的耗费服务端的资源。为了解决这类问题,服务端可使用线程池,为同一服务创建相同的线程队列,这些线程循环处理工作队列中的任务,当有客户端需要这种服务时将增加任务到工作队列中。在实际使用上,可能大

2020-08-30 15:47:22 207

原创 应用开发中常用的进程线程通信

进程通信是学习应用编程的基础,尤其是对于大型嵌入式项目而言,熟悉常用的通信方式是能写好代码和能看懂代码的前提。其实在大学刚接触linux就学习过进程间的几种通信方式,不过由于当时接触的项目都比较简单,导致没能对这几种通信有比较好的理解和应用。工作之后有了大量的代码阅读量,感觉对几种通信的应用有了新的认识,所以坐下简单的总结。共享内存信号量消息队列管道共享内存共享内存是几种通信方式中常用的程序间通信方式容易理解的。(如果不理解共享内存这个名词,你可直接把他想象成常用标志位,不过这个标志位可能会

2020-08-23 21:29:51 260

原创 代码规范——全局变量使用规范

最近参与的项目有大量的开发量,功能调试过程中发现自己在使用全局变量时引入了严重的问题,导致程序崩溃。回想下自己开发时使用全局变量,十有八九都会引起各种问题。所以想着专门记录下全局变量的使用规范和注意事项,防止以后还会出现同样的问题。一、声明和初始化声明时最好是在开发设计到的模块文件进行声明,对每个变量定义资源锁,使用时必须获取线程锁资源。在模块内部**封装初始化、获取、配置(init, get, set)**三个接口,如全局变量是数组要对数组的索引进行有效性验证。全局变量定义最好是使用static静态

2020-08-09 15:36:10 2030

原创 8266驱动spi屏ST7735小结

8266+arduino确实是一个神奇的组合,很适合新人入手,不过对于从51或者32转型的过来人,使用起来颇有些崴脚。首先是开源库的存在,依托arduino的开源,在IDE或者github有很多的开源库使用,我猜测现有的一些驱动,估计都能找到驱动库,具体怎么找可能就要自己花费些时间了。前情提要:导线连接: ESP8266--------------------TFTGPIO4--------------------RST GPIO5--------------------D/C GP...

2020-07-05 13:05:21 8984 9

原创 物联网利器——ESP8266(入门及环境搭建)

记录我的第一个ESP8266程序早就听说过,8266这款MCU,B站上也看多过好多人用这个板子DIY自己的作品,所以前段时间从某宝购入了一款全引脚引出的8266开发板,核心板本身就集成WIFI和Flash,整个板子除了核心板和串口转USB芯片,没别的东西,看起来比较小巧,当然还有比这更小的只有核心板的芯片,不过那种没有几个IO口可用,某宝也是有卖的。1.开发环境搭建买板子送的官方资料,指定的编译IDE是好像是Eclipse,烧录还要使用另一个软件。环境搭建比较繁琐。看到过B站上有人使用arduin

2020-07-04 15:49:13 1866

原创 搭建自己的嵌入式博客服务器(五)Mysql+PHP实现动态博客网站

按照前面的博客搭建步骤,可以在本地搭建一个看起来还不错的个人博客,但是总感觉有些不足。一个是网页都只是“静态的”,也就是说博客里的每一个网页都是事先在本地早就生生成好的,按照hexo的机制,每次更新一个博客都要至少新增两个文件.md文件和一个新的index.html文件,虽然两个文件本身不是很大,但总是感觉有些不友好;另外一个也是最让我难受的就是跟新博文的方式,只能通过markdown的方式新增文件,然后重新生成整个hexo工程,过程很是繁琐。为了解决这两个问题,我决定对博客进行大换血,使用数据库方式存储博

2020-06-14 21:51:43 459

原创 菜鸟入门github上传本地项目

首先通过github管理你的项目的前提是你要有一个github账户并且你的电脑或者服务器已经安装了git以下按提交资源到github的先后顺序介绍几个命令1.首先需要初始化git文件git init执行成功后,你的项目目录下会生成一个.git的隐藏文件。2.然后可以通过add命令添加新增文件到本地的github缓存git add . //这里使用. 代表所有文件,...

2020-02-06 18:12:25 468 1

原创 搭建自己的嵌入式博客服务器(四)hexo安装及部署到GitHub

到了博客搭建的最后一个阶段,使用hexo框架搭建完全静态博客站点一,hexo的安装使用1.安装Hexonpm install -g hexo-cli之后使用hexo -v查看一下版本,版本显示成功则安装成功。2.使用首先要初始化整个模板hexo init myblogmyblog是你的的博客文件夹的名称,根据自己的喜好设置更新npmnpm insta...

2020-02-06 14:49:49 218 1

原创 手机语音助手控制自己开发的物联网设备方法

市面上可以买到的物联网设备多种多样,而现有的提供商小米,百度,天猫等基本都是各玩各的,没有同意的设备接入控制的标准协议。所以开发者如果自行开发了一款设备没有同意的标准协议可以遵循,除非是调用厂商提供提供的SDK(实际还是按照他们的自定义协议实现)。那么如何简单实现将用siri或者小爱同学等语音助手控制自己的设备呢?下面总结下目前我了解的方法。首先分两种情况一个是Siri,另外是小爱,小度等国内...

2020-02-06 11:19:48 2578 1

原创 搭建自己的嵌入式博客服务器(三)内网穿透

搭建自己的嵌入式博客服务器(三)内网穿透由于自己的嵌入式设备,是通过自己家的路由器连接接入网络的,而黑心的运营商在我们每次上网时分配给我们的公网IP是变动的。为了实现外网设备访问我们的内网设备,我们不得不使用一个内网穿透穿透工具打通两个设备之间的通信链路。而现有的内网穿透工具参差不齐,下面我简单介绍下我试用的三个,都是免费的。花生壳优点:自定义域名,不变动缺点:没有使用ARM Ubun...

2020-01-31 17:49:51 1722 2

原创 搭建自己的嵌入式博客服务器(二)环境搭建

搭建自己的嵌入式博客服务器(二)环境搭建node.js和npm这里使用的是Ubantu操作系统,其他Linux系统同理, (npm是node.js的包管理工具,随同node.js一同下载)安装curl.sudo apt-get install curl curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -...

2020-01-31 13:23:54 358

原创 搭建自己的嵌入式博客服务器(一)

标题搭建自己的嵌入式博客服务器(一)首先介绍下我搭建自己的博客服务器的背景前段时间逛知乎时看到某位技术大声,将自己的博客搭建在树莓派上,瞬间引起了我的兴趣,毕竟谁不想拥有一个完全属于自己的博客呀。于是就开始准备了,从网上前人的经验得出现有的搭建方案大致如下:linux --操作系统Apache --http服务mysql --数据库管理PHP --后端编程语言花生壳 --内网穿透...

2020-01-31 12:34:21 699

转载 Linux命令行查看内存

用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况...还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多。top:主要参数 :d:指定更新的间隔,以秒计算。 q:没有任何延迟的...

2019-11-13 11:34:53 1738

原创 人脸三维建模软件

最近接触了三维打印机,学了两天3Dmax建模,打印了一个简单的手机壳,形状倒是很漂亮不过还是没达到理想的效果。设想如果打印机能把我的人脸模型打印出来岂不是更完美了,毕竟这都是电影里才有的画面,真要让我完成了,哈哈!!!于是想方设法开始找人脸三维建模软件,找了好多软件有手机APP,也有PC程序。这里简单介绍几个比较好用的软件。先从简单的开始吧,首先是一个APP,Qlone.可以很方便的直接用...

2019-04-08 21:07:54 7683 7

原创 简单的3DSOM建模步骤

使用3DSOM建模需要对物体进行360°的拍摄,大约10°左右拍摄物体的正视和俯斜视两张即可。打开软件,然后把刚拍摄的所有照片都导入进来导入后效果如图可能会有一些图片,软件识别不出来,所以有个X,忽略即可。然后点击粉色按钮对物体进行背景分割选择没有背景,之后对图片逐个进行背景分割操作,沿着物体边缘用鼠标画出分割线即可,可以不用特别详细。画完之后,可以...

2019-04-08 20:58:54 4021 4

原创 播种必有收获,再见2018!

年末时,大部分人都会说今年发生的事儿不少啊!当然今年的我也不例外,我发自肺腑的一句话:今年的事属实的多,也属实的值得值得我来总结一下。真让我一个个列举出来,我还真是记不起来几个。想到哪算哪吧!先是去年的现在,我应该正努力准备期末考试呢。好像也是这个时间左右,开通了CSDN的博客。。。时间太久了,反正就记得当时是专业课考了好几门,,一边复习,又一边看着嵌入式方面的新知识。虽然现在也水平有限,...

2019-01-03 16:24:13 63

转载 函数参数中使用const

转自:http://blog.csdn.net/mathe/article/details/1271519在函数的参数中使用const,可以让编译器知道在函数调用过程中,对于某个参数不会修改数据,从而可以提供给编译器更多的优化机会。比如标准函数char *strcpy(char *dst, const char *src);这里,第二个输入参数使用const char *src,而...

2018-12-28 11:59:57 9050 1

原创 飞思卡尔k66,k60无限重启

修改程序后下载,然后就循环重启了,网上搜了下都说重启是因为Wdog也就是看门狗的问题,在程序正常运行下,会自动的进行喂狗也就是定时器在喂溢出进入中断之前就又给赋值了新的值,所以正常情况下不会进入看门狗中断。而如果程序没能正常运行,没能喂狗,就会进入看门狗中断,看门狗中断就会使单片机重启。单步调试都是在开中断的时候,程序就跑飞了,尝试多次可以肯定就是中断的问题。仔细检查发现自己竟然在串口4中断程...

2018-12-22 11:34:58 3060 3

原创 单片机中工程的文件结构分析

一直以来都是在原有的工程上直接新建自己的模块文件,现在一到自己新建工程的时候就出现了各种的链接错误(当然我这里说的是多文件的工程,单文件工程不会出现链接错误的),平常接触的51,32,飞思卡尔K66等芯片都的工程都有自己的工程结构。简单的51来说一般都是单文件的工程,毕竟本身的资源不多,引脚定义也少。如果你的工程在各模块编译没有错的情况下,link时出现错误或警告,一定是文件结构有问题。通俗来讲就...

2018-12-22 11:14:45 1740 1

转载 ubuntu 16.04 启用root用户方法

1、使用:sudo passwd root设置root的密码,如下图所示:2、使用su root来测试是否可以进入root用户,如果出现#说明已经设置root用户的密码成功,如下图所示:3、进入到/usr/share/lightdm/lightdm.conf.d/目录,使用gedit 50-unity-greeter.conf &命令打开50-unity-greeter.conf ...

2018-11-06 20:12:15 1595

原创 linux设置开机自启脚本

要开机运行只需将它加入到 rc.local ,一般为/etc/rc.d/rc.local或/etc/rc.d/rc.sysinit在其中加入以下行:sh /mnt/yaffs/test.sh或者 sudo/mnt/yaffs/test.sh或者 cd/mnt/yaffs/./test.sh...

2018-10-26 20:03:37 15617 1

转载 修改linux内核的开机图片

windows中把一张xx.jpg的图片转换成xx.bmp的图片方法:  linux中生成ppm图片(ppm图片应该是其他格式的图片解析成数据序列的文件)【方法1】 转换方法如下: bmp图片使用bmptoppm。jpg,png,gif都有相应的topnm工具,但我没有试过。 $bmptoppm pic.bmp > temp1.ppm //生成ppm $ppm...

2018-10-26 19:11:06 2631

转载 内存区域的划分和分配

一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。用mall...

2018-09-23 16:31:41 6062 1

linux网络编程基础

Linux网络编程基础练习代码,包含udp和tcp通信模型。基础练习,大牛请闪

2018-09-06

stm32硬件I2C实现

STM32硬件IIC

2018-08-14

51单片机实现计算器

16按键模拟计算器,1602显示 含protuse图 、

2018-06-16

51实现密码锁24c06存储密码

课程设计 。

2018-06-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除