gpio 和 pinctrl 子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统开始学习驱动开发是个不错的入门选择。...描述 legacy gpio 接口 注:本文基于 Linux-4.19。...完整的接口定义位于 linux/gpio/consumer.h,大约共有 70个 API。...gpio 的接口:gpiod_xxx(); 实现字符设备的功能; 注册 sysfs; 源码: $ cd linux-4_19/drivers/gpio $ ls gpiolib* -1X gpiolib-acpi.c...-4.19 Documentation Linux Device Drivers Development / GPIO Controller Drivers
ARM_控制器 ---- 1.GPIO 控制器:(gpio口的通用函数接口定义在gpiolib.c文件中,声明则在gpio.h中) linux-3.10\include\linux\gpio.h ...linux-3.10\drivers\gpio\gpiolib.c API: 1. ...申请/获取gpio口的使用权 static inline int gpio_request(unsigned gpio, const char *label) 申请gpio口的使用,若申请成功...,则说明该gpio口未被使用 2. ...释放/归还gpio口的使用权 static inline void gpio_free(unsigned gpio) 3.
笔者使用的S5PV210是IO与内存统一编址的,在裸机中直接操作IO端口的物理地址,而在驱动中必须使用虚拟地址。直接基于IO的虚拟地址用指针解引用的方式来读写有两种方式,静态映射和动态映射。...考虑到GPIO作为硬件资源,存在着被多个驱动使用,还有复用的问题,所以内核提供了GPIO驱动gpiolib框架来统一管控GPIO资源,gpiolib在内核中作为一个驱动所实现。...框架 对外接口的标准头文件为linux/gpio.h,其中根据是否定义CONFIG_GENERIC_GPIO宏来判断是否支持gpiolib。...gpiolib的代码实现在driver/gpio/gpiolib.c路径下。...gpio) #define gpio_get_value __gpio_get_value gpio: gpio编号,相关宏定义在linux/gpio.h中 返回值: 获取的值 使用示例 if (gpio_request
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...GPIO子系统的层次 1.1 层次 1.2 GPIOLIB向上提供的接口 descriptor-based legacy 说明 获得GPIO gpiod_get gpio_request gpiod_get_index...gpio_free gpiod_put gpio_free_array gpiod_put_array devm_gpiod_put devm_gpiod_put_array 1.3 GPIOLIB...需要提供函数,设置引脚方向、读取/设置数值 需要提供函数,把引脚转换为中断 以Linux面向对象编程的思想,一个GPIO Controller必定会使用一个结构体来表示,这个结构体必定含有这些信息: GPIO...2.3 gpio_desc 我们去使用GPIO子系统时,首先是获得某个引脚对应的gpio_desc。 gpio_device表示一个GPIO Controller,里面支持多个GPIO。
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...驱动程序 驱动程序为drivers\gpio\gpiolib-sysfs.c,这里不打算分析它。 2....base // 这个GPIO控制器的GPIO编号 device label // 名字 ngpio // 引脚个数 power subsystem uevent 2.3 查看GPIO使用情况...cat /sys/kernel/debug/gpio 2.4 通过SYSFS使用GPIO 如果只是简单的引脚控制(比如输出、查询输入值),可以不编写驱动程序。
10行数据 Linux文件系统结构 / : 根目录 /home: 主文件夹,登录用户的主文件夹 /etc :操作系统配置文件的保存位置 /usr : 用于添加的程序文件,用户的很多应用程序和文件都放在这个目录下...本地文件 :上传本地文件到远程服务器 ,只能是压缩文件,比如.tar.gz push abc.txt : 上传本地当前文件abc.txt到远程服务器 exit : 退出 windows 操作Linux...pyttty 开源软件 Linux打包命令 tar -czvf 包文件.tar.gz 文件夹1 文件夹2...System /正则 :向后查找 n 查找下一个 先使用?...vi编辑器修改 重启tomcat,我们使用zip安装方式安装的,因此需要在Tomcat的bin下执行: .
目录 资料下载 视频观看 调试与使用虚拟的GPIO控制器 1. 硬件功能 2. 编写设备树文件 3. 上机实验 3.2 编译、替换设备树 3.3 编译、安装驱动程序 4....STM32MP157上的bug 百问网技术交流群,百万嵌入式工程师聚集地: https://www.100ask.net/page/2248041 资料下载 coding无法使用浏览器打开,必须用git...工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git 视频观看 百问网驱动大全 调试与使用虚拟的...硬件功能 假设使用这个虚拟的GPIO Controller的pinA来控制LED: 2....96.297803] get pin 1, it's val = 0 [ 96.312604] get pin 1, it's val = 0 cat value这个操作,会导致驱动drivers/gpio/gpiolib-sysfs.c
Linux内核设备树覆盖(Device Tree Overlay)入门前言本文基于Linux kernel 5.15版本进行说明,旨在解析Linux设备树覆盖(Device Tree Overlay,...应用场景举例:假设一个硬件平台在V1版本时使用了A器件,而在V2版本中,该器件被更新为B设备。...如果平台软件团队只维护一套Linux代码库,通过使用设备树覆盖,可以根据硬件版本动态选择合适的.dtbo文件,从而使同一套代码同时满足V1和V2硬件版本的需求,极大地增加了项目的灵活性和可维护性。...gpiolib.c4395 WARN_ON(of_reconfig_notifier_register(&gpio_of_notifier)); in gpiolib_dev_init()spi.c4344...这三个函数涉及到Linux设备模型,在后续的文章会继续介绍。
如果使用了 –template 选项,而未使用 BSP, 您可以使用 petalinux-config 命令来选择与您的电路板设计接近 的默认电路板配置, 如下所示 petalinux-config...构建镜像位于 /images/linux 目录中。 生成uImage 如果想使用 uImage,请使用 petalinux-package –image。...使用以下方法之一来启动系统镜像: a. 利用 SD 卡在硬件上启动 PetaLinux 镜像,请参见 利用 SD 卡在硬件上启动 PetaLinux 镜像。 b....生成的 rootfs.tar.gz 文件将出现在 images/linux 目录中。若要提取,请使用 tar xvf rootfs.tar.gz。...petalinux-build命令使用这些配置文件构建项目。可以运行petalinux-config修改它们。
查看磁盘空间使用情况 df -h 查找占用空间大的目录 du -sh * 查找出大于400M的文件 find /home/zhang -size +400M 使用dd拷贝镜像 dd bs
背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上-g选项...初次使用时,需要先安装: sudo yum install -y gdb 使用 注意使用gdb时,调试的是debug模式。
前言 在前面的博客【Linux】编译器-gcc/g++使用已经分享了关于编译器的使用,而编译器的使用离不开调试,这次就来分享一下Linux调试器-gdb使用。 2....使用 3.1 进入gdb 默认系统中会安装gdb,使用方法就是gdb后面直接加上调试的可执行程序名: gdb myprocess-debug 就会默认进入到调试模式 想要退出就直接输入quit或者...如果想要从程序第一行开始查就用命令: l 0 还可以使用l加程序名再加0的方式 l myprocess.c:0 不可以直接查文件,但是加上行号就可以查。...进入到函数体里面就退不出来 如果想要跳转到某一行,就用到命令: until 试一下跳转到12行: 总结一下gdb使用就是: set var:修改变量的值 把指定变量直接修改为目标值
文章更新 20170408 初次成文 问题提出: 在之前的文章中,小苏为大家介绍过使用常规方式和使用镜像方式部署Linux系统的方法,但是这两种方法各有利弊: 使用常规方式部署时,镜像大小可以灵活调节...使用镜像方式部署Linux系统时,虽然可以免去部署时下载大量数据的麻烦,但是使用别人部署好的镜像,初始实现的功能依别人部署好的镜像而定,不能个性化定制系统,也不能调整镜像大小。 ...那就是先在Linux Deploy中部署和安装所需要的环境和软件包,然后使用Linux Deploy的导出功能,将Rootfs打包为tar.gz文件,之后,我们只需要将此tar.gz文件导入Linux...Deploy,就可以完整还原打包时的Linux系统了。...因为在Repository中,作者使用各发行版的官方软件源作为软件源,这样一来,一是服务器节点远离中国,软件包下载速度一般都很慢,二是在我国ipv6还未普及,使用官方软件源在部署过程中有一定几率解析到ipv6
1 快速使用 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译...make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。...1.2 使用makefile 我们首先编写一个简单的makefile文件 我们使用make 命令来执行 然后我们就成果得到了可执行程序mytest,并可以成功执行。...再通过使用make clean命令 可以成功删除清理mytest. 2 深入理解 我们先以前两行讲解: 依赖方法前必须使用TAB进行开头,不能使用4个空格 make 命令会读取makefile的内容...层层嵌套 使用变量: Thanks♪(・ω・)ノ谢谢阅读!!! 下一篇文章见!!!
为了实现对多个文件或目录的压缩操作,可以使用tar命令将多个文件或目录归档为一个文件,然后再使用压缩命令对该归档文件进行压缩。...使用-r参数添加文件到归档文件中时,不会去判断该文件是否已经存在于归档文件中,或者该文件是否发生了更新,都会直接添加进归档文件中。...-z参数表示在打包后使用gzip压缩归档文件。...-j参数表示在打包后使用bzip2压缩归档文件。...,可以使用-C参数切换执行打包时的目录,以及切换提取文件到指定的目录下。
说明:日常高频使用,100%适用于CentOS7shell终端技巧ctrl + a ;ctrl + e #鼠标焦点到最前or最后ctrl a ctrl k # 清除当前行ctrl c # 结束命令...(file1|file2) #删除除了file1和file2的其他文件free -h #以合适的单位显示内存使用情况du -sh #查看目录文件大小df -sh #查看磁盘使用情况ps -ef | grep...nginx#查看正运行的nginx进程netstat -anp | grep ranger # netstat -anp:显示系统端口使用情况lsof -i:80 #使用-i:port来显示与指定端口相关的网络信息...are one of the most useful features of a Linux distribution....https://linuxhint.com/create-yum-local-repository/linux使用tree命令How to install tree in Unix/Linux.
一、Oracle VirtualBox安装Linux7.0全屏设置 1....启动Linux系统并用root身份登入系统 3. 执行挂载命令,将虚拟光盘挂在到 /mnt/cdrom,如果没有cdrom目录,则先创建之。...false Icon=/usr/local/src/idea-IC-172.3544.35/bin/idea.png Categories=Development; 三、 安装JDK 1、删除Linux...jdk,然后解压 [root@localhost java]# curl -O http://download.Oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64....tar.gz [root@localhost java]# tar -zxvf jdk-7u79-linux-x64.tar.gz 4、设置环境变量 [root@localhost java]# vi
Linux vi的使用 vi模式转换 经常使用的三种基本模式:命令模式(Command Mode),输入模式(Input Mode),末行模式(Last Line Mode),其他的9种模式不做介绍,...很少会使用。...如果是默认安装,CentOS和RHEL一般在/etc/vimrc下面,Debian和Ubuntu一般在/usr/share/vim/vimrc vi的使用参考资料 http://wiki.dzsc.com
3.2 使用编解的makefile进行自动编译 编译器前先清除之前生成的文件,再使用make命令编译: rm -f main *.o make 此时已经生成生成完毕了。...3.3 尝试再次使用make编译 查看效果: make make: 'main' is up to date. 可以看到,由于程序没有修改过,因而没有重新编译,只是进行更新操作。...make clean命令即可自动清除之前生成的文件,使用make main或make命令即可重新编译,也可以连起来使用make clean main命令实现先清除再编译。...shell默认的环境变量 命令行中指定的CFLAGS优先级最高,然后是makefile文件中指明的CFLAGS,如果前两种都未指明CFLAGS,则使用shell默认的环境变量。...参考:《鸟哥的Linux私房菜 (基础学习篇 第三版)》
放到Linux文件夹下,解压开, 默认端口:8080可以直接使用 常用启动命令catalina.sh start 关闭命令 kill -9 pid 通常使用ps aux|grep tomcat
领取专属 10元无门槛券
手把手带您无忧上云