
嵌入式系统
_Archie
了解够多,看的才远!
展开
-
stm32F437 与 me909 通过 usb 通信调试
概述还没有找到stm32 与 华为通信模块通过USB通信的例子,本贴直播调试usb host的全过程,如果有搞过的请跟帖帮忙分析一下。已经知道的东西1.华为me909 usb属于usb device,是cdc类。 2.stm32F4具备usb host功能,可以使用官方提供的usb库进行设计,最新的usb库为2.2.0版本。3.移植了usb hid的例子,stm32F4作为host 与鼠标进行通原创 2016-03-09 16:16:16 · 5578 阅读 · 3 评论 -
linux驱动程序之触摸屏(涵盖了常用的事件编码)
作为一个输入子系统,步骤依然是:1、分配2、设置3、注册4、硬件相关的操作触摸屏的使用过程:1、按下,产生中断2、在中断处理程序里面启动ADC转换XY坐标3、ADC结束,产生中断。4、在ADC处理函数里面上报input_event,启动定时器5、定时器时间到,再次启动ADC(处理长按,滑动)6、等待松开原创 2014-12-30 16:08:08 · 3126 阅读 · 1 评论 -
存储管理器实验 嵌入式学习<s3c2440>
cpu访问0x30000000地址上的数据时,只需要以下汇编指令:MOV R1,#0x30000000LDR R0 ,R1LDR这条指令硬件上操作包括这写内容:发出片选信号发出bank选择信号发出列地址,行地址信号这些操作都是由2440中的存储管理器完成的#######################################################原创 2014-12-13 22:37:15 · 1625 阅读 · 0 评论 -
中断控制器学习 <s3c2440>
arm 体系cpu的七种工作模式:用户模式(usr)快速中断模式中断模式 是一种异常管理模式数据访问终止模式 是一种异常系统模式未定义指令中止模式工作模式之间:不同的寄存器(寄存器副本) 同一条指令,在不同模式会对应不同的寄存器。不同的权限 触发条件=====================================================原创 2014-12-14 18:23:40 · 1141 阅读 · 0 评论 -
linux驱动之LCD
以下是写LCD驱动的框架:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in原创 2014-12-27 22:21:31 · 1700 阅读 · 0 评论 -
配置eclipse linux嵌入式 集成开发环境(编译部分)详细
开发环境:ubuntu12.04(64位)eclipse (c/c++)luna注意:本文主要讲将eclipse配置好编译器。 远程调试的部分请看另一篇帖子 eclipse 调试环境配置。我的arm-linux-gcc 路径是:/opt/EmbedSky/4.3.3/bin/arm-linux-gcc (什么?怎么看arm-linux-gcc的路径?? 你可以使用 whic原创 2014-12-11 21:44:40 · 4108 阅读 · 0 评论 -
eclipse linux驱动交叉调试环境的制作
知识背景:菜鸟阶段,一心学习linux驱动开发,只是现在还什么都不会。。 特别信仰 “工欲善其事,必先利其器”。环境:ubuntu 12.04 arm-linux-gccstep1:安装eclipse相信你已经会了,嵌入式开发下载 c/c++版本的exlipse,版本用最新的吧,但也不是绝对的。我用的luna版本。点击这个下载eclipse,解压即可,但是安装时需要安原创 2014-12-10 21:14:16 · 2652 阅读 · 0 评论 -
linux驱动之分离分层的概念
bus_drv_dev模型:简单说明:这张图就是全部了。device是与硬件相关的代码,driver是比较稳定的驱动代码。当修改硬件部分的时候,只修改dev里面的东西。====================================================================================================原创 2014-12-26 20:54:01 · 2654 阅读 · 1 评论 -
linux驱动程序之基于输入子系统写驱动程序
步骤:分配input_dev结构体设置这个结构体注册硬件相关操作原创 2014-12-26 19:32:04 · 1432 阅读 · 0 评论 -
linux驱动之输入子系统概念
以前的博文介绍linux驱动程序的时候一直遵循以下步骤:确定主设备号定义一个file_operation结构,填充函数如:open write read poll等设备注册入口函数出口函数以上即是字符设备的框架。------------------------------------------------------------------------------------原创 2014-12-24 23:00:20 · 2011 阅读 · 0 评论 -
eclipse在linux的安装以及在dash中的显示(c/c++版本)
环境:ubuntu 12.04工欲善其事,必先利其器。vim,emacs是高负率用的,我等屌丝还是用点稍微傻瓜一点的吧。效率第一!原创 2014-12-10 20:38:58 · 2427 阅读 · 0 评论 -
lcd控制器 笔记前序<s3c2440>
2440LCD控制器基本概念 bpp(bit per pixel) 如果是320*240像素的屏幕,16bpp,则内存占 240*2 字节 *320行基本操作步骤:打开背光时序设置在framebuffer写数据对于8bpp的LCD来说:8bpp时 framebuffer里面存放的是 调色板的索引值。调色板里面存储的是256种颜色的色值。原创 2014-12-14 22:57:39 · 1207 阅读 · 0 评论 -
linux驱动之USB驱动程序框架
USB驱动程序框架:app:----------------------------------------------------------------------- USB设备驱动程序内核 -------------------------------------------------------原创 2015-01-01 10:37:01 · 4245 阅读 · 0 评论 -
linux驱动之块设备驱动框架
本文主要介绍了 linux块设备驱动的框架。并且以内存为例子,讲解如何书写块设备驱动程序原创 2015-01-01 22:24:32 · 1660 阅读 · 0 评论 -
物联网网关使用中国移动物联卡
背景以前我的物联网网关使用4G卡都是中国移动、中国联通的普通卡,也就是咱们手机使用的4G卡,后来用中国移动的互联卡就悲剧了。发现通过华为ME909S模块进行AT指令交互,每秒查询一次注册状态(AT+CREG?),发现: 指令返回 值 保持时间 +CREG: 0,1 8s +CREG: 0,2 7s +CREG: 0,0 1s也就是模块在漫游、搜索网络、原创 2016-07-25 18:34:42 · 19355 阅读 · 0 评论 -
一步步编写跨平台串口调试助手
开发平台:Qt5.4.1 github:https://github.com/tianzhihen/youCanPrintf-serial.git原创 2015-09-14 11:09:39 · 2436 阅读 · 0 评论 -
one-wire 调试单总线 ds2781
调试ds2781的时候可谓艰难啊,但是调完了一个模拟的iic时序之后单总线的时序竟然迎刃而解了。下面总结一下调试的过程: 我使用ds2781的快速模式(OVD高电平) 1. 首先要有一个芯片的datasheet 这里写链接内容 2. 其次测试设备:示波器,逻辑分析仪 3. 根据手册上的时序写代码进行调试 时隙 复位时序 关于与复位时序,手册说明: 与DS278原创 2015-08-27 16:22:22 · 8480 阅读 · 4 评论 -
sqlite的事务和锁,很透彻的讲解 【转】
原文:sqlite的事务和锁 http://3y.uu456.com/bp-877d38906bec097sf46se240-1.html事务事务定义了一组SQL命令的边界,这组命令或者作为一个整体被全部执行,或者都不执行。事务的典型实例是转帐。 事务的范围事务由3个命令控制:BEGIN、COMMIT和ROLLBACK。BEGIN开始一个事务,之后的所有操作都可以取消。COMMIT使BEGIN后的翻译 2015-04-22 10:22:49 · 14092 阅读 · 1 评论 -
linux驱动之NandFlash驱动
写块驱动程序的框架:分配 gendisk 结构体,使用alloc_disk设置:队列,属性注册Nandflash芯片操作:1、NandFlash和S3c2440怎么硬件怎么连接?DATA0 ~DATA7上既传输数据,又传输地址,也传输命令当ALE为高电平时传输的是地址当CLE为高电平时传输的是数据当ALE和CLE都为地电平时传输的是数据2、数据线既接到NAND原创 2015-01-02 22:57:49 · 1708 阅读 · 0 评论 -
TQ2440从nfs网络文件系统启动
前提:我的PC已经配置好了 NFS服务 nfs根目录为:/home/daysmark/nfsdir如果不会配置,请看点击打开链接1、进入uboot进行设置Set the boot parameters Set parameter 设置如下:serverip=192.168.0.149ipaddr=192.168.0.151netmask=255.25原创 2015-01-03 22:53:59 · 1753 阅读 · 0 评论 -
eclipse 使用技巧
记录下平时使用 eclipse cdt写C程序的一点一滴的积累吧。如果有朋友有些好的使用技巧,麻烦评论下,把技巧留在下面,然后我汇总到这个博文里面。1、列模式:alt+shift+a 。可以选择一列数据。应用:#define S3C2440_NFCONT S3C2410_NFREG(0x04)#define S3C2440_NFCMD S3C2410_NFREG(0x原创 2015-01-03 17:35:56 · 1195 阅读 · 0 评论 -
linux驱动之usb鼠标按键的读取
上一篇博文只是usb总线驱动程序的框架,下面来真正写一个usb驱动程序。USB鼠标驱动,鼠标输入HID类型,其数据传输采用中断URB,鼠标端点类型为IN目的:usb鼠标按键的驱动代码编写:框架:分配一个input_dev结构体设置注册硬件相关的操作思路:1、分配/设置usb_driver结构体static struct usb_driver usb_mous原创 2015-01-01 18:07:14 · 3280 阅读 · 1 评论 -
ubuntu nfs挂载方法
环境:ubuntu 12.04step1:在使用nfs服务前,我们需要先关闭伟大的防火墙要不然有可能失败。指令: ufw disablestep2:安装nfs,有人说ubuntu12.04已经安装了最新版的,我不信,所以我要试试。。。指令:sudo apt-get install nfs-kernel-server原创 2014-12-10 21:11:43 · 7356 阅读 · 0 评论 -
linux驱动程序之定时器防按键抖动
前提:按键按下通过中断方式进行处理。本博文基于上一个博文改写:上一篇博文目的:使用定时器防止按键抖动产生中断。方法:每次发生按键中断后,推迟10ms进行处理,最终将会只执行一次定时器中断处理函数。这样就避免了按键抖动引起的误中断。步骤:1、定义一个定时器结构体static struct timer_list button_timer;//定义一个定时器,用于按键消抖原创 2014-12-24 18:35:58 · 2694 阅读 · 0 评论 -
linux驱动程序之同步、互斥、阻塞
目的:同一时刻,只能有一个应用程序打开/dev/wq_button1、方法一:使用设备打开标志(原子操作)1、在驱动程序的open函数中增加一个标志,如果满足条件,则执行open函数中其余工作,如果不满足,则返回,增加代码如下: if(!atomic_dec_and_test(&canopen))//自减操作并测试是否为零,如果为零返回 ture { atomic_inc(&ca原创 2014-12-22 21:24:44 · 1436 阅读 · 0 评论 -
linux内核启动流程
内核启动:1、内核引导阶段确定内核是否支持该架构 __lookuo_processor_type 确定内核是否支持该单板 __lookup_machine_type建立一级页表 __create_page_tables设置arm920 cpu核 禁止 I,D caches等 __arm920_setup使能MMU __enable_mmu原创 2014-12-16 17:16:49 · 919 阅读 · 0 评论 -
联合体在单片机中的应用
联合体在单片机中的应用单片机中经常会遇见分离高低字节的操作,比如进行计时中断复位操作时往往会进行(65535-200)/256,(65535-200)%256这样的操作,而一个除法消耗四个机器周期,取余也需要进行一些列复杂的运算,如果在短时间内需要进行很多次这样的运算无疑会给程序带来巨大的负担。其实进行这些操作的时候我们需要的仅仅是高低字节的数据分离而已,这样利用联合体我们很容易降低这部分翻译 2014-11-14 18:17:12 · 1948 阅读 · 0 评论 -
md文档格式 git
Markdown 语法速查表1 标题与文字格式标题# 这是 H1 ## 这是 H2 ###### 这是 H6 文字格式**这是文字粗体格式***这是文字斜体格式*~~在文字上添加删除线~~2 列表无序列表* 项目1* 项目2* 项目3有序列表1. 项目12. 项目23. 项目3 * 项目1 * 项目23 其转载 2014-08-25 16:15:34 · 1099 阅读 · 0 评论 -
中断优先级安排原则与stm32优先级
中断是获取异步事件的重要手段,中断源优先级的安排如下:1、紧迫性:触发中断的事件越紧迫,优先级要安排的越高!紧迫事件允许耽搁的时间短,如模拟信号的采集,采样耽误的时间越短,越真实!2、关键性:触发中断的事件越关键,设定优先级应该越高。3、频繁性:触发中断的事件越频繁,设定优先级越高!频繁事件的周期短,需及时处理!4、快捷性:在上述条件相同相近时,ISR处理的越快捷,设定的优先级越高原创 2014-02-10 19:06:14 · 2972 阅读 · 1 评论 -
嵌入式系统ISR与关联任务的通信手段
ISR用来响应异步事件,然后触发与后续关联任务的一系列动作。ISR与关联任务的通信手段无非是两种:信号量和消息。但在不同的情况下通信手段不尽相同,也有很多的说道。当使用信号量时,当有异步事件发生时ISR通过信号量与关联任务进行通信,告诉关联任务:可以采集数据啦~然后ISR就什么都不用管了,只需负责下次再通知关联任务异步事件的发生即可,而关联任务既要对数据进行采集又要对数据进行处理!当使用消原创 2014-02-10 22:35:15 · 1851 阅读 · 0 评论 -
嵌入式系统任务优先级安排原则
任务优先级按照任务类型进行安排,遵循以下规则:1、中断关联性:与中断服务程序(ISR)相关的任务应该安排尽可能高的优先级,这样有利于处理异步时间提高系统的实时性,如果优先级设置的较低,则可能发生由于cpu一直被高优先级的任务霸占,导致在第二次发生中断时还没来的及处理上一次中断发生的事件!导致信号的丢失!2、紧迫性:紧迫任务要求在规定的时间内完成,有很强的时间关联性,对时间要原创 2014-02-08 19:39:08 · 7076 阅读 · 0 评论 -
嵌入式系统ucos任务划分
通过阅读周老师ucos的嵌入式系统的书籍总结了任务划分的方法1、以CPU为中心,将和IO口相关的功能划分成若干个独立的任务2、发现“关键”功能(关键任务)将关键功能分离出来,交给一个独立的任务或者ISR来执行,剩余的部分交给另外一个任务去实现,两者之间通过通讯机制来实现。3、发现“紧迫”功能,将紧迫功能分离出来,交给一个独立的任务或者ISR来执行,剩余的部分交给另外一个原创 2014-02-07 20:41:37 · 3046 阅读 · 0 评论 -
嵌入式系统(ucos)任务优先级的资源
由于最近在学习ucos的应用,看书记下笔记,共享学习对于嵌入式系统来说,任务优先级的安排是比较重要的,总结一下: 对于ucosII来说,最大优先级为63(共64个优先级),当然要根据项目的实际需要来定义最低的优先级()OS_LOWEST_PRIO ,例如实际项目使用20个优先级,则OS_LOWEST_PRIO需要这样设定:#define OS_LOWE原创 2014-02-08 18:46:13 · 1456 阅读 · 0 评论 -
中断延迟是什么?
经常听的“中断延迟”,可是中断延迟究竟是什么?(Interrupt Latency) 中断延迟是指从硬件中断发生到开始执行中断处理程序第一条指令之间的这段时间。也就是:计算机接收到中断信号到操作系统作出响应,并完成换到转入中断服务程序的时间。不严格地,也可以表述为:(外部)硬件(设备)发生中断,到系统执行中断服务子程序(ISR)的第一条指令的时间。另转载 2014-02-06 17:07:57 · 7596 阅读 · 0 评论 -
linux驱动之设备号与创建设备节点
设备号:1、自动分配major = register_chrdev(0,"first_drv",&first_sdv_fops);//注册注册设备时给设备号写0,则内核会自动分配一个主设备号返回。2、手动指定到 proc/devices 文件下查找都有哪些主设备号,如果没有被使用的我们即可拿过来使用它。应用程序设备节点:我们会使用open这个函数带开一个设备,那么o原创 2014-12-18 21:50:18 · 2050 阅读 · 1 评论 -
linux根文件系统init进程分析
init程序本身即busybox:配置文件解析配置文件执行用户程序程序执行过程:busybox -> init_main parse_inittab file = open(INITTAB,"r"); //打开配置文件 /etc/inittab原创 2014-12-16 18:28:15 · 1348 阅读 · 0 评论 -
linux驱动之LED驱动_2
在上一个帖子中,讲述了如何给led编写驱动程序,但是实现的功能比较单一,接下来我们要实现的功能是在上一个的基础上能够单独控制每一个led灯。上一个帖子的链接: linux驱动之LED驱动_1 上一个帖子的驱动源码在:点击打开链接 测试源码在:点击打开链接目的:实现板子上每个led能够单独的控制。方法:0、通过次设备号来单独访问每个led1、更改入口函数: 为原创 2014-12-19 21:35:10 · 1423 阅读 · 0 评论 -
linux驱动程序之增加按键异步通知机制
目的:按下按键时驱动程序通知应用程序大体框架:1、应用程序:注册信号处理函数2、驱动程序发送信号3、应用程序通知驱动 PID4、驱动程序发送如何发送信号原创 2014-12-22 18:27:05 · 1346 阅读 · 0 评论 -
移植linux文件系统遇到的问题 tq2440
说明:移植是按照tq2440的教程进行移植的。但是其中避免不了出现一些小的问题。---------------------------------------------------------------------------------------------------------------------------------------------------------原创 2015-01-10 16:35:25 · 1123 阅读 · 0 评论 -
linux驱动之poll操作
POLL操作1、POLL执行过程:poll是一个系统调用,其内核入口函数为sys_poll,sys_poll几乎不做任何处理直接调用do_sys_poll,do_sys_poll的执行过程可以分为三个部分: 1,将用户传入的pollfd数组拷贝到内核空间,因为拷贝操作和数组长度相关,时间上这是一个O(n)操作,这一步的代码在do_sys_poll中包括从函数开始到调用do_poll原创 2014-12-22 12:29:27 · 1194 阅读 · 0 评论