嵌入式软件
文章平均质量分 57
skyaizl
走寻常路
http://tldp.org/LDP/tlk/tlk-toc.html
https://lctt.github.io/LFS-BOOK/
展开
-
Ubuntu 设置程序开机启动(以指定用户身份)
在/etc/rc.local写程序的启动命令(系统执行内核过程中会启动init进程,该进程把当前runlevel所对应的的所有service 都启动后,才会执行rc.local里的命令),程序默认以root身份启动;也可以通过sudo-u user1 命令指定以user1身份启动...原创 2021-12-29 13:08:27 · 2050 阅读 · 0 评论 -
linux 内核版本中自动加入 git 版本信息
在编译linux内核结束的时候 会使用mkiamge工具将 zImage 制作成 uImage, OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready UIMAGE arch/arm/boot/uImageImage Name: Linux-3.14.0Created: Thu Nov 29 01:21:16 ...原创 2021-04-26 13:47:40 · 650 阅读 · 0 评论 -
linux中的dd命令解析:sudo dd iflag=dsync oflag=dsync if=210.bin of=/dev/sdb seek=1
dd命令的作用(功能)主用功能是用于拷贝文件,也就是用指定大小的块去拷贝一个文件,并在拷贝的同时进行指定的转换(默认从标准输入拷贝到标准输出,这意味dd可以在管道中使用)。这个拷贝过程简单理解就是读取,转换并输出数据。语 法:dd[bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][se.原创 2020-05-27 12:32:02 · 3032 阅读 · 0 评论 -
Ubuntu apt 本地源 离线安装
今天一台主机(Ubuntu 14.04)不知道为什么连不上外网了。只能和局域网内的其他主机相互ping通。但是上面一个正在跑的程序出了问题,需要安装两个额外的包,而且这两个包依赖还挺多的样子。这可急死我了。但是我另一台笔记本可以上外网。碰巧也安装的是Ubuntu14.04。我就想能不能把要安装的包先在笔记本上下载好,然后通过U盘转移到前面那台主机上,再在那台主机上通过本地包安装呢?通过网上一番搜索...原创 2020-03-13 22:09:28 · 1450 阅读 · 0 评论 -
Ubuntu建立本地apt源
Ubuntu建立本地apt源Ubuntu下的包管理工具是dpkg和apt-getDpkg=rpmApt-get=yum在没有网络的情况下,要想安装软件包,并自动解决依赖问题,就需要将事先准备好的deb包(相当于centos下的rpm包)上传到服务器并制作local repo示例:我需要装vim和cuda,但不知道依赖包有哪些。可以找一台联网的Ubuntu机器一、只下载,不安...原创 2020-03-13 22:08:21 · 1831 阅读 · 0 评论 -
linux – 覆盖modprobe.d黑名单
我使用的是Ubuntu 18.04.我正试图在启动时加载模块;有问题的模块是iTCO_wdt.有关将内核模块列入黑名单的问题很多,但我试图将其列入白名单.以下是我尝试在启动时加载模块的步骤:>将iTCO_wdt添加到/ etc / modules(符号链接到/etc/modules-load.d/modules.conf)>在/etc/modprobe.d/blacklist...原创 2020-01-04 19:13:38 · 1873 阅读 · 0 评论 -
RAID技术全解图解-RAID0、RAID1、RAID5、RAID100
图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100…… RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆。这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征、基本原理、关键技术、各种等级和发展现状进行了全面的阐述,并为用户如何进行应用选择提供了基本原则,对于初学者应该有很大的帮助。一、RAID 概...转载 2019-12-31 14:24:12 · 459 阅读 · 0 评论 -
认识IAR 开发环境下的.icf 文件
AR 开发环境下使用 .icf文件定义 MCU及其外扩资源的应用范围,这些在项目设计之前必须被确定下来。所以认识它非常重要。那么该文件是如何定义的呢?下面通过一个.icf来认识其具体结构:这是一个基于STM32芯片的.icf文件定义结构:/*###ICF### Section handled by ICF editor, don't touch! ****//*-Editor annotation...原创 2019-12-27 10:46:57 · 2265 阅读 · 1 评论 -
IAR中ICF文件分析与应用
sections在地址空间中的存放是由ILINK链接器来实现的,而ILINK链接器是按照用户在ICF文件中的规定来放置sections的,所以理 解ICF文件的内容尤其重要。一个标准的ICF文件可包括下面这些内容:1. 可编址的存储空间(memory)2. 不同的存储器地址区域(region)3. 不同的地址块(block)4. Secti...原创 2019-12-27 10:39:34 · 1059 阅读 · 0 评论 -
ffmpeg中的sws_scale算法性能测试
经常用到ffmpeg中的sws_scale来进行图像缩放和格式转换,该函数可以使用各种不同算法来对图像进行处理。以前一直很懒,懒得测试和甄别应该使用哪种算法,最近的工作时间,很多时候需要等待别人。忙里偷闲,对ffmpeg的这一组函数进行了一下封装,顺便测试了一下各种算法。简单说一下测试环境,我使用的是Dell的品牌机,i5的CPU。ffmpeg是2010年8月左右的当时最新版本编译而成,我使用...原创 2019-10-29 14:50:43 · 173 阅读 · 0 评论 -
[Android] -- 修改ttyUSB权限 -- 修改设备文件权限
修改ttyUSB权限在 ueventd.rockchip.rc 文件中完成,修改内容如下:diff --git a/device/rockchip/common/ueventd.rockchip.rc b/device/rockchip/common/ueventd.rockchip.rcindex 7316ebf..7773f8b 100755--- a/device/rockchip/...原创 2019-10-15 11:05:04 · 997 阅读 · 0 评论 -
【C语言数据结构】循环单链表
CircleLinkList.h123456789101112131415161718192021222324252627282930转载 2017-09-19 14:24:01 · 886 阅读 · 0 评论 -
Ubuntu 14.04 增加SWAP交换分区的方法
最近我的博客经常莫名连不上数据库, 后来查看发现是由于内存不足造成了系统将MySQL进程给关闭了, 输入命令free -m, 发现系统并未设置SWAP, 如下图所见: 所以想到自己给系统划出一块swap首先, 在根目录下新建一个文件夹swap$ mkdir /swap之后我们使用dd命令生成一个空文件, 由于我VPS的内存是1G, 所以我给swap划分一转载 2017-11-10 11:10:52 · 2889 阅读 · 0 评论 -
Linux kernel Panic后自动重启机器的设置
Linux kernel Panic后自动重启机器的设置方法1:内核配置命令行加入这句,崩溃后3秒重启: panic=3make menuconfig设置kernel系统参数:方法2:vi /etc/sysctl.conf#增加此行,以保证此设置持续有效;#含义是当系统遇到kernel panic时,系统在30秒后re转载 2017-12-04 11:06:36 · 1490 阅读 · 0 评论 -
构造IOCTL命令的学习心得-----_IO, _IOR, _IOW, _IOWR 幻数的理解
在编写ioctl代码之前,需要选择对应不同命令的编号。为了防止对错误的设备使用正确的命令,命令号应该在系统范围内唯一,这种错误匹配并不是不会发生,程序可能发现自己正在试图对FIFO和audio等这类非串行设备输入流修改波特率,如果每一个ioctl命令都是唯一的,应用程序进行这种操作时就会得到一个EINVAL错误,而不是无意间成功地完成了意想不到的操作。 在驱动程序里, ioc转载 2018-01-23 12:52:25 · 272 阅读 · 0 评论 -
从头搭建imx6ull开发环境(uboot、内核编译及烧入、mfgtools详细使用方法)
硬件平台:MYS - 6ULX- IOT系统:linux-4.1.15文件系统:busybox-1.22.1.tar.bz2编译器: gcc version 4.9.1 20140710 (prerelease) (crosstool-NG linaro-1.13.1-4.9-2014.07 - Linaro GCC 4.9-2014.07) I.MX6ULL 系列是基于高性能、超低功率转载 2018-01-24 09:25:39 · 6718 阅读 · 0 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——U-Boot移植
其实Freescale的BSP移植文档已经将u-boot的移植步骤讲述的非常详细了,但为了以后方便查阅,还是按照自己的理解记录在这里。获取源码根据前一篇文章搭建好LTIB环境后就可以非常方便的导出u-boot源码了。切换到ltib目录,并运行如下指令:[cpp] view plain copy./ltib -m p转载 2018-01-24 10:31:55 · 252 阅读 · 0 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——开发板的选择
其实入手这块TQIMX6Q的时候手头上已经有一块E9开发板了,但还是选择了TQIMX6Q开发板,主要原因是个人感觉开发板更适合学习或研发,E9卡片电脑更适合应用,而且这两款单板使用的是相同的芯片(Freescale的IMX6Q),因此,学习过程中还可以在开发板上实验,然后在卡片上验证。本文的主要目的是简单的介绍下TQIMX6Q,希望有更多的朋友一块研究。开发板简介TQIMX转载 2018-01-24 10:33:05 · 407 阅读 · 0 评论 -
imx6q LINUX 启动时间优化
1 u-boot的优化 1 首先去掉无关紧要的串口信息 2 将CONFIG_BOOTDELAY改为0 3 去掉一些不用的驱动,例如SPI、USB、HDMI等等 4 关闭CONFIG_CMD_NET 5 U-BOOT会重复初始化MMC,修改do_mmc_dev 2 KERNEL的优化 1 首先打开CONFIG_PRINTK_TIME,这样每条printk转载 2018-01-24 10:35:03 · 647 阅读 · 0 评论 -
imx6 板卡移植官方yocto版本(1_安装环境)
玩imx6板卡也有两年了,之前由于各种原因(主要是懒),一直用的是官方的LTIB版本,这里必须要吐槽一下这个LTIB,各种错误百出,而且严重挑系统,硬是将我从CentOS阵营搞到Ubuntu社区。最近由于有其他用途,终于花了一周时间移植了这个庞大的系统。1.系统准备(以ubuntu14.04 LTS为例) 在命令行下使用apt-get安装如下软件:# sudo转载 2018-01-24 16:49:39 · 276 阅读 · 0 评论 -
imx6 板卡移植官方yocto版本(2_定制系统)
上一节中已经讲述了如何去构建编译环境,这一节讲一下如何定制专属于自己板卡的系统。1. 配置linux内核官方repo下来的yocto项目里配置了多个内核可选,我们可以在yocto目录下/source/meta-fsl-arm/recipes-kernel/linux 中找到,配置的三个内核如下:linux-fslc_3.8.bb --> kernel转载 2018-01-24 16:51:57 · 352 阅读 · 0 评论 -
linux oops产生过程之dump_backtrace
linux oops产生过程之dump_backtrace 什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就叫做“哎呦”。“哎呦,对不起,对不起,我真不是故意打碎您的杯子的”。看,Oops就是这个意思。在Linux内核开发中的Oops是什么呢?其实,它和上面的解释也没什么本质的差别,只转载 2018-01-29 18:35:14 · 727 阅读 · 0 评论 -
MACHINE=imx6qsabresd source fsl-setup-release.sh -b Elmobuild -e x11命令解释
编译imx6的yocto环境时用的命令是MACHINE=imx6qsabresd source fsl-setup-release.sh -b Elmobuild -e x11,非班科出身的我感觉非常奇怪,怎么不是命令开头,动手测试下啦写个脚本elmo@elmo-PC:/home/work/test$ vi test.sh echo "hello Elmo."ech转载 2018-02-07 17:38:40 · 216 阅读 · 0 评论 -
Ubuntu将命令写在一个文件里,执行文件,source命令
source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。用法: source filename 或 . filenamesource命令除了上述的用途之外,还有一个另外一个用途。在对编译系统核心时常常需要输入一长串的命令,如:make mrpropermake menuconfig转载 2018-02-07 17:43:51 · 4899 阅读 · 0 评论 -
shell getopts 用法
c语言里面有个getopt_long,可以获取用户在命令下的参数,然后根据参数进行不同的提示或者不同的执行。在shell中同样有这样的函数或者用法吧,在shell里面是getopts,也有一个getopt是一个比较老的。这次说getopts,我自己的一些用法和感悟。首先先来一个例子吧:[cpp] view plain copy转载 2018-02-07 18:09:15 · 165 阅读 · 0 评论 -
imx6 板卡移植官方yocto版本(2_定制系统)
上一节中已经讲述了如何去构建编译环境,这一节讲一下如何定制专属于自己板卡的系统。1. 配置linux内核官方repo下来的yocto项目里配置了多个内核可选,我们可以在yocto目录下/source/meta-fsl-arm/recipes-kernel/linux 中找到,配置的三个内核如下:linux-fslc_3.8.bb --> kernel mainline (from kern...转载 2018-02-08 10:21:53 · 346 阅读 · 0 评论 -
freescale的yocto开发环境搭建
以前没有接触过相关开发,需要自己摸索搭建环境文件下载比较麻烦,由于网络问题,使得进程很慢。软件环境:虚拟机ubuntu14.04硬件环境:IMX6ul官方demo板。特别提示:注意虚拟最好100G,这样一般不会出问题。平常虚拟机安装一般默认20G,否则会出现编译内存不够,又要折腾。第一步:sduo apt-get install <package > 这一步出现问题可能不大$ su...转载 2018-02-08 13:59:01 · 389 阅读 · 0 评论 -
Ubuntu Intel显卡驱动安装 (Ubuntu 14.04--Ubuntu 16.10 + Intel® Graphics Update Tool)
最近使用在使用Ubuntu时,发现大部分情况下,不安装显卡驱动,使用默认驱动,都是没有问题的,但对于一些比较奇特配置的电脑,如下所示,如果使用默认驱动,会时常莫名其妙死机crash,尤其是在使用OpenGL或3D时。但是在附加驱动中又找不到对应的功能包进行安装,如下:对于AMD_ATI和NVIDIA的显卡通常有一些显卡驱动可以选择。而Intel显卡需要通过下面网站进行安装。https://01.o...转载 2018-03-09 14:28:40 · 13161 阅读 · 0 评论 -
深入浅出理解视频编码H264结构
引言:在国内直播”欣欣向荣”(ps: 其实大多都亏钱,为的就是炒概念)的年代,相信很多小伙伴也投入了技术的浩瀚大洋当中(ps: 其实就是搬砖),日复一日,音/视频的神秘面纱开始让更多的小伙伴扯下,而本博主,也只是刚窥探门道,慢慢摸索。好了,废话不扯,我们今天就来说说我们经常在视频编码当中用到的 H.264编码格式 的结构,相信 H.264 这个东西很多小伙伴都不陌生了,也有着自己的理解,但这东西颇...转载 2018-03-10 11:14:11 · 275 阅读 · 0 评论 -
ffmpeg+ffserver搭建流媒体服务器
刚开始学习组播、直播方面的东西,简单总结一下利用ffmpeg+ffserver做电视信号流媒体实时直播。 总体架构就是dvb-IP网关将电视cable信号解扰解复用之后,读到ARM的内存缓冲区中,之后利用ffmpeg做视频推流,ffserver作为流媒体服务器。而在客户端,可以通过VLC或者ffplay打开直播视频,也可以利用IE加载VLC activex控件实现网页上播放。这样的纯HTTP播放方...转载 2018-03-22 13:19:28 · 2794 阅读 · 0 评论 -
ffserver 作为 rtsp 服务器
ffmpeg和ffserver配合使用可以实现实时的流媒体服务,这里实时的数据来自摄像头,如果考虑到应用程序和网络状况,这里客户端看到的画 面还是会落后与摄像头本地获取的画面,最糟糕时甚至看不到画面(扯远了),这里我们关注的是ffmpeg和ffserver之间是如何配合工作的,了解了 他们之间的关系,对个别问题也能有的放矢。ffserver先于ffmpeg启动,它在启动的时候需要加参数-f指定其配...转载 2018-03-22 13:27:44 · 744 阅读 · 0 评论 -
科大讯飞离线命令词的使用
公司内部有需求,需要在项目中加上离线命令词的使用,之前做过了在线语音识别,而离线的语音识别和在线的最大区别是离线需要对应的离线资源包!当然,离线识别的识别度和在线是有一定的差距的,很多时候识别不准,不过也算是够用了.和在线的一样,第一步,如果科大讯飞没有账号先去注册账号,创建项目,下载对应离线命令词SDK(体验版,35天使用,3个装机量),下载好了之后,这里需要注意的是一个资源文件common....转载 2018-03-22 21:44:56 · 3161 阅读 · 0 评论 -
讯飞语音命令词离线识别,离线听写demo修改
http://open.voicecloud.cn/http://open.voicecloud.cn/可以到平台上下载demo1:demo 中有两个开发包,主要用的是msc.jar默认的实现的听写是在线的,修改成离线的需要在IatDemo类中找到并在else中加入绿色的参数,同时在onresult方法内把结果打印// 开始听写case R.id.iat_recognize:.....if (is...转载 2018-03-22 21:56:16 · 2441 阅读 · 0 评论 -
ffmpeg+ffserver媒体服务搭建小记
linux pc机下的配置:1、首先编译好ffmpeg,主要有ffmpeg、ffserver、ffplay三个主要可执行文件,具体编译这里就不详细说明了2、准备好摄像头,作为输入文件,采集摄像头数据(当然用视频文件代替摄像头也行,不过没啥意思)3、配置ffserver.conf文件,下面是我的配置#基本信息设置Port 8090BindAddress 0.0.0.0MaxHTTPConnectio...转载 2018-03-19 21:35:53 · 1010 阅读 · 0 评论 -
linux 系统 ko模块编译
天整理以前笔记,发现曾经里面有一个Makefile文件。 仔细一看是以前实习做linux内核程序设计时候写的模块makefile。刚好我电脑也有linux系统,就拿来回顾一下。写个my.c和一个Makefile文件,然后make编译一下,就成功了,生成my.ko 再加载一下insmod my.ko dmesg|grep module 看到模块初始化时候的打印卸载模块rmmod my.ko ...转载 2018-03-29 17:57:16 · 506 阅读 · 0 评论 -
如何单独编译内核模块
1. hello.c1234567891011121314151617#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){printk(KERN_ALERT "Hello World enter\n");retu...转载 2018-03-29 17:58:13 · 1325 阅读 · 0 评论 -
linux helloword 内核编译.ko菜鸟记录
从去年毕业出来一直做android的开发,可以说在学校里面学的都是软件应用的,从没接触过底层,硬件相关的,但在这一年中断断续续的接触了android下的串口通讯,led控制,android蓝牙电话功能的开发,这些几乎都涉及到了linux方面的知识,特别是.android NDK 中编译.so库,以及led ko模块,这些对于以前只关注应用的人来说是很痛苦的,以前led .ko的时候感觉 这些很稀奇...转载 2018-03-29 17:59:11 · 410 阅读 · 0 评论 -
git 的Not currently on any branch 这种情况怎么提交版本
其实我们知道,git checkout本质上是修改HEAD里面的内容来让它指向不同分支的,而HEAD文件指向的分支就是我们当前的分支,但是有时候HEAD不会指向任何分支,严谨的说是HEAD指向了一个没有分支名字的修订版本,此时恭喜你,已经处于游离状态了(detached HEAD).这时候我们在进行commit操作不会提交到任何分支上去.这个时候输入git status查看当前状态发现我没有在任何...原创 2018-03-20 14:52:00 · 13211 阅读 · 0 评论 -
iMX6 音频编解码器 SGTL5000 扩展
1). 简介嵌入式ARM设备在需要音频解决方案的时候有时候需要通过I2S总线扩展外部Codec或者DSP,本文就基于NXP iMX6 ARM平台演示通过I2S扩展NXP SGTL5000音频Codec。 本文所实际使用的演示平台来自于Toradex Apalis iMX6 ARM嵌入式平台,Apalis iMX6 模块上面已经集成了一路SGTL5000扩展的模拟音频接口,同时也提供了多个数字音频接...转载 2018-03-30 09:42:18 · 1216 阅读 · 0 评论 -
音频SGTL5000驱动的调试
板所使用的arm芯片是imx6q,原bsp开发包所使用的音频芯片是CS42448,并且使用接口是EASI,与我们开发板是完全不同。我的开发板的CODEC硬件原理图:sgtl5000 通过I2S接口与IMX6的SSI总线完成音频数据的交换;cpu通过I2C或者SPI完成对CODEC的控制,由于硬件设计是I2C的接口,所以我们通过I2C来完成对CODEC的控制。在调试过程中,我们从mx6q-sabre...转载 2018-03-30 13:59:50 · 3045 阅读 · 0 评论