1.QEMU虚拟机管理器:一种高效硬件模拟器
2.Xilinx系列FPGA实现4K视频缩放,源码基于Video Processing Subsystem实现,源码提供4套工程源码和技术支持
3.å¦ä½å¦ä¹ åµå
¥å¼
4.edkEDK设计的源码实现流程
5.FPGA和ARM的操作系统有何不同
QEMU虚拟机管理器:一种高效硬件模拟器
QEMU(Quick EMUlator)是一种开源的虚拟机监视器和模拟器,支持多种硬件平台模拟,源码如x、源码ARM、源码qt图片相册源码PowerPC等,源码被广泛应用于虚拟化、源码嵌入式系统开发和仿真等领域。源码
作为虚拟机监视器,源码QEMU能在物理主机上同时运行多个虚拟机,源码并提供管理控制能力。源码它支持多种操作系统,源码包括Linux、源码Windows等。源码作为模拟器,QEMU可以在一个主机上执行不同架构的二进制代码,实现跨平台软件开发与测试,便于开发人员在不同体系结构下调试程序。
QEMU具备丰富的功能和扩展性,如硬件加速、网络配置、磁盘镜像和快照等,被广泛应用于云计算、手机yueduqi源码容器技术、嵌入式系统仿真和移动设备开发等领域。
QEMU是一款开源的模拟器及虚拟机监管器(VMM)。它主要提供两种功能:一是作为用户态模拟器,执行不同于主机架构的代码;二是作为虚拟机监管器,模拟全系统,利用其他VMM(如Xen、KVM等)实现硬件虚拟化支持,创建接近主机性能的虚拟机。
用户可通过Linux发行版的软件包管理器安装QEMU,例如在Debian系列发行版上,可使用以下命令安装:
除此之外,用户也可以选择从源码安装。
获取QEMU源码,可以从QEMU下载官网上下载QEMU源码的tar包。以命令行下载2.0版本的QEMU为例:
获取源码后,可根据需求配置和编译QEMU。configure脚本用于生成Makefile,其选项可用./configure --help查看。
安装完成后,会生成以下应用程序:
QEMU作为系统模拟器时,会模拟出一台能够独立运行操作系统的虚拟机。每个虚拟机对应主机中的numpy源码安装一个QEMU进程,虚拟机的vCPU对应QEMU进程的一个线程。
系统虚拟化主要虚拟出CPU、内存及I/O设备。虚拟出的CPU称为vCPU,QEMU为了提高效率,借用KVM、XEN等虚拟化技术,直接利用硬件对虚拟化的支持,在主机上安全地运行虚拟机代码(需要硬件支持)。
虚拟机内存会被映射到QEMU的进程地址空间,在启动时分配。在虚拟机看来,QEMU所分配的主机上的虚拟地址空间为虚拟机的物理地址空间。
QEMU在主机用户态模拟虚拟机的硬件设备,vCPU对硬件的操作结果会在用户态进行模拟,如虚拟机需要将数据写入硬盘,实际结果是将数据写入主机中的一个镜像文件中。
使用qemu-img创建虚拟机镜像,虚拟机镜像用于模拟虚拟机的硬盘,在启动虚拟机之前需要创建镜像文件。
使用qemu-system-x启动x架构的虚拟机。由于test-vm-1.qcow2中并未给虚拟机安装操作系统,所以会提示“无可启动设备”。边锋游戏源码
启动VM安装操作系统镜像。指定虚拟机内存大小、使用KVM加速、添加fedora的安装镜像。安装完成后,重启虚拟机即可从硬盘启动。之后再次启动虚拟机,只需执行以下命令:
qemu-img支持多种文件格式,可通过qemu-img -h查看。其中raw和qcow2是比较常用的两种格式,raw是qemu-img命令默认的格式,qcow2是qemu目前推荐的格式,功能最多。
Qemu软件虚拟化实现的思路是采用二进制指令翻译技术,提取guest代码,然后将其翻译成TCG中间代码,最后再将中间代码翻译成host指定架构的代码。
从宏观上看,源码结构主要包含以下几个部分:
(1)开始执行:/vl.c中的main函数定义,它也是执行的起点,主要建立一个虚拟的硬件环境,通过参数解析初始化内存、设备、电驴 源码 下载CPU参数等。
(2)硬件模拟:所有硬件设备都在/hw/目录下面,每个设备都有独自的文件,包括总线、串口、网卡、鼠标等。它们通过设备模块串在一起,在vl.c中的machine_init中初始化。
(3)目标机器:QEMU模拟的CPU架构有Alpha、ARM、Cris、i、MK、PPC、Sparc、Mips、MicroBlaze、SX和SH4。在QEMU中使用./configure可以配置运行的架构。
(4)主机:使用TCG代码生成主机的代码,这部分代码在/tcg/目录中,对应不同的架构,分别在不同的子目录中。
(5)文件总结:TCG动态翻译、TB链、TCG代码分析、IOCTL使用流程、内存管理等相关内容。
Xilinx系列FPGA实现4K视频缩放,基于Video Processing Subsystem实现,提供4套工程源码和技术支持
在FPGA设计领域,Xilinx系列的FPGA被用于实现4K视频的高效缩放,其核心是基于Video Processing Subsystem。这个系统提供了4套针对不同FPGA型号的工程源码和全面的技术支持,让你能够在Xilinx的Kintex7和Zynq UltraScale+系列FPGA上轻松实现这一功能。
首先,让我们了解一下方案概述。方案的核心是手写彩条视频,分辨率x,以Hz或Hz的双像素输出,通过AXI4-Stream接口。数据经过AXI4-Stream Data FIFO进行跨时钟域处理,然后通过Video Processing Subsystem进行4K视频的缩放,将x的视频扩展至x。这部分工作由官方提供的IP核负责,确保了视频处理的准确性和兼容性,但仅限于Xilinx自家FPGA平台。
针对市面上常见的FPGA,我们提供了四套移植后的完整工程,分别针对Xilinx Kintex7和Zynq UltraScale+,以及Hz和Hz的视频输入。每套代码都包含详细的配置和软核配置,如MicroBlaze或Zynq,以适应不同硬件环境。
设计包括了从视频输入到输出的完整流程,包括HDMI 1.4/2.0 Transmitter Subsystem的视频编码和Video PHY Controller的串行化处理,以及均衡电路和视频输出显示。为了方便应用,我们推荐使用博主的配套开发板,或根据自己的硬件进行适配。
工程源码由Vivado Block Design和Vitis SDK软件设计组成,提供了清晰的架构和详细的操作指南。无论是Kintex7还是Zynq UltraScale+的版本,代码都经过精心优化,以最小化资源占用和功耗。
如果你对工程源码感兴趣,可以直接联系博主获取,包括网盘链接和个性化定制服务。请注意,所有代码仅限学习和研究使用,禁止商业用途,并且可能需要根据你的硬件环境进行微调。
å¦ä½å¦ä¹ åµå ¥å¼
ä½è ï¼å¿åç¨æ·
é¾æ¥ï¼/question//answer/
æ¥æºï¼ç¥ä¹
èä½æå½ä½è ææãåä¸è½¬è½½è¯·èç³»ä½è è·å¾ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã
å¦ä¹ åµå ¥å¼ç³»ç»ï¼é¦å åºè¯¥æç¡®ä»ä¹æ¯åµå ¥å¼ç³»ç»ï¼å¦åè´¹åå»å¦ï¼å´ä¸ç¥æå¦ä¸ºä½ç©ï¼å²ä¸æç¶ï¼åµå ¥å¼ç³»ç»çå®ä¹å¾å¤ï¼è¿ä¹æ¯å°æ°åµå ¥å¼ç³»ç»å¦ä¹ çä¸ä¸ªå ç´ ãç¬è æ ¹æ®èªå·±å¼ååæå¦è¿ç¨ä¸çç解ï¼ä»¥å对åç§åµå ¥å¼ç³»ç»çåºç¨è¿è¡æ»ç»ï¼æåºäºåµå ¥å¼ç³»ç»çç®åå®ä¹ï¼åµå ¥å¼ç³»ç»æ¯åµå ¥å¼è®¡ç®æºç³»ç»çç®ç§°ï¼è¿ä¸ªå®ä¹çªåºåµå ¥å¼è®¡ç®æºç³»ç»åæ®é计ç®æºç³»ç»çå ±æ§ãä¸è¡¨ååºäºåµå ¥å¼ç³»ç»çä¸äºå ¸åçåºç¨ï¼
æºè½æºå¨äººï¼S D R 4ï¼ç«æç»é车ï¼
娱ä¹åæ¶è´¹çµåï¼Gameboy Advanceï¼SonyPSPï¼
ç½ç»é信产åï¼Smartphoneï¼
åç¨è®¾å¤ï¼åç¨PDA ï¼
汽车ï¼è½¦è½½å¯¼èªï¼èªå¨é©¾é©¶ï¼å¨±ä¹ç³»ç»ï¼
æºè½ä»ªå¨ï¼èæ仪å¨ï¼
å®å ¨é²æ¤ï¼é²ç«ï¼é²çï¼
ç¯å¢ä¿æ¤ï¼æ¢ç©ºæ°çï¼
é¶è¡ååä¸æ¶è´¹ï¼ATMï¼
以ç«æç»é车为ä¾æ¥åæä¸ä¸åµå ¥å¼ç³»ç»çå®ä¹ãç«æç»é车è½ç¶å¬èµ·æ¥æè§å¨ææ¯ä¸æäºé«ä¸å¯æµï¼ä½æ¯æ¬è´¨å°±æ¯åµå ¥å¼è®¡ç®æºç³»ç»çåºç¨ï¼å ¶æ ¸å¿å°±æ¯ä¸ä¸ªè®¡ç®æºç³»ç»ï¼èè¿ä¸ªè®¡ç®æºç³»ç»çç»æåä¼ ç»ç计ç®æºç³»ç»å¨æ¬è´¨ä¸æ²¡æä»ä¹å·®å«ã两è çæ¾èä¸åä¹å¤å°±å¨äºï¼ç¨äºç«æç»é车ç计ç®æºç³»ç»è¢«å®è£ å°äºç«æç»é车ä¸ãå½ç¶ï¼ä¸ä¸ªè®¡ç®æºç³»ç»è½å¤è¢«å®è£ å¨ç«æç»é车ä¸ï¼æ¯éè¦è¿è¡å¾å¤ç¹æ®è®¾è®¡çãä½æ¯ä»æ¬è´¨ä¸è®²ï¼åµå ¥å¼ç³»ç»çæ ¸å¿æ¦å¿µè¿å¨è®¡ç®æºç³»ç»ãåµå ¥å¼ç³»ç»å¦ä¹ çéç¹ä¹å¨è®¡ç®æºç³»ç»ä¸ãä¸æ¹é¢ï¼å¦ä¹ è éè¦ç¢åºææ¡è®¡ç®æºç³»ç»æ¬èº«çæ¦å¿µï¼æ´éè¦çæ¯å¦ä¹ åµå ¥ç³»ç»çå¼åè¿ç¨åä¼ ç»è®¡ç®æºç³»ç»å¼åè¿ç¨çå·®å«ãè¿ééè¦æåºçæ¯ï¼å¾å¤å¦ä¹ è æ¬æ¥å°±æ²¡æä»äºè¿å®æ´è®¡ç®æºç³»ç»çå¼åï¼é«æ ¡çæå¦æ¯ä»¥ç¨åºè®¾è®¡ä¸ºä¸å¿çï¼è®¡ç®æºç³»ç»çææï¼æä½ç³»ç»çåçï¼ç¼ç¨è¯è¨ç课ç¨é½æ¯ä¸ºäºè½å¤è®©å¦çæ´å¥½ç使ç¨è®¡ç®æºç³»ç»è¿è¡ç¨åºè®¾è®¡ï¼å¨ç°æç计ç®å¹³å°ä¸æ¥è®¾è®¡å®ç°åç§åºç¨ï¼å¦çä¸è¬æ²¡ææºä¼å¦ä¹ ä¸ä¸ªå®æ´ç计ç®æºç³»ç»æ¯å¦ä½æ建ï¼å¹¶äº²èº«åä¸å°æ建çæ¯ä¸ä¸ªè¿ç¨ãè对äºåµå ¥å¼ç³»ç»èè¨ï¼ä»äºå¹³å°å¼åç人就æ¯è¦äº²èªå»å¼ååºä¸ä¸ªå®æ´ç计ç®æºç³»ç»ï¼è¿ä¸ªè¿ç¨å æ¬
1. éæ±åæ
2 硬件设计
3 驱å¨ç¨åº
4 Bootloader & BSP ï¼æ¿çº§æ¯æå ï¼
5 æä½ç³»ç»ç移æ¤
6 åºç¨ç¨åºçå¼å
7 æ§è½æ£æ¥
åµå ¥å¼ç³»ç»æå¦çç®çå°±æ¯æä¼å¦çå¦ä½æ ¹æ®éæ±å»å»ºç«æ»¡è¶³æç§ç¹æ®è¡ä¸éæ±çåµå ¥å¼è®¡ç®æºç³»ç»ã让å¦çå¦ä¼å¦ä½æ件硬件平å°ï¼è¿è¡ç¡¬ä»¶è®¾è®¡ï¼éæ©è½å¤æ»¡è¶³åºç¨è¦æ±çæä½³çåµå ¥å¼æä½ç³»ç»ï¼å¹¶å®æBootloaderï¼BSPå驱å¨ç¨åºçç¼åï¼ç§»æ¤ï¼è°è¯çè¿ç¨ã为äºæ»¡è¶³è¡ä¸éæ±ï¼æç»è¦å¨æ建ç«çç³»ç»ä¸ç¼åè°è¯ç¸åºçåºç¨ç¨åºï¼å¹¶è¿è¡æ§è½çæµè¯åæ£æ¥ã
ä½ æ¯è°,ä½ éè¦å¦ä¹ åªäºä¸è¥¿ï¼
å¦æä½ çå·¥ä½åªæ¯éè¦å¨PC æºä¸ç¼åä¸ä¸ªå¾çæµè§ç¨åºï¼é£ä¹ä½ 就没æå¿ è¦å»äºè§£å½ç³»ç»æ¶å°ä¸ä¸ªARP请æ±å ååºè¯¥å¦ä½ååºãåæ ·çéçï¼åµå ¥å¼ç³»ç»çå¦ä¹ ä¹æ¯æå¾å¤æ¹é¢çãå°±åµå ¥å¼ç³»ç»ç设计åå®ç°èè¨ï¼åºæ¬ä¸éè¦åç§ä¸åçå·¥ä½ï¼ç³»ç»è®¾è®¡å·¥ä½ï¼ç¡¬ä»¶è®¾è®¡å·¥ä½ï¼é©±å¨ç¨åºåæä½ç³»ç»ç§»æ¤å·¥ä½ååºç¨ç¨åºè®¾è®¡å¼åå·¥ä½ã
1.ç³»ç»è®¾è®¡å·¥ä½
å¨ç³»ç»ç设计é¶æ®µï¼ç³»ç»åæå¸å°æ ¹æ®éæ±ç¡®å®ç³»ç»ç硬件çåºæ¬ææï¼æ ¹æ®ç³»ç»çéæ±éæ©ä½¿ç¨é£ç§å¤çå¨ï¼ä½¿ç¨åªç§æä½ç³»ç»ï¼ä½¿ç¨é£äºè½¯ä»¶å¼åå·¥å ·ãç³»ç»åæå¸å¾å¾æ¯è¾ä¸ºå®æ´çåä¸è¿åµå ¥å¼ç³»ç»è®¾è®¡çå ¨è¿ç¨ï¼å¯¹äºç³»ç»åºç¨çè¡ä¸è¾ä¸ºäºè§£ï¼å¯¹äºåµå ¥å¼ç³»ç»æ¬èº«çå¼åæµç¨ååæ¸ æ¥ç人ã
2.硬件设计工ä½
ç³»ç»ç¡¬ä»¶è®¾è®¡äººåéè¦æ ¹æ®ç³»ç»åæå¸ç设计ç»æï¼è¿è¡ç¡¬ä»¶åçå¾ç设计ãé常éè¦ç¡¬ä»¶è®¾è®¡äººåçæåµå ¥å¼ç³»ç»ç硬件ææã硬件设计人åéè¦äºè§£å¸¸ç¨çåµå ¥å¼ç³»ç»å¤çå¨ï¼åå¨å¨ï¼Flashï¼SDRAMï¼ï¼ä»¥å¤ªç½MACè¯çï¼é³é¢/è§é¢ç¼è§£ç è¯çï¼çµæºç®¡çè¯çï¼æ»çº¿æ¥å£çµè·¯ (USB,PCI)ï¼æ¶²æ¶æ¾ç¤ºæ¨¡åï¼å¯ç¼ç¨é»è¾å¨ä»¶(FPGA/CPLD)ï¼æ 线ç½ç»é信模å(Bluetooth,WLAN,GPRS)ç硬件çµè·¯ææå ç´ çåºæ¬å·¥ä½åçï¼è¿æ¥ä½¿ç¨æ¹æ³ï¼ä½¿ç¨æ³¨æäºé¡¹ï¼åºæ¬è°è¯æ¹æ³çå 容ãå¨ç½ç»ä¸è½æ¾å°å¾å¤å ¬å¸çè¯ä¼°æ¿çåçå¾ï¼å¯¹äºè¿äºåçå¾è¦ä»ç»ç 究ï¼æ¸æ¸ å¤çå¨ååå¨å¨ï¼ç½å¡ï¼æ¶²æ¶æ¨¡åçå¨ä»¶çè¿æ¥æ¹æ³ååå ãéè¿å¯¹è¿äºçµè·¯çç 究ï¼è½å¤è¾å¿«å°äºè§£æ´ä¸ªåµå ¥å¼ç³»ç»çææï¼è¿äºçµè·¯åå®é 产åä¸ççµè·¯è½æä¸å®å·®å«çï¼ç¹å«æ¯å¯¹äºææ设å¤ï¼ä½è¿äºå·®å«ä¸å½±ååå¦è å¦ä¹ åµå ¥å¼ç³»ç»ç硬件设计åºæ¬ææã
以ä¸è¿äºç¥è¯ï¼å¾å¾éè¦è¾é¿æ¶é´çå¦ä¹ å积累ï¼éè¦äº²èªåä¸å®è·µçæºä¼ã对äºååæ¥è§¦åµå ¥å¼ç³»ç»ç¡¬ä»¶å¼åçå¦çæ¥è®²ï¼ä¸è¬ä¸å¯è½å ¨é¨äºè§£è¿äºç¥è¯ï¼ä½ä¹ä¸ä¼æ¯ééä¸æ æç¥ãç¬è ç»åèªå·±å¼ååæå¦çç»éªè®¤ä¸ºï¼é¦å åºè¯¥éå®ä¸æ¬¾ä¸»æµä¸è¾ä¸ºç®åçåµå ¥å¼ç³»ç»å¤çå¨ï¼æ¯å¦åºäºARM7TDMI å æ ¸çATM,S3CB0 çåµå ¥å¼ç³»ç»å¤çå¨ï¼å¦ä¹ ä½RISCå¤çå¨çç¼ç¨æ¨¡åï¼æ令éãé«æ ¡æå¦ä¸ï¼åç计ç®æºè¯¾ç¨ä¸è¬ä»¥ç³»ååçä¸ºæ ¸å¿è®²è§£ï¼ç±äºç°ä»£ä½å¤çå¨çç»æåå¼åæ¹å¼å8ä½åçæºæçè¾å¤§çå·®å«ï¼å¦ä¹ è è¿æ¯éè¦è±ä¸ç¹åæ°æ¥ç 究以ä¸ä½å¤çå¨çã以ARMå¤çå¨ä¸ºä¾ï¼å¦ä¹ è å°±éè¦ç解å¤çå¨çå¤ç§å·¥ä½æ¨¡å¼ï¼å¤ä»½å¯åå¨ï¼RISC æ令éçç¹ç¹ï¼MMU åèæå°åï¼ä¸æå¤çè¿ç¨çå 容ãå¨å¦ä¹ æ令éçè¿ç¨ä¸ï¼æ好è½å¤æ¯å¦ä¹ å æ¡æ令ï¼å°±ä½¿ç¨è¿å æ¡æ令å¨æ¨¡æå¨ä¸å®éªä»¥ä¸ï¼è§å¯å¤çå¨æ§è¡çç»æãè¿ä¸ªè¿ç¨ä¸æ¹é¢æ¯å¦ä¹ è 对äºæ令æ¬èº«çå¦ä¹ è½å¤åå¾ä¸ä¸ªæ¯è¾å¥½çææï¼å¦å¤ä¹æ¯å¯¹å¼åå·¥å ·æ¬èº«çä¸ç§å¦ä¹ ãæ¥çï¼å°±å¯ä»¥å¼å§å¦ä¹ çä¸èµæºç使ç¨åé ç½®æ¹æ³ãè¿æ¶å°±éè¦ä¸ä¸ªæ¹ä¾¿ä½¿ç¨çå¼åæ¿ï¼å¦ä¹ è è½å¤éè¿JTAG仿çå¨å°å¼åæ¿åè°è¯PCæºç¸è¿ï¼è¿è¡ç¨åºçä¸è½½ï¼è°è¯ãç¹å«æ¯è¦ä»ç»ç 究系ç»çåå§åè¿ç¨åä¸æå¤ççè¿ç¨ãå¨å¼åè¿ç¨ä¸å¦æéå°é®é¢ï¼åºèªå·±åæé®é¢äº§ççåå ï¼éè¿åæ缩å°é®é¢å¯è½äº§ççèå´ï¼æç»æ¾å°é®é¢çæå¨ãæéè¦çå°±æ¯è¦ä¿æä¸ç§è§£å³é®é¢çä¿¡å¿ï¼é¢å¯¹å°é¾å¦ä½å¤çï¼å¾å¾è½å¤å³å®æç»ç³»ç»æ¯å¦è½å¤è°è¯æåãç¶åï¼å¦ä¹ è å¯ä»¥å¼å§ä»ç»å¦ä¹ å¤çå¨ååå¨å¨çè¿æ¥ï¼åå¨ç©ºé´çé ç½®ï¼åç§å¤æ©å¨ä»¶ï¼å¦ç½å¡ï¼AC声å¡çå·¥ä½åçå使ç¨æ¹æ³ãåµå ¥å¼ç³»ç»ç¡¬ä»¶è®¾è®¡ä¸å¾å¾éè¦ä½¿ç¨å¯ç¼ç¨å¨ä»¶ï¼å¦ä¹ è è¿éè¦ä¸å®çæ¶é´æ¥å¦ä¹ 使ç¨å¸¸ç¨çå¯ç¼ç¨å¨ä»¶ï¼CP L D / F P G Aï¼ï¼å¸¸ç¨çæXilinxåAlteraå ¬å¸ç产åãè¿è¡ç³»ç»ç¡¬ä»¶åçå¾è®¾è®¡ï¼å°±éè¦ä½¿ç¨åçå¾è®¾è®¡çEDAå·¥å ·ï¼å¸¸ç¨çEDA åçå¾è®¾è®¡å·¥å ·ä¸»è¦å æ¬Cadenceå ¬å¸çCaptureï¼Protelå ¬å¸çProtelSEçãæ¥ä¸æ¥å°±å¯ä»¥åç §è¯ä¼°æ¿ççµè·¯å¾ï¼æ ¹æ®ç³»ç»ç设计è¦æ±ï¼å¼å§è¿è¡åçå¾çç»å¶äºãå¨åçå¾ç»å¶è¿ç¨ä¸ï¼ä¸å®è¦ææ¸ è¯ä¼°æ¿çµè·¯è¿æ¥çåå ï¼å¯¹äºä¸æ¶æ²¡æææ¸ æ¥çé®é¢åä¸å¯èæ··è¿å ³ãä¾å¦ï¼æäºå¤çå¨çå°å线æ¯ä»¥åèä½åä½çï¼èå¦ä¸äºå¤çå¨çå°å线åæ¯ä»¥ä¸¤ä¸ªåè为åä½çï¼å½è¿æ¥ä½çåå¨å¨çæ¶åï¼åä¸å¯æ³å½ç¶çæå¤çå¨çA 0 ç´æ¥è¿æ¥å°åå¨å¨çA 0 ä¸é¢ãå¦å¤ï¼å¦çè¿åºå ·æä¸å®çPCBæ¿å¾ç»å¶è½åï¼å 为å¨ç°é¶æ®µï¼å¾å¤å ¬å¸è¿ä¸è½å®å ¨æåçå¾ç设计工ä½åPCB çç»å¶å·¥ä½åå¼ï¼å¾å¾è¦æ±ç¡¬ä»¶è®¾è®¡äººåæ¢è½è¿è¡åçå¾è®¾è®¡åè½è¿è¡æ¿å¾è®¾è®¡ãå³ä½¿æ¯PCB设计ååçå¾è®¾è®¡åå¼çå ¬å¸ï¼ä¹éè¦åçå¾è®¾è®¡è è½ä¸ºPCB ç设计è 对äºä¸åçä¿¡å·æåºå¸æ¿è¦æ±ã
3.驱å¨ç¨åºåæä½ç³»ç»ç§»æ¤å·¥ä½
ç°ä»£åµå ¥å¼ç³»ç»çå¼ååä¼ ç»8ä½åçæºç³»ç»çå¼åç¸æ¯ï¼ä¸ä¸ªæ¾èçåºå«å°±æ¯åµå ¥å¼æä½ç³»ç»ç广æ³ä½¿ç¨ãå¨æ¿å°çæ¥å®æ¯ççµè·¯æ¿ï¼å¹¶è¿è¡åºæ¬çæµè¯åï¼å°±è¦è¿è¡é©±å¨ç¨åºåæä½ç³»ç»ç移æ¤å·¥ä½äºãé¦å è¦è¿è¡çBootloaderçç¼åå移æ¤å·¥ä½ãBootloaderç¸å½äºPCç³»ç»çBIOSã对äºæäºåµå ¥å¼æä½ç³»ç»ï¼å¦uc/OSII没æbootloaderåæ ·å¯ä»¥å¼åè°è¯ãä½æ¯å¯¹äºWindowsCEååµå ¥å¼linuxç³»ç»èè¨Bootloaderå°±æ¯å¿ é¡»çäºãæ¬æ以Windows CE 为ä¾ï¼åä¸ä¸ªç®è¦ç说æã
Windows CE ç³»ç»ç移æ¤å·¥ä½ä¸»è¦å°±æ¯BSPï¼æ¿çº§æ¯æå ï¼çå¼åè¿ç¨ãBSPå°å ·ä½ç硬件差å¼åæä½ç³»ç»çæ ¸å¿é离å¼æ¥ï¼ä¸»è¦ç±Bootloaer ï¼OALï¼OEMAbstraction Layerï¼å设å¤é©±å¨ç¨åºä¸é¨åç»æãWindowsCEç³»ç»ä¸Bootloaderå«åEbootãEboot被åå ¥ç³»ç»çå¼å¯¼Flashãç³»ç»å¯å¨æ¶è¿è¡Ebootï¼å®æéè¿ç½å¡å°è°è¯PC æºä¸WindowsCE æä½ç³»ç»æ åä¸è½½å°ç®æ ç³»ç»çSDRAMä¸å¹¶å¼å§æ§è¡çåè½ã对äºä¸ä¸ªç³»ç»ç§»æ¤äººåï¼é¦å éè¦é 读ææ¡£ï¼äºè§£WindowsCEç³»ç»BootloaderåBSPçåºæ¬æ¦å¿µåå¼åè¿ç¨ãï¼åµï¼è¿è¦åè¿å·¥ä½åï¼æè¿æ²¡æ³å°ï¼åå¦^_^ï¼ï¼Windows CEçå¼åç³»ç»Platform Builderæä¾äºè¯¦ç»çææ¡£åä¾ç¨ï¼å¼å人åéè¦ä»ç»çé 读ææ¡£åä¾ç¨ãææ¸ æ¥å个å½æ°ä¹é´çè°ç¨å ³ç³»ãå¨å¼åè¿ç¨ä¸çä¸ä¸ªéè¦çæ¥éª¤å°±æ¯æé串å£ï¼ä½¿å¾ç®æ æ¿è½å¤éè¿PCæºä¸²å£åè°è¯PC æºåéæ°æ®ãç±äºARMç³»ç»ç仿çå¨æ¯è¾æè´µï¼èä¸æä½ç³»ç»çè°è¯å¾å¾ä¸ä½¿ç¨JTAGè°è¯å¨è¿è¡åæ¥è°è¯ãæ以è½ä»ä¸²å£è§å¯ç¨åºçæ§è¡è¿ç¨åç»æ对äºè°è¯å°±æ¾å¾ååéè¦äºã串å£æéä¹åä¸ä¸ªæ¯è¾æ£æçé®é¢å°±æ¯ç½å¡è¯ççè°è¯ãååæ¥è§¦åµå ¥å¼ç³»ç»å¼åç人å¾å¾æ²¡æç´æ¥å¨å¯åå¨çº§ä¸ä½¿ç¨ç½å¡è¯ççç»éªï¼èç½å¡è¯çç说æä¸è¬é½è¾ä¸ºç®çï¼è¿å°±è¦æ±å¼åè å¦ä¹ ä¸äºä»¥å¤ªç½çåºç¡ç¥è¯ï¼å¯¹ä»¥å¤ªç½çMAC å±æä¸ä¸ªåºæ¬ç认è¯ãå¦å¤ï¼åç§ç½ç»è°è¯ï¼æå ï¼å·¥å ·ç使ç¨ä¹è½å¤§å¤§éä½ç³»ç»è°è¯çé¾åº¦ãç³»ç»çOALéè¦æ ¹æ®å ·ä½ç¡¬ä»¶çä¸åååºç¸åºçä¿®æ¹ï¼è¿ä¸ªé¨åå¯åç §ææ¡£è¿è¡ï¼å¨è°è¯è¿ç¨ä¸æ ¹æ®ä¸²å£çä¿¡æ¯åæåºéçå°æ¹ãè¦å ååæ¥è·¨æ件å符串æç´¢å·¥å ·çåè½ï¼å¨æµ©å¦çæµ·çæºæ件ä¸æ¾å°åºéçä½ç½®ãå½ç¶ï¼éçå¼åè 对系ç»æ件ç®å½ç»æççæåäºè§£ï¼é误å®ä½çé度ä¼ä¸æå å¿«ãWindowsCE ç驱å¨ç¨åºç¸å¯¹èè¨æ¯æ¯è¾å¥½åçã
4.åºç¨ç¨åºçå¼å
åµå ¥å¼ç³»ç»çåºç¨ç¨åºå¼ååå¨PC æºä¸å¼ååºç¨ç¨åºçåºå«ä¸æ¯å¾å¤§ã对äºWindows CEç³»ç»èè¨ï¼Microsoftå·²ç»æä¾äºè¾ä¸ºå®åçå¼åå·¥å ·ãç¹å«æ¯.NET Compact workç使ç¨ï¼ä½¿å¾åºäºWindows CE.NETCompactworkçåºç¨ç¨åºæäºè·¨å¹³å°æ§ãå¼å人åå¯ä»¥ä½¿ç¨Windows çC# è¯è¨ç´æ¥å¨PC ä¸è¿è¡http://CE.NETåºç¨ç¨åºçå¼åå模æè°è¯ï¼ä¹å¯å°ç®æ ç³»ç»åPC æºç¸è¿ï¼è¿è¡èæºè°è¯ãç°å¨æå¾å¤ç³»ç»æ¯æJ2ME(JAVAçåµå ¥å¼ç³»ç»çæ¬) ï¼è¿ä½¿å¾JAVA å¨åµå ¥å¼ç³»ç»åºç¨å¼åä¸å æè¾å¤§çä¼å¿ãå¦å¤ï¼ä½ä¸ºä¸ä¸çåµå ¥å¼ç³»ç»è½¯ä»¶å¼å人åï¼è¿éè¦å åäºè§£é¢å对象ææ¯å设计模å¼çæ¹é¢çç¥è¯ï¼å½ç¶ä½ä¸ºåå¦è å¯ä»¥å ä¸æ·±å ¥ç 究è¿æ¹é¢çå 容ã
常ç¨åµå ¥å¼ç³»ç»å¤çå¨åæä½ç³»ç»
å¤çå¨
常ç¨åµå ¥å¼ç³»ç»å¤çå¨ä¸»è¦å æ¬ARM å¤çå¨ï¼Power PC å¤çå¨ï¼åºäºMIPS å æ ¸çåµå ¥å¼å¤çå¨ï¼è½¯æ ¸å¤çå¨ï¼å¦Altera çNiosåXilinxçMicroBlazeçï¼åDSPï¼æ°åä¿¡å·å¤çå¨ï¼çã
ARM å¤çå¨ç主è¦ç¹ç¹æ¯å ·æè¾é«çæ§è½åèæ¯ãARMå¤çå¨è¢«å¹¿æ³çåºç¨å¨ææºï¼PDAçé¢åï¼å ¶ä¸è¾ä¸ºèåçæIntel å ¬å¸ç产çåºäºARM å æ ¸çXScaleç³»åå¤çå¨ãç±äºææå ¬å¸ç产çåºäºARMå æ ¸çå¤çå¨å ·æç¸åçç¼ç¨æ¨¡åï¼å¨ææåçµæ± ä¾çµçç³»ç»ä¸ï¼åºäºARMçåµå ¥å¼ç³»ç»å¤çå¨å¾å¾è¢«é¦å éç¨ãPowerPCï¼ç®ç§°PPCï¼å¤çå¨å ·æè¾å¼ºçè¿ç®æ§è½åæ°æ®ååè½åï¼å¨ç½ç»åæ°æ®éä¿¡é¢ååºäºPPCçåµå ¥å¼ç³»ç»å¤çå¨æç广æ³çåºç¨ãå ¶ä¸Motorolaå ¬å¸ç产çMPC/MPC被大éå°åºç¨å¨åµå ¥å¼ç½ç»äº§åä¸ãMIPS å¤çå¨çç¹ç¹è¡¨ç°å¨åå强大çå¤çè½åä¸ãä½ä¸ºé«æ§è½å¤çå¨ï¼MIPSå¤çå¨éç¨äºç½ç»ãä¼ä¸åé«çº§æ¶è´¹ç±»çµååºç¨ï¼ç¹å«æ¯å¨æºé¡¶çç³»ç»ä¸ï¼MIPSå¤çå¨å ·æè¾é«çå¸åºå æçãéçå¯ç¼ç¨å¨ä»¶çè§æ¨¡ä¸ææ©å¤§ï¼ä½¿å¾äººä»¬è½å¤æ ¹æ®éè¦å®å¶å¤çå¨ï¼å¹¶æ¹ä¾¿çå°é对æç§ç¹æ®åºç¨å®å¶çå¤çå¨æ¹ä¾¿çå¨å¯ç¼ç¨å¨ä»¶å é¨å®ç°ãé¤äºå¤çå¨å¤ï¼è®¡ç®æºç³»ç»è¿éè¦è®¸å¤å ¶ä»ææé¨åï¼æ¯å¦å¨å¤ééåªä½æ°æ®å¤çç³»ç»ä¸ï¼ç»å¸¸éè¦ä½¿ç¨å¯ç¼ç¨å¨ä»¶æ¥å®ç°é«éçæ°æ®å¤çåè½ï¼ä½¿ç¨è½¯æ ¸DSPæ¥å®ç°å¤æçæ°åä¿¡å·å¤çç®æ³ï¼åæ¶è¿éè¦å¤çå¨è¿è¡äºå¡å¤çï¼è½¯æ ¸å¤çå¨å°å¯ç¼ç¨å¨ä»¶ï¼DSPåå¤çå¨ç»åå¨ä¸èµ·ï¼ä¸ºç³»ç»çº§è®¾è®¡æä¾äºæ大ççµæ´»æ§ãDSPï¼æ°åä¿¡å·å¤çå¨ï¼æå«äºéç¨å¤çå¨ï¼éä¸è¡¨ç°å¨å ¶å¼ºå¤§çæ°åä¿¡å·å¤çè½åä¸ãå¨DSP å é¨æä¾äºç¡¬ä»¶ä¹ç´¯å å¨ï¼å¤çå¨å¨è®¾è®¡ä¸å¯¹äºç¹æ®ç寻åæ¹å¼åäºä¼åï¼ä¸äºDSP è¿æ¯æé¶è循ç¯ï¼Zero OverheadLoopï¼ã为äºæ¹ä¾¿åµå ¥å¼ç³»ç»è®¾è®¡ï¼ä¸»æµDSP ä¸è¬ä¹é½æä¾äºä¸°å¯çå¤è®¾ãç¹å«å¼å¾ä¸æçæ¯ADI å ¬å¸çBlackfin ç³»åDSPåTI å ¬å¸çDMXç³»åDSPï¼ä¸¤ç§å¤çå¨é½æä¾äºä¸°å¯ççä¸å¤è®¾ï¼é常éç¨åµå ¥å¼ç³»ç»åºç¨ã
æä½ç³»ç»
http://WindowCE.NET/5.0
ä½ä¸ºMicrosoftç产åï¼WindowCE.NE/5.0æä¾äºåè½å®å¤çå¹³å°å¼åå·¥å ·Platform Builderååºç¨å¼åå·¥å ·Embedded Visual C++/Visual Studio ãWindowsCEç±äºæ¥æ广大使ç¨è æçæçwindowsçé¢ï¼ç³»ç»æä¾äºä¼å¤é©±å¨ç¨åºï¼å¹¶ä¸æå®å¤çææ¡£æ¯æã对äºåºç¨å¼åèè¨ï¼çæWindowsç³»ç»å¼åçç¨åºåå¾å®¹æ转å°WindowsCE åºç¨ç¨åºçå¼åãWindows CEå°ä¼æ¯ä¸ä¸ªé常æåéçåµå ¥å¼æä½ç³»ç»ã
VxWorks
VxWorksæ¯ç±Windriverï¼é£æ²³ï¼å ¬å¸åºåçåµå ¥å¼å®æ¶æä½ç³»ç»ï¼å¤§åé¼é¼çç«æç»é车就æ¯ä½¿ç¨äºVxWorksãWindriver为VxWorksæä¾äºéæå¼åç¯å¢tornadoã
Ï C/OSII
Ï C/OSæ¯ç±Jean Labrosse设计ç¼åçå¼æ¾æºä»£ç çåµå ¥å¼å®æ¶æä½ç³»ç»ï¼ç¬è ææ©æ¥è§¦çåµå ¥å¼æä½ç³»ç»å°±æ¯å®ãé è¯»å¹¶æ·±å ¥çè§£Ï C/OSçæºä»£ç 对äºç解å®æ¶ç³»ç»æ¯å¤§æ裨ççã
ARM Linux
ARM linuxæ¯ç±Russell Kingåå ¶ä»å¼åè å¼å移æ¤çç¨äºARM å¤çå¨çlinuxæä½ç³»ç»ãARM Linuxç³»ç»å¨GNU GPLä¸åå¸ã
Ï CLinux
Ï Clinux æ¯éç¨äºæ²¡æMMU çåµå ¥å¼å¤ççLinuxOS çæ¬ãÏ Clinux åæ ·å¨GNU GPLåå¸ã
åµå ¥å¼ç³»ç»å¼åè¿ç¨ä¸ç常è§é®é¢å解å³æ¹æ³
Bootloaderå¦ä½åå ¥Flash ï¼
åå¦è ä¸è¬é½ä¼éå°å¦ä½å°ç¨åºåå ¥å¤çå¨çé®é¢ã对äºä¸åçå¤çå¨ï¼å¯ä»¥éç¨ä¸åçæ¹æ³ãä¾å¦IntelçXscaleå¤çå¨å¯ä»¥ä½¿ç¨Intelå ¬å¸æä¾çJFlashå·¥å ·ç§åã对äºå ·æJTAGè°è¯å·¥å ·è½¯ä»¶çå¤çå¨ï¼å¯ä»¥ä½¿ç¨å¦ä¸æè·¯ï¼ç¼åä¸æ®µç¨åºï¼è¿æ®µç¨åºè½å°ä½äºSDRAM/SRAM åºå®å°åä¸çæ°æ®åå ¥Flashä¸ãç§åæ¶ï¼é¦å ï¼å°è¿æ®µè½¯ä»¶ä¸è½½å°SDRAM ä¸ï¼ç¶åéè¿è°è¯è½¯ä»¶å°è¦åå ¥Flashçæ°æ®ä¸è½½å°SDRAM/SRAMçæ个åºå®å°åå¼å§çç¼å²åºï¼ç¶åéè¿è°è¯å¨å¼å§æ§è¡ç¨åºï¼å°æ°æ®åå ¥Flashãé¤æ¤ä»¥å¤ï¼ç½ç»ä¸è¿æä¾äºå¾å¤ä¸ç¨çåFlashçå·¥å ·ï¼å¼åè å¯ä»¥æ ¹æ®èªå·±çéè¦éç¨ã(ç°å¨æç½äºæå¨å¦çé£ä¸ªBF为ä»ä¹å ä¸ä¸ªflashProgramer.dxeå äº)
ä»ä¹æ¯arm-elf-gccï¼
arm-elf-gccæ¯ä¸ä¸ªäº¤åCè¯è¨ç¼è¯å¨ãæ们å¨PCå¹³å°ä¸ç¼è¯ç¨åºï¼ç¼è¯å¨è¿è¡çå¤çå¨åçæç代ç å°è¦è¿è¡çå¤çå¨ç¸åãä½æ¯ï¼å¨PC
æºä¸ç¼è¯ARMç¨åºæ¶ï¼ç¼è¯å¨è¿è¡çå¤çå¨åçæç代ç è¿è¡çå¤çå¨ä¸åï¼è¿ç§ç¼è¯å¨å«å交åç¼è¯å¨ãå ¶ä¸çelfæ¯æç¼è¯å¨çæçç®æ æä»¶æ ¼å¼ã(å ¶å®æ们平æ¶ç¨çåçæºç¼è¯å¨å¦GCCâAVRçå·²æ¯äº¤åç¼è¯å¨äºï¼æå°ç°å¨æå¼æ¸ æ¥ä»ä¹æ¯äº¤åç¼è¯å¨)
èµ°äºåªæ¡ç¼è¯è·¯å¾ï¼
ç³»ç»ç¨åºå驱å¨ç¨åºå¾å¾å å«å¾å¤çç¼è¯é项ï¼å¾å¤é项é½æ¯å¨ç¼è¯æ¶éè¿å½ä»¤è¡å®ä¹çï¼å¦ææ³ç¥éç¼è¯çæ¯é£ä¸æ®µç¨åºå¯ä»¥ä½¿ç¨å¦ä¸çæ¹æ³ï¼
#ifdef PLAT_AAA
#error Code for Platform AAA
#else
#error Code NOT for Platform AAA
#endif
è¿æ ·å¨ç¼è¯çæ¶åå°±ç¥éï¼ç¼è¯çæ¯åªä¸æ¡è·¯ç»äºã对äºæ¯æ#pragma message( âI am hereâ)çç¼è¯å¨ä¹å¯ä½¿ç¨#pragma messageé¢ç¼è¯æ令ã
ææä¹ç¥éé£æ®µä»£ç å¨é£ä¸ªæ件ä¸ï¼
ç³»ç»ç¼ç¨ä¸ç»å¸¸éè¦ä½¿ç¨å¨å¤ä¸ªæ件ä¸æç´¢å符串ï¼å¨windowså¹³å°ä¸å¯ä»¥ä½¿ç¨å¹³å°æä¾çå¤æ件å符串æç´¢å·¥å ·ãå¨linuxå¹³å°ä¸ï¼å¯ä»¥ä½¿ç¨grepæ¥æç´¢å符串ãGrepçæç´¢åè½åå强大ï¼æ¯ææ£å表达å¼æç´¢ï¼çç»ä½¿ç¨grep对äºé 读系ç»å驱å¨ç¨åºä»£ç æ¯å¾æ帮å©çã
ç³»ç»æ¯ä»é£ä¸ªæ件å¼å§è¿è¡çï¼
对äºWindows CEç³»ç»ï¼ä¸è¬ä»WINCE\PLATFORM\YourPlatform\KERNEL\HALç®å½çæ个æ±ç¼æ件ä¸ã对äºLinuxç³»ç»çæ¬ä¸åä¼åå¨ä¸å®å·®å¼ï¼ä»¥armå¤çå¨ä¸ºä¾ï¼ä¸è¬ä¼å¨linux2.4.x\arch\arm\kernelçhead-armv.Sä¸ã
ç¨åºæ§è¡å°äºé£éï¼
å¯ä»¥å¨ç¨åºä¸æå ¥å¦ä¸ä»£ç æ¥å®ç°
printf( âI am here %s, %d\nâ,__FILE__,__LINE__);
代ç å°æåºprintfè¯å¥æå¨çæ件ååè¡å·ã
æ¨è书ç®
Jean J.Labrosse MicroC/OS-II The Real-TimeKernel,Second Editionè¿æ¬ä¹¦æ¯ç¬è æ¥è§¦åµå ¥å¼å®æ¶ç³»ç»çå ¥é¨ä¹¦ï¼å¨å½å è½å¤ä¹°å°ä¸æçãè¿æ¬ä¹¦è¾ä¸ºæ¸ æ¥å°è®²è¿°äºå®æ¶ç³»ç»çæ¦å¿µï¼å个ç»æé¨åçå·¥ä½åçï¼ç¹å«æ¯å ¬å¼äºå®æ¶ç³»ç»å æ ¸çæºä»£ç ï¼ä»ç»ç 究å®ä¼åçåªæµ ãæ个å°çæ示ï¼å¯¹äºåå¦è ï¼è¿æ¬ä¹¦å¯ä»¥å ä¸ç第ä¸ç« ï¼ç´æ¥ä»ç¬¬äºç« çèµ·ã
Abraham Silberschatz, Peter Baer Galvin,GregGagne Operating System Conceptsç¬è å¨æå¦è¿ç¨ä¸åç°ï¼æ 论æ¯è®¡ç®æºè¿æ¯çµåå·¥ç¨ä¸ä¸é½æå¾å¤å¦ç对äºæä½ç³»ç»çåºæ¬æ¦å¿µé½æ²¡æææ¸ ï¼å¾å°æå¦çæå®æ´çç³»ç»ç¼ç¨ç»éªãOperating System Conceptsè¿æ¬ä¹¦å¯¹æä½ç³»ç»çæ¦å¿µè®²è¿°åªè½ç¨ç»å ¸æ¥å½¢å®¹ã对äºåµå ¥å¼ç³»ç»æå ´è¶£æ·±å ¥ç 究çåå¦ï¼é¦å è¦æåºç¡æ好ï¼è¿æ¬ä¹¦å°±æäºå¿ 读ä¹ç©äºã
Andrew S. Tanenbaum Computer Networks æèµ·Andrew S. Tanenbaum å¦ä¹ 计ç®æºçåå¦ä¸å®é½ç¥éOPERATINGSYSTEMs:Designand
Implementationè¿æ¬ä¹¦ï¼ç¬è 对äºTanenbaumè¿æ ·çææç±è¡·ä½©æãç½ç»åè®®æ æ¯åµå ¥å¼ç³»ç»ä¸çæ¯æ±æ§ç»æé¨åãæ¿æè´åäºç½ç»æ·±å±ææ¯ç 究çåå¦ï¼è¿æ¬ä¹¦å°ä¸ºä½ 们建ç«ä¸ä¸ªåå®çç½ç»åºç¡ã
Karim Yaghmour Building Embedded Linux Systemsæ¬ä¹¦è¯¦å°½çä»ç»äºåµå ¥å¼linuxç³»ç»çç»æï¼åºæ¬æ¦å¿µåå¦ä½å»å»ºç«å个é¨åãå ¨ä¹¦ç¯å¹ è¾å°ï¼å¯è°çå°ç²¾æãå³å¯ä»¥ä½ä¸ºåµå ¥å¼linuxç³»ç»çå ¥é¨è¯»ç©ï¼åæ¯å¼åè¿ç¨å个é¨åçæåã
Advanced RISC Machines Ltd (ARM) ARM7 TDMI DataSheet Advanced RISC Machines Ltd (ARM) ARMTTechnical Reference Manualå¦ä¹ åµå ¥å¼ç³»ç»ä¸äºè§£å½ååºç¨æ广æ³çåµå ¥å¼å¤çå¨æä¹è¡ï¼ARM7 TDMI ç data sheetæ¯å¦ä¹ ARMç¼ç¨æ¨¡åï¼æ令éç好ä¸è¥¿ãå¨åµå ¥å¼ç³»ç»ä¸ï¼MMUï¼å å管çåå ï¼æ¯å¾éè¦çé¨åï¼åæ¯è¾é¾ç解åææ¡çé¨åãARMTTechnical Reference Manual æ£å¥½å¯ä»¥å¸®ä½ 讲解è¿æ¹é¢çå 容ã
Perter Van Der LinDen Expert C Programmingåµå ¥å¼ç³»ç»çº§ç¼ç¨æ常ç¨çè¯è¨è¿æ¯C ãå¾å¤åå¦é½èªè®¤ä¸ºèªå·±çCè¯è¨å¦çå¾å¥½ï¼é£å¥½ï¼å°±ççè¿æ¬ä¹¦å§ï¼æ¾æ¾èªå·±åExpertså·®è·ã
åµå ¥å¼å¼åä¸æ¡é¢å¼åæ¢æä¸åï¼åæé常大çèç³»ï¼èä¸åå注éå®é æä½è½åãææ¡é¢å¼åç人å¨ä¸å¼å§æ¥è§¦åµå ¥å¼çæ¶åï¼é常转æ¢ä¸è¿æ¥ï¼è¿ä¸»è¦ä½ç°å¨å®ä½ä¸ãå¦æä¸æ说ï¼ä½ æ¯è°ï¼ä½ è¦åä»ä¹ï¼æ对硬件çäºè§£ä» éäºç¼ç¨é¢åï¼PCB设计ä¸çªä¸éï¼ä½å¹¶ä¸è½è¯´ä½ ä¸æ硬件就ä¸è½ä»äºåµå ¥å¼å¼åãä¸ä¸ªç³»ç»çå¼å设计æ¹æ¹é¢é¢ï¼å¨èªå·±æå ´è¶£åçæçé¢åååºèªå·±çè´¡ç®ææ¯æ主è¦çã
1ã硬件设计: éè¦æ硬件设计çç»éªï¼å¯¹åç§åµå ¥å¼å¨ä»¶æå¾å¥½çäºè§£ã
2ãç³»ç»ç§»æ¤ï¼éè¦æ±ç¼ç»éªï¼æä½ç³»ç»åç以ååºå±é©±å¨çäºè§£
3ãåºç¨ç¨åºï¼éè¦æ¡é¢ç¼ç¨ç»éª
edkEDK设计的实现流程
在嵌入式设计中,EDK(Xilinx Embedded Development Kit)提供了一套流程,简化了硬件和软件开发过程。以下是基于EDK的简化设计流程概述: 首先,创建硬件平台是基础,使用XPS的板级开发包向导(BSB Wizard)快速构建设计。接着,添加必要的IP Core和自定义外设,XPS库中的模块可以直接使用,不足部分则需用户设计。在XPS中生成仿真文件,通过ModelSim等工具进行行为、结构或时序级测试,如有问题则需回溯修改硬件设计。 生成硬件比特流,类似于传统FPGA设计中的综合、布局布线和编程文件生成。同时,开发软件系统,编写硬件驱动和操作系统相关代码,设置编译器参数以生成.elf格式的可执行代码。 软硬件比特流合并形成最终二进制比特文件,通过JTAG编程电缆或编程器烧录到目标器件。在线调试阶段,可以使用XMD或ChipScope工具进行实时调试和代码下载。 关于比特文件的组成,硬件部分包含MHS文件和用户自定义HDL代码,经过综合后生成.ngc网表和硬件比特流。软件部分包括MSS文件和.c/cpp/asm源代码,经过GCC编译和连接后生成软件比特流。最后,通过Data2MEM过程,将软硬件比特流整合,形成下载到FPGA的完整系统比特流。扩展资料
EDK=Embedded Development Kit,嵌入式开发套件。 EDK是xilinx公司开发嵌入式系统的工具。比起xilinx的ISE,二者不同在于,如果仅仅是使用xilinx的fpga做逻辑设计,只需要ISE开发环境。但是如果要使用powerpc或者microblaze处理器,从硬件到软件设计的整个嵌入式系统设计,就需要EDK。FPGA和ARM的操作系统有何不同
是这样的,你用FPGA可以实现处理器,也可以实现一些复杂的算法,如FFT,FIR等。如果用FPGA实现了处理器,那么处理器可以裸奔(不加嵌入式操作系统),也可以加入嵌入式操作系统(如uC/OS-II,uClinux)。
FPGA的重点不在操作系统,但作为一个从事电子设计的人,嵌入式操作系统是必须掌握的。通常操作系统在ARM应用的最为广泛,在单片机、DSP、FPGA中也有应用,但较少。