linux驱动由浅入深系列:usb子系统之一(域、包、事务、传输的基本概念)

下图是usb2.0协议的物理层连线,其中包括一根地线、一根电源线(在usb2.0中电源线仅支持到5V 500mA,目前随着人们需求的日益膨胀,在后续协议中usb线提供的供电能力正在不断增加)、两根差分数据线DP、DM(使用差分线的好处是增加抗干扰能力,能够更快速的串行传输数据,这个有概念就可以了,在此不做深入探讨)。USB的数据格式DP、DM数据线上传输的还是程序员熟悉的0和1,然后由若干个二进制
阅读本文

CAM简单编辑gerber文件(【增加一条线】 【复制元素】 【删除元素】)

增加一条线首先使用增加-》线命令:然后设置线的大小也就是CAM软件中的D码,可以使用快捷键A,也可以使用如下步骤:接下来鼠标左键点击要增加线的起点位置:然后一段段拉线,最后结果如下: 复制元素因为有些板子是拼版的,所以当拉好一根线之后就可以使用复制命令来给剩下的拼版复制元素了,步骤如下:首先选择复制命令:然后用鼠标选择要复制的元素:点击进行复制:然后移动到自己想要复制的地方: 再次点击复制完成:
阅读本文

SYD8801介绍

SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机、32位ARM Cortex-M0处理器、128kB Flash存储器、以及丰富的数字接口。SYD8801片上集成了Balun无需阻抗匹配网络、高效率DCDC降压转换器,适合用于可穿戴、物联网设备等。       北京盛源达科技有限公司(SYD Technology)成立于IoT刚兴起的2012年初,由
阅读本文

Linux学习: LCD驱动

LCD驱动框架:1.分配一个fb_info结构体:s3c_lcd = framebuffer_alloc(0,NULL);2.设置fb_info(s3c_lcd): ID、固定参数、可变参数、设置操作函数 及 其他设置3.注册:register_framebuffer(s3c_lcd);4.硬件相关的操作:   ①分配引脚用于LCD          ②根据LCD手册设置控制器参数
阅读本文

初试合众致达XDS220U仿真器

有段时间没有使用仿真器这种东西了,近日由于项目需要,又把以前合众达的XDS560仿真器翻了出来,忽然发现这世界变化太快了,这个老古董已经跟不上时代了。在WIN10下完全无法使用。果断抛弃它,新入手一个合众致达的XDS220U仿真器:接下来装ccs7,说到这里就有点郁闷,两台电脑,同样的WIN10 x64,一台装的很顺利,另一台安装完成后运行时就闪退,差点就准备重装系统了。折腾了一番,最后发现问题出
阅读本文

UART的基础知识及使用

一、S3C2410内置的UART控制器 S3C2410内部具有3个独立的UART控制器,每个控制器都可以工作在Interrupt(中断)模式或DMA(直接内存访问)模式,也就是说UART控制器可以在CPU与UART控制器传送数据的时候产生中断或DMA请求。并且每个UART控制器均具有16字节的FIFO(先入先出寄存器),支持的最高波特率可达到115.2Kbps 图5-11是S3C2410内部UA
阅读本文

室内智能照明控制系统电路设计

主控制器电路设计 主控制器采用AT89C51单片机作为微处理器,AT89C51是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash 存储单元
阅读本文

u-boot启动流程分析(1)_平台相关部分

1. 前言2. 多平台架构 嵌入式软件工程师,在设计某一个软件的时候,或多或少的都会思考“跨平台”的问题(驱动和系统工程师尤甚): 这个“软件”是否可以运行于不同的软硬件环境中? 这个“软件”和其它“软件”是否有共同的地方可以抽象出来? 这些问题的本质,是软件工程中的抽象和封装,以最简洁、最高效的方式,实现尽可能多的功能。u-boot作为一个跨平台、跨设备的bootloader,同样
阅读本文

Qt程序打包发布方法(使用官方提供的windeployqt工具)

Qt程序打包发布方法(使用官方提供的windeployqt工具)在集成开发环境 QtCreator 中可选择 “Qt Widgets Application” 或 “Qt Quick Application” 两种方式生成图形界面应用程序。下面分别介绍这两种方式创建应用的发布方式。1. Qt Widgets Application首先用 QtCreator 新建一个 Qt Widgets Appl
阅读本文

