10 2017 档案

摘要:注册和注销时一定要选用 device 和 driver 父类: device_register(&mydev.dev); driver_register(&mydrv.driver); device_unregister(&mydev.dev); driver_unregister(&mydrv.d 阅读全文
posted @ 2017-10-31 17:57 LeeAaron 阅读(845) 评论(0) 推荐(0) 编辑
摘要:使用输入子系统实现的按键程序,每次按键后进入中断,就会报错如下: input_key_handler [ cut here ] WARNING: at drivers/gpio/gpiolib.c:101 gpio_ensure_requested+0x5c/0x118() autorequest 阅读全文
posted @ 2017-10-31 15:14 LeeAaron 阅读(1947) 评论(0) 推荐(0) 编辑
摘要:今天在J-Link的排线末端引出3.3v、SWDIO、SWCLK、GND,连接到stm32上,发现只能连接成功,不能读和写,出现下面错误: - ERROR: RAM check failed @ address 0x20000000. - ERROR: Write: 0x03020100 07060 阅读全文
posted @ 2017-10-30 17:33 LeeAaron 阅读(2350) 评论(0) 推荐(0) 编辑
摘要:最近在用stm32定时器控制步进电机,由于普通定时器不够用,只能把TIM1当普通定时器用,我随手就把普通定时器的代码搬过去。 编译下载后,发现步进电机转的很慢,和原先预计的不一样,第一反应是怀疑拷贝过来的代码有问题,核对了一边发现没问题,用逻辑分析仪测试了,发现真是定时器慢了,在检查代码,发现 TI 阅读全文
posted @ 2017-10-30 17:29 LeeAaron 阅读(2137) 评论(0) 推荐(0) 编辑
摘要:现象:在每次boot执行完跳转到APP时,都会跑飞 原因:在boot中使用到了USART和TIM,boot执行完没有关闭总中断 方法:在boot执行完跳转之前关闭中断,__disable_irq() ,在app中打开总中断,__enable_irq() 阅读全文
posted @ 2017-10-30 17:24 LeeAaron 阅读(2773) 评论(0) 推荐(1) 编辑
摘要:[root@iTOP-4412]# mount /dev/sda1 /mnt/udisk/ [root@iTOP-4412]# insmod /mnt/udisk/linux/hello.ko [ 98.485131] Hello World enter! [root@iTOP-4412]# [ro 阅读全文
posted @ 2017-10-30 17:02 LeeAaron 阅读(1012) 评论(0) 推荐(1) 编辑
摘要:插上U盘 [ 2407.650440] usb 1-3.3: new high speed USB device number 7 using s5p-ehci [ 2407.887332] usb 1-3.3: New USB device found, idVendor=0951, idProd 阅读全文
posted @ 2017-10-30 16:30 LeeAaron 阅读(5385) 评论(0) 推荐(0) 编辑
摘要:'init_MUTEX' 在新版本系统上已被淘汰 改用sema_init(sem, 1); 阅读全文
posted @ 2017-10-30 16:29 LeeAaron 阅读(407) 评论(0) 推荐(0) 编辑
摘要:单片机程序如果有IAP功能的话,就会生成两个hex文件,一个是Boot,一个是App,如果给让生产烧录两个文件,就会降低生产效率,所以在烧录前最好将两个文件合并成一个文件,烧录一次即可,合并方法如下: 1、创建一个新的文本文档; 2、在文档中输入以下内容: copy /b .\Boot\Exe\Bo 阅读全文
posted @ 2017-10-30 16:00 LeeAaron 阅读(3538) 评论(0) 推荐(0) 编辑
摘要:递归给人的感觉总是很高大上,个人感觉再多的理论知识都不如一个完美的例子,不喜勿喷。 网上看到一个题目:有一堆桃子,猴子每天吃一半后再多吃一个,到第5天时剩余一个桃子,求第一天的个数。 前一天 = ( 后一天 + 1 ) * 2; 例如:第4天 = ( 第5天 + 1 ) * 2 = ( 1 + 1) 阅读全文
posted @ 2017-10-30 15:49 LeeAaron 阅读(197) 评论(0) 推荐(0) 编辑
摘要:三个源文件:main.c sum.c show.c Makefile大体上有两种写法: (第一种) (第二种) 下面列举以上两种的编译过程: (第一种) cc -c -o main.o main.c cc -c -o sum.o sum.c cc -c -o show.o show.c gcc ma 阅读全文
posted @ 2017-10-30 15:46 LeeAaron 阅读(745) 评论(0) 推荐(0) 编辑
摘要:假如不知道signal的函数原型,考虑child_handler函数的参数从哪里来? 1、无参无返回值的函数名作为另一个函数的参数 运行结果:Hello World! 2、有参有返回值的函数名作为另一个函数的参数 #include <stdio.h> //定义handler是一个函数指针类型,有两个 阅读全文
posted @ 2017-10-30 15:42 LeeAaron 阅读(2805) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/yicao821/article/details/52314578 一、Flash兼容 bootable/bootloader/preloader/tools/emigen/MT6735/MemoryDeviceList_MT6735.xls boot 阅读全文
posted @ 2017-10-30 15:37 LeeAaron 阅读(1448) 评论(0) 推荐(0) 编辑
摘要:子进程创建以后,会继承父进程的全局变量,但是继承的是父进程刚开始全局变量的值。 但是子进程创建以后,子进程修改了变量,或者父进程修改了全局变量的值,父子进程就互相都不影响了。 阅读全文
posted @ 2017-10-30 15:32 LeeAaron 阅读(1682) 评论(0) 推荐(0) 编辑
摘要:STM32官方提供的库文件中,HSE(外部高速时钟)默认为8MHz,最高主频为8*9=72MHz,如果将HSE变为12MHz,不修改库文件的话,最高主频则变为12*9=108MHz,最典型的问题就是USART可以通信,但是接收到的数据与发送的不一致,并且找不到啥原因,害的我瞎折腾了一整天,下面列举需 阅读全文
posted @ 2017-10-30 15:23 LeeAaron 阅读(4007) 评论(0) 推荐(0) 编辑
摘要:平台总线(platform_bus)的需求来源? 随着soc的升级,S3C2440->S3C6410->S5PV210->4412,以前的程序就得重新写一遍,做着大量的重复工作, 人们为了提高效率,发现控制器的操作逻辑(方法)是一样的,只有寄存器地址不一样,如果将与硬件有关的 代码(platform 阅读全文
posted @ 2017-10-27 11:08 LeeAaron 阅读(6283) 评论(0) 推荐(2) 编辑
摘要:多路复用都是在阻塞模式下有效! linux中的系统调用函数默认都是阻塞模式,例如应用层读不到驱动层的数据时,就会阻塞等待,直到有数据可读为止。 问题:在一个进程中,同时打开了两个或者两个以上的文件,读第一个文件时没有数据阻塞了。程序就停止在此位置等待,可是第二个文件有数据可读了,数据读不到怎么办? 阅读全文
posted @ 2017-10-27 10:01 LeeAaron 阅读(492) 评论(0) 推荐(0) 编辑
摘要:linux应用层的函数默认是阻塞型的,但是要想真正实现阻塞,还需要驱动的支持才行。 例:open()、scanf()、fgets()、read()、accept() 等 1、默认情形,驱动层不实现阻塞和非阻塞 这种情况下,应用层的 read 会一直不停的读按键值,使用 top 指令查看,发现 cpu 阅读全文
posted @ 2017-10-26 14:30 LeeAaron 阅读(1309) 评论(0) 推荐(1) 编辑
摘要:为什么使用中断下半部? 中断执行的原则是要以最快的速度执行完,而且期间不能延时和休眠! 可是现实中,中断中可能没办法很快的处理完需要做的事,或者必须用到延时和休眠,因此引入了中断下半部。 中断中处理紧急事务,其余的交给中断下半部处理。 怎样将代码合理有效的分配给中断和中断下半部?(以后发现新的再添加 阅读全文
posted @ 2017-10-26 11:05 LeeAaron 阅读(982) 评论(0) 推荐(0) 编辑
摘要:中断处理程序中不能延时、休眠之类的,一定要最快速、高效的执行完。 // 功能:申请中断 // 参数1:中断号码,通过宏 IRA_EINT(x) 获取 // 参数2:中断的处理函数,填函数名 // 参数3:中断的出发方式(下面的宏在不同内核中是不同的) #define IRQF_TRIGGER_NON 阅读全文
posted @ 2017-10-26 10:14 LeeAaron 阅读(1797) 评论(0) 推荐(0) 编辑
摘要:内核版本:3.0.8 open、close、read、write、ioctl等等都是类似。 驱动层: // 申请设备号,创建文件操作结构体 struct file_operations fops static inline int register_chrdev(unsigned int major 阅读全文
posted @ 2017-10-25 14:58 LeeAaron 阅读(4051) 评论(0) 推荐(0) 编辑
摘要:在裸奔代码中,如果要控制gpio,直接控制gpio寄存器地址即可; 在linux系统中,所有操作的地址都是虚拟地址,都是由linux内核去管理,所以需要将物理地址转换成内核可识别的虚拟地址。 1、ioremap 和 iounmap // 功能:将物理地址映射为虚拟地址 // 参数1:需要映射的物理地 阅读全文
posted @ 2017-10-25 11:07 LeeAaron 阅读(7418) 评论(0) 推荐(0) 编辑
摘要:// 申请IO资源 int gpio_request(unsigned gpio, const char *label); // 释放IO资源 void gpio_free(unsigned gpio); // 将IO引脚配置为输入 int gpio_direction_input(unsigned 阅读全文
posted @ 2017-10-23 15:49 LeeAaron 阅读(646) 评论(0) 推荐(0) 编辑
摘要:1、hello_drv.c (1) 初始化和卸载函数的格式是固定的,函数名自定义 (2) printk是内核的打印函数,用法与printf一致 (3) MODULE_LICENSE:模块代码支持开源协议(必须包含此项) MODULE_AUTHOR:模块作者 MODULE_DESCRIPTION:模块 阅读全文
posted @ 2017-10-23 11:10 LeeAaron 阅读(286) 评论(0) 推荐(0) 编辑
摘要:Linux内核源码官方下载地址: https://www.kernel.org/pub/linux/kernel/ 声明:下面每一步中的“pwd”指令都是为了看清楚当前的目录,没有其他实际意义。 系统:ubuntu 1、在官方下载自己需要的内核版本 例如:linux-3.0.8.tar.bz2 2、 阅读全文
posted @ 2017-10-20 17:10 LeeAaron 阅读(229) 评论(0) 推荐(0) 编辑
摘要:交叉编译工具链下载地址: 链接:http://pan.baidu.com/s/1dE7P9rb 密码:300i 声明:下面每一步中的“pwd”指令都是为了看清楚当前的目录,没有其他实际意义。 系统:ubuntu 1、建议在用户根目录下创建一个tool文件夹(为了方便管理,以后可以将所有工具的压缩包存 阅读全文
posted @ 2017-10-20 14:22 LeeAaron 阅读(4521) 评论(0) 推荐(0) 编辑
摘要:输入指令时一定要注意当前路径 1、编译之前需要安装JDK7,并配置JAVA环境变量。 xxx@build:~/RK3288$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 xxx@build:~/RK3288$ export PATH=$JAV 阅读全文
posted @ 2017-10-19 10:46 LeeAaron 阅读(2429) 评论(1) 推荐(0) 编辑
摘要:模块以Email为例: 1、执行build目录下的脚本文件envsetup.sh $ source ./build/envsetup.sh 2、选择版本(user为用户版本 eng为工程版本) $ lunch You're building on Linux Lunch menu... pick a 阅读全文
posted @ 2017-10-18 16:56 LeeAaron 阅读(929) 评论(0) 推荐(0) 编辑
摘要:1、打开 xxx@ubuntu:~$ sudo vim /etc/resolvconf/resolv.conf.d/base 2、输入以下DNS,保存退出。 nameserver 8.8.8.8 nameserver 114.114.114.114 3、更新resolv.conf文件 xxx@ubu 阅读全文
posted @ 2017-10-16 22:00 LeeAaron 阅读(3044) 评论(2) 推荐(0) 编辑
摘要:1、打开配置文件: $ sudo vim /etc/network/interfaces 2、修改文件内容: # This file describes the network interfaces available on your system # and how to activate the 阅读全文
posted @ 2017-10-10 17:22 LeeAaron 阅读(368) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示