电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>为ZynqberryZero生成嵌入式Linux映像

为ZynqberryZero生成嵌入式Linux映像

2022-11-02 | zip | 0.69 MB | 次下载 | 免费

资料介绍

描述

Trenz Electronic 的 Zynqberry 系列板是有趣的小型 Xilinx 基于 Zynq 的 FPGA 开发板,采用来自其微控制器对应部件 Raspberry Pi 板的流行外形。正如您从名称中猜到的那样,ZynqberryZero 采用了 Raspberry Pi Zero 的外形尺寸。虽然本月早些时候我已经介绍了如何为ZynqberryZero创建硬件设计裸机应用程序,但在没有嵌入式 Linux 映像的情况下,这并不是 ZynqberryZero 和 Raspberry Pi Zero 之间真正的苹果对苹果的比较。在 ZynqberryZero 上运行。

ZynqberryZero 拥有与嵌入式 Linux 映像相同的硬件外设,以利用包括 mico-USB OTG 端口、mini-HDMI 端口、MIPI/CSI 摄像头连接器和 40 针 GPIO 以及用于 SPI、I2C 的标准 Raspberry Pi 引出线、GPIO、5V电源和接地。

 

值得注意的是,虽然 Raspberry Pi Zero 的基本 Raspbian 映像是基于 Debian 的,但 PetaLinux 工具集会生成使用 RPM(Red hat Package Manager)的轻量级 Red Hat 映像。因此,如果您尝试在 ZynqberryZero 上迁移/复制任何 Raspberry Pi Zero 项目,请记住这一点。

创建 PetaLinux 项目

首先,从命令行获取环境中的 PetaLinux 工具:

~$ source /tools/Xilinx/PetaLinux/2019.2/settings.sh

然后将目录更改为您希望 PetaLinux 项目所在的文件夹。我个人喜欢将 PetaLinux 项目放在我为开发板创建硬件设计的 Vivado 项目的顶级目录中。所以在我的在这种情况下,我的 ZynqberryZero 的 Vivado 项目位于我的主文件夹中的 zynqberry_zero_prj 中:

~$ cd ./zynqberry_zero_prj/
pYYBAGNh-RuAba-aAABSyIjRgAs779.png
 

接下来使用以下命令创建 PetaLinux 项目。为类型标志传递项目,为模板标志传递zynq但是,请随意传递项目名称的所需名称。

~/zynqberry_zero_prj$ petalinux-create --type project --template zynq --name zynqberry_zero_os

将目录更改为最后一个命令创建的项目目录:

~/zynqberry_zero_prj$ cd ./zynqberry_zero_os/

导入硬件设计

在新的 PetaLinux 项目中需要做的第一件事是导入从 Vivado 导出的适当硬件平台,用于目标 FPGA 开发板。

在这种情况下,这将是在我之前的项目文章的最后一步中导出的硬件平台,该文章介绍了如何为位于 Vivado 项目顶层目录中的 ZynqberryZero 生成基本硬件设计,我还创建了 PetaLinux 项目在。

~/zynqberry_zero_prj/zynqberry_zero_os/$ petalinux-config --get-hw-description ../

导入硬件平台后,系统硬件配置编辑器会自动启动:

poYBAGNh-R6AFej7AAE4_IJuhik649.png
 

为 ZynqberryZero 的嵌入式 Linux 映像配置系统硬件,以在 ZynqberryZero 的 QSPI 闪存和 SD 卡上的设备树中查找引导二进制文件。

Subsystem AUTO Hardware settings > Advanced bootable images storage Settings下,将映像存储介质更改为用于引导映像设置的主闪存,并将映像存储介质更改为用于dtb 映像设置的主 sd

 
 
 
pYYBAGNh-SGAeJt3AABg2150_qs838.png
 
1 / 2
 

为了在功能方面与 Raspberry Pi Zero 更加匹配,我选择将根文件系统类型从 initramfs 更改为扩展 (EXT)。

The initramfs filesystem is writeable, but not persistent. Thus any changes are lost at each reboot because it is simply a complete set of directories as a normal root filesystem that is compressed into a single cpio archive loaded by the kernel at boot. The extended filesystem is the traditional filesystem type most think of. In this case it is ext4 in PetaLinux.

