随笔分类 -  Z技术(C/C++/Objective-c)

摘要:C 语言嵌入式系统编程修炼之一:背景篇 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力。无疑,汇编语言具备这样的特质。但是,归因于汇编语言开发过程的复杂性,它并不是嵌入式系统开发的一般选择。而与之相比,C 语言:一种"高级的低级"语言,则成为嵌入式系统开发的最佳选择。 实际上,大多数嵌入式系统的硬件平台包括两部分:以通用处理器为中心的协议处理模块,用于网络控制协议的处理;以数字信号处理器(DSP)为中心的信号处理模块,用于调制、解调和数/模信号转换。嵌入式系统硬件架构协议处理模块中的 FLASH 和 RAM 几乎 阅读全文
posted @ 2013-07-03 20:48 Leo.cheng 阅读(1998) 评论(0) 推荐(3) 编辑
摘要:一、预处理器(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 阅读(1426) 评论(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 阅读(2477) 评论(3) 推荐(1) 编辑
摘要:在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 阅读(420) 评论(0) 推荐(1) 编辑
摘要:加载.s汇编文件 做ARM嵌入式开发时,有时得整汇编代码,但在SI里建立PROJECT并ADD TREE的时候,根据默认设置并不会把该TREE里面所有汇编文件都包含进来,默认只加了.inc和.asm后缀的,.s后缀的没有。而且用SI打开.s的文件时,一片黑白没有色彩, 感觉回到DOS的EDIT时代... 阅读全文
posted @ 2013-06-27 17:39 Leo.cheng 阅读(2102) 评论(0) 推荐(0) 编辑
摘要:概述 编译的目的是把人书写的高级语言代码翻译成目标程序的语言处理程序,编译用的程序(例如gcc)称为编译系统。 一个编译系统把一个源程序翻译成目标程序的工作过程分为5个阶段:词法分析、语法分析、中间代码生成、代码优化和目标代码生成。 其中主要阶段是词法分析和语法分析,也可以称为源代码分析,分析过程中发现有语法错误,给出提示信息。词法分析 词法分析的目的是处理源代码中的单词。 词法分析程序按照从左到右的顺序wyuq 扫描源代码,生成单词对应的符号,把字符描述的程序转换为符号描述的中间程序。 词法分析程序也称做词法扫描器。 词法分析过程可以用手工构造和自动生成两种方法。手工构造可以使... 阅读全文
posted @ 2013-06-27 17:38 Leo.cheng 阅读(689) 评论(0) 推荐(0) 编辑
摘要:windows核心编程整理(上)windows核心编程整理(下)线程的堆栈 每当创建一个线程时,系统就会为线程的堆栈(每个线程有他自己的堆栈)保留一个堆栈空间区域,并将一些物理存储器提交给这个以保留的区域 当创建一个线程的堆栈时,系统将会保留一个链接程序的/STACK开关指明的地址空间区域 堆栈区域... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(288) 评论(0) 推荐(0) 编辑
摘要:小续这是我11年看《windows核心编程》时所作的一些笔记,现整理出来共享给大家 windows核心编程整理(上) windows核心编程整理(下)线程的基础知识进程是不活泼的,进程从来不执行任何东西,进程只是线程的容器线程用于描绘进程中的运行路径每个进程必须拥有一个进入点函数,线程从这个进入点... 阅读全文
posted @ 2013-06-27 17:37 Leo.cheng 阅读(635) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)超文本传输协议(HTTP)是一种应用于分布式、合作式、多媒体信息系统的应用层协议 2)工作原理 1)客户端一台客户机与服务器建立连接后,会发送一个请求给服务器,请求方式的格式为:统一资源定位符(URL)、协议版本号,后边是MIME信息,包括请求修饰符、客户机信息和... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(3020) 评论(1) 推荐(2) 编辑
摘要:1.mystery引入 1)系统入侵步骤:系统发现->漏洞探测->漏洞利用->痕迹清除 2)扫描器分类:主机与网络扫描器;端口服务扫描器;服务漏洞扫描器 3)TCP端口扫描技术分为三种:全连接扫描;SYN扫描以及FIN扫描 4)UDP端口扫描技术一般采用ICMP报文端口不可达的信息来识别UD... 阅读全文
posted @ 2013-06-27 17:35 Leo.cheng 阅读(1028) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)高性能的网络服务程序分为单线程重复式网络服务、多进程网络服务 、多线程网络服务、线程池网络服务和IO多路复用网络服务等 2)单线程重复式是最基本的一种TCP服务模式,其实现简单,但是用户体验差,由于我前面日志中已经作过介绍,这里就不再赘述了 3)多进程网络服务是利用... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(786) 评论(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 阅读(984) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)本学期学的ARP协议和NTP协议都属于广播技术的实现,所以借此机会了解下广播技术的底层原理 2)在IP地址中,如果最后一个数字为255,则一定是一个广播地址 3)广播地址分为网络广播地址/受限广播地址/子网广播地址和全部子网广播地址 4)在设计广播程序时,要进行套接... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(1179) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)网络嗅探属于网络攻防类的安全软件,其基于原始套接字技术开发的 2)原始套接字是一种套接字底层技术,它工作在网络层 3)谈到网络安全,刚好本学期学过这门课程,这里mystery总结下基于原始套接字技术开发的网络安全软件类型: 木马中的通信模块:为了躲避杀毒软件的检测... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(2393) 评论(0) 推荐(0) 编辑
摘要:1.问题 今天在编译一个基于原始套接字实现网络数据包嗅探程序时出现了如下错误: 警告: 隐式声明与内建函数 ‘exit’ 不兼容2.解决方案 后面发现没有把stdlib.h包含进来 上网查时发现网上有很多人有这个问题 所以今天记下,留以作为这个错误的解决方法。 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(450) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)Select是一种多路复用IO输入输出模式,在linux的输入输出编程中通过select的轮询机制,发现可用/可读或可写的接口。 2)低级socket程序中有一个共同点:都是基于阻塞式的编程方式 3)非阻塞式是函数调用时不阻塞,不管函数执行成功与否,都会立即返回。 ... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(617) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)无连接编程也称为UDP编程,是采用UDP报文的形式完成的网络通信 2)UDP是一种对等通信,本身不区分服务器端和客户端 3)对等通信,最容易想到的就是P2P,P2P是一种点对点的通信方式,各节点之间遵循对等的关系2.UDP实例 1) 示例采用UDP报文向自身发送消... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(252) 评论(0) 推荐(0) 编辑
摘要:1.mystery引入 1)UDP也可以编写出C/S程序 ,另外TCP也可以编写点对点通信。 2)网络的本质就是资源共享,当前流行的P2P应用正好暗合了这种精神。 3)当前流行的Web服务,其标准协议是HTTP,很多从事Web应用程序开发的开发者,从事的就是这种应用的网络编程,所采用的开 发模... 阅读全文
posted @ 2013-06-27 17:34 Leo.cheng 阅读(353) 评论(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 阅读(289) 评论(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 阅读(1818) 评论(0) 推荐(0) 编辑