前面两章我们通过input子系统构建了一个按键类型的输入设备的驱动,其实Linux的内核还提供了一套基于GPIO的按键驱动程序,和LED设备一样,我们只需要在编译内核的过程中进行配置然后在设备树中定义好设备节点就可以直接使用了. 配置内核 在使用内核提供的input子系统驱动前要将驱动使能,可以按照下面说明中的路径进行配置 从上面的介绍可以看到,这个配置在.config里时CONFIG_KEYBOARD_GPIO,在该配置被使能以后,.config文件下的这个配置值就会变成y 并且可以从定位下面…
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(三): 基于FwLib_STC8的模数转换ADC介绍和演示用例说明 STC8H开发(四): FwLib_STC8 封装库的介绍和使用注意事项 STC8H开发(五): SPI驱动nRF24L01无线模块 STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块 STC8H开发(七…
第十六单元 yum管理RPM包 yum的功能 本地yum配置 光盘挂载和镜像挂载 本地yum配置 网络yum配置 网络yum配置 Yum命令的使用 使用yum安装软件 使用yum删除软件 安装组件 删除组件 清除缓存 查询 课后作业 [本节内容]1. yum的功能:yum是Yellow dog Updater, Modified的缩写,目的就是为了解决RPM的依赖关系的问题,方便使用者进行软件的安装.升级等等工作.2. 掌握光盘挂载和镜像挂载a) 光盘挂载mount /dev/sr0 挂载点或者…
内容目录: Dom 查找 操作 事件 jQuery 查找 筛选 操作 事件 扩展 Dom 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来.DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容. Dom查找元素 直接查找 document.getElementById 根据ID获取一个标签…
Linux驱动的工作方式就是交互.例如向Linux打印机驱动发送一个打印命令,可以直接使用C语言函数open打开设备文件,在使用C语言函数ioctl向该驱动的设备文件发送打印命令.编写Linux驱动最重要的是编写回调函数,否则与设备文件交互的数据无法得到处理. 建立Linux驱动骨架中使用到两个函数:module_init,module_exit.要进行宏定义. 创建和移除设备文件用misc_register,misc_deregister. 回调函数是由自身生成的,一个驱动程序并不一定要指定所…
Linux驱动程序与其他类型的Linux程序一样拥有自己的规则,下面给出一个编写基本的Linux驱动的一般步骤: (1)建立Linux驱动的骨架(装载和卸载Linux驱动): (2)注册和注销设备文件: (3)指定与驱动相关的信息: (4)指定回调函数: (5)编写业务逻辑: (6)编写Makefile文件: (7)编译Linux驱动程序: (8)安装和卸载Linux驱动. 对于一个Linux驱动程序,一开始可以在Ubuntu Linux上做前期开发和测试.对于访问硬件的部分也可以在Ubuntu…
1 前景提要 1.1 碎片化问题 分页与分段 页是信息的物理单位, 分页是为了实现非连续分配, 以便解决内存碎片问题, 或者说分页是由于系统管理的需要. 段是信息的逻辑单位,它含有一组意义相对完整的信息, 分段的目的是为了更好地实现共享, 满足用户的需要. 页的大小固定且由系统确定, 将逻辑地址划分为页号和页内地址是由机器硬件实现的. 而段的长度却不固定, 决定于用户所编写的程序, 通常由编译程序在对源程序进行编译时根据信息的性质来划分. 分页的作业地址空间是一维的. 分段的地址空间是二维的.…
Linux用户管理 Linux系统跟Windows系统一样,可以创建不同的用户,不同的用户组.在不同用户下使用系统具有相应的权限 创建一个普通用户时,会修改几个文件,拷贝一些初始文件到用户家目录中 修改的文件路径为 /etc/passwd /etc/shadow /etc/group /etc/gshadow 拷贝到用户家目录下的文件为 .bash_logout .bash_profile .bashrc 如果错误的把root用户下的这三个文件删除,再切换回root用户时会不成功,解决办法为:…
博客地址:http://www.moonxy.com 一.前言 LNMP 中的 N 指 Nginx,在静态页面的处理上,Nginx 较 Apache 更胜一筹:但在动态页面的处理上,Nginx 并不比 Apache 有优势,目前有很多爱好者对 Nginx 比较热衷. 二.安装 LNMP LNMP 中 MySQL 的安装步骤和 LAMP 中的一样,前面的文章已经介绍,此处只讲解 PHP 和 Nginx 的安装. 2.1 安装 PHP 下载 PHP 的源码包 php-7.2.8.tar.gz 到 /…
原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex_4.php 文件的格式化与相关处理 接下来让我们来将文件进行一些简单的编排吧!底下这些动作可以将你的信息进行排版的动作, 不需要重新以 vim 去编辑,透过数据流重导向配合底下介绍的 printf 功能,以及 awk 命令, 就可以让你的信息以你想要的模样来输出了!试看看吧! 格式化列印: printf 在很多时候,我们可能需要将自己的数据给他格式化输出的! 举例来说,考试卷分数…
目录 1.命令简介 2.常用参数介绍 3.实例 4.直达底部 命令简介 zip 是 Linux 系统下广泛使用的压缩程序,文件压缩后扩展名为 ".zip". zip 命令用来将文件压缩成常用的 zip 格式,unzip 命令则用来解压缩zip文件. 返回目录 常用参数介绍 zip 命令常见的参数如下所示: -a 将文件转成 ASCⅡ 模式 -F 尝试修复损坏的压缩文件 -h 显示帮助界面 -m 将文件压缩后,删除源文件 -n 不压缩具有特定字尾字符串的文件 -o 将压缩文件内的所有文件…
一.clock event控制的通用逻辑 1.产生clock event的设备 各种系统的timer硬件形形色色,不过在general clock event device layer,struct clock_event_device被来抽象一个可以产生clock event的timer硬件设备,如下: struct clock_event_device {     void          (*event_handler)(struct clock_event_device *);    …
转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静下心来坚持一开始的选择,继续我们的微信系列文章的后续更新,也希望在自己有时间的时候能把更多的内容呈现给大家,前面一系列的文章讲述了很多微信开发相关的基础知识点 [微信系列文章],那么从这一篇开始将讲述微信较深一层次或者说在产品应用中时刻会用到的一些技术点,那么下面就让我们进入正题吧,这一篇我要讲述的…
在使用os模块时需要先 import os 引入模块 os.getcwd()模块函数 功能:获取当前工作目录,即当前python脚本工作的目录路径[无参] 使用方法:os.getcwd() 格式如:a = os.getcwd() #!/usr/bin/env python # -*- coding:utf8 -*- import os a = os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径[无参] print(a) #输出 #H:\py os.chdir()模块…
一.简介 VIM是vi的增强版.VIM是Linux平台上的主要编辑器.基本上所有的文档的新增,修改,保存都需要用到它.所以,掌握VIM是很有必要的. vim的安装非常简单,一条命令就可以了: yum -y install vim-enhanced VIM的操作在三个模式下进行.它们分别是:一般模式,命令模式,编辑模式.在一般模式下我们可以进行光标的移动,文件的复制粘贴等操作.在命令模式下,我们可以进行文件的保存,退出,查找替换.在编辑模式下进行文件的书写和修改. VIM的配置文件在:/etc/v…
一.添加用户 useradd useradd 命令用于创建新用户,格式为useradd [选项] 用户名. 可以使用 useradd 命令创建用户帐户,使用该命令创建账户时,默认的用户目录在 /home 目录下,默认的shell为 /bin/bash ,而且会默认创建一个与该用户同名的基本用户组. useradd命令支持丰富的参数,常用参数如下所示: -d 指定用户家目录 -e 账户到期时间,格式为 YYYY-MM-DD. -u 指定用户的UID -g 指定一个初始的基本用户组 -G 指定一个或…
一.ls -l 各段含义 wang@wang:~/workpalce/threading$ ls -l 总用量 drwxrwxr-x wang wang 12月 : a -rw-rw-r-- wang wang 12月 : test.py -rw-rw-r-- wang wang 12月 : th.py -rw-rw-r-- wang wang 12月 : thtest.py 第一个字段共有10个'-',第一个‘-’代表该文件类型:‘-’是普通文件,b是块特殊文件,c是字符特殊文件,d是目录,l…
需求介绍 实现帖子详情,在帖子标题上增加访问详情页面的链接. 代码实现 开发流程: 首先在数据访问层新增一个方法 实现查看帖子的方法 业务层同理增加查询方法 最后在表现层处理查询请求 数据访问层增加根据帖子 id 查询出一个帖子的详细信息 DiscussPost selectDiscussPostById(int id); 然后去 discusspost-mapper.xml 文件里写具体的实现 <select id="selectDiscussPostById" resultT…
/* * 题目: * 编写程序,要去实现如下功能: 父进程创建子进程1和子进程2.子进程1向子进程2发送可靠信号,并传送额外数据为子进程1的pid*2; 子进程2接受可靠信号的值,并发送给父进程,父进程把接受的值进行打印. 提示:用sigqueue和sigaction实现 * */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include &…
一.boot sector 与 super block的关系: 1.boot sector用于存放引导装载程序,占用1024个字节. 2.super block的大小也为1024字节. 3.若block大小为1k,则boot sector和super block各占一个block. 4.若block大于1K(2K/4K)时,则两者都位于第一个block中. 二.磁盘空间的浪费问题:暂不考虑. 三.利用GUN的parted命令进行分区行为: 因为fdisk不支持高于2TB的分区. 命令格式: pa…
欢迎转载:http://blog.csdn.net/dawn_moon/article/details/11775745 本来想写一下帧动画的,搜了一下网上好像有一大把,就懒得写了,直接贴代码. // 精灵帧缓存 CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache(); // 添加 plist文件到缓存 cache->addSpriteFramesWithFile("lightning.plist&q…
1.命令格式: which 可执行文件名称 2.命令功能: which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果. 3.命令参数: -n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名. -p 与-n参数相同,但此处的包括了文件的路径. -w 指定输出时栏位的宽度. -V 显示版本信息 4.简单实例: (1).查找文件并显示命令路径 命令: which python3 输出:(which是查找PATH路径下配置的文件) felix@felix…
之前我们加载驱动都是利用INSTDRV这个应用,其原理是在注册表中写入相应的字段,这一节我们手动编写代码去加载驱动,其原理类似:…
以前,初步学习过嵌入式Linux驱动开发的基础课程,对于驱动开发可以说是有了一点点微末的基础吧.首先我们要对Android嵌入式系统有一个初步的认识,Android系统发展到今天已经具备了完善的架构.其架构主要分4层,第一层:Linux内核:第二层:c/c++代码库:第三层:Android sdk api:第四层:应用程序.这种分层的结构就好比鸡尾酒从上到下结构清晰. 说道Android系统移植,它是指让Android操作系统在某一个特定的硬件平台上运行.其首要条件是该系统必须支持硬件平台的CP…
Android驱动月考1 第一章 Andorid系统移植与驱动开发概述 - 读书笔记 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以Android与Ubuntu等操作系统的差别很小,并且这一层主要是操作系统核心,包括进程线程的调度和内存.电池管理,都是一些常驻内存的核心服务. (2)C/C++代码库,这一层主要都是.so文件,.so文件常见在编译之后产生,包括PHP的运行so.同时这一层也包含虚拟机的Runtime. (3)An…
[序言]很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从事驱动开发时间不长也不短,大概也就3~4年时间.大多数人都认为会驱动开发的都是牛人,高手之类的.其实高手,牛人不是这样定义的.我们在学习驱动开发之前,一定要明白一个道理:术业有专攻,不要盲目跟风. [贡献者]1> defddr   看雪学院2> StudyRush看雪学院 [本内容适用环境及工具]1> Windows系统…
[作者]猪头三个人网站 :http://www.x86asm.com/ [序言]很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从事驱动开发时间不长也不短,大概也就3~4年时间.大多数人都认为会驱动开发的都是牛人,高手之类的.其实高手,牛人不是这样定义的.我们在学习驱动开发之前,一定要明白一个道理:术业有专攻,不要盲目跟风. [贡献者]1> defddr    看雪学院2> Study…
本文转载自:http://7071976.blog.51cto.com/7061976/1392082 <[arm驱动]Linux内核开发之阻塞非阻塞IO----轮询操作>涉及内核驱动函数二个,内核结构体零个,分析了内核驱动函数二个:可参考的相关应用程序模板或内核驱动模板二个,可参考的相关应用程序模板或内核驱动一个 一.概念:Poll是非阻塞IO----轮询操作   非阻塞 I/O 的应用程序常常使用 poll, select, 和 epoll 系统调用. poll, select 和 epo…
第1章:安卓系统移植与驱动开发概述 这一章主要概括的介绍了安卓驱动开发和系统移植的主要内容,对安卓与Linux驱动做了一个总体的介绍.通过对第一章的学习,使我对Linux驱动开发有了一个感性的认识.在学习过程中,首先,我通过以往上课时学习到的知识和查阅资料了解了一些专业词汇的含义(例如:.so文件:共享库,是shared object,用于动态连接:SDK:软件开发工具包:API:应用程序编程接口:HAL:硬件抽象层等),为以后更好的学习安卓驱动开发打下了基础. 其次在了解了一些专业基础的前提下…
[作者] 猪头三 个人网站 :http://www.x86asm.com/ [序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从事驱动开发时间不长也不短,大概也就3~4年时间.大多数人都认为会驱动开发的都是牛人,高手之类的.其实高手,牛人不是这样定义的.我们在学习驱动开发之前,一定要明白一个道理:术业有专攻,不要盲目跟风. [贡献者] 1> defddr 看雪学院 2> Stu…