Change the root filesystem type from INITRAMFS to EXT. And uncheck the option for TFTP boot if you don't plan to boot your ZynqberryZero over a network connection.

poYBAGNh-SWAY7-kAABuyO1NuHs216.png
 

Exit and save the system hardware configuration editor.

Linux Kernel

Next configure kernel in the PetaLinux project by launching the configuration editor:

~/zynqberry_zero_prj/zynqberry_zero_os/$ petalinux-config -c kernel

Use the search function in the kernel configuration editor by pressing the / key at any time. Verify/modify the kernel to configure the following kernel modules:

CONFIG_MII=y
CONFIG_XILINX_GMII2RGMII=y
CONFIG_USB_USBNET=y
CONFIG_USB_NET_AX8817X=y
CONFIG_USB_NET_AX88179_178A=y
CONFIG_USB_NET_CDCETHER=y
# CONFIG_USB_NET_CDC_EEM is not set
CONFIG_USB_NET_CDC_NCM=y
# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
# CONFIG_USB_NET_CDC_MBIM is not set
# CONFIG_USB_NET_DM9601 is not set
# CONFIG_USB_NET_SR9700 is not set
# CONFIG_USB_NET_SR9800 is not set
# CONFIG_USB_NET_SMSC75XX is not set
CONFIG_USB_NET_SMSC95XX=y
# CONFIG_USB_NET_GL620A is not set
CONFIG_USB_NET_NET1080=y
# CONFIG_USB_NET_PLUSB is not set
# CONFIG_USB_NET_MCS7830 is not set
# CONFIG_USB_NET_RNDIS_HOST is not set
CONFIG_USB_NET_CDC_SUBSET_ENABLE=y
CONFIG_USB_NET_CDC_SUBSET=y
# CONFIG_USB_ALI_M5632 is not set
# CONFIG_USB_AN2720 is not set
CONFIG_USB_BELKIN=y
CONFIG_USB_ARMLINUX=y
# CONFIG_USB_EPSON2888 is not set
# CONFIG_USB_KC2190 is not set
CONFIG_USB_NET_ZAURUS=y
# CONFIG_USB_NET_CX82310_ETH is not set
# CONFIG_USB_NET_KALMIA is not set
# CONFIG_USB_NET_QMI_WWAN is not set
# CONFIG_USB_NET_INT51X1 is not set
# CONFIG_USB_SIERRA_NET is not set
# CONFIG_USB_VL600 is not set
# CONFIG_USB_NET_CH9200 is not set
CONFIG_FB_SIMPLE=y
# CONFIG_FRAMEBUFFER_CONSOLE is not set
CONFIG_SND_SIMPLE_CARD_UTILS=y
CONFIG_SND_SIMPLE_CARD=y
CONFIG_USBIP_CORE=y
# CONFIG_USBIP_VHCI_HCD is not set
# CONFIG_USBIP_HOST is not set
# CONFIG_USBIP_VUDC is not set
# CONFIG_USBIP_DEBUG is not set

这启用了以太网控制器/USB 集线器芯片 LAN9514 的内核驱动程序。退出并保存内核的系统硬件配置编辑器。

根文件系统

通过在 PetaLinux 中启动相应的配置编辑器来配置根文件系统:

~/zynqberry_zero_prj/zynqberry_zero_os/$ petalinux-config -c rootfs

启用以下文件系统包(同样,您可以随时按 / 键使用内核配置编辑器中的搜索功能来准确查找每个包在菜单中的位置):

i2c-tools
alsa-plugins
alsa-lib-dev
libasound
alsa-conf-base
alsa-conf
alsa-utils
alsa-utils-aplay
busybox-httpd

接下来,为 ZynqberryZero 添加自定义应用程序:

