自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ChrisTsai的博客

工作及生活记录

  • 博客(10)
  • 收藏
  • 关注

原创 使用QtCreator作为嵌入式Linux的IDE及可视化调试工具

使用QtCreator作为嵌入式Linux的IDE及可视化调试工具开发嵌入式Linux程序的朋友们都有一个感触,那就是Linux太自由了,自由到没有一个大家都用的工具来开发程序,有人喜欢用Vim,有人喜欢用Emacs,有人用原生的gdb调试,有人用可视化的insight。于是就羡慕iOS和Android开发者们,他们有苹果和Google官方开发的XCode和AndroidStudio,几乎做到傻瓜化

2016-08-31 23:00:07 3212 1

原创 UDP/TCP协议的区别之我的理解

UDP/TCP协议的区别之我的理解一、 前言在面试中,无论你从事哪个方向的开发,甚至是测试、运维等,面试官往往会问到一个很普遍的问题:UDP和TCP之间到底有什么区别?通常,我们都会很轻松的回答:TCP是面向链接的协议,而UDP是免费数据报的协议。这么回答当然是没错,但往往面试官无法给你一个高分,因为这回答也太简单、太常见了!我记得很早以前有一个面试官就在我按上述回答之后问我,能不能再详细一...

2018-10-07 23:15:15 370

原创 关于Linux的内存之我的总结

关于Linux的内存之我的总结说来惭愧,作为一名Linux应用层软件开发人员,应当对Linux的分配、布局等方式了然于胸,而我索然在之前有所了解,但总觉得是云里雾里的,没有真正搞清楚。现在也算是一个总结吧,可能还会有错误,后续把《深入理解Linux内核》这本书学习后,再来修改。1、应用程序的内存布局大家都知道,一个Linux的应用程序,拥有代码段(.text段)、数据段(.data段)、BS...

2018-09-20 00:13:14 217

原创 嵌入式linux增加ZRAM支持

Linux内核ZRAM概念在使用嵌入式Linux的时候,经常遇到以下尴尬:为了节约成本,DDR通常比较小,比如128M、256M等等,然而现在的应用程序越做越大,偶尔会遇到OOM,导致进程被杀。如果是在PC版的Linux上,经常可以通过交换分区的方式来解决内存不够的问题,但嵌入式Linux时常使用Nand Flash甚至SPI Flash,根本无法作交换分区,所以嵌入式Linux时常会关闭交换...

2018-09-10 23:11:39 1308

原创 使用iptables将包含某字符串的域名解析请求重定向至指定dns服务器

使用iptables将包含某字符串的域名解析请求重定向至指定dns服务器在开发路由器的时候,有个需求,是要求将xxx.com域名解析为路由器的本地ip。类似于在极路由下的电脑解析hiwifi.com,会指向极路由的192.168.199.1。 起初想的很简单,直接改/etc/hosts文件,增加一个hosts就好了,或者在/etc/dnsmasq.conf里增加一条也行。但当路由器下的主机自...

2018-09-02 23:52:59 5931 3

原创 C++11中的智能指针与C++98的智能指针设计对比

C++11中的智能指针与C++98的智能指针设计对比一、前言:众所周知,C++11更新了一个重要的feature,那就是智能指针类,由unique_ptr、shared_prt、weak_ptr组成,这为苦逼的C++程序员们带来了不小的好处:终于在某些情况下不用手动管理内存啦!和内存泄漏说拜拜!咦?为什么要说有些情况下呢?因为这智能指针,只是用了引用计数来实现内存的自动管理,而不像java...

2018-08-24 01:34:27 602

原创 uboot中添加USB固件恢复功能

uboot中添加USB固件恢复功能一、前言:在嵌入式Linux设备中,一般都有固件升级功能。一般在flash比较大的设备中,会有AB分区,在升级时,将固件写入至B分区,在uboot启动时可根据标志位选择A或B分区作为启动分区。这样便可做到安全升级:即使固件写入到B分区时断电或意外重启,标志位未被写入,下次启动时依然从A分区启动。 而在某些嵌入式环境中,flash过小(如常见的汇邦16...

2018-08-24 00:52:49 668

原创 使用群晖DS216j等非docker方式安装homebridge并接入小米wifi插座

使用使用群晖DS216j等非docker方式安装homebridge并接入小米wifi插座一、前言众所周知,想使用iPhone的homekit功能,官方的方式就是购买推荐的智能家居产品,但那个价格。。。能购买至少3个以上同样功能的小米智能家居产品。so最好的方式是自己通过homebridge的方式,将小米的协议和homekit的协议进行转换,以将小米产品接入到homekit中。homebr...

2018-08-13 01:56:12 7734 8

原创 C语言:在main函数之前和之后执行函数

前段时间,需要写个简单的用C语言实现的轻量级httpd服务,想实现在添加api的时候,只要在Makefile中添加对应的api C文件,就能做到将此api加入到api列表以提供响应的功能,类似于linux的驱动程序编写,在编写驱动的时候,只要编译我们写的C程序,即可把驱动加入到内核中。主要是要实现简单的类似于module_init和module_exit宏,在api C文件的最后加入这两个宏,实现...

2018-06-30 19:19:25 1321

原创 使用cmake在openwrt中添加工程

1.为什么要使用cmake此前,笔者的公司之前linux下的工程,很多是使用scons工具进行编译,其优点是编译脚本是使用python编写语法简单,缺点也很多,一是无法像make一样多线程编译(笔者未找到相应方法,如果有,请赐教),二是像无法添加到openwrt工程中;使用cmake的好处很多,其CMakeLists.txt文件编写也很简单,支持make -j多线程编译,也可以将自己的工程添加到o...

2018-03-26 23:05:25 4347 1

空空如也

空空如也

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

TA关注的人

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