Linux
文章平均质量分 61
KuanShaw
以终为始 有迹可循
展开
-
wds - 输入子系统实现按键功能
输入子系统是所有I/O设备驱动的中间层Linux内核为了能够处理各种不同类型的输入设备,比如 触摸屏,鼠标 , 键盘 , 操纵杆 ,设计并实现了为驱动层程序的实现提供统一接口函数;为上层应用提供试图统一的抽象层 , 即是Linux 输入子系统 。软件实现步骤一、创建输入设备结构体static struct input_dev *_dev = NULL;_dev = input_allocate_device();步骤二、设置该设备将支持哪些事件、哪些按键原创 2021-10-01 17:49:53 · 236 阅读 · 0 评论 -
wds - 如何实现按键消抖
一个关于按键的道理 在按键被按下的时候,发生的信号不是一个完美的信号,而是会产生一些抖动,连续产生几个信号后,稳定下来,经过按键厂家们的测试,大概在10ms~20ms之后,按键信号会稳定下来。 消抖 其实就是消除这10ms~20ms期间的信号不稳定。 定时器延时消抖原理: 收到按键信号后,设定一个闹钟,闹钟将在10ms之后提醒我们进行处理按键信号。如果发生抖动,则在下一个按键信号修改闹钟的时间为这个时刻的10ms之后,以此类推。 最后按键信号稳定下来之后,只会触发原创 2021-10-01 17:49:07 · 211 阅读 · 0 评论 -
wds - 按键button 异步通知 signal实现
一、Signal小测试步骤一、编写测试代码#include <stdio.h>#include <signal.h>void my_signal_fun(int signum){static int cnt = 0;printf("signal = %d, %d times\n", signum, ++cnt);}int main(int argc, char **argv){ //绑定用户信号...原创 2021-10-01 17:48:20 · 151 阅读 · 0 评论 -
wds - 按键button 三种方式(查询、中断、poll)
按键实现的三种方式 查询——消耗CPU资源 中断——read会休眠,唤醒,但是不会返回 poll——需要指定超时时间 一、查询方式传出4个字节的数组,分别表示4个按键的当前状态static ssize_t _drv_read(struct file *file, char __user *buf, size_t size, loff_t *ppos){unsigned char state[4] = {0}int r...原创 2021-10-01 17:47:40 · 643 阅读 · 0 评论 -
wds - 2440挂载NFS
挂载NFS的步骤 1、需要实现2440与ubuntu之间的互联 2、在2440上挂载nfs,实现文件夹共享 硬件接线方式步骤步骤一、配置win10以太网口【注意】:这里的网段需要配置与WLAN不同。步骤二、配置虚拟机上的Ubuntu【注意】:这里需要选择主机与2440开发板网线所相连接的那个网卡;步骤三、配置共享文件夹在Ubuntu中,添加共享文件sudo mkdir -p /ku...原创 2021-10-01 17:46:50 · 259 阅读 · 0 评论 -
wds - 根文件系统
关系链 uboot的目的是启动内核 内核的目的是启动应用程序 应用程序的位置,在根文件系统中 什么是根文件系统 类似于win下的CDE盘,Linux将存储设备分为几个分区,不同分区存放不同类别的文件; 然而,Linux中有些必要的、基本的文件,它们合称为【根文件系统】 比如内核映像文件、第一个程序init,shell,依赖的库等 文件类型:用busybox制作根文件系统.原创 2021-10-01 17:40:53 · 178 阅读 · 0 评论 -
wds - 为什么要重定位呢?
芯片上电时,会将Nand中的前4K复制到SDRAM(硬件实现)从Nand 0地址开始运行什么要重定位呢?情形一:程序从Nand中启动 如果是从Nand中启动,Soc上电后硬件会自动把Nand的前4K代码拷贝到Soc内部的SRAM中,并从SRAM开始运行;(因为内部SRAM只有4K) 由于这个4K的限制,代码超过4K就无法运行,所以,需要Nand上的程序首要任务就是把Nand的代码全部拷贝的外部的64K的SDRAM中,然后在SDRAM中运行程序。 情形...原创 2021-10-01 17:39:03 · 181 阅读 · 0 评论 -
wds - 制作Linux内核
内核的终极目的——启动应用程序获得内核二进制文件步骤第一步:解压缩tar xjf linux-2.6.22.6.tar.bz2第二步:打补丁cd linux-2.6.22.6patch -p1 < ../linux-u2.6.22.6_jz2440.patch第三步:配置如果遇到“** No rule to make target 's3c2410_defconfig'. Stop.”这个问题,可以参考:make ..原创 2021-10-01 17:37:24 · 200 阅读 · 0 评论 -
wds - 第一个实验——点亮LED
1、先来认识几条基本的汇编指令 LDR——load读内存(4字节,32位) STR——store写内存 B——跳转 MOV——move赋值 2、编写汇编代码/* LED引脚:GPF4 */.text.global _start_start:/* TODO: 配置GPF4为输出,将0x100写到0x56000050 */ldr r1, =0x56000050ldr r0, =0x100str r0, [...原创 2021-10-01 17:24:41 · 140 阅读 · 0 评论 -
wds - uboot,自己做一个bootloader
bootloader的目标——从Nand中读出内核、启动内核一、uboot如何获得一个uboot文件【注意,uboot文件与patch不要在共享路径下进行解压和打补丁,否则可能会有问题】【如果出错的话,可以加上“sudo”试一试】步骤一:先在liunx环境下解压uboot开源源代码tar xjf u-boot-1.1.6.tar.bz2步骤二:然后打开发板的补丁patch -p1 < ../u-boot-1.1.6...原创 2021-09-28 22:19:09 · 146 阅读 · 0 评论 -
wds - JZ2440开发板新上手
开发板资源图一些注意事项 uboot可以烧写到nand和nor,裸板程序只能烧写到nand 启动选择开关——选择从nand启动,还是nor启动 烧写成功后需要将JTAG断开,因为JTAG中有复位引脚 注意你烧录的位置的nor还是nand,选择启动位置 软件目录链接:https://share.weiyun.com/AVlDR0RV 密码:8j3d7y1、仿真烧录的驱动(需要禁用签名)2、win下的of...原创 2021-09-28 21:24:43 · 503 阅读 · 0 评论