摘要:1、文本美化 修改 修改字体以及颜色如下: 修改用户自定义的关键字,如下: 代码编辑技巧 1、TAB键的妙用 使用TAB键可以整体向右移动相应位,使用SHIFT+TAB键整体左移相应位。 2、快速定位到变量或者函数定义的地方 注意要先在Options for Target的output选项卡里面选中
阅读全文
摘要:1、MDK软件安装 我的版本为mdk5.14,双击该安装包,注意安装路径不要包含空格和中文,安装完成后,还没办法去开发,因为MDK5采用不同支持包来支持不同的芯片,刚开始没有相应的支持包的。所以要去安装相应平台的支持包-keil STM32F4xx_DFP 2.9.0.支持包安装完成后就可以进行F4
阅读全文
摘要:1、下载Android内核 source.android.com/source->Downloading and Building Building Kernels 大概要花2个小时,其源码在培训软件里面的 Android模拟器使用的Linux-3.10版本内核源码 复制到Ubuntu,并解压之。进
阅读全文
摘要:1、Android系统分析 2、下载Android源代码(不包括Linux内核部分) 下载好了的Android_5.01.tar.gz,通过samba复制到ubuntu里,再解压之。 可以看到AndroidSrc/这个文件夹,它存放的就是Android源代码了。 3、编译 a、初始化编译环境,在bu
阅读全文
摘要:git config --global user.name "gary" 创建一个用户 git config --global user.email "394175285@qq.com"创建一个邮箱 Git的常用操作 1、建立本地仓库 mkdir /home/GitHome,把这个目录作为本地仓库,
阅读全文
摘要:1、视图组件与容器组件 Android应用绝大部分UI组件都放在Android.widget包及其子包、android.view包及其子包中,其所有UI组件都继承了view类,view组件代表一个空白的矩形区域。 View类还有一个重要的子类:ViewGroup,它通常作为其他组件的容器使用。Vie
阅读全文
摘要:1、安装virtualBox google的模拟器是运行在qemu上面的。 genymotion这个模拟器运行在virtualBox上面。
阅读全文
摘要:1、把中断注销掉,采用轮询的方式,来使用按键,看它能否工作。 采用读取按键的状态来轮询;按键的状态有对应I/O口的数据寄存器保存,可以读取该寄存器来判断按下与否。 如果还出问题,反汇编之;arm-linux-objcump -D -S gboot.elf >dump 看它用到了fp寄存器,可知用到了
阅读全文
摘要:中断编程 1、初始化按键、2、初始化中断控制器、3、中断处理 底板原理图: 去核心板原理图 去找到6410的芯片手册, 引脚配置:touch button.c #define GPLCON1 (volatile unsigned long *)0x7F008814 void button_init(
阅读全文
摘要:1、其底板按键原理图 将EINT1到核心板原理图去搜 可以看出它对应GPF1这个引脚, 到s3c2440的I/O引脚去找GPF这一组。 a、配置这些按键引脚,即初始化这些中断源 b、初始化中断控制器 我们的按键没有子中断,故不需要设置SUBMASK寄存器,只需要去设置MASK寄存器,对于MODE和P
阅读全文
摘要:1、中断概念 cpu在工作的过程中,进程需要与外设进行交互,交互的方式包括“轮询方式”,“中断方式”。 a、轮询方式:cpu不断地查询设备的状态。cpu利用率很低,不适合多任务的系统。 b、中断方式:cpu在告知硬件开始一项工作后,就去做别的事去了,当硬件完成了该项工作后,向cpu发送一个信号,告知
阅读全文
摘要:1、6410的硬件一上电就会把nandflash前8K的内容拷贝到6410片内内存来,从片内内存0地址开始运行,如果烧写到nandflash里面的程序大于8k,则拷贝到6410片内的8k程序要把nandflash大于8k的程序内容拷贝到DDR内存里面去,且当6410片内程序运行完后,跳转到DDR链接
阅读全文
摘要:Android要求对作为产品发布的应用进行签名(包名相同的化,后安装的应用会覆盖前面安装的应用) 签名作用:1、确定发布者的身份。2、确保应用的完整性。 注意:在应用的开发、调试阶段,Eclipse的ADT插件或Ant工具会自动生成调试证书对Android应用签名,如果正式发布一个Android应用
阅读全文
摘要:1、Activity和View Activity是Android应用中负责与用户交互的组件,它只能通过setContentView(View)来显示指定组件。 View组件是所有UI控件、容器空间的基类,View组件就是用户看到的Android应用中实实在在的部分。 但是View组件需要放到容器组件
阅读全文
摘要:Android应用程序建立在应用程序框架之上,所以Android编程就是面向应用程序框架API编程 与编写普通的Java SE没有太大区别,只是增加了一些API。 1、使用eclipse开发第一个Android应用 开发Android应用三步:a、创建一个Android项目。b、在XML布局文件中定
阅读全文
摘要:遇到问题描述: 运行Android程序控制台输出 [2012-07-18 16:18:26 - ] The connection to adb is down, and a severe error has occured. [2012-07-18 16:18:26 - ] You must res
阅读全文
摘要:要把下载到nandflash里面的程序(大于8KB的时候)拷贝到链接地址,故要初始化DDR,才能够使用DDR。 ??? 开发板上电后要初始化DRAC,以及DDR,然后把程序拷贝到50000000出运行。 DDR内存工作于HCLK下 DDR芯片手册 DDR的刷新周期为7.8us,因为HCLK的频率为1
阅读全文
摘要:1、程序一开始是烧写到nandflash上,设置为nandflash启动,6410片内有8K的内存,设为nandflash启动时,是从片内内存0地址开始,一上电,nandflash前面8K的内容会原原本本的拷贝到6410前面内存的8k地址处,然后从0地址开始运行;如果烧写到nandflash上面的程
阅读全文
摘要:1、在命令行创建、删除和浏览AVD 管理AVD需要Android SDK目录下的tools子目录下的android命令,android+下面的命令 list:列出机器上所有已经安装的android版本和AVD设备。 list avd:列出机器上所有已经安装的android版本。 list targe
阅读全文
摘要:1、安装的eclipse与对应的java版本位数要一致,要么32位,要么64位。 2、关于新版ADT创建项目时出现appcompat_v7的问题 更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的内容。并且是创建一个新的内容就会出现。这到底是怎么回事呢?原来appc
阅读全文
摘要:主要包括Android SDK、Android开发工具;也包括如何使用Android提供的ADB、DDMS、AAPT、DX等工具,掌握这些工具是开发Android应用的基础技能。 1、Android的发展和历史:创始人Andy Rubin,Google收购。 2、Android平台架构及特性 And
阅读全文
摘要:1、什么是脚本 是一个包含一些列命令序列的文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到自动执行。 基本结构:#!指明后面用什么解析器来执行。 由解析器和命令组成 变量:shell脚本允许用户设置和实用自己的变量,变量可以使数字或字符串,用户无需指定其类型,也无需在使用前定义。 注意:在
阅读全文
摘要:1、什么事守护进程 守护进程,也就是通常说的Daemon(精灵)是Linux中的一种服务进程。它的特点是: 不占用控制终端(后台运行) 独立于控制终端(有没有对应的tty使用命令ps -aux查看) 周期性运行 例如:smbd 注意l:在运行可执行程序的时候,后面加上&,意为后台运行。 2、守护进程
阅读全文
摘要:为什么要并发服务器 要让服务器高效同时处理各个请求。 a、采用多进程来处理(也可以多线程、或者线程池) tcp_server.c
阅读全文
摘要:1、编程模型函数化 1)发送数据 Sendto:发送数据 ssize_t sendto(int sockfd,const void *buf,size_t nbytes,int flags,const struct sockaddr *destaddr,socklen_t destlen); 头文件
阅读全文
摘要:1、编程模型函数化 函数学习 1)创建套接字 函数名:socket 函数原型:Int socket(int domain,int type,int protocol); 函数功能:创建套接字 所属头文件:<sys/types.h>、<sys/socket.h> 返回值:成功:返回对应于新套接字的文件
阅读全文
摘要:1、编程模型 Linux网络编程模型是基于socket的编程模型
阅读全文
摘要:什么是网络协议 a、有什么样的规则;b、该网络协议包的格式 用软件wireshark来抓以太网包!!!
阅读全文
摘要:1、基本概念 多个线程按照规定的顺序来执行,即为线程同步。 A同学:扫5次地 B同学:拖地 sync.c 2、条件变量 1)初始化 pthread_cond_t cond_ready=PTHREAD_COND_INITIALIZER; 2)等待条件成熟 pthread_cond_wait(&cond
阅读全文
摘要:1、基本概念 a、线程就是“轻量级”的进程 b、线程与创建它的进程共享代码段和数据段 c、线程拥有自己的独立的栈。 2、函数学习 1)创建线程 函数名:pthread_create 函数原型:Int pthread_create(pthread_t *thread,const pthread_att
阅读全文
摘要:1、基本概念 消息队列就是一个消息的链表。而一条消息则可看作一个记录,具有特定的格式。进程可以向其中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。也是作为IPC进程通信之一。 2、函数学习 1)创建或打开消息队列 函数名:msgget 函数原型:Int msgget(key_t k
阅读全文
摘要:1、基本概念 共享内存是IPC机制中的一种,它允许两个不相关的进程访问同一段内存,这是传递数据的一种非常有效地方式。 2、函数学习 1)创建和打开共享内存: 函数名:shmget 函数原型:Int shmget(key_t key,size_t size,int shmflg); 头文件:<sys/
阅读全文
摘要:2.1下载Eclipse 2.2 安装C/C++版本的Eclipse 2.3 安装JDT插件开发Java程序 2.4 使用Eclipse开发驱动程序 既然安装了eclipse来进行驱动学习,那么我们就先来试试看eclipse开发驱动的大致流程。这里以Linux设备驱动作为示列给读者展示整个流程,An
阅读全文
摘要:1.1 使用VMware安装Ubuntu 1.1.1 准备工作 1)VMware的安装包 VMware至少要用10.0版本,本文采用最新的VMware12版本,这个版本对USB3.0的支持更加完善稳定,如果安装了10.0以上版本的可以通过VMware的help菜单选项直接升级,关于VMware的安装
阅读全文
摘要:进程同步:一组并发进程进行相互合作、互相等待,使得各进程按一定的顺序执行的过程。 生产者和消费者问题 A生产产品,B取走产品, 让信号量初值为0,生产者不用获取信号量,但要释放信号量1. 消费者要获取信号量,但不用释放信号量0. 生产者producer.c customer.c 先执行: ./pro
阅读全文
摘要:信号量同步的概念: 一组并发进程进行相互合作、相互等待,使得各进程按一定的顺序执行的过程称为进程间的同步。 customer.c product.c 运行生产者 运行消费者:
阅读全文
摘要:在程序中利用信号量互斥来解决公示板问题 背景知识 1、信号灯的概念 信号灯,又被称为信号量(semaphore),是IPC(进程间通信)的方式之一。它可以用来保证两个或多个关键代码段不被多个进程并发调用。每个信号灯都有个semval,用于记录信号灯的值。在进入一个关键代码段之前,进程必须获取一个信号
阅读全文
摘要:编写两个应用程序,利用两个进程进行信号通信 1、信号的概念:是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程序或终端发送的命令(即信号)。应用程序收到信号后,有三种处理方式:忽略,默认,或捕捉。进程收到一个信号后,会检查对该信号的处理机制。如果是SIG_IGN,就
阅读全文
摘要:创建2个进程,在A进程中创建一个有名管道,并向其写入数据,通过B进程从有名管道中读出数据。 有名管道又称命名管道,可用于无亲缘关系的进程之间通信,在某些特点上类似于文件。 用法:通过mkfifo创建有名管道,之后就可以想操作普通文件通过open()、close()、write()、以及read()对
阅读全文
摘要:创建无名管道用于父子间进程通信。 1、无名管道概念:无名管道又称pipe,是Linux所支持的IPC方式的一种,它具有以下特点: 1)只能用于具有血缘关系的进程之间。 2)属于半双工的通信模式,具有固定的读端和写端 3)是一种特殊的文件,存在于内存中,可通过read、write对其操作。 2、无名管
阅读全文
摘要:头文件:#include<stdlib.h> 函数原型:int system(const char *command) 参数说明:command被执行的命令,字符串格式 返回值:成功则返回一个状态值,失败返回-1. 总结:执行system函数会新创建出一个进程去执行shell命令。
阅读全文
摘要:函数原型:void exit(int status) 参数说明:退出状态。 函数原型:pid_t wait(int *status) 头文件:#include<sys/types.h>,#include<sys/wait.h> 参数说明:status记录子进程的退出状态 返回值:成功则返回终止的子进
阅读全文
摘要:子、父进程共享数据段与堆栈段 函数原型:pid_t vfork(void) 返回值:子进程中返回0,父进程中返回子进程ID,出错返回-1. 注意: vfork创建的进程是按先子进程后父进程的顺序执行的。在调用exec或exit之前与父进程数据是共享的,在它调用exec或exit之后父进程才可能被调度
阅读全文
摘要:1、创建一个子进程 fork 其子进程与父进程的数据段和堆栈段相互独立。 头文件:#include<unistd.h> 函数原型:pid_t fork(void) 返回值:子进程中返回0,父进程中返回子进程ID,出错返回-1 总结: fork函数创建子进程后,父子进程是独立的、同时运行的,并没有先后
阅读全文
摘要:创建一个子进程--getid 头文件:#include<sys/types.h> #include<unistd.h> 函数原型:pid_t getpid(void) 返回值:返回调用进程的ID号
阅读全文
摘要:使用Linux时间编程相关函数,编写程序,通过实现与函数asctime相同功能的函数获取本地时间,以格式字符串方式显示 概念:日历时间,通过time_t数据类型来表示,从一个时间点(通常是1970年1月1日0时0分0秒)到此时的秒数。 格林威治时间:由英国皇家格林尼治天文台提供的标准时间。 本地时间
阅读全文
摘要:函数原型:int fseek(FILE *stream,long offset,int origin) stream:文件指针, offset:偏移量,正数表示正向偏移,负数表示负向偏移。origin:设定从文件的哪里开始偏移,可取值为SEEK_SET:文件开头,SEEK_CUR:当前位置;SEEK
阅读全文
摘要:函数原型:int fwrite(const void *buffer,size_t size,size_t count,FILE *stream); 参数说明:buffer:用于写入到文件的数据地址。 size:单个元素的大小,单位字节; count:元素个数,即有多少个size大小的数据 stre
阅读全文
摘要:头文件:#include<stdio.h> 函数原型:int fread(void *ptr,int size,int nitems,FILE *stream); 参数说明: ptr:用于接收数据的地址(指针)。 size:单个元素的大小,单位字节 nitems:元素个数,即有多少个size大小的数
阅读全文
摘要:头文件:#include<stdio.h> 函数原型:int fclose(FILE *fp) 参数说明:fp将被关闭的文件指针 返回值:成功返回0,失败返回EOF宏。
阅读全文
摘要:使用fopen等文件访问库函数编写应用程序,该应用程序实现文件的复制功能。 1、打开文件 fopen 函数功能:打开文件 头文件:#include<stdio.h> 函数原型:FILE *fopen(const char *path,const char *mode) 参数说明:path:欲打开的文
阅读全文
摘要:函数功能:复制文件描述符 头文件:#include<unistd.h> 函数原型:int dup(int oldfd) 参数说明:oldfd:旧的文件描述符 返回值:成功返回-个新的文件描述符,失败-1.
阅读全文
摘要:头文件:#include<sys/types.h>、#include<unistd.h> 函数原型:off_t lseek(int fildes,off_t offset,int whence) 参数说明:fildes:文件描述符 offset:偏移量,正数表示正向偏移,负数表示负向偏移。 when
阅读全文
摘要:函数原型:ssize_t write(int fd,const void *buf,size_t count); 参数说明:fd:文件描述符,buf:写入数据的缓冲区,count:写入数据的最大长度。 返回值:成功返回实际写入的字节数,当有错误发生时则返回-1,错误代码存入errno中。
阅读全文
摘要:头文件:#include<unistd.h> 函数原型:ssize_t read(int fd,void *buf,size_t count); 参数说明:fd:文件描述符 buf:存放读取数据的缓冲区。 count:读取的最大长度 返回值:成功则返回读取的字节数,失败则返回-1.
阅读全文
摘要:头文件:#include<unistd.h> 原型:int close(int fd); 返回值:成功返回0,失败返回-1.
阅读全文
摘要:通过Linux系统调用函数编写应用程序,该应用程序实现文件的复制功能 文件描述符--在Linux系统中,所有打开的文件也对应一个数字,这个数字由系统来分配。 1、打开文件--open 头文件:#include<sys/types.h>、#include<sys/stat.h>、#include<fc
阅读全文
摘要:动态链接库,当程序运行起来后,如果程序中需要使用到某个动态库函数,则系统就会从磁盘中将该库函数动态的加载到内存中。 1)“-c”选项编译taxlib.c文件并输出taxlib.o目标文件。gcc -c taxlib.c -o taxlib.o 2)将taxlib.o制作成动态链接库,执行命令:gcc
阅读全文
摘要:在程序设计中离不开函数的调用,函数分为库函数、系统调用,库函数由glibc库提供,系统调用由Linux内核提供。函数库分为静态链接库和动态链接库。 静态链接库特点:程序所要用到的库函数代码在链接时全部被copy到程序。静态链接库以*.a为后缀,以*.so.*为动态链接库,Linux系统中主要库位于/
阅读全文
摘要:1)在使用C语言进行编程时,源文件都必须加 文件头 /******************************************************** *文件名:test.c *创作者:gary *创建时间:2016-5-1 *程序说明:用于测试 ******************
阅读全文
摘要:1、使用gcc编译addr.c并输出addr可执行文件。gcc addr.c -o addr 2、运行编译后的程序 3、查看程序运行后的各个段的地址,运行命令ps aux后,找出addr进程的进程号,如这里的./addr进程号是11149,再运行命令cat /proc/11149/maps,查看该进
阅读全文
摘要:1、编写一个应用程序,使用gdb+core dump进行故障分析, core dump的概念: core dump又叫核心转存;当程序在运行过程中发生异常,这时Linux系统可以把程序在运行时的内存内容存储在一个叫core文件中,这个过程叫core dump。 core dump通常用于对付以下几种
阅读全文
摘要:1、协议原理 2、原理框图 3、开发板底板与核心板图 4、开始配置寄存器 a)、使相应I/O引脚配置为UART引脚 b)、配置数据发送模式 c)、设置为中断或查询模式 d)、使能串口缓存 e)、流量控制 f)、波特率设置为115200 g)、接收时的状态以及接受寄存器 h)、发送时的状态以及发送寄存
阅读全文
摘要:GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说GDB主要完成下面四个部分的功能。 1)启动你的程序,可以按照你的自定义的要求运行程序。 2)可让被调试程序在你所指定的调试的断点处停住(断点可以使条件表达式)。 3)当程序被停住时。可以检查此时你的程序中所发生的事,包括查看
阅读全文