fl2440内核自带按键驱动移植及hexdump命令

MATLAB使用贝叶斯网络bnt工具箱:使用手册详解 MATLAB使用贝叶斯bnt网络工具箱:使用手册详解 阅读详情


主机操作系统:Centos 6.7
交叉编译器版本:buildroot-2012.08 
开发板平台: FL2440 
Linux内核版本: linux-3.0 
开发模块: linux内核自带按键驱动移植



1、修改arch/arm/mach-s3c2440/mach-smdk2440.c添加button驱动

添加头文件
#include <linux/gpio.h>

#include <linux/gpio_keys.h>
#include <linux/input.h>




#if defined(CONFIG_KEYBOARD_GPIO)||defined(CONFIG_KEYBOARD_GPIO_MODULE)
static struct gpio_keys_button s3c2440_buttons[] = {
        {
            .gpio = S3C2410_GPF(0),
            .code = KEY_F1,
            .desc = "button 1",
            .active_low = 0,
        },
        {
            .gpio = S3C2410_GPF(2),
            .code = KEY_F2,
            .desc = "button 2",
            .active_low = 0,
        },
        {
            .gpio = S3C2410_GPF(3),
            .code = KEY_F3,
            .desc = "button 3",
            .active_low = 0,
        },
        {
            .gpio = S3C2410_GPF(4),
            .code = KEY_F4,
            .desc = "button 4",
            .active_low = 0,
        },
};


static struct gpio_keys_platform_data s3c2440_button_data = {
        .buttons    = s3c2440_buttons,
        .nbuttons   = ARRAY_SIZE(s3c2440_buttons),
};

static struct platform_device s3c2440_button_device = {
        .name = "gpio-keys",
        .id   = -1,
        .dev  = {
                    .platform_data  = &s3c2440_button_data,
                }
};
#endif
修改结构体smdk2440_devices[],添加button的驱动


306 static struct platform_device *smdk2440_devices[] __initdata = {
307     &s3c_device_ohci,
308     &s3c_device_lcd,
309     &s3c_device_wdt,
310     &s3c_device_i2c0,
311     &s3c_device_iis,
312     &s3c_device_dm9000,
313     &uda1340_codec,
314     &s3c24xx_uda134x,
315     &samsung_asoc_dma,
316     &s3c_device_timer,//add by fanmaolin 2017.4.23
317     &smdk2440_beeper_device,//add by fanmaolin 2017.4.23
318      &s3c2440_button_device,//add by fanmaolin 2017.4.29
319 };

修改smdk2440_machine_init函数,加入如下代码:
 for (i = 0; i < ARRAY_SIZE(s3c2440_buttons); i++) {
                     s3c_gpio_setpull(s3c2440_buttons[i].gpio, S3C_GPIO_PULL_UP);
                     s3c_gpio_cfgpin(s3c2440_buttons[i].gpio, S3C2410_GPIO_INPUT);
        }


2、在内核中添加对按键的支持

[fanmaolin@Centeros linux-3.0]$ make menuconfig

Device Drivers  --->

Input device support  --->

 <*>   Event interface

 [*]   Keyboards  --->

<*>   GPIO Buttons

  <*>   Polled GPIO buttons




3、make后在开发板上用hexdump命令进行测试


hexdump是Linux下的一个二进制文件查看工具,它可以将二进制文件转换为ASCII、八进制、十进制、十六进制格式进行查看。

指令所在路径:/usr/bin/hexdump

命令语法:

hexdump: [-bcCdovx] [-e fmt] [-f fmt_file] [-n length] [-s skip] [file ...]

命令参数:


参数

长参数

描叙

-b

 

每个字节显示为8进制。一行共16个字节,一行开始以十六进制显示偏移值

-c

 

每个字节显示为ASCII字符

-C

 

每个字节显示为16进制和相应的ASCII字符

-d

 

两个字节显示为10进制

-e

 

格式化输出

-f

 