通过上一节部署出来的 Windows instance 有时候会发现操作系统时间总是慢 8 个小时,即使手工调整好时间和时区,下次 instance 重启后又会差 8 个小时

这是 OpenStack 实施经验分享系列的第 3 篇。 问题描述 通过上一节部署出来的 Windows instance 有时候会发现操作系统时间总是慢 8 个小时,即使手工调整好时间和时区,下次 instance 重启后又会差 8 个小时。 原因 KVM 对 Linux 和 Windows 虚拟机在系统时间上处理有所不同,Windows 需要额外一些设置。 解决办法一 给 Windows 镜像
阅读本文

mos管的两种接法

参见:https://zhidao.baidu.com/question/575450692.htm l 图中使用的是NMOS管,左边的电路中,控制端为0V时MOS管关断,S极的电平为0,当G极给一定电压U0时MOS管导通,这时候负载(R)有电流(I)通过,S极的电压为U1 = R * I,这时候G极和S极之间的压差为U2=U0-U1,当U2不能够将MOS管完全导通时流过负载的电流就会降低,最后达
阅读本文

IAR for STM8介绍、下载、安装与注册--转

Ⅰ、写在前面 STM8的介绍、下载、安装与注册,其安装、注册过程和IAR for ARM类似,如果需要了解IAR for ARM相关的文章,可以到我博客,或微信公众号查看并下载。 IAR for ARM介绍、下载、安装与注册: http://pan.baidu.com/s/1geClBrH   Ⅱ、IAR介绍1.关于IARIAR是一家公司的名称,也是一种集成开发环境的名称,我们平时所说的IAR主要
阅读本文

嵌入式Linux驱动学习之路(十四)按键驱动-同步、互斥、阻塞

目的:同一个时刻,只能有一个应用程序打开我们的驱动程序。①原子操作:v = ATOMIC_INIT( i )   定义原子变量v并初始化为iatomic_read(v)        返回原子变量的值atomic_set(v,i)        设置原子变量的值       atomic_inc_and_test(v)     自加后和测试是否为0  为0则返回trueatomic_dec_and
阅读本文

嵌入式资源免费下载(引用)

为了答谢广大的网友对http://www.2beanet.com/的支持,特免费开发如下资源:注:顶部的Open Control Panel注册用户并登陆ARM资源免费下载1. s3c2450开发板原理图http://www.2beanet.com/index.php/embedded/arm/126-schematic-for-s3c2450-embedded-board.html2. EP
阅读本文

嵌入式核心课程路线图

整个学习路线图很庞大,为了描述简单我把目录分成了几个层次,分层浏览。 第一层目录: 0.基础预科 1.ARM裸机全集 2.uboot和linux内核移植 3.linux驱动开发 4.C语言专题精讲篇 5.linux应用编程和网络编程 6.阶段项目篇 说明:第一层目录中共有6个部分,共同构成了嵌入式核心课程。每个部分下面又会分为若干模块,以此来构建出整个知识体系网络。 第二层
阅读本文

Kinect ROS Gmapping 2D地图

在ROS下手持kinect构建2D地图(--由于只有一个kinect,没有可移动的底盘或者小车,于是就手持kinect --).     环境及设备为: linux14.04, ROS-indigo.kinect一代. 主要内容:(一) 准备工作:搭建熟悉ROS系统,(二) 安装kinect驱动,将深度图转为伪激光图(安装depthimage_to_laserscan包.)(三) 熟悉理解ROS
阅读本文

Linux内核中kzalloc函数详解

注意:如有错误,欢迎指正。这些是我学习的日志文章......***************************************************************************************************************************在我的上一篇博文中,我看到了这样一个内核中的内存分配函数kzalloc,所以就详细了解了一下这
阅读本文

python os.system重定向stdout到变量 ,同时获取返回值

Python执行系统命令的方法 os.system(),os.popen(),commands最近在做那个测试框架的时候发现 Python 的另一个获得系统执行命令的返回值和输出的类。最开始的时候用 Python 学会了 os.system() 这个方法是很多比如 C,Perl 相似的。 os.system(‘cat /proc/cpuinfo‘) 但是这样是无法获得到输出和返回值的,继
阅读本文

Python高级编程-使用SQLite

SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表,比如学生的表,班级的表,学校的表,等等。表和表
阅读本文