~/zynqberry_zero_prj/zynqberry_zero_os$ petalinux-create -t apps --name fbgrab --enable
~/zynqberry_zero_prj/zynqberry_zero_os$ petalinux-create -t apps --name ffmpeg --enable
~/zynqberry_zero_prj/zynqberry_zero_os$ petalinux-create -t apps --name i2cpick --enable
~/zynqberry_zero_prj/zynqberry_zero_os$ petalinux-create -t apps --name rpicam --enable
~/zynqberry_zero_prj/zynqberry_zero_os$ petalinux-create -t apps --name startup --enable
~/zynqberry_zero_prj/zynqberry_zero_os$ petalinux-create -t apps --name webfwu --enable

Trenz 示例设计中提供了这些自定义应用程序的源文件,因此只需将它们复制过来:

从 Trenz 示例设计(这只是 bitbake 文件)中删除 PetaLinux 在 fbgrab 目录中生成的所有内容以及/zbzerodemo1/os/petalinux/project-spec/meta-user/recipes-apps/fbgrab内容的副本。

同时删除由 PetaLinux 在 ffmpeg 目录中生成的所有内容,并Trenz 示例设计(包含源文件的 ffmpeg 文件夹和位烘焙文件)。

对于 i2cpick、rpicam、startup 和 webfwu,从 Trenz 示例设计 ( /zbzerodemo1/os/petalinux/project-spec/meta-user/recipes-apps//files ) 复制它们各自文件目录的内容) 到 PetaLinux 项目中的文件目录 ( /zynqberry_zero_prj/zynqberry_zero_os/project-spec/meta-user/recipes-apps//files )

由于某种原因,ZynqberryZero 示例设计中缺少 TE 音频编解码器内核模块,因此我从我的主要 Zynqberry PetaLinux 项目中复制了它。

pYYBAGNh-SiAEk8cAABJxn4l-2c938.png
 

并将以下行添加到/zynqberry_zero_prj/zynqberry_zero_os/project-spec/meta-user/conf中的user-rootfsconfig中,以便根文件系统配置编辑器获取它,以便我可以返回并在模块下启用它(运行 petalinux-config - c rootfs 再次)。

CONFIG_te-audio-codec
 
 
 
poYBAGNh-SuAa7JSAABLnctAmuQ473.png
 
1 / 3启用用户添加的应用程序。
 

最后,将 Trenz 示例设计 ( /zbzerodemo1/os/petalinux/project-spec/meta-user/recipes-core ) 中的 recipes-core recipe 文件夹复制到 PetaLinux 项目中的 meta-user 文件夹:/zynqberry_zero_prj/zynqberry_zero_os/项目规范/元用户/。

poYBAGNh-TGAbd15AABYsbQnqaM918.png
 

这个秘籍包含基本的 TCP/IP 网络初始化脚本和配置文件,它们是在 Linux 映像中配置网络接口的高级工具。ZynqberryZero 的以太网控制器/USB 集线器芯片 LAN9514 允许它通过 microUSB 转以太网适配器连接到网络,例如:

因此,您会注意到网络接口在配方中的接口文件中被建立为以太网端口 (eth0)。

设备树

为了让内核能够查看系统中可用的硬件,需要将适当的节点添加到与Vivado 中的模块设计相关的设备树中

将以下设备树节点添加到/ zynqberry_zero_prj/zynqberry_zero_os/project-spec/meta-user/recipes-bsp/device-tree/files中的system-user.dtsi

/include/ "system-conf.dtsi" 
/{
};

/{
    #address-cells = <1>;
    #size-cells = <1>;
  
    reserved-memory {
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;
		
        hdmi_fb_reserved_region@1FC00000 {
            compatible = "removed-dma-pool";
            no-map;
            reg = <0x1FC00000 0x400000>;
        }; 
    };
  
    hdmi_fb: framebuffer@0x1FC00000 {           
        compatible = "simple-framebuffer";
        
        reg = <0x1FC00000 (1280 * 720 * 4)>;    
        width = <1280>;                         
        height = <720>;                       
        stride = <(1280 * 4)>;                 
        format = "a8b8g8r8";
        status = "okay";
    };
 
    vcc_3V3: fixedregulator@0 {
        compatible = "regulator-fixed";
        regulator-name = "vccaux-supply";
        regulator-min-microvolt = <3300000>;
        regulator-max-microvolt = <3300000>;
        regulator-always-on;
    };
};

&qspi {
    #address-cells = <1>;
    #size-cells = <0>;
    status = "okay";
    flash0: flash@0 {
        compatible = "jedec,spi-nor";
        reg = <0x0>;
        #address-cells = <1>;
        #size-cells = <1>;
        spi-max-frequency = <50000000>;
        partition@0x00000000 {
            label = "boot";
            reg = <0x00000000 0x00500000>;
        };
        partition@0x00500000 {
            label = "bootenv";
            reg = <0x00500000 0x00020000>;
        };
        partition@0x00520000 {
            label = "kernel";
            reg = <0x00520000 0x00a80000>;
        };
        partition@0x00fa0000 {
            label = "spare";
            reg = <0x00fa0000 0x00000000>;
        };
    };
};

&video_out_axi_vdma_0 {
	status = "disabled";	
};

&video_in_axi_vdma_1 {
	status = "disabled";
};

&gpio0 {
    interrupt-controller;
    #interrupt-cells = <2>;
};
  
/* I2C1 */  
&i2c1 {
	#address-cells = <1>;
	#size-cells = <0>;

	i2cmux: i2cmux@70  {
		compatible = "nxp,pca9540";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x70>;

		ID_I2C@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;
		};
		CSI_I2C@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;
		};
	};

};

