自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 Linux 命令行在shell 和Makefile的区别

Linux 命令行在shell 脚本和Makefile会有些不一样的差别,一个shell是一个进程,shell 脚本的命令都是在shell一个进程进行,前后命令会有所影响;而makefile里的每一行命令是一个单独的进程,只在单行里有影响,不对上下文影响。shell cd改了目录,会作用到后面命令,所以需要cd 返回还原执行目录状态,而Makefile 每行是单独的进程,cd 不会影响到下一行的进程,因此,不需要在cd ../返回到上级目录。运行后,达到预期,test 目录下建立一个软链接。

2023-03-24 09:13:34 369

原创 .elf和.bin的区别

bin:Binary ,raw binary二进制文件,BIN文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像,可以被CPU 运行的二进制文件。比如uboot 和kernal或rtos可执行二进制文件。flash上的需要直接运行的只能是raw binary格式的文件。elf:executable and link format,文件里面包含了符号表,汇编等;ELF格式是在有操作系统时,操作系统会根据ELF解析出代码、数据等等,最终仍是以BIN运行。由于elf...

2021-11-30 19:15:45 3104

原创 Linux 绑定中断和进程给指定CPU

一,绑定中断到CPU查看系统中断irq cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 0: 51 0 0 0 0 0 0 0 IO-APIC 2-edg...

2021-11-24 18:13:15 3661

原创 Linux 不同调度方式的线程创建和应用

