嵌入式
文章平均质量分 67
chengf223
铁牛
展开
-
.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 · 3309 阅读 · 0 评论 -
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 · 4249 阅读 · 0 评论 -
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 · 317 阅读 · 0 评论 -
pthread_cancel 退出线程引起死锁的问题和解决方法
Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。不论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因运行出错而退出的前提下,如何保证线程终止时能顺利的释放掉自己所占用的资源,特别是锁资源,就是一个必须考虑解决的问题。最经常出现的情形是资源独占锁的使用:线程为了原创 2021-06-17 18:35:17 · 1727 阅读 · 0 评论 -
可变参数的应用实例
在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 · 192 阅读 · 0 评论 -
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 · 316 阅读 · 1 评论 -
nand flash 裸数据读写的错误规避方法
在系统升级过程中往往需要对flash进行裸数据的标记读写,对于nand flash 的系统不能像nor flash一样在任意位置上进行裸数据读写,如果Nand flash存在坏块,并且正好处于读写的位置上,数据就比较容易出错了。nand flash 存在坏块特性,往往在底层驱动去对坏块的规避处理,但是对于非文件系统的nand flash往往因为坏块的存在,产生读写地址的偏差导致裸数据读写的错误,因此nand flash 不建议采用离散增量写的方式,避免因为坏块的存在,实际地址发生偏差。对于小于...原创 2020-06-03 10:28:07 · 2474 阅读 · 0 评论 -
Linux 设置系统时钟对时序的影响
Linux 系统很多机制和系统实时时钟有很大的关系,它们基于系统实时时钟进行计时的调度,但是当调整系统时钟后,将对这些应用参数影响,特别是NTP,或其他网络授时,当本地终端晶体发生老化后,时间差异比较大,很容易产生比较大的跨度调整,所以在相关的函数应该考虑实时时钟对它的影响。 1,sem_timedwaitint sem_timedwait(s...原创 2020-04-03 17:42:56 · 1646 阅读 · 0 评论 -
国家以及语言编码
根据维基百科 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 · 18602 阅读 · 0 评论 -
关于动态库的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 · 1126 阅读 · 0 评论 -
获取当前进程或线程的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 · 6241 阅读 · 1 评论 -
在父进程fork子进程的继承资源的弊端和解决方法
在父进程通过system()函数创建或fork创建子进程时,子进程会继承父进程的资源,包括文件设备访问权限、文件描述符等。这些资源在父子进程交互或共享提供便利的同时也带来了一些弊端,fork会导致 file->count++, 在父进程 close的这些文件设备时候发现还是别的地方对这些文件设备使用,就不会release,导致父进程重新open的时候就会出现"Cannot o...原创 2019-12-04 14:58:05 · 2095 阅读 · 0 评论 -
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 · 2103 阅读 · 0 评论 -
sh(bash) 参数索引查找
1,变量说明$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出...原创 2019-06-03 18:28:11 · 830 阅读 · 0 评论 -
grep 转义字符“\” 查找
grep 转义字符“\” 查找,因为“\”grep 命令里是转义字符,所以需要特殊的处理,比如要查找#include "..\..\mydir\test.h" 中的"\"grep "\\\\" test file 其中,前两个“\\” --->\转义本身“\”,后面两个"\\"才是要查找的“\”;或者grep \\\\ test file 其中,前两个“\\” ---&g...原创 2018-12-24 10:09:13 · 38321 阅读 · 0 评论 -
一种简单的nor flash 备份恢复机制
背景:nor flash在写数据前都需要先把整个section(64K block )擦除再写,但是在这个过程意外断电,那么这个section(64K block )数据将全部丢失,为了保证这种意外丢失,本文将采用另外一个section(64K block )进行备份后恢复。数据恢复机制是采用一个block用于存放数据,一个block用于备份和恢复数据的数据管理方法,前提条件是保存的数据长度必...原创 2018-11-09 19:28:04 · 1347 阅读 · 0 评论 -
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 · 1146 阅读 · 0 评论 -
Link.ld 链接脚本内存解析
#include <stdio.h>#include <string.h>#include <stdlib.h>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 · 4128 阅读 · 0 评论 -
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 · 2935 阅读 · 0 评论 -
字符操作注意事项
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 · 188 阅读 · 0 评论 -
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 · 128 阅读 · 0 评论 -
设置系统时钟对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 · 2242 阅读 · 0 评论 -
semaphore和mutex简单用法区别
semaphore信号量:用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作,多用于多线程访问同一个函数或保护区域;线程轮询切换;比如用于pthread_cancel()mutex互斥锁:用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时...原创 2019-08-01 11:15:03 · 826 阅读 · 0 评论 -
特殊的bash 的 if 语句条件
if condition; then echo yeselse echo nofi即 condition 的代码执行后,退出状态码为真即执行 then 后的语句,否则,执行else后的语句。但是特别需要注意一点的是,这里的真值是0,即返回状态吗为0即为真值,和其他语言0表示逻辑假不同。代码执行结果可以单步查看:condition ;echo $? 源自...原创 2018-09-17 11:32:19 · 1266 阅读 · 0 评论