摘要:
为什么要建立交叉编译环境?开发板上的Linux系统往往是经过裁剪后的,各项功能不如PC(或虚拟机)上的Linux那么完善,并且在开发板上操作比较不方便,这时候,我们就需要把大量的工作(写代码,编译等)放在PC的Linux上,那么自然编译这个过程也想放在PC上,等编译完了直接通过ftp(或NFS)给开发板。所以PC上的交叉编译环境就很有必要了。注:以下的操作步骤在Fedora9的上实验成功,其他环境没有试验过。建立交叉编译环境的步骤1、首先我们需要将文件从PC上传送到Fedora上。2、将/home/plg中的arm-linux-gcc- 4.5.1-v6-vfp-20101103.tgz复制到 阅读全文
摘要:
我的VMware版本是8.0.3。其他版本的设置应该大致相同。1、注意我们的网络模式是Bridge2、我们的网卡设置3、目标虚拟机(Linux)的IP4、我的主机的IP地址5、网络调试助手的设置6、上一段用来调试网络的代码。这段代码使用UDP进行通信,主要的作用是应答式的,一回一答。#include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #define BUFLEN 255 int main(int argc, char ** 阅读全文
摘要:
首先我们要介绍的是tcpdump命令。这个命令相当于Linux下的网络调试助手。1、监听网络上UDP包端口2000并显示包内的信息。效果见图1。tcpdump -A udp port 2000 图1 tcpdump -A udp port 20002、监听eth2网卡上UDP包端口2000并显示包内的信息。效果见图2。tcpdump -A udp port 2000 -i eth2 图2 tcpdump -A udp port 2000 -i eth23、监听制定网卡中主机的消息。效果见图3。tcpdump host 192.168.41.44 -i eth2 ... 阅读全文
摘要:
1.下载压缩包后解压sqlite-3.6.3tar.gz到/home目录下tar -zxvf sqlite-3.6.3tar.gz -C /homecd /home/mkdir sqlite-ix86-linux/cd /home/sqlite-ix86-linux//sqlite-3.6.3/configure --prefix=/home/sqlite-ix86-linux/其中--prefix=/home/sqlite-ix86-linux/的意思是将configure是用来进行用户个性配置的工具, 一般- -开头的说明的是需要配置的选项,--prefix就是说软件额安装目录设置在哪里, 阅读全文
摘要:
在调试的环境下,我们可以很方便地通过反汇编窗口查看程序生成的反汇编信息。如下图所示。 记得中断程序的运行,不然看不到反汇编的指令 看一个简单的程序及其生成的汇编指令 #include<stdio.h>#include<windows.h>const long Lenth=5060000/5;int main(){ while(true){ for(lo... 阅读全文
摘要:
请按照以下图片进行调整1、选中编辑器配置图1 编辑器配置2、调整字体大小图2 调整字体大小 阅读全文
摘要:
1、其实高级语言和面向过程的语言最求的目标都是一致的,高可复用性,另外,封装性。我发现自己在写C语言的时候,总是不自觉地就引入了高级语言的一些封装性的思想(如以下代码段1所示),而我的同学却总是按着最原始的方式对函数进行命名。学过编译原理的同学就会知道,最原始的C++编译器其实就是将C++转化成C语言,然后用C语言的编译器进行实现的。C++中的类转化成C语言,其实总体的思想就是在函数名上多添加了一个类名,在函数签名上有一些添加信息协助编译器翻译成C语言。代码段1的好处就是里面的函数跟别的C函数库中的函数不容易重合,另外,通过命名提醒调用者这些函数是一类的东西。 1 #ifndef __I2C_ 阅读全文
摘要:
我在做基于HC6800的51单片机上,写串口通信程序遇到了许多坑。一个大坑:为什么HC6800上U转串口不能发送数据。因为我们向HC6800烧程序都是使用图1所示的软件,所以我想当然地认为可以直接通过HC6800上的U转串进行串口通信,而我的同学信誓旦旦地告诉我可以。坑爹。并且这个软件好像也在提示可以用直接用U转串,进行串口通信(见图2)。但是当我打开串口调试助手的时候(如图3),却发现单片机掉电了(如图4)。其实HC6800上有另一个串口的,我们只要把连接图5黄框处串口。并且在图4中的6处,改变短路帽的接法,使之从USB下载模式转到串口通信模式(请仔细比对图4和图6)。 图1 烧录软件图2 阅读全文
摘要:
1、跟vs中不同,keilC中的的变量必须声明在最前,不然就出错。2、KeilC中的错误提示功能实在是很弱。没有办法精确到具体是哪个具体的变量或标点符号出问题。3、KeilC中的unsigned int能表示的数太小,只能有五位数,导致烧到单片机上的时候,数码管显示有问题。unsigned char,8位,最大值255unsigned int,16位,最大值655354、8针的引脚只要用unsigned char就可以控制,因为unsigned char 是8位的。5、在LCD1602输出了脏数据。 1 #include<reg51.h> 2 #define uchar unsig 阅读全文
摘要:
假设我们有一个类A带有beforefieldinit修饰符(beforefieldinit修饰符是编译器在编译完之后,自动加上的,只能通过反编译工具看)。总的来说,加上beforefieldinit修饰符就意味着“类A会在变量可能被引用的前一刻,提前完成初始化。从理论上,加上beforefieldinit修饰符的类A可能延迟初始化,如果你调用的静态方法没有引用任何静态类变量,JIT就不需要初始化这个类A。 实际上,类A也可能早早地初始化,即使我们在代码中没有引用到类A中的变量。但这也没什么问题,他可以在可能用到类变量的第一个方法就初始化。打个比方,就好像我们办酒席,我们不可能确认具体有多... 阅读全文