前面两篇文章写了《input子系统的的概念》和《分析input子系统的代码》。这一篇文章来说说input子系统的驱动程序编写。
输入设备种类很多,有GPIO按键、鼠标、电阻触摸屏、电容触摸屏、USB键盘、遥控手柄等等。 安装它能产生的数据类型,可以分为(前面3项比较容易理解,后面的就属于扩展了):
裸机开发通常指在没有操作系统支持的环境中直接在硬件上运行程序的开发。这种开发方式要求开发者直接与硬件交互,编写控制硬件的低级代码。这包括对处理器、存储器、输入输出接口等硬件的直接控制和管理。与基于操作系统的开发相比,裸机开发更加接近硬件层面,对硬件的了解和控制能力要求更高,但也允许开发者更精细地管理硬件资源和性能。
在Linux的广阔世界中🌌,与各式各样的硬件设备进行互动和协作是一项不断进行的挑战🔧。硬件厂商和Linux社区的紧密合作,通过制定一系列标准和协议📜,使得从键盘🎹和鼠标🖱到复杂的网络连接设备🌐,所有硬件设备都能以一种统一的方式与Linux内核交互。这篇文章将探讨硬件厂商和Linux社区如何联手标准化硬件,以及他们为实现这一目标所做的努力🛠️。
Linux input子系统,分为三篇文章,第一篇:Linux input子系统的概念,第二篇:Linux input子系统的代码分析(input core),第三篇:Linux input子系统的驱动程序编写。
市面上有许多嵌入式GUI库可供选择,包括开源GUI库和闭源GUI库,开源GUI库:LVGL,EmWin等;闭源GUI库:TouchGFX,柿饼GUI等。
在了解输入系统之前,先来了解什么是输入设备?常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些输入设备与Linux系统进行数据交换,Linux系统为了统一管控和处理这些设备,于是就实现了一套固定的与硬件无关的输入系统框架,供用户空间程序使用,这就是输入系统。
在上一篇的Paper中,我们尝试对USB键盘进行模拟,下一步再尝试对USB鼠标设备进行模拟。
STM32MP157\source\A7\05_Input\03_touchscreen_qemu 01_irq_ok 02_all_ok
使用 Linux 作为主力机一年后 提到可以使用 QEMU 虚拟一个 Windows 系统,在里边使用国产毒瘤,干净又卫生,今天它来了。
首先,对于有科班背景的读者,可以跳过本系列文章。这些文章的主要目的是通过简单易懂的汇总,帮助非科班出身的读者理解底层知识,进一步了解为什么在面试中会涉及这些底层问题。否则,某些概念将始终无法理解。这些计算机基础文章将为你打通知识的任督二脉,祝你在编程领域中取得成功!
我们也正在(2022.10.17开始)使用纯粹的Ubuntu环境开始教驱动入门,免费的,感兴趣者也加上面的群。
Linux系统中,应用程序访问外设是通过文件的形式来进行的,Linux将所有的外设都看做文件,统一存放在/dev目录下。
因为mtd的kernel分区只有2M大,而实际内核有2.37MB,所以需要裁剪到小于2M(或者修改mtd分区值)
在介绍产品之前,首先了解什么是命令行?主要有两种叫法:命令提示符和命令行,分别指 windows 和 linux 两种操作系统下的命令行环境:
一、商业工具: 1、kylinTOP: 这是一款国产的自动化测试工具,支持Web和APP的自动化测试,其中元素智能定位是这款自动化软件主要特点,是设计理念比较超前的测试工具,算是国内众多自动化测试工具中,做的比较突出的一款。与传统的RFT和UFT相比,的确有过人之处,算是后起之秀吧。 2、RFT Rational Functional Tester 的基础是针对于java、.NET的对象技术和基于 Web 应用程序的录制、回放功能。工具为测试者的活动提供的自动化的帮助,如数据驱动测试。 IBM RFT是一个用于功能和回归测试的数据驱动的测试平台。它支持大范围的应用,例如.Net、Java、SAP、Flex和Ajax。RFT使用Visual Basic。Net和Java作为脚本语言。RFT有一个独特的功能,称为 Storyboard 测试,用户的动作被记录下来,并通过应用截图在 Storyboard 格式中可视化。 RFT的另一个有趣特性是它与IBM Jazz应用生命周期管理系统(如IBM Rational Team Concert和Rational Quality Manager)的集成。 3、UFT: UFT(别名:QuickTest Professional简称)QTP是一种自动化测试工具,以VBScirpt为内嵌语言,其前身是QTP。UFT支持功能测试和回归测试自动化,可用于软件应用程序和环境的测试。UFT自动化测试的基本功能包括:创建测试、检验数据、增强测试、运行测试脚本、分析测试结果、维护测试;UFT支持两种视图,一种是Keyword View(关键字视图),另一种是Expert View(专家视图)。是一款老牌的自动化测试工具。 4、SilkTest: 这个也是比较相对著名的工具,不过同样还是没有了解过,对于商业的工具,因为其占地面积大,还要破解等麻烦事,最关键的是使用的公司少,所以只使用过QTP,其它的一概未了解过。 二、开源工具: 1、Selenium: 这个应该大多数人都知道的,现在也是大多数互联网公司在使用的测试框架; Selenium仅支持Web的UI级别测试,但是其优点在于:
如上图,问题都是出在fs/yaffs2/下,很多error都讲述:调用的成员名,在struct mtd_info结构体里没有定义.
嵌入式分为广义和狭义两种。广义的嵌入式就是片上系统(system on a chip),包括单片机、PSOC、NIOS、Microblaze等。而狭义的嵌入式就是ARM9、cortex A8等特定的跑操作系统的芯片。这里主要介绍狭义嵌入式的学习路线。
USB是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,USB就是简写,中文叫通用串行总线。最早出现在1995年,伴随着奔腾机发展而来。自微软在Windows 98中加入对USB接口的支持后,USB接口才推广开来,USB设备也日渐增多,如数码相机、摄像头、扫描仪、游戏杆、打印机、键盘、鼠标等等,其中应用最广的就是摄像头和U盘了。
先来了解什么是输入设备? 常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些输入设备与 Linux 系统进行数据交换。
在centos官网下载安装包, 目前最新版本是7.6, 我下载的everything版本, 约10G, 包括最全的内容, 虽然最后只装了个GUI版本。
什么是 SDL Simple DirectMedia Layer(SDL)是一个跨平台开发库,主要提供对音频,键盘,鼠标,操纵杆的操作,通过OpenGL和Direct3D来实现直接访问图像硬件。 主要应用在视频播放软件,模拟器和游戏开发。SDL官方支持Windows,Mac OS X,Linux,iOS和Android。在源代码中可以找到对其他平台的支持。 SDL是用C编写的,我们可以使用C ++开发,同时SDL也绑了一些其他几种语言,包括C#和Python。 这个库是分布在zlib许可证下
话说自动化测试方面的工具还是非常的多的,不可能也没有必要查看了所有的测试工具;个人觉得当学习众多同类知识或相关主题时,分几步走: 1、学习所有同类知识的共同理论、原理部分【此为共性】 2、学习所有同类知识的独有特性、技巧部分【此为个性】 3、根据具体的实际场景,适当的运用所学知识的【即运用知识的个性部分去解决特定的问题】 学习自动化测试工具也是这样的,之前不愿意学习太多是怕混淆视听,现在对原有知识已有了一定的固化认识【即了解了基本原理】,也就可以从新学习个性化的东西了;而这一步正是为了以后能够适当运用所掌握的知识,顺利的进行自动化测试任务的开展和实施。其目标达矣!
LVGL的作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C语言编写,以实现最大的兼容性(与C ++兼容),模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计,同时LVGL作为一个图形库,它自带着接近三十多种小工具可以供开发者使用。这些强大的构建块按钮搭配上带有非常丝滑的动画以及可以做到平滑滚动的高级图形,同时兼具着不高的配置要求以及开源属性,显著的优势使得LVGL蔚然成风,成为广大开发者在选择GUI时的第一选择。
过去,计算仅限于昂贵的大型机和“大铁疙瘩”计算机系统,如 PDP 11。但是微处理器的出现在 20 世纪 70 年代带来了一场计算革命。你终于可以在家里有一台电脑了——“个人电脑”时代已经到了!
00x0 元旦快乐 这是第一次用Markdown编辑器写东西。感觉还是不错的,可以省下很多排版的时间。@豆瓣将军,夜豆女侠可以尝试着使用呦!然后发现微信公众号的编辑器不支持Markdown,不过一折腾发现是有方法的! 写在文章前面的东西,对,今天是元旦。大家昨天晚上都在跨年,看烟花,约会,看电影。而我,弄着某sb单片机做的傻逼东西,说实话真的是吃力不讨好,具体原因不详。其实对我等对跨年没有什么感觉了,自从中国台湾回来之后,感觉没有这个气氛了。别的不说,原单快乐吧,然后明天答辩快乐~ 00x1
1、在主机上,从 Workstation Pro 菜单栏中选择 虚拟机 -> 安装 VMware Tools。 如果安装了早期版本的 VMware Tools,则菜单项是 更新 VMware Tools。 此时虚拟机界面底部会弹出帮助信息,如下图所示:
微软官网:PowerShell 是构建于 .NET 上基于任务的命令行 shell 和脚本语言。 PowerShell 可帮助系统管理员和高级用户快速自动执行用于管理操作系统(Linux、macOS 和 Windows)和流程的任务, 其实可以看做是C#的简化版本还与PHP语言有相似之处(语法),与我们可以采用ISE 集成脚本环境进行PS脚本脚本编写;
前提:安装了VMware,运行百问网提供的Ubuntu 18.04 本节视频对应源码在GIT仓库中,位置如下(这2个文件是完全一样的):
刚换了几天 Manjaro Linux,无法联网,只显示本地 lo 网络连接。好像是升级内核和系统后,网卡驱动出现了问题。切换回 Debian 系,问题一致。最后发现在 Ubuntu Launchpad 内的网卡驱动 Realtek 8852AE, 8852BE, and 8853CE WiFi drivers 可以完美运行。
Python是一门高级编程语言。它用于通用编程。Python语言由Guido van Rossum创建,并于1991年首次发布。Python的设计哲学着重于代码的可读性。因此空白在Python中具有重要的意义。
大家知道现在PC市场上,、Linux、Mac基本占了百分之九十多,而在个人用户PC市场,应用在目前的PC市场还是占据了绝大多数,根据和Net 两家机构的最新统计,系统仍然占据90%以上,因此在上或者在环境下开发应用程序还是非常普遍的。及时是Linux下开发软件的同时,也有不少人是在环境下开发,所用工具也很多都是平台的软件。
累了好几天,重装了十几遍终于把ubuntu7.10搞定到了我自认为完美的状态了。现在总结一下安装过程(按操作顺序记录): 1.在xp下不管用pqmajac还是其他硬盘分区工具分出10G的空余分区来(实验阶段10G尝试下),不知道是不是必须得把空余分区放到硬盘的最后,似乎用中间分区会出现安装错误。 2.开始安装,简单步骤省略...这里注意的是分区时,一个swap:2G,logical,结束。一个/,ext3,8G,开始。还有就是安装过程中保持网络通畅,因为过程中要下载语言包支持。 3.安装结束。 ----------- 为了避免在以后的配置过程中出现错误,这里推荐用clonezilla live(ghost 4 linux)做备份,clonezilla下载地址:[url]http://clonezilla.sourceforge.net/download/sourceforge/[/url] 下载*.iso刻张碟子出来,从碟子启动进入clonezilla live进行备份,使用还是相当简单的。 ----------- 4.用clonezilla live做一次备份,起名original 5.装好ubuntu7.10后,第一件事情就是安装源了: sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup sudo gedit /etc/apt/sources.list 将内容全部替换成: deb [url]http://ubuntu.cn99.com/ubuntu[/url] gutsy main restricted universe multiverse deb-src [url]http://ubuntu.cn99.com/ubuntu[/url] gutsy main restricted universe multiverse deb [url]http://ubuntu.cn99.com/ubuntu[/url] gutsy-backports main restricted universe multiverse deb-src [url]http://ubuntu.cn99.com/ubuntu[/url] gutsy-backports main restricted universe multiverse deb [url]http://ubuntu.cn99.com/ubuntu[/url] gutsy-proposed main restricted universe multiverse deb-src [url]http://ubuntu.cn99.com/ubuntu[/url] gutsy-proposed main restricted universe multiverse deb [url]http://ubuntu.cn99.com/ubuntu[/url] gutsy-security main restricted universe multiverse deb-src [url]http://ubuntu.cn99.com/ubuntu[/url] gutsy-security main restricted universe multiverse deb [url]http://ubuntu.cn99.com/ubuntu[/url] gutsy-updates main restricted universe multiverse deb-src [url]http://ubuntu.cn99.com/ubuntu[/url] gutsy-updates main restricted universe multiverse ----更新软件包: sudo apt-get update sudo apt-get dist-upgrade --------------------------------这里更新软件包需要漫长的时间(取决于网速了) 可以在这个时候作一些比较简单的配置: ------------ 把桌面,把计算机、主文件夹、回收站放到桌面上,把挂载的卷去掉: gconf-editor 到/apps/nautilus/desktop/分支下,去掉volumes_visible前面的复选框,勾上trash_icon_visible,home_icon_visible,computer_icon_visible前面的复选框。 ------------ 调整上下任务栏里面的内容 ------------ 开通root登录: 1.修改root密码: sudo passwd root 2.系统->系统管理->登录窗口,在安全选项卡里“允许本地系统管理员登录”打勾 以后就可以通过切换用户从登录窗口用root权限登录
首先我们还是来普及以下概念,讲点虚的。 现在是图形系统的天下,windows我们用了20年。成功归功与它图形界面,你会点鼠标吗你会敲键盘吗?所以你会上网会聊天会玩游戏了。 第一步开始当然是选个linux系统版本,有环境才能玩,没环境你说个啥? 现在发行的linux系统很多redhat,suse,CentOS,fedora,ubuntu还有等等。下载它们的镜像文件,刚开始我建议在windows下装个VirtualBox,vmware有点臃肿了。对于初学者当然建议是装ubuntu了,安装简单中文支持的不错。
存在问题: 桌面系统windows为王,windows编程大有可为。 解决方案: 大家知道现在PC市场上,Windows、Linux、Mac基本占了百分之九十多,而在个人用户PC市场,Windows应用在目前的PC市场还是占据了绝大多数,根据StatCounter和Net Applications两家机构的最新统计,Windows系统仍然占据90%以上,因此在Windows上或者在Windows环境下开发应用程序还是非常普遍的。及时是Linux下开发软件的同时,也有不少人是在Windows环境下开发,所用工
Python是一种高级编程语言,它用于通用编程,由Guido van Rossum 在1991年首次发布。Python 的设计着重于代码的可读性。
4.Badusb内部结构 从这张图便可以了解到–Badusb和普通的U盘并没有什么两样,因此迷惑性极高,很容易攻击成功
嵌入式操作系统(EmbeddedSystem)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用VCD机或手机,甚至组成普通PC终端设备的键盘、鼠标、硬盘、Modem等均是由嵌入式处理器控制的。
USB的全称是Universal Serial Bus,通用串行总线。它的出现主要是为了简化个人计算机与外围设备的连接,增加易用性。USB支持热插拔,并且是即插即用的,另外,它还具有很强的可扩展性,传输速度也很快,这些特性使支持USB接口的电子设备更易用、更大众化。
身为一名涉猎领域广泛的码农,工作间中往往会出现同时使用超过一台电脑的场景,笔记本+台式机基本是常态,甚至会出现Win+MAC或者Win+LINUX这样的跨平台同时操作需求。那么最令人烦恼的莫过于切换使用电脑时需要来回切换键鼠,如果可以用桌面上的一套键鼠,实现对多台电脑的无缝操作切换,岂不是美滋滋。
本文介绍了如何通过Linux内核模块编程,实现USB设备驱动,特别是针对键盘、鼠标等输入设备的驱动开发。通过分析具体的实现过程,作者让读者了解如何通过Linux内核模块编程,实现USB设备驱动,特别是针对键盘、鼠标等输入设备的驱动开发。
menuconfig是一套图像化配置工具,由ncurses库提供软件支持。ncurses库提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面。 menuconfig本身的软件只负责提供menuconfig工作的这一套逻辑,比如说通过上下左右调整光标,Enter选中等,并不负责提供内容。menuconfig运行之后会读取Kconfig、读取/写入.config文件,Kconfig提供菜单项的内容,.config用来记录菜单项的选择值。 2.用法
本文记录了本人遇到的几个电脑硬件问题,以及尝试解决的过程。最终问题都算是解决了,不过也都算是瞎猫碰到死耗子吧,就当作给大家提供点思路吧。抛砖引玉,希望大家也能分享一些自己的案例。
一台机器往往有不同的零件组成,一台电脑也是由很多不同的硬件组成,这么多的硬件设备,就需要有 一个系统去代替我们管理好,这个就是操作系统。
领取专属 10元无门槛券
手把手带您无忧上云