一,线程相关函数和属性创建线程函数int pthread_create (pthread_t* restrictthread, const pthread_attr_t* restrictattr,void* (*start_routine) (void*), void* restrict arg);的第二个參数即为线程属性,传空指针表示使用缺省属性。线程属性为一个结构体。详细例如以下typedef struct{intdetachstate;...

2021-07-29 18:22:46 284

原创 pthread_cancel 退出线程引起死锁的问题和解决方法

Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。不论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因运行出错而退出的前提下,如何保证线程终止时能顺利的释放掉自己所占用的资源,特别是锁资源,就是一个必须考虑解决的问题。最经常出现的情形是资源独占锁的使用:线程为了

2021-06-17 18:35:17 1522

原创 可变参数的应用实例

在ANSI C中,可变参数应用的这些宏的定义位于stdarg.h中:typedef char *va_list;#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )va_start宏,获取可变参数列表的第一个参数的地址(list是类型为va_list的指针,v是可变参数最左边的参数):#define va_start(ap,v) ( ap = (va_list)&v + _IN

2021-05-24 19:50:45 177

原创 Linux for 的表达是在shell 和makefile的区别

1,for 在shellALL_FILES="`find rootfs/ -type f`";for x in ${ALL_FILES};do if [ -n "`file ${x} | grep ELF`" ]; then chmod +w ${x}; strip ${x}; chmod -w ${x}; fi;done;2,for 在makefileALL_FILES=$(shell find rootfs/ -type f)for x in ${ALL_FILES}; \d..

2020-12-02 18:08:46 291

原创 nand flash 裸数据读写的错误规避方法

在系统升级过程中往往需要对flash进行裸数据的标记读写,对于nand flash 的系统不能像nor flash一样在任意位置上进行裸数据读写,如果Nand flash存在坏块,并且正好处于读写的位置上,数据就比较容易出错了。nand flash 存在坏块特性,往往在底层驱动去对坏块的规避处理,但是对于非文件系统的nand flash往往因为坏块的存在,产生读写地址的偏差导致裸数据读写的错误,因此nand flash 不建议采用离散增量写的方式,避免因为坏块的存在,实际地址发生偏差。对于小于...

2020-06-03 10:28:07 2269

原创 Dolby Passthrough(PCM/RAM)音频设置测试预期

对于支持杜比解码的机顶盒, Passthrough/PCM(RAM/ PCM)音频切换设置,界面设置、音频格式、端口预期输出对应如下: 设置输出(UI界面) 端口输出 节目音频格式类型 AV输出 HDMI ...

2020-04-15 12:01:58 8685

原创 Linux 设置系统时钟对时序的影响

Linux 系统很多机制和系统实时时钟有很大的关系,它们基于系统实时时钟进行计时的调度,但是当调整系统时钟后,将对这些应用参数影响,特别是NTP,或其他网络授时,当本地终端晶体发生老化后,时间差异比较大,很容易产生比较大的跨度调整,所以在相关的函数应该考虑实时时钟对它的影响。 1,sem_timedwaitint sem_timedwait(s...

2020-04-03 17:42:56 1475

原创 linux 系统下的休眠应用

linux 系统下的休眠函数主要有两个,sleep,nanosleep;usleep 已经被遗弃;sleep,nanosleep休眠都是基于实时时钟(比如挂钟,墙钟,手表,国家授时时间)的sleep,两种sleep方式都受信号中断影响,调用进程捕捉到一个信号并从信号处理程序返回(nanosleep返回未休眠完的秒数)。信号会对所在进程产生中断,同时sleep退出,比如SIGALR...

2020-04-03 15:42:10 930

原创 国家以及语言编码

根据维基百科 https://zh.wikipedia.org/wiki查询到的信息国际语言编码:ISO 639-2,对应关系如下:639-2 639-1(如有) SIL14版(如有) 英語名称 中文名称 aar aa AFR Afar 阿法爾語、阿法語 aav Austro-Asiatic langu...

2020-03-16 11:28:20 16530

原创 关于动态库的link -rpath-link的问题

问题:gcc link过程中在无法找到动态lib 提示错误.../ld: warning: libcurl.so.4, needed by /home/xx/xx/xx/xx/lib/libtest.so, not found (try using -rpath or -rpath-link)-rpath和-rpath-link都可以在编译链接时指定库的路径;-rpath-link只指定的...

2020-01-17 13:43:04 1058

原创 获取当前进程或线程的PID方法

用户态获取进程ID#include <stdio.h>#include <sys/types.h>#include <unistd.h>// 获取当前进程的PIDpid_t pid = getpid();// 获取当前进程的PPIDpid_t ppid = getppid();获取线程PID:#include <p...

2019-12-16 14:41:32 5850 1

原创 UTC标准时差时区

首先是UTC:协调世界时协调世界时(英:Coordinated Universal Time ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。世界标准时间UTC:GMT+0GMT:格林尼治平时世界时UT 即格林尼治时间,格林尼治所在地的标准时间。以地球自转为基础的时...

2019-12-11 11:30:26 5591

原创 在父进程fork子进程的继承资源的弊端和解决方法

在父进程通过system()函数创建或fork创建子进程时,子进程会继承父进程的资源,包括文件设备访问权限、文件描述符等。这些资源在父子进程交互或共享提供便利的同时也带来了一些弊端,fork会导致 file->count++, 在父进程 close的这些文件设备时候发现还是别的地方对这些文件设备使用,就不会release,导致父进程重新open的时候就会出现"Cannot o...

2019-12-04 14:58:05 1916

原创 secureCRT 输出打印缺失的问题

网上解决的方法:secureCRT 显示默认是换行的,如果设置了不换行,当一行字符比较多的时候,会显示不全。下面的设置就是解决这两个问题的。Options -> Global Options -> Terminal -> Appearance -> Maximum columns 设置成1200(值越大,一行显示的字符越多,如果一行的字符大于这里设置的值,则多余的字...

2019-11-19 16:30:04 2734

原创 makefile中使用echo -e 无法生效的问题

问题:makefile 中执行echo -e 不生效; @echo -e "/*****auto create .h head file by makefile***************/\n" >test.h结果test.h内容:/*****auto create .h head file by makefile***************/\n-e 没有生...

2019-10-24 13:46:08 1934

原创 linux shell中if的命令表达式

三种命令条件表达式:ifcommandthenif函数then命令执行成功,等于返回0(比如grep ,找到匹配)执行失败,返回非0(grep,没找到匹配)if[ expression_r_r_r ]then表达式结果为真,则返回0,if把0值引向theniftest expression_r_r_rthen表达式结果为假,则返回非0,if把非0值引向then...

2019-10-11 19:21:18 2386

原创 字符操作注意事项

1,字符长度 #include <string.h> size_t strlen(const char *s);DESCRIPTION The strlen() function calculates the length of the string s, excluding the terminating null byte ('\0'...

2019-09-11 12:08:55 180

原创 Linux 启动流程

Linux 启动流程:cd rootfs/etc/inittab--->/etc/init.d/rcS--->/etc/init.d/S00*--->/etc/init.d/S10*/etc/inittab--->Login(sbin/mingetty --noclear console --autologin root)或者/etc/inittab--->L...

2019-08-29 14:30:40 110

原创 设置系统时钟对sem_timedwait和pthread_cond_timedwait的影响

问题:当向前向后设置系统时间时,sem_timedwait和pthread_cond_timedwait会出现长时间堵塞或一直堵塞的情况;分析:sem_timedwait() 是 通过传入未来的某个时钟实现超时等待信号量的获取,具体请参考 sem_timedwait(3),当调用sem_timedwait()后,因为系统实时时钟被修改,导致 sem_timedwait() 用于计算是否达到超时...

2019-08-08 15:19:49 2106

原创 semaphore和mutex简单用法区别

semaphore信号量:用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作,多用于多线程访问同一个函数或保护区域;线程轮询切换;比如用于pthread_cancel()mutex互斥锁:用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时...

2019-08-01 11:15:03 753

原创 sh(bash) 参数索引查找

1,变量说明$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出...

2019-06-03 18:28:11 787

原创 repo init git_config.py字符编码导致的出错问题

repo init 字符编码导致的出错问题repo init -u ssh://[email protected]:29418/android/platform/vendor/test/sdk/abc/manifests -b master --repo-url="ssh://[email protected]:29418/androi...

2019-05-18 18:24:43 3658

原创 visual studio code 使用指导

一,常用快捷键主命令框F1 或 Ctrl+Shift+P : 打开命令面板。在打开的输入框内,可以输入任何命令,例如: 按一下 Backspace 会进入到 Ctrl+P 模式 在 Ctrl+P 下输入 &gt; 可以进入 Ctrl+Shift+P 模式 在 Ctrl+P 窗口下还可以: -直接输入文件名,跳转到文件...

2019-03-14 14:19:54 749

原创 Git 常用操作

Git 常用操作命令1.查看状态 git status — 查看工作区和缓存区的状态如果没有要提交的内容会出现以下: on branch master 在master主分支上 nothing to commit,working directory clean 没有任何要提交的,...

2019-03-14 14:16:40 429 1

原创 grep 转义字符“\” 查找

grep 转义字符“\” 查找,因为“\”grep 命令里是转义字符,所以需要特殊的处理,比如要查找#include "..\..\mydir\test.h" 中的"\"grep "\\\\" test file  其中,前两个“\\” ---&gt;\转义本身“\”,后面两个"\\"才是要查找的“\”;或者grep \\\\ test file  其中,前两个“\\” ---&g...

2018-12-24 10:09:13 37640

原创 makefile 杂谈

CC = gcc LD = gcc CFLAGS = -Wall -c -Dgliethttp -I../include -L lib_path LDFLAGS = -lpthread RCS = $(wildcard *.c source/*.c) OBJS = $(patsubst %c, %o, $(SRCS)) TARGET = gliethttp ...

2018-12-19 17:37:32 610

原创 codeblocks cbp 转 makefile

codeblocks是一个跨平台的C/C++的IDE,页面简单好用,在写C/C++工程的时候其才采用自有的工程文件(.cbp)来组织相关源码,但是有时候需要在Linux环境下运行,需要把编译工程转成makefile,codeblocks有一个自动将cbp工程文件转换为makefile的工具---cbp2make,下面我介绍如何使用cbp2make1,下载工具:https://sourcef...

2018-12-17 11:19:01 2435

原创 一种简单的nor flash 备份恢复机制

背景:nor flash在写数据前都需要先把整个section(64K block )擦除再写,但是在这个过程意外断电,那么这个section(64K block )数据将全部丢失,为了保证这种意外丢失,本文将采用另外一个section(64K block )进行备份后恢复。数据恢复机制是采用一个block用于存放数据,一个block用于备份和恢复数据的数据管理方法,前提条件是保存的数据长度必...

2018-11-09 19:28:04 1245

原创 linux 生成指定长度的特定的数据方法

1,利用dd 命令和tr 命名dd if=/dev/zero bs=4096 count=1 | tr "\000" "\377" &gt; test.bin从zero里面读取到的数据都是0,这里利用tr命令把00转换成ff 存储在文件test.bin2,利用printf命令和tr 命令 printf '%*s' 65536 ' ' | tr ' ' '\377' &gt;test...

2018-09-27 15:13:04 2278

原创 特殊的bash 的 if 语句条件

if condition; then    echo yeselse    echo nofi即 condition 的代码执行后,退出状态码为真即执行 then 后的语句,否则,执行else后的语句。但是特别需要注意一点的是,这里的真值是0,即返回状态吗为0即为真值,和其他语言0表示逻辑假不同。代码执行结果可以单步查看:condition ;echo $? 源自...

2018-09-17 11:32:19 1233

原创 xxd文本转二进制数的前面补零的疑惑

TEST_ID =0123456789abcdef0123456789abcdefprintf "0: %s" $TEST_ID | xxd -r -g0 &gt; ca_id.bin疑惑1:前面为什么要加“0:”,不加用-g0 就不能正常输出二进制文件,为什么-g0必须要加0:标记呢,-g          number of octets per group in normal o...

2018-09-14 19:18:01 1114

转载 Link.ld 链接脚本内存解析

#include &lt;stdio.h&gt;#include &lt;string.h&gt;#include &lt;stdlib.h&gt;unsigned int  bss_test_array[1024 * 1024];unsigned int  bss_test_char = 0;unsigned int  data_test_array[10] = {0,1,2...

2018-09-14 14:02:10 4024

原创 linux 下批替换字符串和更改文件名

1,替换所有符合条件的字符串sed -i "s/原字符串/新字符串/g" `grep 原字符串 目录/ -rl`比如命令:sed -i "s/oldstring/newstring/g" `grep oldstring test/ -rl`1.2 替换指定文件的字符串sed -i 's/原字符串/新字符串/g' `find . -name 符合条件的文件`1.3 带变量的替...

2018-08-22 16:53:58 3255

原创 vc2008 项目拆分库 出现 LNK2005 库函数重复定义的问题的解决方法

把项目拆分成模块,以库的方式进行编译,项目编译link时出现重复定义的问题,错误信息如下:&gt;uafxcwd.lib(afxinl1.obj) : error LNK2005: "protected: __thiscall CObject::CObject(void)" (??0CObject@@IAE@XZ) already defined in uafxcw.lib(except.obj)...

2018-02-27 10:49:33 641

原创 VC2008 不能将参数 从“CString”转换为“const wchar_t *” 问题

VC2008 编译工程时出现的参数 从“CString”转换为“const wchar_t *”问题,错误如下:但是以前的工程是好了,重新建的工程就有问题,后来对比了下,是因为旧工程多了两个关键定义,如下图:解决的方法是直接在新的工程下进行定义,如下图:从新编译后,问题解决,但是现在还不知道旧工程下为什么会默认就定义了这两个宏!经过研究对比,字符集默认为非unicode编码,最好的解决方式如下图示...

2018-02-26 17:15:43 2735

原创 QT release 版本方法

QT 静态比动态模式式生成的exe文件大的多,而debug又比release大的多,release的方式根据其他情况来选择,如果是轻量级的小程序,建议使用静态库的方法;重量级的大程序,最好使用动态库的release方法;一,share 库的release,更改build configuration 为release模式;重新build all;在release目录下产生.exe可执行文件;对于sh...

2018-02-24 11:20:34 13776 1

原创 android log 定义

android log 优先级定义:     java 层相关的定义在frameworks/base/core/Java/android/util/Log.java6个优先级的log,/**     * Priority constant for the println method; use Log.v.     */    public static final i

2017-11-17 13:58:39 749

空空如也

空空如也

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

TA关注的人

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