![](https://img-blog.csdnimg.cn/20190730143656214.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
linux系统
linux的boot,driver以及应用的相关学习和工作总结
酸菜鱼的鱼
Linux rtos 驱动应用开发 本博客主要用于工作学习的总结和备份,欢迎大家留言评论交流,谢谢
展开
-
Android 硬件抽象层(HAL)概要介绍和学习计划
前言Android 硬件抽象层(HAL)概要介绍和学习计划Android 的硬件抽象层,简单来说,就是对Linux 内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux 内核驱动程序运行在内核空间。为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件转载 2021-05-05 23:56:59 · 978 阅读 · 1 评论 -
树莓派CM3+系统镜像img文件的制作
树莓派的raspberry computer module cm3+自带emmc和ddr。在项目开发好了之后,再再次制作镜像的话,一般是采用网上通用的方法,使用磁盘工具映像工具将emmc中的数据读出来做成img镜像然后再下载到新的CM板子上面。但是这会有一个问题,比如说如果是emmc 16G的话,不管是读取制作img镜像文件还是将制作好的镜像文件烧写到新的CM板子上,都会需要很长的时间,以16G的emmc为例,不管是烧写还是制作镜像所消耗的时间都在40多分钟以上。所以如果想缩短镜像的制作和烧写时间,必须原创 2020-09-27 17:04:56 · 1355 阅读 · 0 评论 -
linux系统设置系统时间的方法
Linux系统设置系统时间有两种方法:1.使用命令date2.使用系统调用settimeofday,gettimeofday注意:不管使用上面哪一种方法都必须是root权限。如果系统连接上了网络,设置的时间和网络时间不同,系统会自动使用网络中的时间。1.使用命令date在命令行中可以使用:sudo date --s "2020-6-30 10:10:10"2.使用系统调用settimeofday#include <stdio.h>#inclu原创 2020-06-30 20:19:52 · 8949 阅读 · 0 评论 -
树莓派系统中cmdline.txt文件的介绍
Linux内核会接收到在启动期间传递的命令行参数。在树莓派中这些参数是在boot分区目录下的一个文件中被定义,这个文件就是cmdline.txt。用户可以使用编辑器编辑这个文件。在内核启动时传递给内核的命令行,可以使用cat /proc/cmdline查看。这些信息和cmdline.txt并不完全一样。因为固件在启动内核之前可以对这个文件的内容进行修改。命令行选项有很多命令行参数,其中一些事可以被内核定义的,其他的一些事内核正在使用的代码使用。cmdline.txt中标准的命令行条目:c翻译 2020-05-31 11:13:29 · 5605 阅读 · 0 评论 -
Linux的使用cron调度任务
cron是一个Unix系统下的配置任务调度的工具。这个工具可以周期性或者是以一个固定间隔运行命令或者脚本。命令crontab是用于编辑操作中的任务列表,这些列表是基于各自用户的,也就是说每个用户,包括root用户都有自己的crontab。需要在系统中周期性或者是以一个固定间隔执行命令或者脚本的话,需要使用crontab -e的命令编辑这个工具,第一次执行这个命令的时候会提示选择一个编辑器,根据自己的喜好选择即可。添加任务的方式:如:每天晚上的凌晨执行脚本/hom...翻译 2020-05-31 11:09:03 · 883 阅读 · 0 评论 -
树莓派系统(Linux)SD卡存储设备的命令行使用
本文介绍了SD卡读卡器通过usb连接到树莓派的挂载和卸载的操作,以及SD卡的格式化以及查看SD卡容量的命令行操作。mount umount mkfs.vfat df转载 2020-05-17 09:18:30 · 2595 阅读 · 0 评论 -
修改树莓派系统(Linux)开机画面的操作
本文介绍了修改树莓派系统的开机自定义画面的方法。硬件:树莓派3b+(BCM2837)系统:2019-09-26-raspbian-buster-fullLinux raspberrypi 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l GNU/Linux参考:https://blog.csdn.net/hua...转载 2020-04-22 22:09:56 · 2276 阅读 · 0 评论 -
树莓派系统(BCM283x)的启动过程
树莓派主控芯片BCM283x的启动过程https://www.raspberrypi.org/documentation/hardware/computemodule/cm-peri-sw-guide.mdBCM283x的启动过程BCM283x devices consist of a VideoCore GPU and ARM CPU cores. The GPU ...翻译 2020-04-19 10:46:32 · 1266 阅读 · 1 评论 -
Linux中磁盘内存使用情况查看工具du,df,free的使用以及他们的区别
一 、du : 显示每个文件和目录的磁盘使用空间~~~文件的大小。命令参数:-a #显示目录中文件的大小 单位 KB 。-b #显示目录中文件的大小,以字节byte为单位。-c #显示目录中文件的大小,同时也显示总和;单位KB。-k 、 -m 、#显示目录中文件的大小,-k 单位KB,-m 单位MB.-s #仅显示目录的总值,单位KB。-h #以K M...转载 2020-03-03 18:37:59 · 1048 阅读 · 0 评论 -
Linux中网络抓包工具tcpdump的使用
在树莓派上涉及到网络开发,有时需要抓包分析系统的收发数据。1.首先安装tcpdumpsudo apt-get install tcpdump2.查看使用帮助tcpdump --help3.使用命令ifconfig -a查看本地的网卡4.使用sudo tcpdump抓取默认网卡的数据,这里的默认网卡是eth05.抓取...原创 2019-12-18 19:59:47 · 799 阅读 · 0 评论 -
Linux线程创建时参数传递的一些注意
最近在Linux平台下编程的时候,涉及到多线程的使用,在创建线程的时候少不了需要向线程中传递一些参数。Linux中的线程创建函数:intpthread_create(pthread_t*tidp,constpthread_attr_t*attr, (void*)(*start_rtn)(void*),void*arg);第四个参数void *arg就是创建线程的时候需要...原创 2019-12-10 19:07:44 · 1463 阅读 · 0 评论 -
类Unix系统中调试工具gdb介绍
gdb调试: 进入调试 gcc -o xxx.o xxx.c -g gdb xxx.o 显示源代码 (gdb) l 在第六行打上断点 (gdb) b 6查看断点号(gdb) info b删除断点号为3的断点(gdb) d 3Breakpoint 1 at 0x80483e7: file a.c, line 6. 运行代码 (gdb)...原创 2019-11-10 16:38:29 · 173 阅读 · 0 评论 -
linux驱动模块加载时出现与内核不匹配的问题
参考:https://blog.csdn.net/hbcbgcx/article/details/88194321安装模块时出现:[root@FriendlyARM nfs]# insmod key2.kokey2: version magic '2.6.32.2 mod_unload modversions ARMv4 ' should be '2.6.32.2-FriendlyARM ...转载 2019-08-06 21:27:17 · 3116 阅读 · 0 评论 -
linux内核驱动llseek接口,以及应用层lseek系统调用的介绍
驱动的文件操作 llseek 接口,对应系统调用接口 lseek 函数.如果实现这个接口,驱动中的write,read接口函数也需要考虑文件指针。系统调用接口原型:off_t lseek(int fd, off_t offset, int whence);参数:fd文件描述符号 offset:偏移量,可以正数,也可以负数 whence:移动方式: SEE...原创 2019-08-05 22:20:15 · 1973 阅读 · 0 评论 -
linux设备驱动标准ioctl接口
ioctl的驱动接口一般是作用在一些标准接口无法实现的功能。如和主控芯片链接的很多外设ic,主控对这些芯片的功能设置以及状态的获取等。所以 ioctl 接口可以看成是系统给我们进行功能扩展的的专用接口。系统调用接口原型: int ioctl(int d, int request, ...);这个函数是一个可变参数函数,最少需要2个参数参数:d: 是文件描述符号 reque...原创 2019-08-04 12:41:11 · 809 阅读 · 0 评论 -
shared libraries libxxx.so.4 cannot open shared object file No such file or directory
先找到相应的动态库文件的存放路径。1.将存放路径放在etc/enviment文件下的PATH中,并用“:”号隔开。执行source etc/envirment是修改立即生效。通过echo $PATH查看添加的环境变量是否已存在,继续编译内核镜像,如果还是提示这个错误,继续下一步。2.在命令行执行export LD_LIBRARY_PATH=pathname:$LD_LIBRARY_...原创 2018-08-18 12:08:35 · 1282 阅读 · 0 评论 -
linux中终端进入目录太多时造成终端路径显示太长的路径影响观看的解决方法
在终端中执行vim ~/.bashrc第一次打开这个文件其中的绿色方框中的w是小写的,将这三个w改为大写的,如下图所示: 改好后,保存退出。在终端中执行source ~/.bashrc 使刚刚的修改立即生效。 再打开一个终端,多进入几个目录,应该就可以了。 解释:w是当前完整的工作路径 W是指当前目录。...原创 2018-09-21 20:15:54 · 3721 阅读 · 0 评论 -
Linux发行版中的终端分屏工具terminator的安装和使用(以Ubuntu为例)
在Ubuntu中安装terminator:sudo apt-get install terminator 安装好后再终端中执行terminator命令,打开窗口。打开窗口后可以使用右键如下图所示,可以选择是水平分割或者是垂直分割等一系列功能。此外还可以使用快捷键命令:Ctrl+shift+e 垂直分割。Ctrl+shift+o 水平分割ctrl+shift+t 创...原创 2018-09-20 19:48:46 · 2102 阅读 · 0 评论 -
ubuntu中谷歌拼音输入法的简化字和繁体字的切换
将光标定位在文本输入栏中,使用ctrl + shit + F组合键实现繁体字和简化字的切换。每次按下这个组合键后就会在桌面的上方弹出如下的提示:原创 2019-06-17 10:00:49 · 2896 阅读 · 0 评论 -
linux中内存泄漏检测工具valgrind的使用
在ubuntu中的安装:sudo apt-get install valgrind使用方法:例如编译后的可执行文件为main。valgrind --leak-check=full ./main如下测试使用malloc申请1k的内存空间,并且释放。#include <stdio.h>#include <stdlib.h>int main(in...原创 2019-06-10 17:45:30 · 546 阅读 · 0 评论 -
VMware中的Ubuntu硬盘的扩容方法
在VMware中安装虚拟机Ubuntu使用一段时间后,发现ubuntu的硬盘不够用。可以扩展Ubuntu的硬盘容量来缓解这个问题。首先在VMware中设置需要的扩展的硬盘大小。在上方的工具栏--虚拟机--设置(注意:需要将虚拟机中的Ubuntu系统关机,下面的扩展才能够点击):接下来打开Ubuntu系统,为系统扩展分区。我们这里使用的是gparted软件。在Ubuntu中安装gp...原创 2019-05-31 20:27:11 · 4191 阅读 · 0 评论 -
ubuntu下安装FoxitReader pdf阅读器
mmp,Ubuntu自带的PDF阅读器就像一坨屎,实在难用。上网查了一下,发现FoxitReader也有Linux版本的,还超级好用,各种注释功能一应俱全。具体的安装步骤产考如下链接:https://blog.csdn.net/guzhong10/article/details/82630530https://blog.csdn.net/u011722133/article/detail...转载 2019-01-14 10:57:02 · 518 阅读 · 0 评论 -
ubuntu下查看当前版本的版本号的方法。
1.uname -a2.lsb_release -a3.cat 、etc/isiue4.cat /etc/lsb-release原创 2018-12-12 11:42:11 · 2236 阅读 · 0 评论 -
vim中实现另存为的方法
在vim的normal模式下使用:w filepath/filename 就可以了原创 2018-10-25 16:44:24 · 6678 阅读 · 1 评论 -
vim 的使用配置
在使用vim的时候,比如需要显示行号等功能,每次都是:set nu 或者 :set number,打开另外一个文件的话,又要从新输入一遍,实在麻烦。这里有一个一劳永逸的方法,可以在启动vim的时候就讲自己的设置执行一遍。就在也不用老是被这些繁琐的操作折磨了。------------------------------------------------------------------...原创 2018-09-08 10:39:14 · 150 阅读 · 0 评论 -
Ubuntu中的hotshots截图软件的安装和使用方法
1.sudo apt-get-repository ppa:dhor/myway2.sudo apt-get update3.sudo apt-get install hotshots 所用方法:在终端中直接输入hotshots出现界面: 就可以截图了。原创 2018-03-02 18:01:14 · 1334 阅读 · 0 评论 -
arm linux板上修改linux的系统时间为当前的北京时间
参考:https://blog.csdn.net/qq_41248872/article/details/83575611由于项目需要,需要获得linux系统中的当前的北京时间。但是通过localtime接口获取的时间和当前的北京时间无法对应上,比如现在是2019年,但是获取的时间是2016的,并且在系统启动后在命令行终端使用date查看的时间也是对应不上。[root@arm-linu...转载 2019-06-21 15:31:42 · 2160 阅读 · 0 评论 -
linux中dd命令的使用
在虚拟机的 linux 环境下,执行 dd 命令,使内核烧写到 SD 卡中(dd –help 可查看 dd 命令的参数信息)dd 命令:非常危险注意使用(用错了数据很容易丢失,再也找不回来了)友善之臂内核烧录: dd iflag=dsync oflag=dsync if=./zImage of=/dev/sdb seek=1057dd 参数解释如下:dsync:use synchroniz...原创 2019-06-13 22:46:52 · 1400 阅读 · 0 评论 -
linux中不同主机之间的文件拷贝命令scp的用法
scp命令:将本地文件拷贝到远程的主机:scp (本地文件路径) root@(远程主机ip):需要拷贝文件的目标路径如下:sudo scp ./* root@192.168.1.72:/home/work/xuyw/src/将远程主机的文件拷贝到本地主机:scp remote@(ip):(src path) 需要拷贝文件的目标路径sudo scp remote@192...原创 2019-04-16 14:09:19 · 599 阅读 · 0 评论 -
linux 中fdisk 和 mkfs.vfat命令的使用总结
fdisk:是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。由于emmc在系统启动后,分为了mmcblk0p1~mmcblk0p5 五个分区,其中mmcblk0p1是存放的vendor信息的分区。mmcblk0p2是IDBlock分区,存放的是loader.bin文件。mmcblk0p3是kernel分区,存放的是kernel.img文件。mmcblk0...原创 2019-03-23 16:05:52 · 17338 阅读 · 0 评论 -
linux shell中的$()和${}的区别
linux shell中的$()和${}的区别:$()中()里面的是执行的命令,与··反引号同样效果。如:$(cd $(dirname $0))${}中{}里面是具体的变量,作用是提取变量里面的内容。如:VAR1=1${VAR1}...原创 2018-12-17 19:22:04 · 798 阅读 · 0 评论 -
Linux shell中BASH_EOURCE和BASH_SOURCE[0]的作用:取得当前执行的shell脚本的相对路径
BASH_EOURCE和BASH_SOURCE[0]的作用都是一样的,就是取得当前执行的shell脚本的相对路径如果希望获得,当前执行脚本的绝对路径,可以采用以下方式:DIR_T="$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 1 #!/bin/bash 2 3 echo $0 $1 $2 4 ...原创 2018-12-17 14:03:47 · 5003 阅读 · 0 评论 -
Linux shell中if [ $? -eq 0 ] 语句作用:判断命令是否执行成功
shell脚本中$?是指上一次命令执行的成功或者失败的状态。如果成功就是0,失败为1.。语句if [ $? -eq 0 ] 是判断if语句的上一个命令执行如果失败就执行if中的语句,否则就执行else中的内容。note:使用时要注意,if后面的中括号[ $? -eq 0 ],括号的两边需要有一个空格。cd u-boot && ./make.sh $RK_UBOOT_DE...原创 2018-12-17 12:25:38 · 57646 阅读 · 2 评论 -
使用 cd - 时出现bash: cd: OLDPWD not set的错误信息
在Linux中使用cd -,出现入下错误:bash: cd: OLDPWD not set是因为开始打开终端,第一次操作cd命令的原因。cd - 的作用是进入上一次cd的目录,也就是说cd命令后面的参数“-”,是代替上一次cd后面的参数。同样cd - 也等同于cd OLDPWD命令。...原创 2018-12-17 12:24:25 · 7749 阅读 · 2 评论 -
makeinfo: command not found解决方法
sudo apt-get install texinfo原创 2018-12-12 16:55:49 · 19665 阅读 · 7 评论 -
linux下解压rar类型的压缩包
Linux中解压rar类型的压缩文件,使用unrar命令。如果系统中没有unrar工具的话,就根据自己对应的linux发行版本安装相应的rar软件。如Ubuntu下安装:sudo apt-get install unrar如果要将rar文件解压到当前目录中:unrar e filename.rar如果要将文件解压到指定的目录中:unrar x filename.rar uncompressfile...原创 2018-02-28 19:38:43 · 442 阅读 · 0 评论 -
C语言代码编译的makefile模板
#compilerCC := gcc#generate target fileTARGET := main.o#source file pathSUBDIRS := ./SUBDIRS += demo/aa/SUBDIRS += bb/SUBDIRS += cc/#header file pathINCLUDES := -I ./INCLUDES += -I ./demo/aa...原创 2019-06-18 19:27:19 · 912 阅读 · 0 评论 -
linux中make工具在帮助了解代码工程编译规则及过程的使用方法
现在很多代码,包括linux内核源代码都是以makefile文件来组织代码包的编译规则和编译过程的。那么当我们拿到一个新的代码包时后,如果想了解这份代码各个文件的编译过程,通过阅读各个目录下的makefile固然可行,但是难免会太过于繁琐,尤其在一些大一点的工程中。通过make中一些make选项可以有效的提供一些辅助信息,帮助我们了解整个代码工程的编译流程。一般情况下,在拿到新的代码的时候可以...翻译 2019-05-11 10:09:21 · 621 阅读 · 0 评论 -
rv1108 SDK中添加wpa_supplicant的方法
step1:将wpa_supplicant的相关代码放置于extern目录下面。step2:在文件config/pack_rootfs.mk中添加如下脚本信息: 94 ifeq ($(RV_TARGET_WPA_SUPPLICANT),y) 95 ROOTFS_FINAL_SBINS += wpa_cli wpa_supplicant 96 endifstep3:在文...原创 2019-04-19 17:26:19 · 391 阅读 · 0 评论 -
Makefile中的include和-include以及sinclude的区别
include作用是包含其他的Makefile文件或者.mk文件。从而可以使用包含文件中的变量。-include是指定编译器,即使没有这个文件也照常编译,不报错。编译继续进行。sinclude和-include的效果一样...原创 2019-04-12 19:43:29 · 2076 阅读 · 0 评论