
硬件相关
文章平均质量分 81
smstong
创新来自于夯实的基础。
展开
-
对电路设计,IC设计,PCB板设计的初步认识
电路设计:这是一个很大的概念,从电压强度可分为强电电路设计和弱电电路设计;从设计工具上可分为手工画图和电子辅助设计,从电路类型上可以分为模拟电路设计和数字电路设计。IC设计:也就是集成电路设计,指的是芯片设计,也就是在一块晶硅片上设计电路,这需要很高的工艺和技术。目前的IC设计软件都能根据原理图(VHL等语言)自动生成电路图,然后交由IC制造厂商生产。PCB设计:印刷电路板设计,指的是根据现有的I原创 2008-04-26 01:15:00 · 5509 阅读 · 0 评论 -
串口通信的基本知识
串口通信的基本知识本文介绍了串口通讯的基本概念、数据格式、通讯方式、典型的串口通讯标准等内容。串口通讯,RS232,RS485,停止位,奇校验,偶校验1 串口通讯 串口通讯(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。 串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。2 串口通讯转载 2016-11-24 18:38:18 · 2832 阅读 · 0 评论 -
【转】TTL电平与RS232电平差异
转自:http://blog.youkuaiyun.com/skywalker_leo/article/details/18403351 这两天在调试带UART的蓝牙模块,由于刚开始分不清UART电平和RS232电平的区别,直接将蓝牙上UART的RX和TX接到PC上串口的TX和RX,导致所有数据都是乱码。后来才弄清楚:在UART上使用的TTL电平,而PC的串口是RS232,它有自己的电平定义,所以在转载 2016-11-25 14:55:28 · 951 阅读 · 0 评论 -
TQ2440开发板学习纪实(3)--- 设置时钟频率,让CPU运行的更快
0 原理0.1 时钟源自哪里所谓的时钟,就是电压高低的变化,只有不断的0,1交替变化,CPU才能被驱动运行。S3C2440支持多种时钟源,这通过CPU针脚OM3和OM3来选择。对于QT2440板子来说,OM3和OM2均直接接地,这就意味着时钟源来自针脚XTIpll和XTOpll,这两个针脚在TQ2440的核心板上被连接上了一个12MHz的晶振。0.2 S3C2440的时钟原理与设置CPU、RAM、U原创 2016-12-21 14:03:36 · 6891 阅读 · 1 评论 -
TQ2440开发板学习纪实(4)--- 初始化片外RAM,让程序有更大内存空间
到目前为止,我们的程序只能使用S3C2440的片内4KB的RAM。这么小的内存空间,显然不能应付实际的应用。是时候使用片外的RAM了,本文将详细介绍片外RAM的初始化过程。0 ROM,RAM,SRAM,DRAM,SDRAM傻傻分不清作为软件出身的软男,很难从根本上弄清楚ROM,RAM,SDRAM,SRAM等等的原理,这里我们只要了解基本的特性就可以了。ROM,NorFlash: 只读内存,掉电不丢原创 2016-12-22 15:10:49 · 2236 阅读 · 1 评论 -
TQ2440开发板学习纪实(9)--- 利用Undefined异常模拟BLX指令
在博文 《紧急求助!ARM-GCC对于函数指针调用的编译有错误?》中,我提到了GCC在编译函数指针调用的时候,会生成绝对地址跳转指令BLX。而S3C2440A这款CPU不支持BLX指令,从而导致陷入Undefined异常。本文就利用这个Undefined异常,来模拟BLX指令,从而让使用BLX指令的程序可以正常运行在S3C2440上。1 Undefined异常的处理流程ARM9在执行未定义指令时,会原创 2017-01-03 14:51:33 · 1334 阅读 · 1 评论 -
TQ2440开发板学习纪实(5)--- 设置UART串口,输出Hello World!
0 串口,UART,RS232,RS485傻傻分不清0.1 串行通信与并行通信串口名字表示采用的通信方式为串行而不是并行。那么串行与并行的区别是啥呢?很简单,串行就是同一时刻只能传输一个bit,而并行则可以同时传输多个bits。乍一看,仿佛并行通信速度更快,而且并行的信号线越多,传输数据快。CPU的总线就是使用并行通信的,总线带宽也从8一路飙升到了目前的64。然而这是在CPU的内部,对于设备间通信而原创 2016-12-23 18:13:23 · 2830 阅读 · 0 评论 -
TQ2440开发板学习纪实(0.0)--- GNU ARM交叉汇编环境的搭建与测试
对ARM进行裸机开发时,汇编是必不可少的,因为C语言无法直接操作CPU的内置寄存器,也就无法完成很多硬件初始化的功能,如内存控制器的初始化。市面上大多数讲解ARM汇编开发的书籍都把ADS作为开发环境,因此使用的汇编语言也就是ARMASM,开发平台也限制到了Windows。然而在嵌入式领域,Linux作为开发环境更加普及,那么如何在Linux下进行ARM的汇编程序设计呢?其实,Linux平台上早就有了原创 2016-12-13 07:03:25 · 1226 阅读 · 0 评论 -
TQ2440开发板学习纪实(0.1)--- GNU Freestanding(Naked)C ARM交叉开发环境创建与测试
0 由来在我的博文 GNU ARM交叉汇编环境的搭建与测试中,详细讲解了GNU ARM汇编环境的创建与使用方法。实际开发中,直接使用汇编语言写的代码往往很少,尽在系统启动和性能要求极其苛刻的时候才会用到汇编代码。在可读性、可移植性、逻辑表达能力方面,C语言的表现要比汇编强太多,正是C语言的这种优势造就了Unix世界,造就了Linux在多种平台上顺利编译运行的活泼场面。所以,在嵌入式开发领域,C语言是原创 2016-12-13 14:41:37 · 2860 阅读 · 0 评论 -
TQ2440开发板学习纪实(6)--- 启用IRQ中断,告别低效的轮询!
前面的实验中,无论是按键的状态,还是串口的发送接收状态,都是通过轮询的方式进行读取,不仅低效而且严重浪费CPU计算周期,在实际的生产环境下决不能使用!从本文开始,我们进进入一个新的时代,中断处理。0 中断、异常、软中断,傻傻分不清在CPU中断处理领域,术语比较混乱。而且有时候同一个术语在不同的语境含义也不相同。这里我们以S3C2440的数据手册为准解释相关概念。异常,英文名Exception。是相原创 2016-12-27 10:56:38 · 1409 阅读 · 0 评论 -
TQ2440开发板学习纪实(7)--- 基于中断的UART串口接收
UART0的发送、接收、错误分别产生不同的中断,可以分别控制。本文仅对UART0的接收采用中断方式,发送仍然采用轮训方式。这样有个很大的用处,那就是程序陷入死循环是,可以通过UART0发送给ARM一个信号,来终止程序的运行。关键代码片段:1 取消相关中断屏蔽位/* unmask interrupt for UART0 */ rINTMSK &= ~(1<<28); rINTSUBMS原创 2016-12-27 17:02:17 · 1124 阅读 · 0 评论 -
TQ2440开发板学习纪实(8)--- 从NAND Flash读取数据,把代码搬运到SDRAM运行
因为依赖于S3C2440的开机自动从Nandflash复制数据到片内SRAM执行,目前我们的可执行程序体积仍然不能大于4KB的限制。而我们的程序目前已经非常接近这个限制大小了,为了能够继续开发,必须突破这个限制。为此需要实现代码搬运功能,把程序从Nandflash搬运到SDRAM中去,并跳转到SDRAM执行。本文为啥不实现NandFlash写? 因为对于我们的实现目前尚未需求。更重要的是,写操作涉及原创 2016-12-30 16:39:15 · 2781 阅读 · 0 评论 -
TQ2440开发板学习纪实(1)---最简单的独立运行汇编程序
0 如何做到简单TQ2440开发板,采用的CPU是三星S3C2440,核心板附加了2MB运行ROM和64MB运行RAM,并且搭配了64MB的Nand Flash。而S3C2440直接支持从NandFlash启动,其原理就是加电后,CPU内使用硬件逻辑把NandFlash开头的4KB数据复制到片内称之为stepping stone的特殊内存中。这个特殊的stepping内存只有在设置为Nandflas原创 2016-11-07 13:05:41 · 1440 阅读 · 0 评论 -
TQ2440开发板学习纪实(2)--- 设置堆栈并调用C函数
本文根据上一篇TQ2440开发板学习纪实(1)—最简单的独立运行汇编程序进化而来。0 ARM堆栈(Stack)基础知识ARM支持满减类型的堆栈,满的意思是说堆栈指针SP(即R13)总是指向刚刚入栈的数据单元。与满相对应的就是不满,这种类型的栈指针SP指向栈顶的下一个空白单元。减的意思是说,栈底的内存地址大,栈顶地址小,压入数据时,栈向地址小的方向扩展。目前我们只有4KB的内存可用,范围为:0x000原创 2016-12-20 18:39:46 · 1135 阅读 · 0 评论 -
如何让软件绑定计算机硬件
软件绑定计算机硬件标识是不少软件采用的防拷贝方法。然而如何确定计算机硬件的唯一标识却不是简单的事情。下面是常采用的方法及其优缺点。1 计算机唯一性标识的方法1.1 CPU序列号可用性目前存在的CPU几乎都支持CPUID指令。这个指令不仅可以获取CPU生产厂商等基本信息,还可以获取其他有关CPU的硬件信息,包括CPU序列号。首先需要说明的是,CPU批号和CPU序列号是不同的东西,同样型号的CPU具有相原创 2015-11-15 12:35:01 · 23801 阅读 · 1 评论 -
硬盘分区的UUID
Universally Unique IDentifier, 是一种获取全局唯一命名的标准。1 UUID的来历要为一个对象进行命名,并要求这个名字在时间和空间上都是唯一的,这在计算机领域是一个很重要的问题。目前已经存在很多成熟的解决方案,例如IP地址,MAC地址,DNS域名等。但这些方案都存在一个问题,那就是需要一个中央管理机构来批准和统一管理。这样就会带来两个问题:(1)需要一定费用;(2)数量受原创 2015-06-09 15:50:05 · 18394 阅读 · 0 评论 -
Intel CPU 历代微架构名称
1 本文由来前段时间网上买了金士顿的系统指定内存(DDR3 1600 低电压版本1.35V), 8G x 2 = 16GB。顺利安装到了Mac Mini上,运行稳定快速。今天觉得这么大内存用在家用的Mac Mini上实在是浪费,于是把它们转移到了ThinkPad T410S笔记本上。于是各种问题来了,首先是使用超过600MB内存时,Linux系统自动重启;然后是好好的Windows7系统无法启动。于原创 2015-06-08 14:54:22 · 26406 阅读 · 0 评论 -
关于线程、进程、用户态、内核态的不严谨体会
1.进程对象,维护一个虚拟内存到物理内存的映射表,以便达到不同进程对相同虚拟内存的操作映射到对不同物理内存的操作。2.线程对象,维护两套栈(内核态,用户态),以便不同线程的PUSH,POP堆栈操作,针对各自的虚拟内存。至于两套栈,是为了用户态和内核态切换时使用的,如系统调用。3.用户态与内核态:用户态的线程只能访问用户态的内存空间,要想访问内核态空间,必须发生切换;而内核态的线程,原创 2009-09-04 15:42:00 · 2597 阅读 · 0 评论 -
双控开关的原理-----两个开关独立控制一个灯泡,装修会用得的哦
两个开关独立控制一个灯泡,装修会用得的哦原创 2010-06-30 15:55:00 · 8915 阅读 · 3 评论 -
进程间同步与互斥---信号量P,V操作
1. 信号量基本术语 现代计算机系统中,多个进程可以并发执行,进程间必然存在共享资源和相互合作的问题。 同步主要是用户多个进程相互协作,共同完成任务,是进程间的直接制约问题;互斥则主要是为了多个进程分时使用有限的资源。 信号量(semaphore)是1965年由荷兰人Dijkstra提出的一种卓有成效的进程间同步及互斥工具。信号量在操作系统原创 2010-05-19 13:52:00 · 13259 阅读 · 1 评论 -
图解硬盘低格操作方法
dm,lformat低级格式化硬盘的使用说明.转载 2010-09-27 09:52:00 · 7948 阅读 · 0 评论 -
以太网供电(POE) 有源以太网 802.1af 802.1at
最近,电信给楼内免费安装无线系统,基本结构是:电线光缆引入机房,每层楼安装一个 H3C S3100TP-PWR-EI POE交换机和多个无线AP(5米间隔一个),交换机光口引入机房核心交换。AP通过网线直接有支持POE的交换机供电,电压48V。所以整理了一些关于POE的资料,以备后查。 POE (Power Over Ethernet)指的是在现有的以太网Cat.5布线基础架构不作任何改动转载 2012-01-13 14:15:35 · 9004 阅读 · 0 评论 -
RJ45短路环在千兆网卡上的应用
1.话题由来 对于经常工作于多个操作系统的人来说,Windows作为宿主系统,搭配Vmware Workstation已经是标准工作站了。我个人也是来回往返于Windows和Linux之间,使用的笔记本的配置为:Windows7作为宿主,VMWare Workstation 9安装虚拟机CentOS以及OpenBSD等。虚拟机的网络连接设置为桥接方式,以使虚拟机更像是局域网里的真正主机。原创 2013-04-17 11:53:34 · 10164 阅读 · 2 评论 -
UEFI主板GPT方式安装CentOS6.4
一、UEFI主板上OS启动原理自己粗略画了一张图,不再文字说明。二、安装实战记录2.1 物理环境机器类型:台式机机器型号:联想ThinkCenter M4350T机器特征:预装Windows8,主板支持UEFI和安全启动,硬盘500GB,采用GPT分区。该主板能够兼容传统BIOS方式(legacy boot)启动,可以通过BIOS选项来设置。而CentO原创 2013-07-22 14:49:55 · 26253 阅读 · 3 评论 -
USB设备生产厂家代码和设备代码查询
http://www.linux-usb.org/usb.ids## List of USB ID's## Maintained by Stephen J. Gowdy # If you have any new entries, please submit them via# http://www.linux-usb.org/usb-ids.html# or send en转载 2014-04-21 15:55:13 · 76302 阅读 · 0 评论 -
Linux多路径、LVM的基础--内核Device Mapper机制
Linux 内核中的 Device Mapper 机制本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍。Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,当前比较流行的 Linux 下的逻辑卷管理器如 LVM2(Linux Volume转载 2014-10-29 11:00:58 · 8354 阅读 · 0 评论 -
让fdisk输出更准确合理
[root@localhost ~]# fdisk -lDisk /dev/sda: 160.0 GB, 160041885696 bytes255 heads, 63 sectors/track, 19457 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 b原创 2014-10-29 09:16:47 · 4935 阅读 · 0 评论 -
与Android手机交互:fastboot 协议 和 adb 协议
FastBoot Version 0.4----------------------The fastboot protocol is a mechanism for communicating with bootloadersover USB. It is designed to be very straightforward to implement, toallow原创 2015-01-09 13:15:59 · 5437 阅读 · 0 评论 -
以太网中IP组播的实现
最近看到一篇关于IP组播的美文,转载到这里。IP组播是第三层(IP)的协议,但是任何IP层的协议最终还是要映射到链路层来实现,以太网目前是链路层最常见的类型。本文专注于以太网单一子网中IP组播的实现。如果是交换环境(Switch)而不是Hub,那么交换机必须要支持IP组播才行。关键地方就在于组播IP地址如何映射到MAC地址,对于单播IP,通过ARP协议映射到MAC;对于广播IP,固定映射为MAC:转载 2014-12-23 12:50:09 · 5091 阅读 · 0 评论 -
交叉线与直通线
无论是网线还是串口线,凡事涉及到双向通信的信号线,都有交叉线和直通线之分。直通线顾名思义,就是线缆两头完全一一对应,线序不变。交叉线一头的输入对应到另一端的输出。网线不再需要交叉线对于网线来说,目前由于终端设备驱动都能智能识别线序,所以直通线可以连接任何两个现代的网络设备。以前,直连两台电脑需要交叉线,现在完全没有必要这样做了。交叉线+交叉线=直通线大部分串口线都是交叉线,因为单独的直通线实在是没有原创 2015-05-11 12:37:11 · 3285 阅读 · 0 评论 -
TQ2440开发板学习纪实(10)--- 实现多任务处理,最简单OS模型
Keywords: Mutitasking,Context Switch,Thread0 多任务(多线程,多进程)基本概念0.1 CPU与多任务对于“多任务(Multitasking)”,不同的应用领域有不同术语。在操作系统领域,一般称为“多任务”;在应用程序设计领域,一般称为“多线程”;而在Unix领域,更多的人喜欢用“多进程”来表示相同的意思。本文着眼于OS层,所以使用“多任务原创 2017-01-13 11:16:53 · 1675 阅读 · 0 评论