自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

卐意志的胜利卐

真正的技术人是拥有不断自我学习的能力

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

原创 解决'配置,编译glib-2.26.1库'错误.

1.序 之所以不选最新的glib库,而选glib-2.26.1库,是有原因的,第一最新库依赖的库文件太多,编译出来库文件太大,不太适合flash空间有限的嵌入式设备. 但是在configure ’ glib-2.26.1 ’ 库的时候,碰到了许多问题。此博客记录这些问题及解决方法。 ./configure 出问题,还得找根本原因,看脚本.而configure文件则是autoconfig 自

2018-01-02 23:06:37 1506

原创 利用C语言"位域"的特殊性来对数组进行边界检查

1.序 数组越界时常有发生,如果我们能够让编译器提醒我们犯错那是最好。2.例子#include <stdio.h>#include <stdlib.h>#define ARRAY_CARDINALITY(Array) (sizeof(Array) / sizeof(*(Array)))#undef YIN_VERIFY#define YIN_VERIFY(name,cond) stat

2017-12-06 10:31:16 1017 1

原创 完美解决编译缺少文件,apt-file search 命令去查找依赖。

1.序 在交叉编译过程中如果碰到少了什么头文件之类的报错,最好是使用 apt-file search 命令去查找依赖。2.命令 比如: apt-file search /netlink/genl/genl.hwpa_supplicant$ apt-file search /netlink/genl/genl.hlibnl-3-dev: /usr/include/libnl3/netli

2017-11-28 15:39:41 3546 2

原创 应用程序——链接脚本

1.序 应用程序也可以像内核一样按照一定规则的组织模块。通过链接脚本就可以做到。2.查看默认链接脚本 没有链接脚本,程序也是不知道如何在内存当中进行组织的。只不过一般情况下,做应用的程序员不 需要关心而已。leon@netview:~$ leon@netview:~$ ld --verboseGNU ld (GNU Binutils for Ubuntu) 2.24 Sup

2017-11-27 17:23:02 703

原创 sed 命令

在makefile 含有 default 行,将libtommath.a 替换为 libtommath.a libtommath.sosed -i '/default/s/libtommath.a/libtommath.a libtommath.so/' makefile在makefile第49行添加 DLIBNAME=libtommath.so:sed -i '49i DLIBNAME=lib

2017-11-24 11:24:34 345

原创 查看可执行程序(ELF)或动态库所依赖动态库——ldd脚本分析

1.序 搞清可执行程序(动态库)所依赖的动态库信息是非常有帮助的。2.查看方法系统信息:Linux netview 4.4.0-101-generic #124~14.04.1-Ubuntu SMP Fri Nov 10 19:06:11 UTC 2017 i686 i686 i686 GNU/Linux2.1 使用 ldd# ldd `which gdb`linux-gate.so.1 =>

2017-11-24 09:56:25 6893

原创 shell脚本中,子串匹配的例子

1.脚本文件name="dbus"for i in `find ./ -maxdepth 1 -type d`do dirname="$(echo `basename $i`)" echo $dirname if [[ "$dirname" == *$name* ]] ;then echo "yes"

2017-11-22 18:09:21 603

原创 关于NFS挂载问题——NFS failed: Protocol not supported

1.序 这几天在调试海思板子的时候,刚好长城宽带断网了,之后局域网还是能用的,使用NFS把Ubuntu某个共享目录到单板上,是可以的。长城宽带几天不好,服务态度极差,无力吐槽. 第二天就换了电信宽带,还送了个电信千兆光猫.价钱确实是贵了,但是可以愉快的上网了,根据装宽带师傅的吩咐,使用了千兆口接路由器的WLAN口.2.挂载NFS 晚上,愉快的使用网络,同时打开单板,发现挂载不上NFS了。这

2017-11-17 23:13:34 35675 5

原创 GCC选项——不使用默认系统库函数及不搜索默认头文件路径

1.序 在某些特殊情况,不需要使用系统自带的库及头文件(比如使用GCC编译实时系统时),那么就需要指定参数,不去搜索默认路径及库文件。2.命令选项 -nostdinc 不搜索默认路径头文件-nostdinc Do not search the standard system directories for header fles. Only the directories yo

2017-11-17 09:02:01 10432

原创 查找系统定义size_t , va_list , va_start , va_end 等不常见宏(变量)头文件所在

1.序在创建一个新项目时,往往我们会使用到如: size_t , va_list , va_start , va_end ,false , true 等不常见宏(变量),经常会报错,说未定义。而这些宏(变量)又不是在标准的glibc库当中实现的,而是gcc中实现/定义。使用man命令压根找不到信息,这里我们需要一点技巧。2.例子这里写代码片

2017-11-10 16:00:16 1032

原创 项目经验之谈—— x86、ARM架构栈帧汇编分析

0.源码1.x86架构2.ARM架构

2017-04-05 21:34:40 841

