ip编译器
① 单片机TCP/IP开发板的使用
下面介绍如何使用TCP/IP开发板来进行项目开发。
3. 1 开发板套件
为了建立单片机TCP/IP开发环境,需要一套开发套件,一般包含有:①开发板。②开发板光盘。③USB线。④对连网线。⑤普通网线。⑥串口线。其中TCP/IP协议栈相关资料在②开发板光盘上,③USB线一般用于从PC机USB端口获得电。网线用于和PC机通信,⑥串口线用于和PC机串口通信。
3. 2 开发板部件
一个开发板本身是一个单片机系统,包含有CPU、RAM、电源模块、网络模块。网络模块有很多选择,这里以RTL8019AS为例来说明。对于外部接口,最主要的是:⑨网线接口和⑩串口,它们是开发板和PC连接的接口。
3. 3 建立开发环境
建立单片机TCP/IP开发环境的步骤有如下几步:
1. 连线:连线是将开发板与PC机的串口连接,给开发板上电,然后将开发板连接到和PC在同一个网段中。
2. 安装软件:需要安装开发板的编译环境。对于51单片机,一般选用KeilC51作为编译器。设置IP地址,由于必须要求PC机和开发板处于同一个网段,所以需要将PC机的IP地址设置为开发板IP地址的同一个网段的IP地址(有时候也需要设置为特定的IP地址)。
3. 测试连接:一般可以通过PING命令,例如ping 192.168.0.2 –t来测试开发板和PC机的网络是否处于连通状态。
3. 3 开发基于开发板的新程序
这里介绍如何在不修改开发板硬件的基础上,开发自己的单片机TCP/IP程序。开发新程序就是在开发板提供的TCP/IP协议栈的基础上开发应用层的协议。由于TCP层和IP层都已经提供,所以用户不用考虑其中的运行机制。TCP/IP协议栈一般为用户提供如下的接口:
1. 初始化协议栈和释放协议栈的函数接口,类似Init(), Release()之类的函数。
2. 提供类似BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select等API函数,用户调用此类函数进行发起连接、接受连接、发送数据、接收数据、关闭连接等操作。
3. 接受连接、接收数据、被动关闭的处理:由于此类操作是上位机发起的,所以TCP/IP协议栈必须提供一套机制来处理此类事件的发生。一般来说有两种方法:
a) 主动等待:例如使用BSD的recv()函数等待数据的到来。
b) 回调机制:采用类似MFC的OnReceive()函数的回调机制,也即是说在接收到数据的时候会自动调用OnReceive()函数。
那么用户如何使用以上的接口来实现远程控制、远程数据采集呢?方法很简单。
例如现在需要实现一个对LED灯的亮和灭的远程控制应用。首先PC机使用TCP/IP发送工具例如SocketDlgTest程序发送一个字节的“1”到开发板(根据开发板的IP地址发送)。开发板在OnReceive函数中发现收到的是“1”,那么就通过P1端口将灯打开;反之如果收到的是“0”则将灯熄灭。
如果是实现一个远程数据采集的应用,例如定时进行温度采集。首先PC机使用SocketDlgTest程序等待发来数据。开发板每隔一段时间采集一个数据,然后通过send()函数将数据发送给PC机(根据PC机的IP地址发送),这样PC就接收到了当前的远程温度数据。
4. 3 开发基于新硬件的程序
通过“开发基于开发板的新程序”一节的介绍后,开发基于新硬件的程序就相对容易了。这只要根据相应的硬件调整通过单片机的控制端口例如P1进行控制或者数据采集即可。
② 龙芯电脑的软件用什么编译器,能在龙芯电脑上编译吗可视化怎么实现还有IP是自己的还是直接MIPS的
MISP版本的linux上有那些编译器,龙芯就能用那些编译器,目前gun一系列,python,php等等都能用。
龙芯是自己设计的,指令集兼容mips,并自己扩充了一些。
③ 汇编编译器的工作和生成可执行文件的执行过程是怎样的
首先,目测你把事情想复杂了。
伪指令就相当于关键字,在读取源文件后就将所有语句拆分为许多个token,然后根据伪指令来处理这些token,比如是语法错误,token的类型(如参数,标志符等)。。。
可执行文件的加载另外找份说PE的书看就知道了,我自己也说不完。一个物理段最大是64kb,若可能会尽量连续第加载在一起,但内存中连续空间一般没那么大空间,就需要各种分配内存的手段来硬塞进去,包括分页。
CPU不需要区分数据和代码,只要执行到的位置一概视为代码,若此字节码未定义指令,则产生#UD错误。区分数据和代码是程序员的工作。
④ 什么是IP核求答案
IP( Intellectual Property )
,是那些己验证的、可重利用的、具有某种确定功能的IC模块。分为软
IP (soft IP core )、固IP (firm IP core)和硬IP (hard IP core )
。软IP是用某种高级语言来描述功能块的行为,但是并不涉及用什么电路和电路元件实现这些行为。固IP除了完成软IP所有的设计外,还完成了门电路级综合和时序仿真等设计环节,一般以门电路级网表形式提交用户使用。硬IP则是完成了综合的功能块,已有固定的拓扑布局和具体工艺,并己经经过工艺验证,具有可保证的性能。设计深度愈深,后续工序所需要做的事情就越少,但是灵活性也就越小。
从20世纪90年代至今,IC设计能力正在发生一次质的飞跃,即由ASIC设计方法向SoC设计方法转变。SoC设计方法使IC设计开始进一步分工细化,出现了IP设计和SoC系统设计。在近些年全球IC市场低迷的情况下,IP是不多的亮点之一。其实可以把IP理解为一颗ASIC,以前是ASIC做好以后供人家在PCB上使用,现在是IP做好以后让人家集成在更大的芯片里。
集成电路发展到超大规模阶段后,芯片中凝聚的知识已经高度浓缩。以奔腾微处理器为例,其所承载的晶体管已多达960万个,如果芯片设计依旧基于单个的晶体管而不是基于IP的物理级设计,永远也不会有奔腾问世。
常用的IP内核模块有各种不同的CPU(32/64位CISC/RISC结构的CPU或8/16位微控制器/单片机,如8051等)、32/64位DSP (如320C30)、DRAM、SRAM、EEPROM、Flashmemory、A/D、D/A、MPEG/JPEG、USB、PCI、标准接口、网络单元、编译器、编码/解码器和模拟器件模块等。丰富的IP内核模块库为快速地设计专用集成电路和单片系统以及尽快占领市场提供了基本保证。
IP的主要来源
传统IDM公司或Fabless设计公司在多年的芯片设计中往往有自身的技术专长,如Intel的处理器技术、TI的DSP技术、Motorola的嵌入式 MCU技术、Trident的Graphics技术等。这些技术成功地开发了系列芯片,并在产品系列发展过程中确立了设计重用的原则,一些成功设计成果的可重用部分经多次验证和完善形成了IP。这些IP往往是硬核,如果这类硬核作为可提供给其他芯片设计公司使用的IP,就成了商品化的IP。
Foundry 厂商是没有自身芯片产品的芯片代加工厂,但Foundry厂商为了吸引更多的芯片设计公司投片,往往设立后端设计队伍,来配合后端设计能力较弱的芯片设计公司开展布局布线工作。这支设计队伍也积累了一定的芯片设计经验,并积累了少量的IP(主要是Memory、EEPROM和FlashMemory等),这些IP可以被需要集成或愿意在该Foundry流片的公司采用。
此外,IP专职供应商与主要的Foundry厂商有长期的合作关系,经过投片验证的IP可由Foundry厂向用户提供,IP专职供应商从中提取一定利润。但对国内用户而言,因为这类Foundry多在我国台湾省,缺乏在本地的支持,可能有远水不解近渴之忧。
这是20世纪90年代中期兴起的,迎接SoC时代到来的设计公司。这类公司的特点是已经认识到将自身多年积累的IP资源转化成商品的商业价值,因此,它们不仅提供已经成熟的IP,同时针对当前的技术热点、难点开发芯片设计市场急需的IP核。它们提供的IP同样有硬核、固核、软核之分,但通过与Foundry 厂合作,及时对所开发的IP核进行流片验证是IP硬核供应商的通行做法,这也是IP核及早面市的必要措施。
ARM、Motorola、MIPS是提供嵌入式MCUIP核的主要专业公司;LEDA是模拟、混合信号IP硬核的最主要供应商,它同时还针对当前通信市场的需求开发并提供宽带应用、蓝牙和光通信(SONET/SDH)的IP核。上述这些公司都是当今芯片设计行业中专业IP供应商的代表。这些专业IP供应商的业务重点是开发IP核,对于进入自身所不熟悉的地区,则往往通过与当地的芯片设计服务公司结成合作伙伴或战略联盟来实现。
在美国,EDA厂家也是提供IP资源的一个主要渠道,占到IP交易量的10%左右。主要的EDA厂商为了提供更适合SoC设计的平台,在其工具中集成了各类IP核以方便用户的 IP嵌入设计,这些IP核基本是以软核形式出现。EDA厂商也并不直接设计开发IP核,而是与一些提供IP软核的设计公司合作,提供一种集成IP核的设计环境。
由于集成的IP核多为软核,用户还要对这些软核做综合、时序分析、验证等工作,对用户的"及时上市"要求没有本质性改善,在IP核的支持、服务方面也存在诸多不便。因此,在国内的EDA厂家目前仍以经营EDA工具为主,从人员配备上讲,几乎没有提供IP资源的服务力量。
芯片设计服务公司是目前能立即向国内IC设计公司提供IP硬核的最主要途径,除了自身积累的IP外,通过与IP专业供应商的战略合作关系向国内用户提供各类 IP。芯片设计服务公司是与用户直接打交道的,它们了解市场需求的IP类型,其IP资源库中积累的往往是最实用的IP。
我国台湾省较有名的芯片设计服务公司有创意电子、智原科技等,它们除了积累了一定自己的IP硬核外,还与专业IP供应商,如ARM结成合作伙伴向用户提供更丰富的IP资源。祖国大陆的芯片设计服务公司有泰鼎(上海),目前可为用户提供300多种IP硬核,涉及高速数字逻辑、I/O模块、模拟、混合信号、RF等领域。
目前,国内还没有像国外那种专门设计IP硬核的公司,芯片设计公司的成功设计还不能被称为IP。
⑤ 嵌入式中的ip寄存器和pc寄存器有什么区别,怎么都是指向下一条指令的是分别为不同平台寄存器的原因
先明白定义再说区别和原理: 1、程序存储器(program storage) 在计算机的主存储器中专门用来存放程序、子程序的一个区域。 2、指令寄存器(IR ):用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。 3、程序计数器(PC):为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此程序计数器(PC)的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。 当程序转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的地址,以此实现转移。有些机器中也称PC为指令指针IP(Instruction Pointer) 4、地址寄存器:用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止 。 当CPU和内存进行信息交换,即CPU向内存存/取数据时,或者CPU从内存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。同样,如果我们把外围设备的设备地址作为像内存的地址单元那样来看待,那么,当CPU和外围设备交换信息时,我们同样使用 地址寄存器和数据缓冲寄存器 基本上定义就是区别和应用。
⑥ tcp/ip网络编程用的什么语言啊
程序写得不够完整。程序就是C程序。你使用C的编译器即可。比如Windows下的vs或Linux下的gcc。
头文件不对。你试试看把 va_list.h 和 stdarg.h 都include上。另外,sys/type.h 应该是 sys/types.h 吧,估计是你笔误了。