- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 Linux中断方式按键驱动
0.0上一个按键驱动使用查询方式,占用cpu为99%,根本不实用,因此使用中断方式按键驱动。0.1驱动功能:记录按键按下次数并发往用户端。读取按键状态时,如果按键未按下则休眠进程,按键按下则进入中断服务函数,在isr中唤醒进程并将对应按键按下的次数加1.一、宏定义设备名称和主设备号,定义中断描述结构体及初始化结构体参数,按键次数静态全局数组,按键状态变量(0表示未按下,1表示按下),注...
2018-12-14 11:17:17
1332
2
原创 笔记本电脑、虚拟机与开发板三者互ping,并在开发板挂载nfs
一、笔记本网络设置1. wifi已经连接网络,在命令窗口查看ip,无线网卡ip为192.168.43.1122. 必须设置有线网卡ip与无线网卡ip不在同一网段 设置为192.168.42.11,如图:3. 命令窗口查看ip,已经设置成功,如下图:二、Ubuntu虚拟机设置1.选择桥接模式,由于笔记本用了wifi网卡连接网络,虚拟机要使用本地有线网卡桥接...
2018-12-08 17:14:51
819
原创 解决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如下步骤并不管用...
2018-12-08 11:07:59
36692
4
原创 解决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...
2018-12-06 16:12:45
1220
1
转载 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...
2018-12-03 15:16:12
797
转载 对比理解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...
2018-11-30 11:35:20
1894
转载 汇编中.word的具体用途
原文地址:http://sdnydubing.blog.163.com/blog/static/13747057020112904958830/_undefined_instruction: .word undefined_instruction_undefined_instruction是一个标号,处理到这里时,asm会把undefined_instruction的值按16bit...
2018-11-28 21:45:12
5265
1
原创 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...
2018-11-28 11:51:25
1311
2
原创 ARM920T_内核MMU与cache应用分析
一、cache分类及应用场合cache是内存和CPU之间的高速缓冲存储器,其分为icache(指令缓存)和dcache(数据缓存)。如果开启了cache,当CPU运行时会将正在运行的指令地址附近的指令或者数据调入cache,这样当运行下一条指令或用到下一条数据时直接从cache中查找,如果查找不到再访问内存,以此加快CPU执行速度。icache可以直接开启,而dcache需要开启MMU之后才能...
2018-11-25 10:32:28
1254
原创 S3C2440代码重定位分析
一、NAND启动此处NAND大小为256M,当从NAND启动时,0地址为片内SRAM,NOR不可见。由于NAND不支持XIP,所以在启动时,硬件自动复制NAND的前4K内容到片内4K的SRAM,若bin文件小于4K,则可以直接在SRAM上运行,若bin文件大于4K,片内SRAM已经满足不了需求,我们需要做的是利用这前4K的代码,完成将所有代码重定位至SDRAM(位于BANK6地址0X30000...
2018-11-10 12:26:40
419
2
原创 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...
2018-11-06 20:41:18
697
1
原创 ARM920T_内核 und与svc异常模式分析
一、undefined异常模式0. 当执行未定义指令时进入und模式,进入过程:CPU跳至0x4地址执行代码,自动保存CPSR寄存器值至SPSR寄存器,我们要做的就是在0x4处跳转到另一段代码,用这段代码完成现场保护,以及异常处理,最后退出异常。此处使用NOR启动,并且在0x0处执行reset时已经将NOR中的所有代码重定位至SDRAM中,所以跳转时不能用相对跳转(b和bl),必须使用绝对...
2018-11-04 17:25:45
1138
原创 解决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个字节的情况,不利于直接操作堆栈地址,如下图:...
2018-10-27 15:30:51
11434
原创 C语言动态分配多维数组
分析两种动态分配二位数组的方法,其原理一致。0. 动态分配一维数组int a[rows]#include <stdlib.h>int main{void}{ ... int *a = (int *)malloc(rows * sizeof(int));//分配一段内存,存放rows个int型的数据 ...}1. 动态分配内容不一...
2018-10-23 09:03:48
1588
转载 C语言指针详解
--------------------- 作者:constantine___ 来源:优快云 原文:https://blog.youkuaiyun.com/constantin_/article/details/79575638 --------------------- 前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解...
2018-10-18 09:54:01
220
原创 解决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...
2018-10-12 14:37:49
17892
3
转载 #、##、__VA_ARGS__和##__VA_ARGS__的作用
一、#用来把参数转换成字符串例子一:#define P(A) printf("%s:%d\n",#A,A);int main(int argc, char **argv){ int a = 1, b = 2; P(a); P(b); P(a+b); system("pause");}输出为:例子二...
2018-10-11 21:20:04
3406
原创 C语言strstr函数
包含文件 string.hchar *strstr(char *str1, const char *str2);功能:在字符串str1中查找str2,判断str2是否是str1的子串,若是则返回str2首次出现的地址,不是则返回NULLstr1 被查找的对象str2 要查找的对象...
2018-10-11 19:42:05
2100
原创 uCOSIII概览
一、 任务管理任务控制块OS_TCB中包含了任务栈顶,栈深,下个任务控制块,任务名,任务栈基地址,时间戳,时间片,信号量数目等信息。1.任务创建:定义任务控制块--定义任务优先级--定义任务栈大小--定义任务栈数组--定义任务函数OSTaskCreate()函数创建任务。2. 任务删除:OSTaskDel();3. 任务调度:OSSched();延时函数中包含任务调度,运行任务...
2018-10-07 21:09:37
385
原创 uCOSIII_消息队列-消息传递实验分析
实验内容:创建4个任务:static void AppTaskStart(void *p_arg);static void main_task(void *p_arg);static void Keyprocess_task (void *p_arg);static void msgdis_task (void *p_arg);两个消息队列:stati...
2018-09-27 20:32:33
2081
原创 设置KEIL MDK 编译完成生成 bin 文件
1. 点击Options for Target2. 点击User3. After Buid/Rebuid 选项下的Run#1 打上勾,在后一格添加一行代码,此代码的功能为将Objects下的project.axf文件转换为project.bin文件输出至Objects文件夹下。其中.axf文件为keil编译过程产生的文件。fromelf --bin --output Obje...
2018-09-08 20:53:44
2720
1
原创 STM32F103_TIM3输出PWM波实现全彩呼吸灯
一、LED灯1.必须是全彩RGB_LED灯2. 通过不同的红绿蓝三色LED混合出256种颜色,同电脑画图里的调色RGB888,每个灯各用8位控制其亮度,其中全灭表示黑色。二、1. LED亮度等级表/* LED亮度等级 PWM表,指数曲线 ,此表使用工程目录下的python脚本index_wave.py生成*/const uint16_t indexWave[] = {...
2018-09-04 17:45:34
11170
31
原创 STM32F103_SD卡FatFs文件系统移植
一、下载解压官方源码压缩包1 添加下列文件至项目列表并包含头文件。二、配置函数接口主要有以下几个文件 : diskio.c ffconf.h1 官方源码已经有写好的代码框架,只需要添加ATA(指SD卡)部分即可(1) 获取设备状态部分,由于SD卡起始状态特别多,此处默认检测到SD卡设备。 case ATA : //默认设备检测成功 ...
2018-08-30 15:42:10
6784
1
原创 STM32F103_通用定时器“输入捕获”测量输入脉冲宽度
一、硬件设计 选用通用定时器TIM5的CH1,其输入管脚为PA0,在开发板上PA0连接按键,当按键按下输入高电平,按键松开输入低电平,实验测量高电平的脉冲宽度。二、软件设计 1. 配置中断向量表的优先级 因只使用一个中断 TIM5_IRQn,抢占优先级与子优先级可随意配置。 代码如下:static void Gener...
2018-08-22 22:23:44
11087
4
原创 STM32F103_ADC单通道电压采集中断读取初始化配置步骤
1. 初始化ADC所用的GPIO。2. 利用ADC_InitTypeDef 配置ADC相关参数,并初始化。3. 配置ADC时钟,选择合适的分频因数。4. 设置ADC通道转换顺序与采样时间。5. 配置中断向量表,在ADC中断函数中读取采样数据。6. 使能ADC.7. 使能软件触发ADC转换。...
2018-08-18 19:23:10
4864
原创 小端模式与大端模式存储数据
1、大端模式 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节,保存在内存的高地址中。 例子: 汉字 “液”字的国标码为:D2BA(2个字节),D2为高字节,BA为低字节。 其为大端模式存储。2、小端模式 小端模式,是指数据的低字节保存在内存的低地址中,而数据的高字节,保存在内存的高地址中。 例子: 汉字 “液”字的国标码为:D2BA(2个字节),D2...
2018-08-12 13:06:07
1151
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人