原创 项目经验之谈——fork与文件(操作)之间的爱恨情仇

1.前言

2017-03-27 22:12:33 403

原创 项目经验之谈 —— 利用编译器及C语言特性<位域>进行内存边界检测

1.前言2.校验3.源码#include <unistd.h>#include <stdio.h>#include <fcntl.h>#include <sys/wait.h>#include <sys/stat.h>#include <sys/types.h>#include <getopt.h>#include <stdlib.h>#include <string.h>#defi

2017-03-17 15:44:53 909

原创 项目经验之谈 —— umount TF卡 失败

1.项目描述在公司开发的门铃(G26设备),带TF卡,2. 跟踪

2017-03-03 14:39:56 764

原创 搜索Linux系统所有进程打开(文件)句柄的命令

1.搜索进程打开的句柄列表

2017-03-02 23:45:59 1060

原创 项目经验之谈--栈破坏 -- 案例二

1.前言前一篇 《项目经验之谈–栈溢出》 已经写到过栈破坏从来导致的程序崩溃问题,这次在项目中又发现此类似BUG。故此再记录下来,谨记下次再犯。2.项目需求通过二维码扫描配置camera ID,然后程序就崩溃了。项目需求不是紧要的,这里不多累赘。3.代码以下代码为出问题的函数static void trigger_callback(NV_HANDLE handle, NV_S32 fd, void

2017-03-01 09:14:31 6674

原创 Linux命令 -- sed命令,去除指定字符 ---- ()\-等等

1.命令echo "(hello\) main --- wrd" | sed 's/[()\-]//g'

2017-01-05 14:39:34 6549

原创 Linux命令 -- 获取 进程信息:name 、stat 、PID

以 kthreadd 进程为例1.命令⑴ 第一种方式换行输出:echo `ps | grep -v grep | grep kthreadd | sed 's/\/bin\/sh//' | awk '{print $4, $1}' | sed 's/\(^.*\/\)\(.*\)/\2/' | grep kthreadd && cat /proc/$(pgrep kthreadd | se

2017-01-05 10:43:25 1800

原创 Linux 查看进程中的线程、及其状态信息

1.前言直接上图2.进程状态信息查看2.1 查看进程2.2 查看线程2.3 查看线程状态

2017-01-05 09:55:53 3477

原创 命令组合-- 获取Linux某进程的运行状态

1.前言获取Linux进程状态的方式有很多种.这里讲两种.2.命令行2.1 第一种情况这种情况使用以下命令即可得出结果:# ps | grep -v grep | grep init | awk '{print $4}'2.1 第二种情况发现少了一列 STAT ,而我们又需要这一列。使用以下命令行:# cat /proc/1/stat这种方式也可以获取状态值。命令行(以下两种方式都可以):# c

2017-01-05 09:38:38 481

原创 将某个目录下所有ko文件反汇编

1.命令 for i in `ls *.ko`; do objdump -D $i > $i.dis; done

2016-11-24 14:21:40 4628

原创 Linux 内核资源限制 -- 栈限制

1.序言今天某同事突然问我:我在Linux上写了一个测试程序,在函数内部定义了一个很大的数组,一运行就 Segmentation fault. 当时一想肯定是栈溢出了。其实这样说也不准确,还是决定去看内核代码,其实内核对用户进程是有资源限制的。2.task_struct既然是跟进程相关,那么首先得想到进程相关的数据结构task_struct,查找资源限制相关的结构,task_struct里

2016-11-19 09:49:43 1270

原创 项目经验之谈--驱动崩溃分析之栈回溯技术与反汇编

1.序言

2016-11-18 10:53:45 3460

原创 OSD叠加到视频流

1.OSD叠加原理文字、图片、视频显示的原理,无非就是描点(像素)。显示屏是发光二极管组成。俗称点阵。2.原理图3.处理流程⑴text文本段⑵从字库中找出相应文字的点阵⑶描点(将文字二进制数据转换成pixel值,存到canvas)⑷查找颜色索引(取出canvas像素值 与 CLUT进行匹配)⑸存储index值到显存(areaStart)⑹设置参数,后面的事情就交给底层处理

2016-10-16 21:21:39 5211

原创 输出警告/错误信息到SecureCRT终端

1. 命令leon$ make clean && make all 2>&1 | grep "warning"2. 示例

2016-10-11 17:27:33 734

原创 Linux命令组合 -- 将make all 编译错误信息重定位到管道输出

1.命令leon$ make clean && make all 2>&1 | grep "error"2016-10-10 18:49:36 (nvc-communication)==>|| INFO : Clean project nvc-communication ...rm -rf ./build/objs/* ./build/lib/* ./build/bin/*2016-10-1

2016-10-10 18:55:03 1464

原创 Linux命令 -- 提取字符串指定字符串之间的字符串

1.例子 提取字符串以下字符串 error: 与 : 之间的子字符串。并消除空格。"src/network/misc/nv_net_udp.c:17: fatal error: nv_net_tools.h: No such file or directory"2.命令echo "src/network/misc/nv_net_udp.c:17: fatal error: nv_net_tools

2016-10-10 17:59:11 19047 1

原创 替换某个目录下.c文件内容

1. 找出所有.c文件leon$ find ./ -maxdepth 3 -type f | grep "\.c"./misc/nv_net_udp.c./nv_comm_system.c./util/nv_report_event.c./util/nv_linklist_connect_info.c./transport/net_udp.c./transport/net_tcp.c.

2016-10-09 17:03:08 419

原创 Linux命令-dirname、basename

1. 例子leon$ find ./ -maxdepth 3 -type f./misc/nv_misc_pub.h./util/nv_util_pub.h./common/nv_common_pub.h./camera/nv_camera_pub.h./nv_communication.h./transport/nv_transport_pub.h./log/nv_log_pub.h

2016-10-08 15:24:04 2005

原创 Linux命令 - 去掉空格、去掉多余空格、大小写转换、打印列

1.空格 ⑴去掉空格leon@netview:~$ dateFri Sep 30 14:30:55 CST 2016leon@netview:~$ date | sed s/[[:space:]]//gFriSep3014:31:50CST2016⑵去掉多余空格leon@netview:~$ echo "hello world" | tr -s [:space:]hello world

2016-09-30 14:42:26 17211

原创 Linux命令 -- find 搜索深度

1.前言 在编译当中经常需要通过-I 来指定头文件搜索路径。2.命令-maxdepth <number> ; number 指定搜索深度.find ./ -maxdepth 3 -type d ! -name '.git' -a ! -name 'build' -a ! -name 'deps' -a ! -name 'patches'3.执行结果././openssl./nvc

2016-09-29 16:59:06 14778

原创 查找ko文件中text段的某个函数名

1.前言 目的是找到ko_hi3518目录下某个ko文件中是否存在某个函数定义的地方。 如:查找CMPI_CreateProc是在哪个驱动文件中实现的。2.ko_hi3518目录acodec.ko hi3518_ai.ko hi3518_group.ko hi3518_rc.ko hi3518_vda.ko hidmac.ko

2016-09-28 10:15:01 3314

原创 Linux命令 -- 将某个文件中的字符串小写字母全部转为大写字母

1.前言 有时候要将某个文件字符串进行大小写转换,这条命令还是很方便.2.脚本 将 test.txt 文本中字符串的小写字母全部转为大写字母,另存为 result.txtecho ` cat test.txt | tr '[:lower:]' '[:upper:]' ` > result.txt

2016-09-09 19:27:16 10064

原创 设计浅谈 -- 分层设计之驱动框架

1.前言2.框架3.代码设计

2016-08-30 11:40:29 553

原创 位置相关(无关)码 浅谈

1.前言 在嵌入式开发当中.往往会听到一个概念:代码重定位.2.重定位3.位置相关/无关码 ⑴位置相关码 ⑵位置无关码4.可重入函数

2016-08-30 11:32:38 521

原创 Windows 与 Ubuntu 实现共享

1.前言 在开发当中,往往为了方便阅读代码,而需要实现Windows与Linux server之间的文件共享。2.共享 ⑴共享Windows目录 ⑵挂着Windows到Linux serversudo mount -t cifs -o username=leon,password=123,file_mode=0777,dir_mode=0777 //192.168.0.99/l

2016-08-30 11:23:56 515

原创 source insight 使用

1.前言 工欲善其事必先利其器。source insight 在阅读大工程代码时,无疑是神器。 这里介绍source insight 的 两个比较好用的功能。2.功能增加 ⑴在代码当中插入注释 ①打开base工程 ②插入脚本 ③脚本内容//add by leon 2015-10-12// insert current datemacro M

2016-08-30 10:43:41 753

原创 多个shell命令组合

1.概述 在项目开发中,会依赖许多标准库或者头文件。而我们又不知道该库在哪个路径下面,我们可以使用某些编译器所自带的属性来操作。2.命令 ⑴首先 man gcc ,然后 /print ...skipping... -femit-struct-debug-reduced -femit-struct-debug-detailed[=spec-list]

2016-08-26 09:40:49 860

原创 面向对象编程之C库函数 -- strcpy , memcpy , strdup 之区别

1.概述2.函数原型 char* strcpy(char* des,const char* source) void *memcpy(void *dest, const void *src, size_t n); extern char *strdup(char *s);

2016-08-25 12:58:39 932

原创 批量建立软链接

批量建立软链接 例如以下三个文件: arm-hisiv100-linux-uclibcgnueabi-addr2line arm-hisiv100-linux-uclibcgnueabi-gcc arm-hisiv100-linux-uclibcgnueabi-objcopy**建立软链接如下:**arm-linux-addr

2016-08-24 15:36:58 1745

空空如也

空空如也

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

TA关注的人

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