/* USB */  
/{
    usb_phy0: usb_phy@0 {
        compatible = "ulpi-phy";
        #phy-cells = <0>;
        reg = <0xe0002000 0x1000>;
        view-port = <0x0170>;
        drv-vbus;
    };
};
  
&usb0 {
    usb-phy = <&usb_phy0>;
};

您可能已经注意到,我没有使用Trenz的示例设计中提供的system- user.dtsi...

我在 Vivado 中创建基础硬件设计时提到过,两个 AXI Video DMA IP 模块在模块设计中都被命名为axi_vdma_0,这导致 Vivado 尝试将它们映射到 DDR 中的相同地址空间。在示例设计中提供的设备树中,同样的错误出现在视频输入和视频输出的视频 DMA 块的两个节点的标题为axi_vdma_0。这会阻止 PetaLinux 项目成功构建,因此我再次将节点中的视频更改为名为axi_vdma_1 ( &video_in_axi_vdma_1 ),因此它现在与硬件平台中的硬件节点名称匹配,并且嵌入式 Linux 映像不会尝试使用相同的视频视频输入和视频输出的 DMA 节点。

由于我使用的是 512MB 版本,因此我还删除了 128MB 版本的 ZynqberryZero 的一堆无关注释和所有硬件配置。

构建 PetaLinux 项目

为 ZynqberryZero 配置和定制项目后,构建 PetaLinux 项目:

~/zynqberry_zero_prj/zynqberry_zero_os/$ petalinux-build

通过在前面的步骤中进行的适当修改,此时应该会成功。

生成引导二进制文件

成功构建 PetaLinux 项目后,您将看到所有输出文件,例如内核映像、根文件系统、Zynq FSBL ELF 文件等都输出到 PetaLinux 的/zynqberry_zero_prj/zynqberry_zero_os/images/linux目录中项目。唯一不存在的是启动二进制文件,它是使用以下命令手动生成的:

~/zynqberry_zero_prj/zynqberry_zero_os$ petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/system.bit --u-boot

由于您可以根据配置 Linux 映像和硬件的方式将不同的东西打包到引导二进制文件中,这就是为什么它不会在 PetaLinux 项目构建中自动生成的原因。在这种情况下,我将 Zynq FSBL、FPGA 比特流和 U-BOOT 包含在启动二进制文件中。

加载 SD 卡

准备一张 MircoSD 卡(至少 8GB,10 类),用 500MB 大小的 FAT32 分区进行分区,并在其前面留出 4MB 可用空间。然后将 SD 卡的其余部分设为 EXT4 分区:

pYYBAGNh-TWAf4kLAAA_G6shLQw338.png
 

