- 博客(77)
- 资源 (7)
- 收藏
- 关注
原创 open 使用O_DIRECT报错
错误make -C ./ -f /sdk/temp/prj/protected_storage/Makefile.buildmake[1]: Entering directory '/sdk/temp/prj/protected_storage'/opt/ivot/arm-ca9-linux-gnueabihf-6.5/usr/bin/arm-ca9-linux-gnueabihf-gcc -Wall -O2 -g -I /sdk/temp/prj/protected_storage/include
2022-01-05 11:08:42
1366
1
原创 adb配置环境变量和使用
1 Android 调试桥 (adb)1.1 简介Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:客户端:用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。服务器
2022-01-04 14:09:56
1205
3
原创 shell 脚本使用
当发现编译内核或者配置内核的命令过长时,可以写一个脚本文件。1.2 小结问题 现象解决办法2 常用 2.1 基础指定执行脚本的解释器在脚本文件开头添加命令,执行脚本的时候如果遇到返回值为非零,整个脚本就会立即退出在终端上显示字符串几个特殊字符比较数值2.2 显示文件指定行内容修改指定行内容2.3 以字节为单位进行分割自定义分隔符分割实际使用2.4 命令2.4.1 数值条件示例2.4.
2022-01-04 11:21:43
399
原创 移植字符集转换库 libiconv
交叉编译库下载# 目前最新的版本$ wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.16.tar.gz解压,创建安装目录$ tar zxvf libiconv-1.16.tar.gz$ cd libiconv-1.16配置# 需要提前配置好交叉编译工具链,CC CXX AS 等等# --enable-shared: 加上这个参数会生成共享库# --enable-static: 加上这个参数会生成静态库# --prefix:
2021-12-13 09:05:12
318
1
原创 x264 x265 ffmpeg移植
这是一个一键式库移植脚本,主要参考https://www.cnblogs.com/schips/p/12195647.html,因为无法直接使用,做了一些修改。#!/bin/shBASE=`pwd`BUILD_HOST=arm-ca9-linux-gnueabihfOUTPUT_PATH=${BASE}/installOTHER_LIB=${OUTPUT_PATH}/__all_without_ffmpegset_env(){ export CROSS_COMPILE=/opt/ivot
2021-12-13 08:53:38
815
原创 Qt应用接收红外遥控上报的按键
问题Qt 应用程序可以收到插在 ARM 板上键盘上报的键值。但是收不到自己写的驱动上报的键值。解决方案启动时需要加上下面的参数才行。./qtdemo -plugin evdevkeyboard:/dev/input/event0#或者可以修改/etc/profile,没有去测试export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1:evdevkeyboard:/dev/input/event0...
2021-09-17 15:35:39
561
原创 大端模式与小端模式
什么是大端和小端大端Big-Endian :高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。值:0x123456 低地址 -----> 高地址 0x12 | 0x34 | 0x56 小端Little-Endian :低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。值:0x123456 低地址 -----> 高地址 0x56 | 0x34 | 0x12 怎样判断大小端通过强制类型转换int is_big_endian(void){
2021-09-14 14:07:39
105
原创 Linux 直接读写磁盘物理地址
Linux 直接读写磁盘物理地址从 EMMC 磁盘物理地址读数据#include <sys/stat.h>#include <unistd.h>#include <fcntl.h>#include <stdio.h>#include <string.h>/** * ./lseek /dev/sdb */int main(int argc, char **argv){ int fd; char str[100] = {0
2021-09-10 15:34:39
1693
1
原创 u-boot 编译报错:awk: line 2: function strtonum never defined
错误awk: line 2: function strtonum never defined解决方案$ sudo apt-get install gawk
2021-09-06 13:20:35
498
原创 MobaXterm 使用 rz/sz 传送文件
MobaXterm 使用 rz/sz 传送文件1 Linux 安装 lrzsz$ sudo apt-get install lrzsz2 上传文件终端先输入 rz# 示例$ rz终端界面:Ctrl + 鼠标右键选择 Send file using Z-modem3 下载文件终端先输入 sz + 要发送的文件# 示例$ sz test.c终端界面:Ctrl + 鼠标右键选择 Receive file using Z-modem...
2021-09-03 08:44:36
8088
3
原创 adb 安装APK报错|INSTALL_FAILED_TEST_ONLY
错误adb install .\test-debug.apkPerforming Streamed Installadb: failed to install .\test-debug.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]解决方案adb install -t .\test-debug.apkPerforming Streamed InstallSuccess
2021-07-08 09:14:29
1115
原创 文件系统_文件IO
在 系统中有一个重要的概念:一切皆文件,它把一切资源都看作是文件,包括硬件设备,通常称为设备文件。 为了高效地存储和管理数据,文件系统在存储介质上建立了一种组织结构,这些结构包括操作系 统引导区、目录和文件,就如同图书馆给不同类的书籍进行类、编号,放在不同的书架上。不同的管理 理念引出了不同的文件系统标准,如 、 、 、 就是指不同类型的 标准,除此之外,还有专门针对 类型设备 的文件系统 、 等等。 正是有了文件系统,计算机上的数据才能以文件的形式呈现给用户,下面简单介绍一下各种
2021-06-24 09:17:50
540
2
原创 Makefile的使用
1 Makefile 规则与示例参考:doc/gunmake.htm1.1 为什么需要 Makefile1.1.1 高效地编译程序参考 Visual Studio ,修改源文件或者头文件,只会重新编译 修改过的文件,就可以生成 APP。1.1.2 Makefile 其实挺简单一个简单的 Makefile 文件包含一系列的“规则”,其样式如下:目标(target)…: 依赖(prerequiries)… <tab>命令(command)如果“依赖文件”比“目标文件”更加新,那
2021-06-23 10:48:19
458
原创 GCC编译器的使用
1 GCC 编译工具链1.1 简介GCC 编译工具链(toolchain)是指以 GCC 编译器为核心的一整套工具,用于把源代码转化成可执行应用程序。它主要包含以下三部分内容:gcc-core :即GCC编译器,用于完成预处理和编译过程,例如把C代码转换成汇编代码。Binutils :除GCC编译器外的一系列小工具包括了链接器 ld ,汇编器 as 、目标文件格式查看器 readelf 等。glibc :包含了主要的 C 语言标准函数库,C 语言中常常使用的打印函数 printf、ma
2021-06-23 10:15:20
1759
原创 kernel编译报错|/bin/sh: 1: lz4c: not found
错误 OBJCOPY arch/arm64/boot/Image LZ4C arch/arm64/boot/Image.lz4/bin/sh: 1: lz4c: not foundarch/arm64/boot/Makefile:31: recipe for target 'arch/arm64/boot/Image.lz4' failedmake[1]: *** [arch/arm64/boot/Image.lz4] Error 1arch/arm64/Makefile:139: r
2021-06-22 10:07:58
1882
原创 kernel编译报错|/bin/sh: 1: bc: not found
错误scripts/kconfig/conf --syncconfig Kconfig DTC arch/arm64/boot/dts/rockchip/rk3399-roc-pc-plus.dtb/bin/sh: 1: bc: not foundKbuild:42: recipe for target 'include/generated/timeconst.h' failedmake[1]: *** [include/generated/timeconst.h] Error 127
2021-06-22 09:59:19
7430
1
原创 Linux应用模拟输入事件
参考资料:doc/input/uinput.rst (Linux Kernel 5.x/Documentation/input/uinput.rst)drivers/input/misc/uinput.c (项目使用的是 Kernel 4.x )1 概念uinput 是一个内核模块,可以从用户空间模拟输入设备。通过写入 /dev/uinput(/dev/input/uinput)设备,进程可以创建具有特定功能的虚拟输入设备。一旦创建了这个虚拟设备,进程就可以通过它发送事件,这些事件将被传递给用户空
2021-06-21 10:21:56
543
原创 HelloWorld背后没那么简单
1 在Ubuntu上编译执行HelloWorld程序1.1 hello.c源码#include <stdio.h> /* 执行命令: ./hello weidongshan * argc = 2 * argv[0] = ./hello * argv[1] = weidongshan */ int main(int argc, char **argv) { if (argc >= 2) printf("Hello, %s!\n", a
2021-06-18 16:13:50
321
6
原创 Android开发环境搭建_编译_运行
学习于 百问网韦东山在线课堂1 Android 开发环境搭建1.1 环境要求Android 源码下载时,会包含 Git 代码库,所以要检出代码,至少需要 250 GB 可用磁盘空间;如果要进行构建,则还需要 150 GB。如果要进行多次构建,则需要更多空间。环境要求如下:CPU:x86核越多越好RAM:16G磁盘:400G操作系统:Ubuntu 18.04操作系统交换分区: 4G 以上从 2021 年 6 月起,Google 使用 72 核机器,内置 RAM 为 64 GB,完整构建过
2021-06-18 10:56:23
865
1
原创 Linux常用命令
查看指定目录的所有文件大小或者指定文件的大小。查看当前终端打开的进程,并显示进程的线程。查找包含字符串的文件,并列出所在的行。在指定目录查找含有特定字符的文件。的进程,并显示程序间的关系。在指定目录查找指定名字的文件。查看当前文件某关键字的个数。查找文件转换成unix格式。将软件及其配置文件一并删除。移除软件,但不删除配置文件。查看当前系统硬盘挂载情况。显示当前终端里打开的进程。显示电脑上安装的所有软件。清除当前终端的历史命令。查看当前目录下文件个数。查看当前目录下目录个数。
2021-06-17 15:51:03
137
原创 Android源码编译|rsync: command not found
错误FAILED: out/target/product/generic_x86_64/ramdisk-debug.img/bin/bash -c "(mkdir -p out/target/product/generic_x86_64/debug_ramdisk ) && (touch out/target/product/generic_x86_64/debug_ramdisk/force_debuggable ) && (rsync -a out/target/pr
2021-06-17 09:01:11
338
原创 Android源码下载|repo init 报错
错误Downloading Repo source from https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/fatal: Cannot get https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/clone.bundlefatal: error unknown url type: httpsfatal: cloning the git-repo repository failed, will rem
2021-06-17 08:58:27
812
原创 Android源码下载|Python版本过低
错误repo: error: Python 2 is no longer supported; Please upgrade to Python 3.5+.解决方案#1、下载Python3,会下载在当前目录,所以要提前选好目录$ wget http://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz#2、下载完成后,解压 $ tar -xvzf Python-3.9.5.tgz#3、解压完成后,切换到Python3文件夹中 $ cd .
2021-06-17 08:56:51
948
1
原创 AOSP Repo使用
常用命令分支创建分支$ repo start <name> --all repo start 是在清单文件设定分支的基础上创建特性分支。在原来的分支基础上创建分支$ repo forall -c git branch <name>创建本地分支只管理几个 project$ repo start <name> project1 project2 ...如果想在原来的分支基础上再追加 project$ repo start <na
2021-06-16 14:19:15
493
原创 虚拟机-ubuntu-新增磁盘-分区-自动挂载
1 在新建磁盘前,先查看一下虚拟机磁盘relax@ubuntu:~/Desktop$ ls /dev/ | grep sd # 查看磁盘设备sda sda1 sda2 sda5relax@ubuntu:~/Desktop$ lsblk # 查看磁盘信息NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTfd0 2:0 1 4K 0 disk loop0 7:0 0 55.5M 1 loop /snap/core18/1
2021-06-16 09:24:43
705
原创 环形缓存区
应用场景主要应用于嵌入式平台,uart收发,RS232,RS485等,因为需要时间去处理数据,为防止数据丢失,把数据存储在缓存区里。环形缓存区代码根据韦东山老师的代码更改。ring_buffer.c#include "ring_buffer.h"/** * 初始化新缓冲区 * @handle : ring_buffer句柄 * @addr : 数组地址 * @size : 数组大小 */void ring_buffer_init(ring_buffer *handle, Eleme
2021-06-11 14:46:16
189
1
原创 Windows10-虚拟机-ubuntu安装-OpenSSL-Samba
1 虚拟机安装1.1 虚拟机下载免费的 VMware Workstation 16 Player 地址1.2 安装步骤双击安装包一直下一步,直到安装完成2 Ubuntu 20.04 安装2.1 镜像下载Ubuntu 20.04.2.0 LTS 桌面版 官方地址 华为开源地址2.2 安装按照提示去操作主要注意一下几点配置CPU核心,根据需要去配置,一般是电脑总数的一般配置运行内存,一般是4G把不需要的外设删除掉分配合理的内存3 安装open
2021-06-10 11:19:54
396
原创 解决Linux系统Git不能补全
下载软件$ git clone https://github.com/markgandolfo/git-bash-completion.git$ cp git-bash-completion/git-completion.bash ~/.git-completion.bash修改~/.bashrc,在文件结尾增加bash 在每次启动时都会加载 .bashrcif [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bas
2021-06-09 14:06:12
169
原创 基于Python搭建http文件服务器
在Windows上安装Python官方下载地址按照提示直接安装就行。启动http服务在Windows终端执行命令PS E:\test> python -m http.serverServing HTTP on :: port 8000 (http://[::]:8000/) ...当前目录会被共享出去访问本地访问http://localhost:8000/http://127.0.0.1:8000/局域网访问(填写自己的IP)http://192.168.1.124
2021-06-01 15:45:40
389
原创 display_timing 转 drm_display_mode
//drivers/gpu/drm/panel/panel-simple.cstatic unsigned int panel_simple_get_timings_modes(struct panel_simple *panel) videomode_from_timing(dt, &vm); mode = drm_mode_create(drm); drm_display_mode_from_videomode(&vm, mode); dmode->hdispla
2021-06-01 14:33:42
1161
原创 Linux内核工作队列使用
VERSION:5.4.24参考:include/linux/workqueue.h实际需要定时器、下半部 tasklet,它们都是在中断上下文中执行,它们无法休眠。当要处理更复杂的事情时,往往更耗时。这些更耗时的工作放在定时器或是下半部中,会使得系统很卡;并且循环等待某件事情完成,这样太浪费 CPU 资源了。如果使用线程来处理这些耗时的工作,那就可以解决系统卡顿的问题:因为线程可以休眠。在内核中,我们并不需要自己去创建线程,可以使用“工作队列”(workqueue)。内核初始化工作队列时,就为
2021-06-01 11:24:55
494
原创 Linux内核定时器使用
Linux 内核定时器使用VERSION:5.4.24参考:include/linux/timer.hkernel/time/timer.cinclude/linux/jiffies.h重要的结构体,函数定时器结构体struct timer_list { /* * All fields that change during normal runtime grouped to the * same cacheline */ struct hlist_node entry;
2021-05-31 14:04:33
446
原创 windows10 释放被占用的 com 口
1 拔掉所有串口2 键盘组合键:win + R 启动"运行",然后输入 regedit 3 打开注册表4 删除 ComDBComDB 里会有使用的com口,删除它,关闭注册表。下一次插上串口,com口会被重新排序。
2021-05-27 11:31:29
2859
原创 开发工具介绍
1 PDF阅读器Sumatra PDF下载地址轻便简单快速的PDF阅读器。2 终端工具MobaXterm下载地址免费全能,支持远程ssh,串口,FTP等强大功能,一旦用了就回不去了。3 文件阅读Total Commander下载地址双窗口文件浏览,需要去发现。4 MarkDown 笔记工具Typora下载地址好用,实时的 MarkDown 工具,配合百度网盘备份,或者git 打造自己的开发笔记。...
2021-05-13 10:53:28
120
原创 Linux系统压缩命令
1 .tar# 压缩$ tar czvf FileName.tar DirName# 解压$ tar zxvf FileName.tar2 .gz# 压缩$ gzip FileName# 解压:方法一$ gunzip FileName.gz# 解压:方法二$ gzip -d FileName.gz3 .tar.gz# 压缩$ tar zcvf FileName.tar.gz DirName# 解压$ tar zxvf FileName.tar.gz4 .bz2
2021-04-30 14:17:57
96
原创 Git使用笔记
版本库又名仓库,英文名repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
2021-04-29 15:27:19
684
原创 docker安装使用
1 什么是 DockerDocker 是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。2 在 Ubuntu 上安装 Docker 引擎卸载旧版本的 docker$ sudo apt-get remove docker docker-engine docker.io containerd runc安装
2021-04-02 11:13:29
3336
原创 iMX8 Android SDK 下载
1 在官网上获得软件压缩包imx-android-10.0.0_2.5.0.tar.gz下载地址2 获取源码拷贝 imx-android-10.0.0_2.5.0.tar.gz 到一个文件夹里并解压,进入:2.1 获取repogit clone https://mirrors.tuna.tsinghua.edu.cn/git/git-repo修改 repo 里的内容为下面REPO_URL = 'https://mirrors.bfsu.edu.cn/git/git-repo'然后添
2021-04-02 10:28:39
746
1
原创 Linux常用命令—Ubuntu
1 常用命令行 清除当前终端的历史命令 history -c 显示当前终端里打开的进程 ps 查看当前终端打开的进程,并显示进程的线程 ps -T 显示所有进程(同“-e”) ps -A 显示含有字符“smbd”的进程,并显示程序间的关系 ps -ef | grep smbd 查看当前系统硬盘挂载情况 df -h 查看指定目录的所有文件总和 du -sh【目录】2find...
2021-03-18 11:08:09
146
字体库ft2.9的静态库和动态库,还有头文件
2018-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人