06 2013 档案

摘要:库的定义 库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的。它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 无论在Windows 平台还是Linux平台下都存在大量的库,但由于Windows... 阅读全文
posted @ 2013-06-30 15:30 Leo.cheng 阅读(1078) 评论(0) 推荐(0) 编辑
摘要:一、预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明 1 年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)ULView Code 想看到的几件事情:#define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。意识到这个表达式将使一个 16 位机的整型数溢出-因此要用到长整型符号 L,告诉编译器这个常数是的长整型数。如果你在你的表达式中用到 UL.. 阅读全文
posted @ 2013-06-30 09:08 Leo.cheng 阅读(1415) 评论(1) 推荐(1) 编辑
摘要:本文为笔者阅读《嵌入式C精华》的摘录,推荐一下,不错的书一、C/C++语言 struct深层探索1.自然对界 struct是一种复合数据类型,其构成元素既可以是基本数据类型(如 int、long、float等)的变量,也可以是一些复合数据类型(如 array、stuct、union等)的数据单元。对于结构体,编译器会自动进行成员变量的对齐,以提高运算效率。 缺少情况下,编译器为结构体的每个成员按其自然对界(natural alignment:即默认对齐方式,是指按结构体成员中 size最大的成员对齐)条件分配空间。各个成员按照它们被声明的顺序在内存中的顺序存储,第一个成员的地址和整个结构的.. 阅读全文
posted @ 2013-06-29 18:07 Leo.cheng 阅读(2454) 评论(3) 推荐(1) 编辑
摘要:八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。其解决办法和我以前发过的【算法之美—Fire Net:www.cnblogs.com/lcw/p/3159414.html】类似题目:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问... 阅读全文
posted @ 2013-06-29 15:54 Leo.cheng 阅读(560) 评论(0) 推荐(0) 编辑
摘要:Preface Linux内核对网络驱动程序使用统一的接口,并且对于网络设备采用面向对象的思想设计。 Linux内核采用分层结构处理网络数据包。分层结构与网络协议的结构匹配,既能简化数据包处理流程,又便于扩展和维护。内核网络结构 在Linux内核中,对网络部分按照网络协议层、网络设备层、设备驱动功能层和网络媒介层的分层体系设计。 网络驱动功能层主要通过网络驱动程序实现。 在Linux内核,所有的网络设备都被抽象为一个接口处理,该接口提供了所有的网络操作。 net_device结构表示网络设备在内核中的情况,也就是网络设备接口。网络设备接口既包括软件虚拟的网络设备接口,如环路设备,也... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(758) 评论(0) 推荐(0) 编辑
摘要:Preface 内核源码版本:linux-2.6.18 网卡驱动·linux内核网络分层结构:http://infohacker.blog.51cto.com/6751239/1221140DM9000芯片 DM9000是一款高度集成低功耗快速以太网处理器,该芯片集成了MAC和PHY。DM9000可以和CPU直接连接,支持8位、16位和32位数据总线宽度。该芯片支持10M和100M自适应以太网接口,内部有16K的FIFO以及4K双字节SRAM,支持全双工工作。 DM9000内部还集成了接收缓冲区,可以在接收到数据的时候把数据存放到缓冲区中,链路层可以直接把数据从缓冲区取走。网卡驱动程 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(3538) 评论(2) 推荐(1) 编辑
摘要:开发环境 硬件平台:FS2410 主机:Ubuntu 12.04 LTSLED灯原理图按键原理图按键的接线资源KSCAN0 -> GPE11 KSCAN1 -> GPG6 KSCAN2 -> GPE13 KSCAN3 -> GPG2 EINT0 -> GPF0 EINT2 -> GPF2 EINT11 -> GPG3 EINT19 -> GPG11程序主要原理这里实现对 K1,K2,K3,K4 这四个键的查询。 主要涉及到K1,K2, K3, K4这四个按键,要用查询的方式进行判断哪个键被按下去了,因此:将EINT11, EINT19设置为输入, 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(562) 评论(0) 推荐(0) 编辑
摘要:开发环境 (1)硬件平台:FS2410 (2)主机:Ubuntu 12.04FS2410串口的原理图串口UART寄存器配置配置TXD0与RXD0(GPH2、GPH3)设置波特率(UBRDIVn)设置传输格式(ULCONn)选择时钟源与中断方式(UCONn)设置FIFO(UFCONn)设置流控(UMCONn)接收字符和发送字符(UTRSTATn)源代码 //uart.c#include "2410addr.h" void putc(char ch) ... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(772) 评论(0) 推荐(0) 编辑
摘要:移植环境 硬件平台:FS2410 U-Boot版本:u-boot-1.1.6 编译器:arm-linux-gcc version 3.4.1U-Boot主要目录结构 U-Boot的 stage1代码通常放在 cpu/……/start.S文件中,它用汇编语言写成; U-Boot的 stage... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(756) 评论(0) 推荐(0) 编辑
摘要:1.安装tftpd(tftp服务器)、tftp(tftp客户端)以及xinetd(超级服务器)1.安装tftpd(tftp服务器)、tftp(tftp客户端)以及xinetd(超级服务器)1.安装tftpd(tftp服务器)、tftp(tftp客户端)以及xinetd(超级服务器)1.安装tftpd... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(526) 评论(0) 推荐(0) 编辑
摘要:Preface 虽然以前在windows上远控linux都是用的FTP+CRT,不过有些时候还是不太方便,比如不能用IDE对程序进行调试,现在就来配置下VNC,过程中出了些错误,上网查询时发现很多解决方法都没用,所以留下笔记,方便以后查阅! Virtual Network Computing(VN... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(1052) 评论(0) 推荐(0) 编辑
摘要:Preface 前面对linux设备驱动的相应知识点进行了总结,现在进入实践阶段! 《linux设备驱动入门篇》:http://infohacker.blog.51cto.com/6751239/1218461 《linux设备驱动扫盲篇》:http://infohacker.blog.51cto.com/6751239/1218747 《fedora下的字符设备驱动开发》:http://infohacker.blog.51cto.com/6751239/1155153开发一个基本的字符设备驱动 在Linux内核驱动中,字符设备是最基本的设备驱动。字符设备包括了设备最基本的操作,如打... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(548) 评论(0) 推荐(0) 编辑
摘要:linux设备驱动 Linux系统把设备驱动分成字符设备、块设备和网络设备三种类型。内核为设备驱动提供了注册和管理的接口,设备驱动还可以使用内核提供的其他功能以及访问内核资源。PCI局部总线 早期的计算机有众多总线标准。从最初的8位总线到16位总线,到目前主流的32位总线,不同厂商都制定了自己的总线标准。不同的总线设备给设备驱动的设计带了麻烦,直到后来PCI局部总线出台这种局面才得到缓解,并且逐步成为事实上的标准。 PCI是英文Peripheral Component Interconnect的缩写,中文意思是外设部件互连标准。 PCI局部总线标准最早由英特尔公司为制定,最初主要应用在P... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(1259) 评论(0) 推荐(0) 编辑
摘要:题目概述:Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with the following puzzle. They were given a 3-gallon jug and... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(652) 评论(0) 推荐(0) 编辑
摘要:基本电路原理——》电压和水压一样,水坝筑得越高水压越高,电流和水流一样,只要在一条渠道上假设渠道宽度深度一致,在渠道各处水流量是一致的,这就是串联电路中电流处处相等的道理。——》如果两条同样的渠道共同向一处供水水量会加倍,即并联电路的汇合处电流是两条(或多条)电路电流之和,这就是基尔霍夫电流节点定律... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(636) 评论(0) 推荐(0) 编辑
摘要:Flash存储器——》Flash存储器是近几年来发展最快的存储设备,通常也称作闪存。Flash属于EEPROM(电可擦除可编程只读存储器),是一类存取速度很高的存储器。——》它既有ROM断电可保存数据的特点,又有易于擦写的特点。Flash可以在断电的情况下长期保存信息,因此被广泛的应用在PC机的BIOS和嵌入式系统的存储设备。Linux Flash驱动结构——》Linux内核对Flash存储器有很好的支持。内核设计了一个MTD结构支持Flash设备,用户只需要按照MTD的要求设置Flash设备的参数并且提供驱动就可以让Flash设备很好的工作。MTD概述——》MTD是英文Memory Tech 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(964) 评论(0) 推荐(0) 编辑
摘要:触摸屏概述——》触摸屏并不是人们日常所见的立方体屏幕,它只是覆盖在显示屏表面的一层薄片,其工作原理比较简单,当有触摸笔或其他物体接触到触摸屏时,系统会根据触摸笔点击的图标或按键来接收信息,并作出一些人为设计的响应动作,从而实现人机交互功能。它的主要目的提供方便的人机交互功能,降低智能设备的操作难度,... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(1119) 评论(0) 推荐(0) 编辑
摘要:LCD显示器概述——》液晶显示器,LCD为英文 Liquid Crystal Display的缩写,它是一种数字显示技术,可以通过液晶和彩色过滤光源,并在平面面板上产生图像。——》与传统的阴极射线管(CRT)相比,LCD占用空间小、低功耗、低辐射、无闪烁、降低视觉疲劳,具有很大的发展潜力。液晶——》... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(2773) 评论(0) 推荐(0) 编辑
摘要:Preface USB体系支持多种类型的设备。 在 Linux内核,所有的USB设备都使用 usb_driver结构描述。 对于不同类型的 USB设备,内核使用传统的设备驱动模型建立设备驱动描述,然后映射到 USB设备驱动,最终完成特定类型的 USB设备驱动 USB驱动·入门:http://infohacker.blog.51cto.com/6751239/1226257USB串口驱动 USB串口驱动关键是向内核注册串口设备结构,并且设置串口的操作。 下面是一个典型的USB设备驱动分析。1、驱动初始化函数 usb_serial_init()函数是一个典型的 USB设备驱动初始化函.. 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(1296) 评论(0) 推荐(0) 编辑
摘要:Preface USB是目前最流行的系统总线之一。随着计算机周围硬件的不断扩展,各种设备使用不同的总线接口,导致计算机外部总线种类繁多,管理困难。USB总线正是因此而诞生的。USB总线提供了所有外部设备的统一连接方式,并且支持热插拔,方便了厂商开发设备和用户使用设备。USB遵循原则 USB的设计目标是对现有的PC机体系进行扩充,但是目前不仅是PC机,许多的嵌入式系统都开始支持USB总线和接口标准。USB设计主要遵循下面几个原则:易于扩充外部设备:USB支持一个接口最多127个设备。灵活的传输协议: 支持同步和异步数据传输。设备兼容性好: 可以兼容不同类型的设备。接口标准统一:不同的设备之间使用 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(1664) 评论(0) 推荐(1) 编辑
摘要:开发环境 1、硬件平台:FS2410 2、主机:Ubuntu 12.04ADC寄存器配置 1、初始化ADC(ADCCON) 设置预分频,预分频因子,选择A/D转换通道,并选择正常模式且启动转换 2、判断转换是否结束(ADCCON[5]) 3、读取转换结果(ADCDATn)串口的初始化 见《串口通信·FS2410》:http://infohacker.blog.51cto.com/6751239/1223137源代码 //adc.c#include "2410addr.h" //头文件,包含寄存器的设置 ... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(720) 评论(0) 推荐(0) 编辑
摘要:开发环境1、硬件平台:FS2410(s3c2410)2、主机:Ubuntu 12.04 LTSLED原理图LED的GPIO的配置配置GPFCON寄存器,设置GPF4-7为输出配置GPFDAT,设置LED灯亮与灭主要步骤通过设置GPFCON将GPF4-7设置为输出设置GPFDAT,可以将led灯亮或灭,GPFDAT的相应位置1灯灭,置0灯亮源代码 NAND flash启动关狗 设置栈//start.S.text.global _start_start:#define WATCHDOG 0x53000000 ldr r0, =WATCHDOG //关看门狗 mov r1, #0 ... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(610) 评论(0) 推荐(0) 编辑
摘要:InstallShield Installshield是一个强大和易于使用,用于解决Windows软件安装包开发的制作工具。用它可以以传统MSI方式和虚拟格式,自动化地封装、捆绑和包装你的产品。 IntallShield能使你的用户在决定何时何地何方式管理和部署你的应用程序时,得到一个最时尚舒畅的... 阅读全文
posted @ 2013-06-27 17:40 Leo.cheng 阅读(4034) 评论(1) 推荐(0) 编辑
摘要:Preface 话说,在用暴风影音进行视频播放的时候,利用其它的软件对视频进行截图的时候,并不能截取到视频的画面,我这里用QQ五笔的截图功能截图,效果如下 对于这种情况,以前也经常遇上,但是也没有想过为什么? 可以看见,黑屏的只是视频播放界面,而播放列表与边框都可以显示! 然后我就在群里问了... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(1536) 评论(0) 推荐(0) 编辑
摘要:Preface 当用户编译一个linux内核代码后,会产生几个文件:vmlinz、initrd.img, 以及System.map,如果配置过grub引导管理器程序,会在/boot目录下看到这几个文件。vmlinuz vmlinuz是可引导的、压缩的内核文件。 该文件包含了一个最小功能的内核,... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(4338) 评论(0) 推荐(0) 编辑
摘要:Perface Linux内核主要由进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC)5个子系统组成,如图1所示。图1 Linux内核的组成部分与关系1.进程调度 进程调度控制系统中的多个进程对CPU的访问,使得多个进程能在CPU中“微观串... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(802) 评论(0) 推荐(0) 编辑
摘要:linux设备驱动 驱动程序英文全称Device Driver,也称作设备驱动程序。驱动程序是用于计算机和外部设备通信的特殊程序,相当于软件和硬件的接口,通常只有操作系统能使用驱动程序。 在现代计算机体系结构中,操作系统并不直接于硬件打交道,而是通过驱动程序于硬件通信。设备驱动介绍 驱动程序是附加到操作系统的一段程序,通常用于硬件通信。 每种硬件都有自己的驱动程序,其中包含了硬件设备的信息。操作系统通过驱动程序提供的硬件信息与硬件设备通信。由于驱动设备的重要性,在安装操作系统后需要安装驱动程序,外部设备才能正常工作。 Linux内核自带了相当多的设备驱动程序,几乎可以驱动目前主流的各种硬... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(2980) 评论(0) 推荐(2) 编辑
摘要:在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。❶先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。 为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablevoid msg(){ printf("Hello\n");}下面是main.c的内容int main(void){ extern char a; // extern variable 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(416) 评论(0) 推荐(1) 编辑
摘要:BusyBox 是很多标准 Linux® 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet(不过它的选项比传统的版本要少);有些人将 BusyBox 称为 Linux ... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(18542) 评论(0) 推荐(1) 编辑
摘要:什么是Initrd initrd的英文含义是 boot loader initialized RAM disk,就是由boot loader初始化的内存盘。在 linux内核启动前, boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(2973) 评论(0) 推荐(0) 编辑
摘要:Linux 2.6.19.x 内核编译配置选项简介作者:金步国版权声明本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接、下载... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(1015) 评论(0) 推荐(0) 编辑
摘要:Preface 之前也发表过关于《Bootloader启动过程分析》的文章,但是内容表达得比较抽象,大多是文字叙述,所以这里从系统和代码的角度来深入分析bootloader的启动过程。 工具:Source Insight 目标:U-Boot-1.1.6 仅留此分析过程,日后再作补充(纯手打也不容易啊... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(1141) 评论(0) 推荐(0) 编辑
摘要:加载.s汇编文件 做ARM嵌入式开发时,有时得整汇编代码,但在SI里建立PROJECT并ADD TREE的时候,根据默认设置并不会把该TREE里面所有汇编文件都包含进来,默认只加了.inc和.asm后缀的,.s后缀的没有。而且用SI打开.s的文件时,一片黑白没有色彩, 感觉回到DOS的EDIT时代... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(2087) 评论(0) 推荐(0) 编辑
摘要:Perface 前面已经写过一篇《嵌入式linux内核的五个子系统》,概括性比较强,也比较简略,现在对其进行补充说明。 仅留此笔记,待日后查看及补充!Linux内核的子系统 内核是操作系统的核心。Linux内核提供很多基本功能,如虚拟内存、多任务、共享库、需求加载、共享写时拷贝(Copy-On... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(1899) 评论(0) 推荐(0) 编辑
摘要:目录 Linux2.6版本内核编译配置选项(一):http://infohacker.blog.51cto.com/6751239/1203633 Linux2.6版本内核编译配置选项(二):http://infohacker.blog.51cto.com/6751239/1203635Device... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(2153) 评论(0) 推荐(0) 编辑
摘要:内存管理介绍 早期的计算机内存容量非常小,当时的PC主要使用DOS操作系统或者其它操作系统。早期的操作系统由于系统硬件的限制,无法支持内存管理,应用程序占用的空间和程序规模都比较小。随着计算机硬件性能不断提高,程序的处理能力也不断提高,应用程序占用的存储空间不断膨胀。实际上,程序的膨胀速度远远超过... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(445) 评论(0) 推荐(0) 编辑
摘要:Perface 随着技术的进步,小作坊式的软件开发年代已经过去。目前的软件开发能力在不断提升,用户对软件的功能和性能要求也越来越高,软件开发质量受到关注。 在软件开发过程中,各种数据和代码的管理需要经过统筹安排和管理,出现了各种软件开发文档,用于控制软件开发过程。软件开发文档是与开发阶段对应的。 一般来说,每个阶段至少产生一种文档。软件开发文档描述了在软件开发各阶段中不同的任务。不同组织和公司有不同的开发文档和规范,使用不同的开发模型产生的文档内容也不相同。软件开发文档指导不同阶段的相关人员的工作,不同阶段的设计人员会设计出相应阶段的最终文档。如需求设计文档指导项目经理做软件的框架设计,... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(761) 评论(0) 推荐(0) 编辑
摘要:QT库结构 Qt图形库是一个组织严谨的C++类库,其结构如图所示细说Qt库 Qt类库中包含了上百个类,结构十分复杂,上图展示了Qt_3.2类库的基本结构。 Qt类库中的类可以分成两种类型:一种是直接或者继承自Qt类另一种是独立的,不从任何类集成 独立的类在Qt库中一般用来完成独立的功能,例如操作XML文件的QXmlReader类。 直接从从Qt类继承的类主要可以分成QObject类和QEvent类。QObject类是所有应用组件的基类,QEvent类是所有QT事件响应类的基类。其他的还有QCursor、QPen、QTab等类描述的窗口组件可以在窗体的任意地方出现,因此直接从Qt基类继... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(7891) 评论(0) 推荐(0) 编辑
摘要:概述 编译的目的是把人书写的高级语言代码翻译成目标程序的语言处理程序,编译用的程序(例如gcc)称为编译系统。 一个编译系统把一个源程序翻译成目标程序的工作过程分为5个阶段:词法分析、语法分析、中间代码生成、代码优化和目标代码生成。 其中主要阶段是词法分析和语法分析,也可以称为源代码分析,分析过程中发现有语法错误,给出提示信息。词法分析 词法分析的目的是处理源代码中的单词。 词法分析程序按照从左到右的顺序wyuq 扫描源代码,生成单词对应的符号,把字符描述的程序转换为符号描述的中间程序。 词法分析程序也称做词法扫描器。 词法分析过程可以用手工构造和自动生成两种方法。手工构造可以使... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(686) 评论(0) 推荐(0) 编辑
摘要:题目概述:Anagrams by Stack How can anagrams result from sequences of stack operations? There are two sequences of stack operators which can convert TROT ... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(589) 评论(0) 推荐(0) 编辑
摘要:功能 LCD显示字汉字,字符和图片说明 汉字,字符和图片需要用相应的取模软件得到相应的c文件,然后包含到工程中主要代码1)绘制背景void Brush_ U32 c){ int x,y ; for( y = 0 ; y >1; } mask=0x80; //掩码 buffer=ch[i*2+1]; //提取一行的第二个字节 for(j=0;j>1; } }}3)字符绘制void ... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(483) 评论(0) 推荐(0) 编辑
摘要:功能 裸机程序,实现LCD显示数字时钟主要代码1)背景绘制void Brush_ U32 c){ int x,y ; for ( y = 0 ; y >1; //移位,为判断下一位作准备 } /*汉字右半部分*/ mask=0x80; //从bit7开始判断 buffer=ch[i*2+1]; //提取一行的第二个字节 /*一个字节有8个位,每一位代表字模数据对应的点是否描颜色*/ for... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(507) 评论(0) 推荐(0) 编辑
摘要:功能 通过GPIO,实现按键1点亮LED1,按键2点亮LED2……说明 1)因为2440的按键只涉及行,所以在扫描按键时比2410简单了很多 2)在进行移位操作之前,必须进行数据寄存器的初始化,否则会出错(硬件特性)源码/**********************************************************************************函数名:main()*****功 能:通过GPIO,实现按键1点亮LED1,按键2点亮LED2*****说 明:*************************************************.. 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(420) 评论(0) 推荐(0) 编辑
摘要:题目概述:Crashing Balloon On every June 1st, the Children's Day, there will be a game named "crashing balloon" on TV. The rule is very simple. On the gr... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(1542) 评论(0) 推荐(0) 编辑
摘要:题目概述:Fire Net Suppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representin... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(1004) 评论(0) 推荐(0) 编辑
摘要:Preface 因为最近一直在搞硬件的东西,所以暂时没管自己专业的东西,昨晚一童鞋问到一个网络里面的算法时,突然发现自己的强项,已然不是强项了,于是总结了一下 硬件的东西,其实是比较死的东西(对于目前的我来说),无非就是数电和模电里面的原理,对于硬件原理来说,更多的是0和1,对于某些人来说,0和1显得那么神秘,但是,它也在很大程度上,限制着人们的思维。 相比之下,软件的东西,就比较灵活了,写程序,一个结果,可以有n种表达方式,不同的表达方式,便有不同的执行效率;这在某种程度上,可以发散人的思维。 虽然走到嵌入式的道路上,但是软件仍然我的优势,在弥补自己的弱势的时候,也不能淡化自己的优势... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(364) 评论(0) 推荐(0) 编辑
摘要:A/D转换器 A/D转换器,又称模/数转换器,顾名思义,就是把模拟信号数字化。 由于系统的实际处理对象往往都是一些模拟量(如温度、压力、位移、图像等),要使计算机或数字仪表能识别和处理这些信号,必须首先将这些模拟信号转换成数字信号,这就必须用到A/D转换器。A/D转换器的一般步骤 模拟信号进行A/D转换的时候,从启动转换到转换结束输出数字量,需要一定的转换时间,在这个转换时间内,模拟信号要基本保持不变。否则转换精度没有保证,特别当输入信号频率较高时,会赞成很大的转换误差。要防止这种误差的产生,必须在A/D转换开始时将输入信号的电平保持住,而在A/D转换结束后,又能跟踪输入信号的变化。因此... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(1216) 评论(0) 推荐(0) 编辑
摘要:PWM定时器 PWN:脉冲宽度调制 每个定时器都有一个专用的由定时器时钟驱动的16位递减计数器。当递减计数器的计数值达到0的时候,就会产生定时中断请求来通知CPU定时器操作完成。当定时器递减计数器达到0的时候,相应的TCNTBn的值会自动重载到递减计数器中以继续下次操作。 但是,如果定时器停止了,比如在定时器运行时清除TCON中的定时器使能位,TCNTBn的值不会被重载到递减计数器中 TCMPBn的值用于脉冲宽度调制(PWM)。当定时器的递减计数器的值和比较寄存器的值相匹配的时候,定时器控制逻辑将改变输出电平。因此,比较寄存器决定了PWM输出的开关时间。定时吕控制寄存器(TCON) ... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(1394) 评论(0) 推荐(0) 编辑
摘要:异步通信 所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本是同步的。异步串行通信的特点可以概括如下 1)以字符为单位传送信息 2)相邻两字符间的间隔是任意长 3)因为一个字符中的比特们长度有限,所以需要的接收时钟和发送时钟只要相近就可以 4)异步方式的特点简单地说就是:字符间异步,字符内部各位同步异步串行方式的数据格式 1)1位起始位,规定为低电平0 2)5~8位数据位,即要传送的有效信息 3)1位奇偶校验位 4)1~2位停止位,规定为高电平1同步串行 所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(469) 评论(0) 推荐(0) 编辑
摘要:目的 为了更好地掌握S3C2410中断的原理及中断程序的编写。 内容利用S3C2410的外部中断0和外部中断1实现两个按键功能原理 本次选择的是外部中断EXTINT0和EXTINT11。中断的产生分别来自按钮SB1202和SB1203,当按钮按下时,EXTINT0(对应管脚GPF0)或EXTINT11(对应管脚GPG3)和地连接,输入低电平,从而向CPU发出中断请求。 当CPU受理后,进入相应的中断服务程序,通过超级终端的主窗口显示当前进入的中断号。程序 1 #include "2410addr.h"//这头文件找了好久啊,mdk里面没有,后来在一个实例中提取出来的 2 3 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(619) 评论(0) 推荐(0) 编辑
摘要:1.函数名单词之间用_隔开,每一个字母大写 Uart_Printf() //这个由三星的TEST风格延续下来,因此没有参数时,必须加void,否则ADS会编译报警 void Test_Keyscan(void);2.寄存器名前要带小写的r。表示寄存器,大写名称要与DataSheet标的名一致..其宽度要根据硬件有效位来定义,其中必须带volatile关键字 有效位大于16位 #define rGPMCON (*(volatile unsigned *)(0x7F008820)) 有效位小于等于16位,大于8位 #define rWTCON (*(volatile ... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(471) 评论(0) 推荐(0) 编辑
摘要:ARM处理器7种类型异常 按优先级从高到低的排列如下: 复位异常(Reset) 数据异常(Date Abort) 快速中断异常(FIQ) 外部中断异常(IRQ) 预取异常(Prefetch Abort) 软件中断异常(SWI) 未定义指令异常(Underfined instruction)当异常发生时 处理器会把PC设置为一个特定的存储器地址。 这一地址放在被称为向量表(vector table)的特定地址范围内。 向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。 当异常发生时,分组寄存器r14和SPSR用于保存处理器状态。ARM异常处理器模式 每一... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(1112) 评论(0) 推荐(0) 编辑
摘要:GPIO Gerneral-Purpose IO ports,即通用IO口。 在嵌入式系统中常常有数量众多,但是却比较简单的外部设备/电路。 对这些设备/电路,有的需要CPU为之提供控制手段,有的则需要被CPU用做输入信号。 许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如控制某个LED灯亮与灭;或者通过获取某个管脚的电平属性来达到判断外围设备的状态。 对这些设备/电路的控制,使用传统的串行口或并行口都不合适,所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO。 接口至少有两个寄存器,即“通用IO控制寄存器”与“通用IO数据寄存器”。 数据寄... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(649) 评论(0) 推荐(0) 编辑
摘要:Preface 把学校的事忙得差不多了,又可以搞这板子了。。。 minicom的使用操作,前面已经写得很详细,但是下载程序到开发板的过程中,还是有些地方是需要注意的,另外第一次接触,少不了会遇上各种问题Step1 连结好开发板与PC机的串口线与USB下载线Step2 给板子上电,在minicom中... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(615) 评论(0) 推荐(0) 编辑
摘要:Preface 前面编译linux内核的时候,用各种cross版本都不行啊,真是纠结,于是就想着自己也要会编译交叉工具的方法,然后各种尝试,各种问题啊,最后还是没解决(还有其它事情),步骤我都走熟了,记下来吧Preparationroot@lcw:/home/mystery/cross_tool... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(890) 评论(0) 推荐(0) 编辑
摘要:小续第一次接触内核的东西,有点小激动啊激动归激动,这实验还是要继续做下去,书上三两句话就带过去的,剩下的就留给我们了,着实考验动手能力啊当编译过内核之后,发现这个过程也不复杂嘛(复杂的是内核的配置),不过对于没接触过的人来说,也能够折腾一段时间的了,所以记下这个过程,其中也有些需要注意的地方,然后给... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(663) 评论(0) 推荐(0) 编辑
摘要:小续 嵌入式开发的运行环境是目标板,而开发环境是宿主机。因此需要把宿主机中经过编译之后的可执行文件下载到目标板上去。需要注意的是,这里所讲的下载是下载到目标机中的SDRAM 常见的下载方式有网络下载(如TFTP、FTP等方式)、串口下载、USB下载等 当用TFTP下载时,需要在宿主机上开启TFTP服... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(1031) 评论(0) 推荐(0) 编辑
摘要:磁盘即是硬盘,由许多块盘片(盘面)组成,每个盘片的上下两面都涂有磁粉,磁化后可以存储信息数据。每个盘片的上下两面都安装有磁头,磁头被安装在梳状的可以做直线运动的小车上以便寻道,每个盘面被格式化成有若干条磁道,这些磁道是同心圆。并规定最外面的磁道是0磁道,次外层是1磁道,每个磁道又被分成若干个扇区... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(960) 评论(0) 推荐(0) 编辑
摘要:小续看了下时间,10年写的了批处理是个很强大的东西,现在任何一个工具都包含这个功能,只是被工具给封闭起来了怀念下dos时代的批处理啊rem即高级语言中的注释的意思,能看懂每个程序的作用了吧@echo offrem …………………call命令的应用type a.txtcall c.batecho 现在... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(641) 评论(0) 推荐(0) 编辑
摘要:那些年,我们迷恋的命令(一)那些年,我们迷恋的命令(二)Linux系统下基本命令Linux系统下基本命令: 要区分大小写 uname 显示版本信息(同win2K的 ver) dir 显示当前目录文件,ls -al 显示包括隐藏文件(同win2K的 dir) pwd 查询当前所在的目录位置 cd cd... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(471) 评论(0) 推荐(0) 编辑
摘要:小续还记得,那些年玩hack的朋友吗,现在玩这个的,基本都是小孩子了(俗称脚本小子)。还记得,那些年敲过的命令吗,现在的孩子,都用工具了(叫工具党)。孩子们,健康的网络环境需要大家一起去维护。命令本身,其实是很有用的,就看你怎么使用它了。不要把我当hacker看,我只是个计算机爱好者!怀念一下,大... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(717) 评论(0) 推荐(0) 编辑
摘要:html特效代码(一)html特效代码(二)图片漂浮广告代码围绕鼠标的立体旋转文字围绕鼠标的立体旋转文字文本特效-打字效果的网站公告网页特效-文本特效-打字效果的网站公告与之间-->百晓生说明:无法屏蔽的网页右下角浮动窗口无法屏蔽的网页右下角浮动窗口>_>×网页制作大宝库网页制作大宝库dabaoku... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(303) 评论(0) 推荐(0) 编辑
摘要:小续还记得当初和八哥一起制作百家成员chm电子书的时候,各种特效啊,这里收集了一些个人比较喜欢的html特效,看个人喜欢了,不喜勿喷啊html特效代码(一)html特效代码(二)3D相册代码斗转星移**********全局按钮复制并粘贴下面的JS代码,放到您的网页,可以在和的之间网页的任意位置放置。... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(815) 评论(0) 推荐(0) 编辑
摘要:小续 这也是我11年看加密解密整理的一些笔记,因为后面有事,所以这个笔记并不完整,不过也涉及到很多知识了,写给爱好加密解密的朋友 多字节数据是按怎样的顺序存放的呢?实际情况和CPU有关,微处理中的存放顺序有正序和逆序之分。正序(big-endian) 逆序(little-endian) 两种编码的... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(454) 评论(0) 推荐(0) 编辑
摘要:windows核心编程整理(上)windows核心编程整理(下)线程的堆栈 每当创建一个线程时,系统就会为线程的堆栈(每个线程有他自己的堆栈)保留一个堆栈空间区域,并将一些物理存储器提交给这个以保留的区域 当创建一个线程的堆栈时,系统将会保留一个链接程序的/STACK开关指明的地址空间区域 堆栈区域... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(277) 评论(0) 推荐(0) 编辑
摘要:小续这是我11年看《windows核心编程》时所作的一些笔记,现整理出来共享给大家 windows核心编程整理(上) windows核心编程整理(下)线程的基础知识进程是不活泼的,进程从来不执行任何东西,进程只是线程的容器线程用于描绘进程中的运行路径每个进程必须拥有一个进入点函数,线程从这个进入点... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(632) 评论(0) 推荐(0) 编辑
摘要:小续 最近很多人都在问我数据结构和算法的相关问题,对于初学者,貌似听到算法,数据结构什么的,都觉得是比较高深的东西,其实它们并没有想象中的难,只是你还没有一个整体上的把握,还没有习惯站在整体上去思考问题。算法是灵魂,数据结构是包装,语言只是工具,学什么语言并不重要,重要的是思想。这也是如鹏的理念:一通百通。 去年比赛的时候,我看过一些算法,也收集了一些自认为比较有代表性,优秀的算法,在这里整理出来给大家分享一下,希望能够帮助到大家(我也是菜鸟,高手勿喷)整理清单如下:算法的艺术(一):http://infohacker.blog.51cto.com/6751239/1171334算法的艺术.. 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(433) 评论(0) 推荐(0) 编辑
摘要:小续 对于数据结构和算法,都只是思想层面的东西,而在实际运用当中,多数是与系统和文件相联系的,所以对于学习数据结构与算法,可以参照操作系统中一些代码的实现,毕竟那都是经过大牛再三修改得出来的精华。 但据我了解,很多人都一味地去“研究”算法本身去了,算法主要是用来解决问题的,当它们遇到问题时,知道怎么解决,但却不知道从哪里入手,这是很悲剧的一件事情,而实际应用中,大多数操作都和文件相当,所以我这里列了两个文件相关的实例,主要是提醒大家不要忘了学算法的目的,希望能帮助到大家文件连接 编程:实现将命令行中指定的第一个文本文件的内容追加到第二个文件之后。 实例解析: 该实例要求从命令行指定两个... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(436) 评论(0) 推荐(0) 编辑
摘要:求解线性方程 用高斯(Guass)消去法求解N阶线性方程组Ax=B。 实例解析: 高斯消去法解线性代数方程的基本原理如下。 对于线性方程组: 其中系数矩阵为A,未知量为X,值向量为B。计算的方法分为两步进行。 第1步,消去过程,对于k从0到n -2做以下3步。 从系数矩阵A的第k行、第k列开始的右下角子阵中选取绝对值最大的元素,并通过行交换与列交换把它交换到主元素(即对角线元素)的位置上。 归一法: j=k+1,…..,n-1 消去: j=k+1,…..,n-1 第2步,回代过程。 i=n-2,…..,1,0 最后对解向量中的元素顺序进行... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(490) 评论(0) 推荐(0) 编辑
摘要:多项式的表示和计算 设计一种用单链表存储多项式的结构,每个结点存储一项的系数和指数(类型都是int),并编写一个产生多项式链表的函数和一个实现两个多项式相加的函数。 实例解析: 用单链表存储每一项的数据,则链表结点的结构应含有三个成员:系数、指数和后继的指针。定义结构如下:struct Node{ int coef; int power; struct Node *link;}; 用链表存储多项式时,若系数不为0,则结点存在,若系数为0,则不保留该结点。要注意的是:做加法运算时,因有些结点不存在,所以要比较两个结点所存的次数是否一致。 主要程序代码:#inclu... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(397) 评论(0) 推荐(0) 编辑
摘要:储油问题 一辆重型卡车的油耗是1L/km,载油能力为500L,今欲穿过1000km的沙漠。由于卡车一次过不了沙漠,因此司机必须在沿途设几个储油点。问:如何建立这些储油点,每一个储油点储存多少油才能使卡车以最小油耗通过沙漠? 实例解析: 本例采用倒推法来解题。所谓倒推法,就是在不知初始值的情况下,通过某种递推关系,由最终值推算出初始值的方法。储油问题和猴子吃桃子问题等都是典型的倒退问题。 显然,卡车要通过沙漠,必须在离起点500km处存储500L油,如图17-1所示。 图17-1 储油点及储油量示意图 而要在500km处储油500L,需要卡车从某处(... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(347) 评论(0) 推荐(0) 编辑
摘要:小续 算法只是一种思想,在很大程度上,其实现都依赖于数据结构,所以这里提取出一些典型的算法和数据结构,包括排序以及链表/堆栈/队列等结构的操作------------------------------------------------------冒泡法排序 数组中有N个整数,用冒泡法将他们从小到大(或从大到小)排序。 实例解析: 排序是非常重要且很常用的一种操作,有冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序等多种方法。这里我们先简单介绍前三种排序算法和代码的实现,其余算法将在后续课程《数据结构》中学习到。 冒泡法排序是C语言教材中已经介绍过的排序方法,与其他排序... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(377) 评论(0) 推荐(0) 编辑
摘要:报数游戏 n个小孩围成一圈,从1开始报数,报到k的人退出,其余人重新从1报数,仍是报到k退出,直到圈中只剩m个小孩,问最后剩下的是哪些人? 实例解析: 本题在这里将借助于数组求解,用链表求解的方法放在第17章算法与数据结构实例中。 设计思路:用数组元素模拟小孩。定义一个数组,每个元素存入一个数值作为小孩的编号,然后从第一个元素开始报数,报到k的人将编号清0,表示已退出圈子。在报数的过程中,凡是编号为0的人不再参加报数。当数组所有元素都报数后,重新从数组头开始报数,周而复始,直到圈中只剩m个小孩。#define N 100 int main() {int a[N], n, m, ... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(414) 评论(0) 推荐(0) 编辑
摘要:国民生产总值多少年翻番? 假设我国工农业总产值以每年9%的速度增长,问多少年翻一番? 实例解析: 翻一番意味着变为原来的两倍,而每年只能增加9%,相当于每年乘上一个1.09。我们可以在程序中不断地乘以1.09,并对此进行计数,若已经达到两倍,则计数器中的值便是需要经过的年数。 这是一个事先无法确定循环次数的循环。#include int main() {int n = 0; float y = 1; //设当年的产值为1,类型不能是int while( y int main() {int n; float y =... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(497) 评论(0) 推荐(0) 编辑
摘要:火车托运费的计算 设乘坐火车托运行李时按下列式子收费: 0 (040) 编一个程序用来计算应交金额。 实例解析: 这是第三章中的一个例题(当时是用switch处理的),是一个选择结构的实例,收费情况共分三种。 本题可以采用三种方法来编程: (1) 用三个单独的if语句,每个if语句处理一种情况; (2) 用嵌套的if语句处理,需两个if语句; (3) 用switch语句。方法一:用单独的if语句#include int main(){int x, y; scanf(“%d”, &x);if(x 20 && x 40) ... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(328) 评论(0) 推荐(0) 编辑
摘要:利用位运算求整数的原码或补码 利用位运算求任意整数的原码或补码。 实例解析: 整数在内存中本来就是用补码存放的,若要求出补码,只需求出内存中的每一位二进制数即可。而原码,若是负数,则需要将补码减1然后取反(最高位不取反)。 程序代码:#include "stdio.h"int main(){int n, i; char k; clrscr(); scanf("%d",&n); printf("要转成什么?\n"); printf("1、原码\n"); printf("2、补码\n");  阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(554) 评论(0) 推荐(0) 编辑
摘要:数组作计数器 一篇文章共有10行,每行最多80字符,编程统计文章中26个英文字母分别出现的次数(不区分大小写)。 实例解析: 文章的内容可以通过键盘输入到一个二维数组中:char s[10][81]; for(i = 0; i = 65 && s[i][j] = 97 && s[i][j] int palindrome(char *p) {int i, n; n = strlen(p); //测试字符串长度 for(i = 0; i int main() {int prime(int); int i, count = 0; for(i = 1... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(296) 评论(0) 推荐(0) 编辑
摘要:求π的近似算法 用两种方法编程求π的近似值。 实例解析: 1、用“正多边形逼近”的方法求出π的近似值 我国的祖冲之就是用这种方法在世界上第一个得到精确度达小数点后第6位π值的。 利用圆的内接正六边形边长等于半径特点将边数翻番,做出正十二边形,求出边长,重复这个过程,就可获得所需精度的π的近似值。 假设单位圆的内接多边形的边长为2b,边数为i,则边数加倍后新的正多边形的边长为: 周长为2ix (其中i为加倍前的正多边形的边数) 2、利用随机数法求π的近似值 基本思路是:在一个单位边长的正方形中,以边长为半径,以一个顶点为圆心,在正方形上做四分之一圆。随机向正方形内扔点,若落入... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(612) 评论(0) 推荐(0) 编辑
摘要:小续 以下是我收集的一些有趣的计算实例,希望能够提高读者的编程水平及分析问题/解决问题的能力---------------------------------------------马克思手稿中的数学题 马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭共花了50先令。若每个男人花3先令,每个女人花2先令,每个小孩花1先令。问男人、女人和小孩各有几人? 实例解析: 设x,y,z分别代表男人、女人和小孩的人数。按题目要求,可得到下面方程: x + y + z = 30 (1) 3x + 2y + z ... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(885) 评论(0) 推荐(0) 编辑
摘要:八皇后问题 求八皇后问题所有的解。 实例解析: 这是一个非常古老的问题:如何在一个8*8的棋盘上无冲突地放置8个皇后棋子,称为八皇后问题。 在国际象棋中,皇后可以沿着任何直线和任何45°斜线移动吃掉别的棋子,因此,任何一个皇后所在的横线上、竖线上和两条对角线上都不能有其他皇后存在。一个完整的、无冲突的八皇后分布称为八皇后问题的一个解。本例求解八皇后的所有解。 很显然,棋盘的每一行都必须有且只能有一个皇后,因此我们从第一行开始,先放下一个皇后(有8个位置可以放置),然后用递归的方式调用函数本身,去放置后面的棋子,直到第八行放完,则表示找到了一个解。 对于每一行,可以放置皇后的位置有8. 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(389) 评论(0) 推荐(0) 编辑
摘要:打印魔方阵 一个奇数阶(设为n阶)的方阵,将1、2、3……n2填入方阵中,使每行、每列数据之和都相等,这样的方阵便是魔方阵。 实例解析: 填写魔方阵有一个固定的方法: (1)1总是位于第一行的中间。 (2)从2开始,下一个数总是位于上一个数的右上方的空格内,如5应该位于4的右上方。 (3)若右上方超出表格的右边界,则数字填入到第一列,行数不变。图16-1中的3和8都是这种情况。 若右上方超出上边界,则数字填入最后一行,列数不变。图16-1中2和9都是这种情况。 若按上面规则推算出来的位置已经有数字存在,则下一个数位于上一个数的下方空格内。例如:本来4应该填入3的右上方,但3的右上... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(293) 评论(0) 推荐(0) 编辑
摘要:简介 Linux下的Minicom的功能与Windows下的超级终端功能相似,可以通过串口控制外部的硬件设备.适于在linux通过超级终端对嵌入式设备行管理.同样也可以使用minicom对外置Modem 进行控制.Minicom的配置 第一次 启动时: 需对minicom进行配置: minic... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(8256) 评论(0) 推荐(0) 编辑
摘要:在刚接触FS2410时,其实这个测试也没有多大意义,但是对于以后来说,当一个产品做成功时,产品测试还是一个必须经过的一个阶段,所以这个流程还是有必要走一下! 在非操作系统下,主要进行RTC测试,按键测试,蜂鸣器测试,ADC测试,IIC测试,触摸屏测试,LCD屏测试,音频输出测试,音频输... 阅读全文
posted @ 2013-06-27 17:36 Leo.cheng 阅读(445) 评论(0) 推荐(0) 编辑
摘要:平台: 深圳市优龙科技有限公司的FS2410(基于ARM9)准备:1、用串口(UART1,J8)线与PC机相连,这个是用来传输数据和显示信息的2、连接USB数据下载线(usb device),注意需要自己装usb驱动,这个是用来下载文件的3、设置好串口工具(超级终端或DNW工具)的参数说明:1、S... 阅读全文
posted @ 2013-06-27 17:36 Leo.cheng 阅读(633) 评论(0) 推荐(0) 编辑
摘要:Boot Loader启动过程分析一、 Boot Loader的概念和功能 1、嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分:(1)引导加载程序:其中包括内部ROM中的固化启动代码和Boot Loader两部分。而这个内部固化ROM是厂家在芯片生产时候固... 阅读全文
posted @ 2013-06-27 17:36 Leo.cheng 阅读(1620) 评论(0) 推荐(0) 编辑
摘要:Preface Makefile固然可以帮助make完成它的使命,但要承认的是,编写Makefile确实不是一件轻松的事,尤其对于一个较大的项目而言更是如此。那么,有没有一种轻松的手段生成Makefile而同时又能让我们享受make的优越性呢?autotools系列工具正是为此而设的,它只需用户输... 阅读全文
posted @ 2013-06-27 17:36 Leo.cheng 阅读(1158) 评论(0) 推荐(0) 编辑
摘要:查看软件xxx安装内容:dpkg -L xxx查找软件库中的软件:apt-cache search 正则表达式查找软件库中的软件:aptitude search 软件包查找文件属于哪个包:dpkg -S filename查找文件属于哪个包:apt-file search filename查询软件xx... 阅读全文
posted @ 2013-06-27 17:36 Leo.cheng 阅读(470) 评论(0) 推荐(0) 编辑
摘要:google chrome google浏览器一直都是深受大家喜爱的一个浏览器,而且其跨平台性比较好,这对于书签同步来说是非常重要的。但是在linux下,默认的是火弧浏览器,而google的安装又不像windows这么方便,最近总有人问如何安装,所以还是觉得有必要写这样一篇博客。下载googl... 阅读全文
posted @ 2013-06-27 17:36 Leo.cheng 阅读(2770) 评论(0) 推荐(0) 编辑
摘要:IIC总线工作原理 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。起始和终止信号 :SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向... 阅读全文
posted @ 2013-06-27 17:36 Leo.cheng 阅读(953) 评论(0) 推荐(0) 编辑
摘要:最近一直在学嵌入式,蛋疼啊,专业学软件的去搞硬件原理,真心有点伤不起,比较无聊,希望尽早脱离这个状态。 中午在林同学那里看到他在MFC上应用了Skin++皮肤,这是一款通用的软件换肤套件,支持各种系统,无聊啊,皮肤神马的以前也搞过,不过以前没玩过MFC的,以前是玩的SDK套件中的DirectUI(炫彩界面库),刚好硬件看得想睡的时候,就把这套皮肤拿来玩了一下,效果还不错,有图有真相,下面是一套机器人皮肤。 虽然会MFC,不过很少用MFC来做软件,我一般是用SDK和delphi做开发,于是我想,如果这套皮肤也能用于delphi,该多好啊。 然后看了下Skin++的这个版本,它是以DLL... 阅读全文
posted @ 2013-06-27 17:36 Leo.cheng 阅读(604) 评论(0) 推荐(0) 编辑
摘要:鼠标右键新建添加RTF文档 今天想将空间日志作个本地备份,但是苦于找不到适合的文本工具,因为一般的文本编辑工具都不支持贴图。 虽然word就可以满足我们的需求,但文件格式不用doc而是rtf 而我以前清理注册表时把所有的无用文件都删除了,所有现在需要重新加入RTF文档。 我们既可以享用wor... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(3208) 评论(0) 推荐(0) 编辑
摘要:模拟电路基础知识问答整理mystery1、温度对半导体材料的导电性能有什么影响? 答:温度对半导体的导电性能有很大影响。当温度升高时,半导体材料内的自由电子和空穴数量迅速增加,半导体的导电性能将迅速提高。2、什么是本征半导体和杂质半导体? 答:化学成分纯净的半导体就是本征半导体。在本征半导体中掺入某... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(2426) 评论(0) 推荐(1) 编辑
摘要:模拟电路基础By 成鹏致远资料#.三极管作用三极管的主要作用是电流放大,以共发射极接法为例(信号从基极输入,从集电极输出,发射极接地),当基极电压UB有一个微小的的变化时,基极电流IB也会随之有一小的变化,受基极电流IB的控制,集电极电流IC会有一个很大的变化,基极电流IB越大,集电极电流IC也越大... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(4079) 评论(0) 推荐(0) 编辑
摘要:嵌入式系统硬件基础By 成鹏致远第一章 常用硬件——>嵌入式系统常用的硬件器件,主要包括分立器件、光电半导体、逻辑IC、模拟IC以及存储器共五大类——>分立器件主要有:二极管、三极管、电阻、电容、电感以及场效应管等——>二极管的主要特性是单向导电性——>二极管按其用途可分为:整流二极管、稳压二极管、... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(1289) 评论(0) 推荐(2) 编辑
摘要:欺骗的艺术整理篇 人们对于绝对安全的渴望常常导致他们满足于虚假的安全感之中。 人为因素才是安全的软肋 安全,通常情况下仅仅是个幻想,由其是轻信、好奇和无知存在的时候。 二十世纪最受尊敬的科学家爱因斯坦这样说道:“只有两种事物是无穷尽的――宇宙和人类的愚蠢。但对于前者,我不敢确定。” 安全不是一件产品... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(264) 评论(0) 推荐(0) 编辑
摘要:矩阵键盘通常如下图设计 下面就以按下S16键来讲解其思路: 首先:P3的高位P3.4~P3.7输出为0,低位P3.0~P3.3输出为1;即P3=0x0F,当按下S16键后(有消抖动过程),P3.3的值为0,则P3的值更新为0x07; 其次:P3的高位P3.4~P3.7输出为1,低位P3.0~P... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(680) 评论(0) 推荐(0) 编辑
摘要:单片机定时器实用方法总结第一部分:51系列定时器定时/计数器 0 和定时/计数器1都有4种定时模式。 16位定时器对内部机器周期进行技术,机器周期加1,定时器值加1,1MHZ模式下,一个机器周期为1us 。 定时器工作模式寄存器TMOD,不可位寻址,需整体赋值,高4位用于定时器1,第四位用于定时器... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(506) 评论(0) 推荐(0) 编辑
摘要:第一章:小试牛刀#变量赋值var = value不同于var=value把var=value写成var = value是一个常见的错误前者是赋值操作,后者是相等操作#let命令可以直接执行基本的算数操作#bcbc是一个用于数学运算的高级工具,这个精密计算器包含了大量的选项借助bc可以执行浮点数运算并... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(947) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)超文本传输协议(HTTP)是一种应用于分布式、合作式、多媒体信息系统的应用层协议 2)工作原理 1)客户端一台客户机与服务器建立连接后,会发送一个请求给服务器,请求方式的格式为:统一资源定位符(URL)、协议版本号,后边是MIME信息,包括请求修饰符、客户机信息和... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(3014) 评论(1) 推荐(2) 编辑
摘要:1.mystery引入 1)系统入侵步骤:系统发现->漏洞探测->漏洞利用->痕迹清除 2)扫描器分类:主机与网络扫描器;端口服务扫描器;服务漏洞扫描器 3)TCP端口扫描技术分为三种:全连接扫描;SYN扫描以及FIN扫描 4)UDP端口扫描技术一般采用ICMP报文端口不可达的信息来识别UD... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(1025) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)高性能的网络服务程序分为单线程重复式网络服务、多进程网络服务 、多线程网络服务、线程池网络服务和IO多路复用网络服务等 2)单线程重复式是最基本的一种TCP服务模式,其实现简单,但是用户体验差,由于我前面日志中已经作过介绍,这里就不再赘述了 3)多进程网络服务是利用... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(783) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)设备驱动程序对外提供如下的功能: 1)设备初始化:对硬件设备进行初始化操作 2)数据交换:数据交换包括由内核层向硬件层传送数据、从硬件层读取数据到内核层; 应用程序向设备文件传送数据、设备文件向应用程序回送数据 3)设备请求与检测:检测各硬件设备的各种参数信息、错误信息 4)设备释放:设备使用完后的资源释放 2)驱动一般分为字符设备驱动、块设备驱动和网络设备驱动 1)字符设备驱动:可以按字节操作的方式对设备文件进行存取,一般对应慢速设备,例如串口设备 2)块设备驱动:是按数据块的方式对设备文件进行访问,一般... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(1838) 评论(0) 推荐(0) 编辑
摘要:linux之configure,pkg-config和PKG_CONFIG_PATH1.初衷1)前面在装gtk时冒出来一个pkg-config,当时虽然不大清楚它是个什么东西,不过大致了解了下它的作用 2)在后面的过程中,又出现了configure和pkg_config_path,总觉得它们之间有... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(2782) 评论(0) 推荐(0) 编辑
摘要:feorda下gtk安装详解1.yum在线安装gtk 1)pkg-config -version查看pkg-config的版本(本机测试是0.25) 2)安装必要组建:(在root权限下)yum install gtk2 gtk2-devel gtk2-devel-docs 3)可能还需要组建(可... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(901) 评论(0) 推荐(0) 编辑
摘要:1.问题 今天在编译一个基于原始套接字实现网络数据包嗅探程序时出现了如下错误: 警告: 隐式声明与内建函数 ‘exit’ 不兼容2.解决方案 后面发现没有把stdlib.h包含进来 上网查时发现网上有很多人有这个问题 所以今天记下,留以作为这个错误的解决方法。 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(444) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)Select是一种多路复用IO输入输出模式,在linux的输入输出编程中通过select的轮询机制,发现可用/可读或可写的接口。 2)低级socket程序中有一个共同点:都是基于阻塞式的编程方式 3)非阻塞式是函数调用时不阻塞,不管函数执行成功与否,都会立即返回。 ... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(613) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)无连接编程也称为UDP编程,是采用UDP报文的形式完成的网络通信 2)UDP是一种对等通信,本身不区分服务器端和客户端 3)对等通信,最容易想到的就是P2P,P2P是一种点对点的通信方式,各节点之间遵循对等的关系2.UDP实例 1) 示例采用UDP报文向自身发送消... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(249) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)UDP也可以编写出C/S程序 ,另外TCP也可以编写点对点通信。 2)网络的本质就是资源共享,当前流行的P2P应用正好暗合了这种精神。 3)当前流行的Web服务,其标准协议是HTTP,很多从事Web应用程序开发的开发者,从事的就是这种应用的网络编程,所采用的开 发模... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(350) 评论(0) 推荐(0) 编辑
摘要:1.同步机制 线程同步机制主要有:互斥量/信号量/条件变量/读写锁等。2.技术示例 创建2个计数线程A和B,每次计数加1,当为偶数时,A线程计数;当为奇数时,B线程计数。 源码://thread_mutex_cond.c#include #include #include #include #... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(287) 评论(0) 推荐(0) 编辑
摘要:1.错误现象:undefined reference to 'pthread_create'undefined reference to 'pthread_join'2.问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用 pt... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(1790) 评论(0) 推荐(0) 编辑
摘要:1.机制 消息队列的运行方式与命名管道非常相似。欲与其他进程通信的进程只需要将消息发送到消息队列中,目的进程就从消息队列中读取需要的消息。2.源码1)发送方//msg_send.c#include #include #include #include #include int main(){ ... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(400) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)本学期学了计算机网络,对一些网络底层的东西还是不大了解 2)目前IP网络流行3种通信模式,分别是单播/广播与组播 3)根据Internet关于IP地址的规定,IP地址分为A/B/C/D/E共5类 4)A到C类地址是目前广泛应用的普通IP地址,E类地址保留为将来使用... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(974) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)本学期学的ARP协议和NTP协议都属于广播技术的实现,所以借此机会了解下广播技术的底层原理 2)在IP地址中,如果最后一个数字为255,则一定是一个广播地址 3)广播地址分为网络广播地址/受限广播地址/子网广播地址和全部子网广播地址 4)在设计广播程序时,要进行套接... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(1170) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)网络嗅探属于网络攻防类的安全软件,其基于原始套接字技术开发的 2)原始套接字是一种套接字底层技术,它工作在网络层 3)谈到网络安全,刚好本学期学过这门课程,这里mystery总结下基于原始套接字技术开发的网络安全软件类型: 木马中的通信模块:为了躲避杀毒软件的检测... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(2386) 评论(0) 推荐(0) 编辑
摘要:1.源码//connect-mysql.c#include #include "/usr/include/mysql/mysql.h"int main(){ MYSQL mysql;//need a instance to init int t,r;//connect the database mysql_init(&mysql); if(!mysql_real_connect(&mysql,"localhost","root","yourpassword","mysql",0, 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(890) 评论(0) 推荐(0) 编辑
摘要:1.安装 Mysql Server# yum install mysql mysql-server 可以到mysql官网去下载,我下载的是通用版本。你需要下载下面四个文件就可以了。 mysql-client --------客户端包 mysql-server --------主服务器包 mysql-devel ---------开发包,作为开发者,这个是必须的,其提供开发用的头文件和库文件 mysql-shared ----共享组建包-----外部客户端使用的共享库 然后安装就可以了2.开启 MySQL server 及开机启动 MySQL# systemctl start mys... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(2057) 评论(0) 推荐(0) 编辑