此分区方案符合 PetaLinux 用户指南 ( UG1144 )。FAT32 分区是内核映像和设备树文件所在的位置,而 EXT4 分区是根文件系统所在的位置。

对 SD 卡进行分区后,将每个分区适当地挂载到主机系统上的某个点:

~$ sudo mount /dev/sdc1 /media/BOOT
~$ sudo mount /dev/sdc2 /media/rootfs

将内核映像和设备树文件复制到第一个 (FAT32) 分区:

~$ sudo cp ./zynqberry_zero_prj/zynqberry_zero_os/images/linux/image.ub /media/BOOT/
~$ sudo cp ./zynqberry_zero_prj/zynqberry_zero_os/images/linux/system.dtb /media/BOOT/

并将根文件系统解压缩到第二个(EXT4)分区:

~$ sudo tar xvf ./zynqberry_zero_prj/zynqberry_zero_os/images/linux/rootfs.tar.gz -C /media/rootfs/

运行同步命令以确保文件传输已经完全完成(你不能总是相信仅仅因为命令行被返回给你,传输实际上已经完成——我已经学会了这个艰难的方式):

~$ sync

最后卸载每个分区以从主机 PC 中弹出 SD 卡:

~$ sudo umount /media/BOOT/
~$ sudo umount /media/rootfs/

在 Vitis 中创建 QSPI 引导应用程序

CLG225 封装中的 Xilinx Zynq 器件,例如同时用于 Zynqberry 和 ZynqberryZero 的器件,不支持直接从 SD 卡启动。因此,您必须从 QSPI 执行主引导 (Zynq FSBL)。因此,需要将引导二进制文件 (BOOT.BIN) 编程到 ZynqberryZero 的 QSPI 闪存中,因为它包含 Zynq FSBL。

为了将引导二进制映像放到 ZynqberryZero 的 QSPI 上,我们需要一个不同的 FSBL 来从 JTAG 引导 Zynq 的 ARM 内核以进行编程。为此,我们将在 Vitis 中创建一个 FSBL 嵌入式应用程序。我正在使用我在上一个项目帖子中为 ZynqberryZero 创建的相同 Vitis 工作区

在为 FSBL 创建嵌入式应用程序之前,BSP(板级支持包)需要添加 Xilinx FAT 文件系统 (FFS) 库 xilffs。从 Vitis 的资源管理器窗口中打开platform.spr在 ps7_cortex9_0 上的 Standalone下选择Board Support Package , Modify BSP Settings...按钮将出现在右侧的窗口中。

在为板级支持包设置弹出的窗口的概述选项卡中,您将看到可以在 BSP 中启用的库列表。选中xilffs旁边的框,然后单击OK

pYYBAGNh-T2AcvJMAALCL_qtpRQ336.png
 

使用 ctrl+B 重建平台。

接下来通过选择New > Application Project...创建一个新的应用程序项目

poYBAGNh-USAUfB6AACQhH8EVyI065.png
 

为项目指定所需的名称,选择为其创建新系统项目的选项。选择 ZynqberryZero 自定义平台项目作为其基础,并以 C 语言中的 Zynq 的 ARM-core 0 处理器为目标。最后,为其选择 Zynq FSBL 应用程序模板。

 
 
 
pYYBAGNh-UaAHWmwAACVRcexuVM589.png
 
1 / 4命名应用程序并选择创建新系统项目的选项。
 

打开 main.c 并从第 286 行开始进行以下修改:

/*
 * Print the FSBL Banner
 */
fsbl_printf(DEBUG_GENERAL,"\n\rXilinx First Stage Boot Loader \n\r");
fsbl_printf(DEBUG_GENERAL,"Release %d.%d %s-%s\r\n", SDK_RELEASE_YEAR, SDK_RELEASE_QUARTER,__DATE__,__TIME__);

xil_printf("\r\n--------------------------------------------------------------------------------\r\n");
xil_printf("Xilinx Zynq First Stage Boot Loader to write QSPI Flash (TE modified) \n\r");
xil_printf("Release %d.%d %s-%s\r\n", SDK_RELEASE_YEAR, SDK_RELEASE_QUARTER, __DATE__,__TIME__);
#ifdef XPAR_PS7_DDR_0_S_AXI_BASEADDR

