Linux中断方式按键驱动 0.0上一个按键驱动使用查询方式,占用cpu为99%,根本不实用,因此使用中断方式按键驱动。0.1驱动功能:记录按键按下次数并发往用户端。读取按键状态时,如果按键未按下则休眠进程,按键按下则进入中断服务函数,在isr中唤醒进程并将对应按键按下的次数加1.一、宏定义设备名称和主设备号,定义中断描述结构体及初始化结构体参数,按键次数静态全局数组,按键状态变量(0表示未按下,1表示按下),注...
笔记本电脑、虚拟机与开发板三者互ping,并在开发板挂载nfs 一、笔记本网络设置1. wifi已经连接网络,在命令窗口查看ip,无线网卡ip为192.168.43.1122. 必须设置有线网卡ip与无线网卡ip不在同一网段 设置为192.168.42.11,如图:3. 命令窗口查看ip,已经设置成功,如下图:二、Ubuntu虚拟机设置1.选择桥接模式,由于笔记本用了wifi网卡连接网络,虚拟机要使用本地有线网卡桥接...
解决Ubuntu下make error:fatal error: zlib.h: No such file or directory 安装jffs2文件系统映像工具时,make后出现以下错误: fatal error: zlib.h: No such file or directory原因是缺少zlib.h文件,需要安装zlib命令:sudo apt-get install zlib1g-dev如下步骤并不管用...
解决u-boot编译permission denied 1.今天编译u-boot时出现permission denied错误:u-boot-1.1.6$ make smdk2410_configu-·boot-1.1.6/mkconfig: Permission denied [smdk2410_config] Error 127后经查找发现是文件权限问题,因为我在Windows下解压u-boot压缩文件,导致文件权限混乱,改到Ubunt...
vmlinux uImage与zImage的区别 原文链接:https://www.cnblogs.com/pigeon84/articles/2212404.html从下面的内核编译过程,可以看出vmlinux, arch/arm/boot/compressed/vmlinux, arch/arm/boot/Image, arch/arm/boot/zImage 之间的区别LD vmlinux SYSMAP Sy...
对比理解adr,ldr指令 很多人在写简单的裸机代码或分析uboot时,常常遇到adr ldr指令。却分不清这2者的区别,今天就来谈谈adr与ldr指令。参照韦老师的代码和Makefile写了test_adr.S:.text.globl _start_start: ldr r0, test adr r0, test ldr r0, =test noptest:nop...
汇编中.word的具体用途 原文地址:http://sdnydubing.blog.163.com/blog/static/13747057020112904958830/_undefined_instruction: .word undefined_instruction_undefined_instruction是一个标号,处理到这里时,asm会把undefined_instruction的值按16bit...
C语言数据段总结 昨天晚上对.rodata和.data的概念比较模糊,今天特意做了实验具体分析一下,在此总结。一、测试代码 const int g_test1 =0x123; unsigned int g_test2 = 0xabc; char g_test3[] = "asdfghjkl"; char g_test4[10]; char *g_test = "zz...
ARM920T_内核MMU与cache应用分析 一、cache分类及应用场合cache是内存和CPU之间的高速缓冲存储器,其分为icache(指令缓存)和dcache(数据缓存)。如果开启了cache,当CPU运行时会将正在运行的指令地址附近的指令或者数据调入cache,这样当运行下一条指令或用到下一条数据时直接从cache中查找,如果查找不到再访问内存,以此加快CPU执行速度。icache可以直接开启,而dcache需要开启MMU之后才能...
S3C2440代码重定位分析 一、NAND启动此处NAND大小为256M,当从NAND启动时,0地址为片内SRAM,NOR不可见。由于NAND不支持XIP,所以在启动时,硬件自动复制NAND的前4K内容到片内4K的SRAM,若bin文件小于4K,则可以直接在SRAM上运行,若bin文件大于4K,片内SRAM已经满足不了需求,我们需要做的是利用这前4K的代码,完成将所有代码重定位至SDRAM(位于BANK6地址0X30000...
C语言函数指针数组在ARM中断中的应用 一、函数指针的声明与初始化...int max_fun(int a, int b);/*函数指针的声明,声明了两个形参都为int类型,返回值为int类型的函数指针*/int (*fp)(int, int);/*指针初始化*/fp = max_fun; //fp = &max_fun 也正确/*函数指针初始化后的调用*/fp(a,b); //(*fp...
ARM920T_内核 und与svc异常模式分析 一、undefined异常模式0. 当执行未定义指令时进入und模式,进入过程:CPU跳至0x4地址执行代码,自动保存CPSR寄存器值至SPSR寄存器,我们要做的就是在0x4处跳转到另一段代码,用这段代码完成现场保护,以及异常处理,最后退出异常。此处使用NOR启动,并且在0x0处执行reset时已经将NOR中的所有代码重定位至SDRAM中,所以跳转时不能用相对跳转(b和bl),必须使用绝对...
解决Ubuntu编译error:fatal error: sys/cdefs.h: No such file or directory 64位的Ubuntu如果执行X86平台32位编译,gcc -m32 -o x x.c会报错:fatal error: sys/cdefs.h: No such file or directory解决办法:可以执行sudo apt-get install libc6-dev-i386语句联网安装32位库文件。64位下直接编译会出现指针占8个字节的情况,不利于直接操作堆栈地址,如下图:...
C语言动态分配多维数组 分析两种动态分配二位数组的方法,其原理一致。0. 动态分配一维数组int a[rows]#include <stdlib.h>int main{void}{ ... int *a = (int *)malloc(rows * sizeof(int));//分配一段内存,存放rows个int型的数据 ...}1. 动态分配内容不一...
C语言指针详解 --------------------- 作者:constantine___ 来源:CSDN 原文:https://blog.csdn.net/constantin_/article/details/79575638 --------------------- 前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解...
解决keil_mdk编译error: #3092: anonymous unions are only supported in --gnu mode extern struct STRUCT_USARTx_Fram{ char Data_RX_BUF[RX_BUF_MAX_LEN]; union { __IO uint16_t InfAll; struct { __IO uint16_t FramL...
#、##、__VA_ARGS__和##__VA_ARGS__的作用 一、#用来把参数转换成字符串例子一:#define P(A) printf("%s:%d",#A,A);int main(int argc, char **argv){ int a = 1, b = 2; P(a); P(b); P(a+b); system("pause");}输出为:例子二...
C语言strstr函数 包含文件 string.hchar *strstr(char *str1, const char *str2);功能:在字符串str1中查找str2,判断str2是否是str1的子串,若是则返回str2首次出现的地址,不是则返回NULLstr1 被查找的对象str2 要查找的对象...