Specify a file that contains one or more newline separated format strings.  Empty lines and lines whose first non-blank character is a hash mark (#) are ignored.

-n

 

只格式前n个长度的字符

-o

 

两个字节显示为8进制

-s

 

从偏移量开始输出

-v

 

The -v option causes hexdump to display all input data.  Without the -v option, any number of groups of output lines, which would be identical to the immediately preceding group of output lines

-x

 

双字节十六进制显示

 


由于gpio-keys驱动将按键事件映射到了/dev/input/event0设备节点上,因此,对该设备节点使用hexdump工具可以读取到按键事件。

我们在这里用hexdump测试按键



上面是依次按下4个按键所得到的结果,每按一个键,会出现4行数据,这是因为每按一次键包括键的按下和键的抬起两个动作,而每个动作结束后还会有一个同步事件发生,因此会出现4行数据。

        每行的倒数第四个数据到倒数第二数据分别对应input_event数据结构中的type ,code ,value

struct input_event {

   struct timeval time;

   __u16 type; //按键类型

   __u16 code; //按键代码

    __s32 value; //按键的值

};

  结合之前设置的linux,code分析可知,hexdump打印的各列数据含义如下:

第一列:行号

第2~5列:输入事件时间戳,即结构体中的time。

第6列:输入事件类型,即结构体中的type。

第7列:按键的键值,即结构体中的code。

第8列:按键的状态,即结构体中的value,1表示按下,0表示松开。


我们也可以用10进制显示





经过计算或直接看图可知按键代码

button1    003b    转换为10进制为  59 

button2   003c    转换为10进制为  60   以此类推 。。。


hexdump 以ASCII字符显示时,可以输出换行符,这个功能可以用来检查文件是Linux的换行符格式还是Widows格式换行符。

问题总结:


关于内核自带驱动的移植方法大同小异,套路都是修改make menuconfig,然后修改设备信息并添加,如果你不知道该怎么写,就去内核里找找,参考别人的代码,比如按键驱动,

[fanmaolin@Centeros ~]$ cd fl2440/kernel/linux-3.0/arch/arm/mach-s3c2440/mach-
mach-anubis.c      mach-gta02.c       mach-nexcoder.c    mach-osiris-dvs.c  mach-rx3715.c      mach-smdk2440.o
mach-at2440evb.c   mach-mini2440.c    mach-osiris.c      mach-rx1950.c      mach-smdk2440.c    

在这里你可以看到不同型号的开发板,
[fanmaolin@Centeros ~]$ vim fl2440/kernel/linux-3.0/arch/arm/mach-s3c2440/mach-mini2440.c
找到按键信息






对照着自己的原理图修改一下红色标记的部分放到mach-smdk2440.c就Ok了,我们要好好利用别人的资源哦。。。毕竟linux是开源的。


http://www.cnblogs.com/kerrycode/p/5077687.html    (hexdump命令)




某头部金融APP防护机制逆向实录:从反调试到TEE加密的全链路攻防拆解 金融APP安全防护体系深度破解分析 本文详细拆解了某头部金融APP的三重防御机制破解过程。首先通过Frida绕过反调试技术,包括ptrace自我绑定、TracerPid检测和debuggerd监控;随后针对12种Root检测方法(如su文件检查、Magisk检测等)进行环境伪装,通过Hook系统调用伪造安全环境;最后逆向分析TEE加密模块,解密关键接口参数。整个破解过程涉及静态分析、动态调试和代码注入技术,揭示了金融级APP安全防护的实现原理与突破方法(注:所有操作均获授权,仅用于安全研究)。 阅读详情

相关推荐

Logisim 原码一位乘法器设计 图解及代码(计算机组成原理)

Logisim 原码一位乘法器设计 图解及代码(计算机组成原理) 包对

醉蕤的博客 4379

使用hexdump工具追踪EXT4文件系统中的一个文件

昨天追踪EXT4文件系统的过程中出了点问题,就是找不到文件,于是试了一下追踪FAT32文件系统的,成功之后有了点信心,今天继续嗑EXT4文件系统,终于找到啦,记录一下。         《基于EXT4文件系统的数据恢复方法研究》(徐国天)         题为《Ext4文件系统架构分析》的系列博客         题为《 深入理解ext4(一)----extent区段》的博客         题为《ext4的Extent解析》的博客         题为《ext4_ext_find_extent解析》的博客

木牛的博客 806

NVIDIA vGPU三种授权方式(个人玩家版)

NVIDIA vGPU三种方式搭建授权服务器(个人玩家版)

wstc2689784536的博客 8439

linux命令hexdump,Linux中hexdump命令起什么作用呢?

摘要:下文讲述Linux中hexdump的功能说明,如下所示;hexdump命令功能:hexdump命令的功能:用于查看linux下二进制文件hexdump命令的语法格式:hexdump [参数] [文件]-----常用参数说明-------n length:只格式化输入文件的前length个字节-C:输出规范的十六进制和ASCII码-b:单字节八进制显示-c:单字节字符显示-d:双字节十进制显示...

weixin_33799059的博客 655

人脸关键点定义汇总

前几天看一份代码临时需要找49个人脸关键点位置定义的图片发现怎么百度都搜不到,最后幸好谷歌可以使用了就用谷歌搜到了。所以在这里汇总一下我所知道的人脸关键点的定义和相关的一点东西,以备不时之需。 68个关键点 最常用的工具是Dlib,网址:http://dlib.net/ dlib的68个特征点检测算法是ERT算法【1】 使用dlib检测68个特征点的python示例见:http://dlib.n...

程序媛 7642

PSM倾向匹配详细步骤和程序

目录1.安装psmatch2统计包。2.数据准备3.数据分析及命令解读4.结果解读4.1模型拟合结果,此处无太多实际意义。4.2试验组可匹配的观测概览,按照命令中设定的匹配规则,试验组有8例患者未能匹配到合适对照。4.3结果解读的重点应该是对stata新生成的中间变量的解读。4.4均衡性检验结果4.5匹配结果的图示化5.Stata命令汇总最后留下两个问题给大家思考:题目 试验设计中,匹配的目的在于确保干预效应估计是建立在可比个体之间的不同结果的基础上。最简单的匹配方式是将干预组和对照组中协变量值相同的两个个

平平淡淡,戒急用忍,一生学闭嘴。 5万+

hexdump调试小工具——获取event事件信息、键盘按键信息等

一个大佬给我发了一个hexdump调试小工具的源码,用于【获取event事件信息数据】,比命令【hexdump /dev/input/event0】好用多了!这里非常感谢这位大佬! 原文:如何读取Linux键值,输入子系统,key,dev/input/event,dev/event,C语言键盘【转】 一、使用方法 先说该工具使用方法吧,源码附在后面. 拷贝源码保存在xxx.c中 在Linux中将源码进行交叉编译,生成可执行文件read_event_key_value(名字看自己喜好了) arm-l

Ace's Blog 1471

【计算机组成原理实验】状态机实验

理解“状态机”概念,掌握“状态机”思想描述时序系统。通过下列三种基于D触发器的计数器结构,构建状态机的状态转移电路:环形计数器、扭环计数器和条件判断的扭环计数器。基于“状态机”原理,设计一个“交通灯”系统:控制红黄绿信号灯按照以下顺序循环点亮:“绿 黄 红 绿 ……”,红灯、绿灯和黄灯的亮灯持续时间可以通过拨码开关独立设置。红灯和绿灯是持续亮灯模式,黄灯则是闪烁亮灯模式。

Rover_jb的博客 1332

Linux 文件管理 : hexdump 命令详解

hexdump命令一般用来查看“二进制”文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件。 语法 hexdump [选项] [文件]... 选项 -n length 只格式化输入文件的前length个字节。 -C 输出规范的十六进制和ASCII码。 -b 单字节八进制显示。 -c 单字节字符显示。 -d 双字节十进制显示。 -o 双字节八进制显示。 -x 双字节十六进...

yexiang优快云的专栏 6389

2. Android_逆向的历史与发展

学完本节,希望你能够:了解 Android 逆向工程的发展历程,从早期 APK 破解到现代应用保护;入门先把这几类「在干啥」搞清楚,后面学脱壳、反反调试会顺很多。(反编译 APK 得到的类汇编代码,相当于程序的「菜谱」)就能绕过验证,到后来混淆、加固、反调试一起上,逆向难度越来越高。(第三节 什么是 CPU 指令集),帮你搞清楚「反汇编看到的那些指令」是从哪来的、和 Android 逆向有啥关系。有必要——先搞清「没加固时怎么玩」,再学脱壳和对抗,思路才顺。读起来费劲,但逻辑还在,耐心一点还能跟。

长沙火山 1390

【毕设救星】从0到1打造YOLOv8货架商品检测与可视化系统,让你的毕设脱颖而出

本文介绍了一个基于YOLOv8的货架商品检测系统毕设项目。系统采用YOLOv8模型进行商品检测,包含环境搭建、数据集准备、模型训练与验证等完整流程,并开发了可视化UI界面。项目聚焦智能零售应用场景,技术栈完整且易于实现,适合作为计算机视觉方向的毕业设计。文章详细指导了从数据标注、模型训练到界面开发的全过程,提供代码示例和实用建议,帮助学生快速完成毕设并提升答辩表现。

LXY_LOVE36的博客 103

Linux系统之hexdump详解

hexdump 是一个用于以十六进制、十进制、八进制或 ASCII 格式显示文件内容的工具。它通过自定义格式字符串,可以灵活地解析和展示二进制文件或文本文件的内容,常用于调试、分析文件结构或比较文件差异。

weixin_56303229的博客 1854

语义分割(Semantic Segmentation)近年发展综述

目标:为图像中每个像素分配一个语义类别标签(如“道路”、“行人”、“天空”),不区分同类实例。关键挑战精确边界恢复(高空间分辨率)全局上下文理解(大感受野)计算效率与精度平衡小样本/弱监督泛化语义分割的十年演进,是一条从专用→通用、封闭→开放、慢速→实时、像素→语义2015:FCN/U-Net 奠基;2018:DeepLabv3+/PSPNet 实现高精度;2020:HRNet+OCR 登顶竞赛;2021:SegFormer 开启 Transformer 新纪元;2023+

浩瀚之水的专栏 978

hexdump命令

hexdump命令使用

aolitianya的博客 727

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Centos下如果是二进制文件,编辑是文本,后缀是sh也无法执行

各位,这个是ftp下载编码引起的问题吗?

6rl的专栏 1732

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

树莓派wiringPi库gpio i2cdetect报错:gpio: Unable to find i2cdetect command: No such file or directory解决办法

如题,树莓派执行命令 gpio i2cdetect 报错: 其实已经正确安装了 wiringPi库, gpio -v gpio、 readall 等都能正确执行,但是gpio i2cdetect执行报错??? 解决办法: 需要安装i2c-tools这个工具,安装命令如下: sudo apt-get install i2c-tools 之后,就可以正常执行,gpio i2...

freemote的博客 1899

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

21.1半自动化安装centos6,centos7

红帽官方安装指导文档链接 说明:半自动化安装centos6,centos7实验步骤 实验1、半自动化安装centos6 实验2、半自动化安装centos7 实验3:制作centos6启动光盘ISO文件 实验4:制作centos6启动光盘ISO完整版 为何我正在写博客,html编辑器还能变,有在下午更新html模块的吗?更新模块不都是在夜晚12点吗???好不容易标注的颜色全都没了,心里怒骂csdn一...

csdn_immortal的博客 1075

迅为嵌入式linux驱动开发笔记(九)—输入子系统

一、什么是输入子系统 输入子系统是 Linux 专门做的一套框架来处理输入事件的,像鼠标,键盘,触摸屏这些都是输入设备。 但是这些输入设备的类型又都不是一样的,所以为了统一这些输入设备驱动标准应运而生的。 统一了以后,在节点 /dev/input 下面则是我们输入设备的节点,如下图所示: 这些节点对应的则是我们当前系统的输入设备 , 我们要怎么查看当前系统都有哪些输入设 备呢?我们可以使用命令来查看: cat /proc/bus/input/devices 那么我们要怎么确定哪个设备对应哪个节点呢?这里

梅山 1612

嵌入式linux系统移植(一)

内容: 交叉编译环境 bootloader功能子系统 内核核心子系统 文件系统子系统要点: 搭建交叉编译环境 bootloader的选择和移植 kernel的配置、编译、移植和调试 根文件系统的制作 移植的基本步骤: 确定目标机、主机的连接方式 安装交叉编译环境 搭建主机-目标机的数据传输通道 编写三大子系统 烧写测试 目标机和主机的连接方式...

a619861986的博客 493

Linux中hexdump命令

Linux中hexdump命令 简介 hexdump主要用来查看“二进制”文件的十六进制编码。*注意:它能够查看任何文件,不限于与二进制文件。* 语法 hexdump [选项] [文件]… 选项 -n length:格式化输出文件的前length个字节 -C:输出规范的十六进制和ASCII码 -b:单字节八进制显示 -c:单字节字符显示 -d:双字节十进制显示 -o:双字节八进制显示 -...

没有最好,只有更好! 4万+

hexdump(1) command

hexdump以ASCII、十进制、十六进制或八进制显示文件内容。

Doublelv 的博客专栏。 1万+

我使用过的Linux命令之hexdump - ”十六“进制查看器

我使用过的Linux命令之hexdump - ”十六“进制查看器 本文链接:http://codingstandards.iteye.com/blog/805778   (转载请注明出处)   用途说明 hexdump命令一般用来查看”二进制“文件的十六进制编码,但实际上它的用途不止如此,手册页上的说法是“ascii, decimal, hexadecimal, octal dum...

巨人站在肩膀上 1488

Linux_kernel移植rootfs10

busybox被称为嵌入式领域的瑞士军刀,体积小、功能强悍,它是一个集成了很多最常用的Linux命令和工具的软件,包含了常用的命令,如:cd、ls、cp、mv、echo。在uboot中的bootargs环境变量有过init=/linuxrc,linuxrc就是1号进程对应的程序,我们需要在etc目录中对其进行配置,仿照着busybox的源码。busybaox生成的命令都是busybox文件的符号链接文件,并且生成的命令并不全,是PC机的精简版。ext4是我们的手机、电脑、平板会经常使用的文件系统的类型。

qq_45882170的博客 1406

CentOS 6 各种启动文件损坏及修复

stage1 mbr的破坏和恢复清空mbr 前446字节dd if=/dev/zero of=/dev/sda bs=1 count=446如果没有挂载启动光盘,会显示这样如果启动前挂载了光盘,则重启之后自动从光驱启动了此时选择救援模式,Rescue installed system按照提示操作最后进入到shell修复mbr需要用到grub去修复磁盘,所以要先把根切到硬盘上chroot ...

aokaoqi1145的博客 457

Linux-hexdump命令调试event驱动—详解(13)

2018-01-03阅读6300 hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用 描述: 我们以event1为例,当我们insmod挂载了键盘驱动后,出现一个event1设备, 此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从来哪里来? 通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层hexdump 因为键盘驱动的input_handler 是:evdev_handler 所以键盘驱动的read函数是:ev...

nicholas_duan的博客 1230

linux 二进制文件显示方法 --- xxd hexdump od 用法大比拼。

-------------------------------------------------------------------------------- linux 二进制文件显示方法 ---  xxd hexdump od 用法大比拼。 最后发现: xxd -g1, hexdump -C 是最简单最清晰的用法。 显示很规范,与ultraedit 一致 其它用法仅做参考。 ----

hjjdebug的专栏 1万+
上一篇: fl2440蜂鸣器测试程序和strcmp()及struct input_event 还有perror()浅析
下一篇: linux脚本使用-------安装madplay及MPlayer播放器脚本分析及命令参数前加“横杠”的背景解释
fml1997
博客等级 码龄10年 30粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值