- 博客(76)
- 收藏
- 关注
原创 ubuntu 开机自动mount 的方法
每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。当然我们自己还可以通过读取/proc/mount也可以来获取当前挂载信息。记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;而/etc/fstab是系统准备装载的.修改完成后,执行sudo mount -a 都会重新检测相关信息进行mount。/proc/mount 文件。
2024-12-17 15:56:41
566
原创 解决fgets标准输入读取超时的方法
从标准输入读入字符fgetc/getchar或fgets/gets字符串,都是堵塞等待输入的方法,无法在任务线程循环体中超时退出执行其他事务。解决的方法,是读取输入前先判断标准输入是否有数据,如果有再调用读取接口;/*****设置超时*******/
2024-12-13 10:07:19
442
原创 visual studio code配置windows c++运行调试环境
Ctrl+Shift+P打开命令面板,输入C/C++: Edit Configurations (UI),选择你的编译器(比如GCC),然后按照提示进行配置。// 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc,一般也要与tasks.json文件中的label一致。// 设为true时程序将暂停在程序入口处,一般设置为false,断点跟踪必须需要设置为true,自动运行设置为false。// 将要进行调试的程序的路径,一定要与tasks.json文件中指定生成的文件名相同。
2024-12-10 17:54:57
1278
原创 mkfs.ubifs -c 计算工具
mkfs.ubifs -c 输入的logical erase block count,是指除掉ubi文件系统自身管理和坏块处理后的逻辑可擦除最大块数。
2024-06-05 19:12:50
359
1
原创 Linux 命令行在shell 和Makefile的区别
Linux 命令行在shell 脚本和Makefile会有些不一样的差别,一个shell是一个进程,shell 脚本的命令都是在shell一个进程进行,前后命令会有所影响;而makefile里的每一行命令是一个单独的进程,只在单行里有影响,不对上下文影响。shell cd改了目录,会作用到后面命令,所以需要cd 返回还原执行目录状态,而Makefile 每行是单独的进程,cd 不会影响到下一行的进程,因此,不需要在cd ../返回到上级目录。运行后,达到预期,test 目录下建立一个软链接。
2023-03-24 09:13:34
462
原创 .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
3476
原创 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
4915
原创 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
354
原创 pthread_cancel 退出线程引起死锁的问题和解决方法
Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。不论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因运行出错而退出的前提下,如何保证线程终止时能顺利的释放掉自己所占用的资源,特别是锁资源,就是一个必须考虑解决的问题。最经常出现的情形是资源独占锁的使用:线程为了
2021-06-17 18:35:17
1930
原创 可变参数的应用实例
在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
214
原创 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
361
1
原创 nand flash 裸数据读写的错误规避方法
在系统升级过程中往往需要对flash进行裸数据的标记读写,对于nand flash 的系统不能像nor flash一样在任意位置上进行裸数据读写,如果Nand flash存在坏块,并且正好处于读写的位置上,数据就比较容易出错了。nand flash 存在坏块特性,往往在底层驱动去对坏块的规避处理,但是对于非文件系统的nand flash往往因为坏块的存在,产生读写地址的偏差导致裸数据读写的错误,因此nand flash 不建议采用离散增量写的方式,避免因为坏块的存在,实际地址发生偏差。对于小于...
2020-06-03 10:28:07
2702
原创 Dolby Passthrough(PCM/RAM)音频设置测试预期
对于支持杜比解码的机顶盒, Passthrough/PCM(RAM/ PCM)音频切换设置,界面设置、音频格式、端口预期输出对应如下: 设置输出(UI界面) 端口输出 节目音频格式类型 AV输出 HDMI ...
2020-04-15 12:01:58
10703
原创 Linux 设置系统时钟对时序的影响
Linux 系统很多机制和系统实时时钟有很大的关系,它们基于系统实时时钟进行计时的调度,但是当调整系统时钟后,将对这些应用参数影响,特别是NTP,或其他网络授时,当本地终端晶体发生老化后,时间差异比较大,很容易产生比较大的跨度调整,所以在相关的函数应该考虑实时时钟对它的影响。 1,sem_timedwaitint sem_timedwait(s...
2020-04-03 17:42:56
1771
原创 linux 系统下的休眠应用
linux 系统下的休眠函数主要有两个,sleep,nanosleep;usleep 已经被遗弃;sleep,nanosleep休眠都是基于实时时钟(比如挂钟,墙钟,手表,国家授时时间)的sleep,两种sleep方式都受信号中断影响,调用进程捕捉到一个信号并从信号处理程序返回(nanosleep返回未休眠完的秒数)。信号会对所在进程产生中断,同时sleep退出,比如SIGALR...
2020-04-03 15:42:10
1135
原创 国家以及语言编码
根据维基百科 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
22651
原创 关于动态库的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
1232
原创 获取当前进程或线程的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
6665
1
原创 UTC标准时差时区
首先是UTC:协调世界时协调世界时(英:Coordinated Universal Time ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。世界标准时间UTC:GMT+0GMT:格林尼治平时世界时UT 即格林尼治时间,格林尼治所在地的标准时间。以地球自转为基础的时...
2019-12-11 11:30:26
7371
原创 在父进程fork子进程的继承资源的弊端和解决方法
在父进程通过system()函数创建或fork创建子进程时,子进程会继承父进程的资源,包括文件设备访问权限、文件描述符等。这些资源在父子进程交互或共享提供便利的同时也带来了一些弊端,fork会导致 file->count++, 在父进程 close的这些文件设备时候发现还是别的地方对这些文件设备使用,就不会release,导致父进程重新open的时候就会出现"Cannot o...
2019-12-04 14:58:05
2318
原创 secureCRT 输出打印缺失的问题
网上解决的方法:secureCRT 显示默认是换行的,如果设置了不换行,当一行字符比较多的时候,会显示不全。下面的设置就是解决这两个问题的。Options -> Global Options -> Terminal -> Appearance -> Maximum columns 设置成1200(值越大,一行显示的字符越多,如果一行的字符大于这里设置的值,则多余的字...
2019-11-19 16:30:04
3239
原创 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
2257
原创 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
3166
原创 字符操作注意事项
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
207
原创 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
146
原创 设置系统时钟对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
2396
原创 semaphore和mutex简单用法区别
semaphore信号量:用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作,多用于多线程访问同一个函数或保护区域;线程轮询切换;比如用于pthread_cancel()mutex互斥锁:用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时...
2019-08-01 11:15:03
938
原创 sh(bash) 参数索引查找
1,变量说明$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出...
2019-06-03 18:28:11
870
原创 repo init git_config.py字符编码导致的出错问题
repo init 字符编码导致的出错问题repo init -u ssh://abc@192.168.1.9:29418/android/platform/vendor/test/sdk/abc/manifests -b master --repo-url="ssh://abc@192.168.1.19:29418/androi...
2019-05-18 18:24:43
3836
原创 visual studio code 使用指导
一,常用快捷键主命令框F1 或 Ctrl+Shift+P : 打开命令面板。在打开的输入框内,可以输入任何命令,例如: 按一下 Backspace 会进入到 Ctrl+P 模式 在 Ctrl+P 下输入 > 可以进入 Ctrl+Shift+P 模式 在 Ctrl+P 窗口下还可以: -直接输入文件名,跳转到文件...
2019-03-14 14:19:54
984
原创 Git 常用操作
Git 常用操作命令1.查看状态 git status — 查看工作区和缓存区的状态如果没有要提交的内容会出现以下: on branch master 在master主分支上 nothing to commit,working directory clean 没有任何要提交的,...
2019-03-14 14:16:40
597
1
原创 grep 转义字符“\” 查找
grep 转义字符“\” 查找,因为“\”grep 命令里是转义字符,所以需要特殊的处理,比如要查找#include "..\..\mydir\test.h" 中的"\"grep "\\\\" test file 其中,前两个“\\” --->\转义本身“\”,后面两个"\\"才是要查找的“\”;或者grep \\\\ test file 其中,前两个“\\” ---&g...
2018-12-24 10:09:13
38990
原创 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
755
2
原创 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
2701
原创 一种简单的nor flash 备份恢复机制
背景:nor flash在写数据前都需要先把整个section(64K block )擦除再写,但是在这个过程意外断电,那么这个section(64K block )数据将全部丢失,为了保证这种意外丢失,本文将采用另外一个section(64K block )进行备份后恢复。数据恢复机制是采用一个block用于存放数据,一个block用于备份和恢复数据的数据管理方法,前提条件是保存的数据长度必...
2018-11-09 19:28:04
1463
原创 linux 生成指定长度的特定的数据方法
1,利用dd 命令和tr 命名dd if=/dev/zero bs=4096 count=1 | tr "\000" "\377" > test.bin从zero里面读取到的数据都是0,这里利用tr命令把00转换成ff 存储在文件test.bin2,利用printf命令和tr 命令 printf '%*s' 65536 ' ' | tr ' ' '\377' >test...
2018-09-27 15:13:04
2481
原创 特殊的bash 的 if 语句条件
if condition; then echo yeselse echo nofi即 condition 的代码执行后,退出状态码为真即执行 then 后的语句,否则,执行else后的语句。但是特别需要注意一点的是,这里的真值是0,即返回状态吗为0即为真值,和其他语言0表示逻辑假不同。代码执行结果可以单步查看:condition ;echo $? 源自...
2018-09-17 11:32:19
1311
原创 xxd文本转二进制数的前面补零的疑惑
TEST_ID =0123456789abcdef0123456789abcdefprintf "0: %s" $TEST_ID | xxd -r -g0 > ca_id.bin疑惑1:前面为什么要加“0:”,不加用-g0 就不能正常输出二进制文件,为什么-g0必须要加0:标记呢,-g number of octets per group in normal o...
2018-09-14 19:18:01
1194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人