/*
 * DDR Read/write test 
 */
//	Status = DDRInitCheck();
//	if (Status == XST_FAILURE) {
//		fsbl_printf(DEBUG_GENERAL,"DDR_INIT_FAIL \r\n");
//		/* Error Handling here */
//		OutputStatus(DDR_INIT_FAIL);
//		/*
//		 * Calling FsblHookFallback instead of Fallback
//		 * since, devcfg driver is not yet initialized
//		 */
//		FsblHookFallback();
//	}

然后从第 382 行开始添加 JTAG 引导模式掩码:

/*
 * Read bootmode register
 */
BootModeRegister = Xil_In32(BOOT_MODE_REG);
BootModeRegister &= BOOT_MODES_MASK;
BootModeRegister = JTAG_MODE;

这些编辑只是禁用 DDR 读/写测试,因为它不是必需的,并将引导模式掩码更改为 JTAG 引导模式。

保存 main.c 并构建应用程序项目。

poYBAGNh-UyAGJpVAAPRE6zPhPE368.png
 

闪存 QSPI

创建用于编程的 FSBL 后,插入没有 SD 卡的 ZynqberryZero:

pYYBAGNh-WyAD3pcAAmgh84TaBQ967.png
 

在 Explorer 窗口中右键单击 FSBL 应用程序项目名称,然后选择Program Flash

在弹出的对闪存进行编程的窗口中,浏览到/zynqberry_zero_prj/zynqberry_zero_os/images/linux/中的 BOOT.BIN以获取Image File和 JTAG FSBL ELF 文件: /zynqberry_zero_prj/vitis_​​workspace/qspi_flash_app/Debug/ qspi_flash_app.elf对于FSBL 文件

选中复选框以在闪烁后单击程序进行验证。

 
 
 
pYYBAGNh-XCAEeAzAAHxaABWhHQ733.png
 
1 / 2
 

等待控制台读出闪存操作成功。

poYBAGNh-XiAe6YZAANigxVnxYs307.png
 

启动 ZynqberryZero

从您的主机 PC 上拔下 ZynqberryZero 并将准备好的 SD 卡插入 SD 卡插槽。以 115200 的波特率打开您选择的串行终端应用程序。

pYYBAGNh-Y2ADVDHAAhy_FAccqg561.png
 

插入 ZynqberryZero 并使用串行终端应用程序连接到其 UART由于 PetaLinux 项目已配置为在SD 卡。

由于在 u-boot 引导加载程序期间引导会失败,它会自动启动到 u-boot 终端,在这种情况下,命令行中的 Zynq> 表示:

Zynq>

使用以下两个命令定义 u-boot 中的命令以从 SD 卡加载内核映像和设备树文件:

Zynq> setenv cp_kernel2ram 'fatload mmc 0 ${netstart} ${kernel_img}'
Zynq> setenv cp_dtb2ram 'fatload mmc 0 ${dtbnetstart} ${dtb_img}'

设置默认启动命令以运行从 SD 卡加载内核映像和设备树文件的命令

Zynq> setenv default_bootcmd 'run cp_kernel2ram && run cp_dtb2ram && bootm ${netstart} - ${dtbnetstart}'

然后设置引导参数以指定根文件系统在 SD 卡上的设备节点和根文件系统的类型:

Zynq> setenv bootargs 'console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 ru rootwait'

最后,保存新的u-boot环境。这会将新命令写入引导二进制文件所在的 QSPI 闪存:

Zynq> saveenv

并启动 ZynqberryZero:

Zynq> boot

此时,您将看到正常的启动顺序开始并最终将您带到登录。除非在 PetaLinux 项目中另外修改,否则用户名和密码都是root :

poYBAGNh-Z6AE6hIAAPRtNOaD9Q650.png
 

如您所见,让 PetaLinux 在 Zynqberry 和 ZynqberryZero 板上运行可能有点棘手,因为它们不能直接从 SD 卡启动。但仍然是我最喜欢的小型 FPGA 开发板之一!


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费