ubuntu
文章平均质量分 62
倾我一生来读
一颗螺丝钉
展开
-
RIoTBoard开发板系列笔记(十一)—— 使用Yocto构建开发板镜像
前面的几篇文章里简单的记录了一下使用buildroot构建RIoTBoard系统镜像的过程,因想使用imx6 solo的VPU,但是buildroot默认使用的kernal版本是liunx-fslc,需要使用linux-imx的kernal才能使用GPU, VPU 以及 IPU,Yocto构建系统的时候可以灵活的选择kernal版本,而且FSL Community 每个版本BSP Release Notes 中的教程也是使用Yocto来构建,所以决定来踩下Yocto的坑。原创 2022-10-07 13:54:33 · 1233 阅读 · 0 评论 -
RIoTBoard开发板系列笔记(十)—— nfs服务搭建
嵌入式开发一般是交叉编译环境,开发中经常需要将编译好的linux 镜像或ko放在开发板中测试,可以选择用sd将执行文件拷贝到开板中,更便捷的方法是通过nfs(Network File System)网络文件系统,使用挂在nfs服务的方式进行传输。原创 2022-09-04 19:24:04 · 291 阅读 · 0 评论 -
RIoTBoard开发板系列笔记(六)—— buildroot构建系统镜像
针对RIoTBoard,官网提供的release 版本的镜像,是基于kernal header 3.6版本的,kernal版本比较旧,最新的kernal 应该是5.10版本的了,于是打算自己构建一个kernal新一点的系统。目前构建嵌入式系统比较强大的两个工具是Yocto和Buildroot,Yocto將嵌入系Linux建制成Binary套件,功能强大,但是上手较慢,学习起来也比较难,对硬件的要求较高;相比之下Buildroot比较简单,上手较快,因此选择了使用Buildroot来构建系统。......原创 2022-07-03 17:23:57 · 1094 阅读 · 0 评论 -
RIoTBoard开发板系列笔记(五)—— 移植u-boot
移植U-boot原创 2022-06-19 16:17:42 · 271 阅读 · 0 评论 -
ubuntu GStreamer + QT多媒体播放器开发(四)
本篇博客在上一篇ubuntu GStreamer + QT多媒体播放器开发(三)的基础上主要修改新增以下几点:(1)播放过程中实时更新进度条以及播放时间。(2)拖动进度条实现seek功能。(3)QT UI替换为正点原子的videopalyer 样式布局。播放过程中实时更新进度条以及播放时间需要新增获取档案duration 和position 的接口,在mmplayer lib中新增两个接口。...原创 2022-06-11 18:40:36 · 2283 阅读 · 9 评论 -
ubuntu GStreamer + QT多媒体播放器开发(三)
本篇博客在上一篇ubuntu GStreamer + QT多媒体播放器开发(二)的基础上主要修改新增以下几点:(1)log 分为trace、info、debug、warn、error五个级别打印;(2)mmplayer lib新增MMPlayerPause 接口。(3)QT(UI)层更改为通过control thread 控制播放、暂停、停止等功能,通过command queue实现异步响应UI 点击事件;(4)QT 窗口退出时增加资源释放的流程。(5)优化QT project cmake....原创 2022-06-04 17:23:20 · 1210 阅读 · 0 评论 -
ubuntu GStreamer + QT多媒体播放器开发(二)
本篇博客在上一篇ubuntu GStreamer + QT多媒体播放器开发(一)的基础上主要修改新增以下几点:(1)使用gstreamer播放控制的部分封装成mmpalyer lib,对外的接口以及一些结构体和枚举定义单独抽离到mediaplayer.h头文件中;(2)使用QT调用mmpalyer lib提供的接口实现播放,视频在QT窗口中进行渲染;(3)增加playbin3 的element-added signal 监听,方便查看playbin3在自动创建pipeline时增加了那些element原创 2022-05-31 22:26:57 · 2295 阅读 · 0 评论 -
ubuntu GStreamer + QT多媒体播放器开发(一)
之前用gstreamer和QT开发了一个粗糙的MP4播放器(GStreamer开发简单MP4播放器(二)),只能实现mp4格式的文件播放,而且bug比较多,代码结构比较乱,没有继续开发下去。最近事不是很多,因此打算抽空重新用gstreamer写一个player,记录一下折腾过程。1 实现思路本次主要实现两个功能:(1)封装player start 和stop接口,main函数中调用这两个接口实现播放和停止。(2)播放任务放在一个单独的线程中执行。首先定义一个结构体,存放hanle(也称player原创 2022-05-29 22:32:11 · 2137 阅读 · 4 评论 -
c++中调用c编写的动态链接库出现undefined reference to `xxx‘的解决方法
1 问题现象用c语言写了个lib ,编译成了动态链接库,然后建了一个QT项目,想调用自己编写的lib里面的函数,编译的时候发现build OK,但是link的时候error,找不到lib 里面的函数。[ 20%] Automatic MOC and UIC for target gst_player[ 20%] Built target gst_player_autogen[ 40%] Linking CXX executable gst_playerCMakeFiles/gst_player.d原创 2022-05-29 09:36:15 · 3674 阅读 · 0 评论 -
makefile中进行宏定义并传递给源代码
makefile是liunx 平台下c、c++开发必不可的工具,掌握一些makefile的技巧对于项目编译构建有很大的帮助,本篇文章主要记录一下makefile中进行宏定义并传递给源代码的使用技巧,主要传递了一个code_version变量,变量是通过git命令获取commit id,通过宏定义传递给源码,在源码中可以获取commit id,可以作为code的版本信息,这对于频繁release的项目很重要,可以确认一些so的版本是否匹配。1 工程目录结构建立的demo工程目录结构如下所示:├── in原创 2022-05-22 21:51:52 · 5687 阅读 · 0 评论 -
ubuntu串口调试工具 picocom
做嵌入式liunx开发,串口终端是必不可少的工具。对于windows,一般可以使用 Xsell或者 SecureCRT,linux 平台目前只使用过picocom,感觉使用起来还是很方便。安装方法:sudo apt-get install picocom 打开终端:sudo picocom -b 115200 /dev/ttyUSB0使用效果:...原创 2022-05-15 19:45:06 · 1119 阅读 · 0 评论 -
RIoTBoard开发板系列笔记(四)—— 使用VPU硬件解码
git clone https://github.com/Freescale/gstreamer-imx.gitgit clone https://github.com/Freescale/libimxvpuapi.gitgit clone https://github.com/Freescale/libimxdmabuffer.git原创 2022-05-15 14:35:27 · 1991 阅读 · 0 评论 -
linux mkdir: cannot create directory ‘xxx’: Read-only file system解决方案
最近在ubuntu系统下往U盘里复制东西的时候出现了Read-only file system的error:cp: cannot create directory '/media/zhy/ZHY/example': Read-only file system尝试在U盘里创建文件夹时也error:mkdir: cannot create directory ‘/media/zhy/ZHY/imx-vpu’: Read-only file system解决方案也很简单,重新挂载一下sudo mou原创 2022-05-14 20:37:03 · 9658 阅读 · 0 评论 -
linux ldd命令的使用
1 问题背景最近有个项目需要将libwebp这个库的source code移植到linux 平台下,因为只需要部分功能,所以对代码进行了精简。精简过后可以编译通过,so加载到开发板上却无法实现对应的功能,也没有报出明显的错误。因为之前有遇到过引用了没有声明或者没有实现的函数导致so不能使用的情况,所以怀疑精简的时候出了问题,导致误删除了一些函数。百度了一下linux 平台上如何查看so依赖的函数或者lib 是否有缺失方法,出现了ldd 这个命令,执行以下shell命令即可查看目标so依赖了哪些lib或函原创 2022-04-06 21:41:27 · 2917 阅读 · 0 评论 -
香蕉派BPI-M5折腾记录(3)—— 编译BSP
BPI官方提供的bsp还是比较完善,包括了u-boot、kernel、root file system以及一个完整的tool chain,本文章主要记录编译并替换BSP的过程。1 BSP代码下载下载官方提供的BSP代码git clone https://github.com/BPI-SINOVOIP/BPI-M5-bspgit submodule update --init --recursive软件包中自带了toolchain,所以不需要再额外的下载安装了,toolchain位于toolcha原创 2022-04-05 21:48:24 · 1098 阅读 · 0 评论 -
香蕉派 BPI-M5折腾记录(2)—— 编译u-boot
1 安装docker1.1 更新 apt 包索引并依赖packages: sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release1.2 添加 Docker 的官方 GPG 密钥: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr原创 2022-02-27 21:08:39 · 1392 阅读 · 0 评论 -
ubuntu18.04安装谷歌浏览器
1 下载安装包wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb遇到unable to resolve host address ‘http’的问题:Resolving http (http)... failed: Name or service not known.wget: unable to resolve host address ‘http’wget下载失败直接浏览器访问http原创 2021-12-18 13:19:17 · 573 阅读 · 0 评论 -
RIoTBoard开发板系列笔记(二)—— 搭建交叉编译环境
嵌入式linux 开发离不开交叉编译,所以搭建交叉编译环境是必须的。一般build平台(编译该软件所使用的平台)选择linux,host平台为ARM(该软件将运行的平台),我的build的主机是一台安装了ubuntn18.04的笔记本电脑,有条件的当然也可以选择云服务器来作为编译主机。1 交叉编译工具链下载RIoTboard官方提供的交叉编译工具链为fsl-linaro-toolchain,可以通过我在RIoTBoard开发板系列笔记(一)— 环境搭建里分享的百度云资源下载,不过下载太慢。官方针对该款开原创 2021-12-11 15:14:04 · 911 阅读 · 0 评论 -
联想笔记本电脑安装Ubuntu18.04系统
又一台闲置的笔记本电脑,型号为ThinkPad E480,处理器是7代i3的,安装win10系统卡的很,所以换个linux系统试一下,一下记录安装过程,其他型号的电脑安装流程也大同小异,只要能正确进入BIOS启动设置就可以了。1 制作系统U盘制作系统U盘需要下载Ubuntu iso以及制作工具。(1) Ubuntu版本为18.04 64位桌面版,在阿里云提供的镜像下载的,下载地址:http://mirrors.aliyun.com/ubuntu-releases/18.04/ubuntu-18.0原创 2021-12-05 11:22:54 · 6786 阅读 · 2 评论 -
ubuntu 18.04安装中文输入法
给笔记本电脑安装了ubuntu 18.04系统后发现没有中文输入法,记录一下默认中文输入法的安装过程。1 进入Settings -> Region & Languge 选项。点击Manage Installed Languages,进入Language Support界面。点击Install/Remove Languages按钮,选择Chinese(simplified),然后点击Apply进行安装。安装好后回退到Region & Languge界面。点击Input sour原创 2021-12-04 17:35:51 · 3417 阅读 · 0 评论 -
笔记本电脑安装ubuntu18.04系统后wifi驱动缺失的解决方法
之前把闲置笔记本电脑的系统换成了ubuntu18.04,最近系统出了点问题,开不了机,只好重新安装系统。安装完毕后发现没有wifi驱动,所以不能连接wifi,以下记录该问题的解决方案,以备下次刷机时使用。1 系统安装完毕后先执行以下命令:sudo apt-get updatesudo apt-get upgrade 这两个命令需要联网,暂时可以通过网线或者usb wifi 共享连接,执行万后然后重启:reboot2 重启后打开Software & Updates,找到Addition原创 2021-12-04 16:05:56 · 4010 阅读 · 1 评论 -
ubuntu18.04 libfaad2编译
faad2是AAC音频解码的lib,支持MPEG2和MPEG4格式的audio解码。代码下载网址:https://www.linuxfromscratch.org/blfs/view/svn/multimedia/faad2.html。解压:tar xvzf faad2-2_10_0.tar.gz cd faad2-2_10_0/1 本地编译./bootstrap ./configure --prefix=$(pwd)/install原创 2021-11-20 21:43:01 · 1229 阅读 · 0 评论 -
友善之臂2416 led驱动开发
电路图datasheetGPBCON寄存器GPBDAT 寄存器GPBUDP寄存器GPBSEL寄存器在这里插入代码片原创 2021-11-17 22:46:35 · 951 阅读 · 0 评论 -
Linux字符型驱动开发—基于友善之臂2416开发板
驱动程序(Device Driver)是一种可以使计算机和设备通信的特殊程序,相当于内核和硬件之间的接口,操作系统只能通过这个接口,才能控制硬件设备的工作。驱动程序接受上层软件(应用程序、内核)的请求,完成对硬件的操作,屏蔽了硬件的细节。Linux平台下的驱动程序将硬件设备抽象成一个文件,应用程序操作文件即操作硬件。1 Linux驱动分类linux系统下驱动分为字符设备驱动、块设备驱动和网络设备驱动三种,以下分别介绍三种驱动。1.1 字符设备驱动字符设备是指存取时没有缓存的设备,采用字符流方式访问的原创 2021-11-14 17:08:45 · 1506 阅读 · 0 评论 -
ubuntu18.04交叉编译linux3.6内核
之前咸鱼上搞了一块友善之臂2416的开发板,最近周末折腾折腾。搞嵌入式时间也不长,自己的感觉是搞嵌入式linux开发的第一步不是写代码,而是交叉编译、系统移植这些基础工作,只有熟悉了交叉编译,才能验证写出了的代码。因为想折腾一下子驱动开发,驱动代码需要放在linux内核/drivers/char目录下编译,所以先尝试一下linux 内核源码编译,本文记录一下内核编译过程以及遇到的问题。1 linux内核源码下载友善之臂的光盘中提供了linux-3.6内核,如果没有可以到友善的官网去下载,友善之臂官网下载原创 2021-11-13 18:30:19 · 1353 阅读 · 0 评论 -
arm-linux-cc 4.4.3 交叉编译gstreamer1.18
1 下载glib失败gstreamer 依赖glib,所以编译的时候检测到toolchain中没有安装glib的话会自动从git仓库拉取代码,但是国内访问github或者gitlib比较慢,会出现time out的问题。fatal: unable to access 'https://gitlab.gnome.org/GNOME/glib.git/': Failed to connect to gitlab.gnome.org port 443: Connection timed outsubproj原创 2021-11-07 19:41:17 · 4534 阅读 · 1 评论 -
arm-linux-cc 4.4.3 交叉编译glib 2.70.2
本文记录ubuntn18.04平台使用arm-linux-cc 4.4.3 交叉编译glib 2.70.2过程。1 交叉编译libpcre编译glib依赖libffi、zlib、以及libpcre,glib从2.6以后就切换到meson编译系统了,meson可以将依赖的lib作为子项目,编译目标项目时可以自动下载子项目的source code并编译,前提需要配置子项目的clone地址,因此不必要像makefile那样需要先编译子项目。其中libffi、zlib这两个依赖编译的时候会自动下载源代码,但是l原创 2021-11-06 17:02:14 · 1781 阅读 · 0 评论 -
ubuntu18.04 zlib-1.2.11交叉编译
1 代码下载代码下载地址:https://www.zlib.net/zlib-1.2.11.tar.gz解压:tar xvzf zlib-1.2.11.tar.gzcd zlib-1.2.112 配置makefile–prefix指明install路径,交叉编译一般安装子阿toolchain目录,下次编译其他的lib就可以直接使用了。./configure --prefix=/usr/local/arm/opt/FriendlyARM/toolschain/4.4.3/arm-none-原创 2021-11-06 10:42:39 · 1157 阅读 · 0 评论 -
vsftpd移植到ARM开发板
安装filezillasudo apt-get install filezillalibcup编译下载地址https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.24.tar.gz使用gcc完整编译一遍# make including file support something you can override (no libattr# no support).ifeq ($(LIBATTR)原创 2021-10-30 23:04:30 · 2719 阅读 · 4 评论 -
Xshell 连接友善之臂2416开发板
之前在咸鱼上淘了一块友善之臂的开发板,买回来没怎么折腾,最近心血来潮拿出来玩一下。2416这块开发板cpu处理器是Samsung S3C2451,基于ARMv5架构,年代也比较久远了,最新的arm架构都到ARMv9了。年代久远所以这玩意网上的资料也少,下载到了一个好像是友善之臂官方的资料,也没有将怎么通过sercureCRT以及Xshell这种终端工具连接开发板,只好自己捣鼓了。1. 2416开发板串口模块原理图仔细一看开发板,好家伙,两个232串口,大大小小5个usb口,试了通过两个232口转usb连原创 2021-10-24 21:15:26 · 4512 阅读 · 0 评论 -
ubuntu PulseAudio: Unable to connect: Access denied
解决方案,重启PulseAudio。sudo killall pulseaudio pulseaudio --start参考链接https://forums.linuxmint.com/viewtopic.php?t=295346。原创 2021-10-24 12:03:30 · 1720 阅读 · 0 评论 -
ubutun 18.04 amzon alexa app开发(二)
上一篇文章中简单介绍了Alexa Voice Service (AVS) Device SDK的编译运行,但是avs Device SDK只能提供语音交互,没有用户界面。Alexa Smart Screen SDK 扩展了 avs Device SDK,使用户能够构建基于屏幕的产品,以丰富的视觉体验补充 Alexa 语音交互功能。1 Ubuntu18.04安装nodejsAlexa Smart Screen SDK编译依赖node.js的版本为10.13以上,通过shell安装的一般是node 8,所以原创 2021-10-23 19:41:58 · 148 阅读 · 0 评论 -
QT、FFmpeg、SDL2视频播放器(一)
之前使用ffmpeg和sdl2制作过一个简单的视频播放器,视频的播放暂停完全是sdl event控制,现在希望将sdl嵌入到QT 窗口中,通过一系列qt按钮实现播放、暂停的控制。1 核心思想1 QT多线程因为视频解码过程消耗资源较多,必须单独开启一个线程来负责视频解码,主线程负责渲染以及控制,否则视频播放的过程中UI会卡住,无法响应用户事件。QT实现多线程有两种方法:第一种是创建一个线程,类继承QThread,并且重写run方法,主线程中创建线程对象,使用start()方法启动线程,该部分网络上资料原创 2021-10-10 13:01:08 · 2879 阅读 · 1 评论 -
ubuntn18.04使用kdbg调试ffmpeg4.3.1源码
linux虽然可以使用gdb调试代码,但是总觉得不太方便,尤其是大型的工程,有个可视化的调试工具该多好。好在有前辈高人开发了kgbg,可以通过可视化的方式在linux平台调试程序,下面介绍一下使用方法。1 安装kdbgkdbg有源码和apt两种方式安装方式,源码安装参考官网,apt安装执行以下shell命令:sudo apt-get install kdbg2 开启debug选项编译ffmpeg进入FFmpeg源码目录执行:./configure --enable-debug --disabl原创 2021-08-14 23:39:01 · 217 阅读 · 0 评论 -
ubuntn18.04安装SourceInsight3.5
Source Insight作为一款看代码神器在大型c、c++项目中必不可少,但是Source Insight软件并不支持Linux操作系统,只支持Windows操作系统。想要在linux系统上安装window软件就需要借助wine,wine 是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,Mac OSX 及 BSD 等)上运行 Windows 应用的兼容层,简单来说,就是Ubuntu安装了Wine,就可以实现在Ubuntu系统上运行exe类型的软件。1 安装wine执行原创 2021-08-14 12:33:45 · 1186 阅读 · 0 评论 -
ubuntu18.04使用相关
meson.build:22:0: ERROR: C shared or static library ‘readline’ not foundsudo apt-get install libreadline-devmeson.build:36:0: ERROR: Dependency “libudev” not found, tried pkgconfigsudo apt-get install libudev-devmeson.build:37:0: ERROR: Dependency “l原创 2021-08-01 11:39:26 · 1247 阅读 · 0 评论