Tag

Linux

2021年6月1日

[linux]select实现非阻塞异步输入

最近要实现一个非阻塞输入的C代码,查到可以通过select函数来完成。 select用于同时监控多个fd,在io可读/写时返回。 正常来说,select是阻塞的,除非超时或者等待的fd内容发生变化。因此,我我们将select的超时时间设为0,便可以非阻塞。按照返回来判断当前监视的fd内容是否变化,从而根据这个返回进行相

2020年10月6日

[Linux]嵌入式系统中栈的地址空间传入

根据系统的memory mapping,链接脚本中规定有栈顶的地址(栈地址变换为从上往下,从大到小,因此规定栈顶) __stack_top = ORIGIN(SRAM) + LENGTH(SRAM); //在此规定从ram胡最后开始为栈顶 __stack_bottom = __stack_top - __stack_s

2020年6月30日

[Ffmpeg]语音文件采样率转换,左右双声道数据分离

单声道-多声道互转 ffpmeg -i test.mp3 -ar 16000 -ac 2 test.wav test.mp3为原文件,可以为单声道,test.wav为输出文件 -ar表示新文件的采样率 -ac 2 为新文件的声道数 以上命令完成了将单声道test.mp3文件转为16k 双声道wav文件。 左右声道分拆

2020年6月10日

[Linux]静态库.a文件通过链接脚本加入特定段section

部分情况下我们需要将特定文件的特定段进行放入特定位置,在有源码的情况下,比较简单,但是有时候我们之后编译好的静态库。 由于.a文件是由.o文件压缩而来,所以想要修改.a文件,需要分别控制.o的链接位置。 可以通过ar -x libXXX.a解压,或者使用objdump -t libXXX.a查看所有文件。得到文件名之后

2019年10月8日

[Linux]ELF中.eh_frame段的简单说明

最近在进行某个So文件的size优化,通过命令(readelf -t/objdump -h)发现.eh_frame段占了一定的空间,如下: 12 .rodata 0001a9f0 000de060 000de060 000de060 2**5 CONTENTS, ALLOC, LOAD, READONLY, DATA

[LINUX]Linux终端快速输入上一条命令的某个参数

2019年9月16日

[LINUX]Linux终端快速输入上一条命令的某个参数

在很多时候,我们在Linux终端输入的命令之间有一定的关联。 比如,新建一个目录,然后进入到这个目录,我们需要输入两条命令: mkdir newdir cd newdir 为了方便,在输入第二条命令进入到新目录的时候,我们可以使用快捷键快速输入“newdir”,这个快捷键就行ALT+. 输入之后自动会将newdir补上

2019年7月8日

[Video]ffmpeg将视频文件转为YUV420

ffmpeg是一个很强大的视频编解码工具,最近使用了其解码为yuv420格式的功能。 命令如下:ffmpeg -i inputfile.avi -ss 00:00:00 -t 00:00:20 -s 320*240 -r 24 output.yuv -ss表示截取视频的起始时间 -t为截取的总时间 -s表示输出文件的分

2019年6月20日

[Linux]推荐一个Ubuntu下socks客户端 proxychains

proxychains可以通过配置代理,让本机的应用通过代理访问互联网。 安装:apt-get install proxychains 配置:sudo vi /etc/proxychains.conf 在[ProxyList]之后加上自己的代理方式跟地址,如 socks5 127.0.0.1 1080​ 使用:prox

[Linux]优先级反转解释

2019年4月16日

[Linux]优先级反转解释

看到一张比较好的解释优先级反转的示意图如下: 当优先级比较低的C任务获取到信号量运行时,优先级为高的A任务因为条件触发需要执行,但是需要的信号量此时被c获得,所以只能等待。 CPU回到任务C继续运行,但是如果此时优先级为中的任务B因为条件出发需要执行,则CPU会切换到任务B,运行完成之后再回到任务C,一直到任务C运行结