tag 标签: arm

相关帖子
相关博文
  • 热度 3
    2020-12-11 17:21
    962 次阅读|
    0 个评论
    By Toradex 秦海 1). 简介 随着嵌入式设备的发展,网络通信在应用中越来越广泛,而在客户端,就需要可以方便访问网络服务的浏览器配置,本文就基于 NXP iMX8 平台演示如何在嵌入式 Linux BSP 中集成网络浏览器,包括 Chromium 浏览器和基于 Qtwebenine 的示例浏览器 quicknanobrowser 。 本文所演示的平台来自于 Toradex Apalis iMX8 ARM 嵌入式平台,这是一个基于 NXP iMX8QM ARM 处理器,支持 Cortex-A72+A53 和 Coretex-M4 架构的计算机模块平台。 2. 准备 a).Apalis iMX8QM4GB WB IT ARM 核心版配合 Ioxra 载板 ,连接调试串口 UART1 (载板 X22 )到开发主机方便调试。 b). 载板连接 HDMI 显示器和网络用于显示和联网, USB 鼠标键盘用于操作浏览器。 3). Apalis iMX8 Ycoto Linux 编译部署以及配置 a). Apalis iMX8 Ycoto Linux 通过 Ycoto/Openembedded 框架编译,具体的配置方法请参考 这里 ,参考如下修改后编译 Reference-Multimedia image 镜像 ./ iMX8 Ycoto layer 中默认没有包含浏览器的相关 layer ,因此首先需要通过下面修改添加相关 layer ------------------------------- ### add mata-browser $ git clone https://github.com/OSSystems/meta-browser.git ### add meta-clang $ git clone -b dunfell https://github.com/kraj/meta-clang.git ### add meta-python2 $ git clone -b dunfell https://github.com/YoeDistro/meta-python2.git ### modify build/conf/bblayer.conf to add above extra layers --- a/build/conf/bblayers.conf +++ b/build/conf/bblayers.conf @@ -24,6 +24,9 @@ ${TOPDIR}/../layers/meta-openembedded/meta-python \ ${TOPDIR}/../layers/meta-freescale-distro \ ${TOPDIR}/../layers/meta-toradex-demos \ + ${TOPDIR}/../layers/meta-python2 \ + ${TOPDIR}/../layers/meta-clang \ + ${TOPDIR}/../layers/meta-browser \ ${TOPDIR}/../layers/meta-qt5 \ \ \ ------------------------------- ./ 修改 local.conf ,增加 chromium 和 qtwebengine 支持 ------------------------------- +IMAGE_INSTALL_append = " chromium-ozone-wayland qtwebengine qtwebengine-dev" +ACCEPT_FSL_EULA = "1" ------------------------------- ./ 修改 image 和 Qt5 SDK 文件 ------------------------------- // tdx-reference-multimedia-image.bb 文件,增加 Qt5 SDK 和中文字体支持 --- a/layers/meta-toradex-demos/recipes-images/images/tdx-reference-multimedia-image.bb +++ b/layers/meta-toradex-demos/recipes-images/images/tdx-reference-multimedia-image.bb @@ -3,6 +3,8 @@ SUMMARY = "Toradex Embedded Linux Reference Multimedia Image" DESCRIPTION = "Image for BSP verification with QT and multimedia features" +inherit populate_sdk_qt5 + #Prefix to the resulting deployable tarball name export IMAGE_BASENAME = "Reference-Multimedia-Image" @@ -14,6 +16,9 @@ '', d), d)} \ " +# add chinese fonts +FONT_CHINESE = "ttf-droid-sans ttf-droid-sans-fallback ttf-droid-sans-mono ttf-droid-serif freetype" + APP_LAUNCH_WAYLAND ?= "wayland-qtdemo-launch-cinematicexperience" APP_LAUNCH_X11 ?= "x-window-qtcinematicexperience" @@ -33,6 +38,8 @@ packagegroup-tdx-graphical \ packagegroup-tdx-qt5 \ \ + ${FONT_CHINESE} \ + \ bash \ coreutils \ less \ // tdx-reference-minimal-image.bb 文件,增加中文语言支持 ### modify layers/meta-toradex-demos/recipes-images/images/tdx-reference-minimal-image.bb #IMAGE_LINGUAS = "en-us" # add chinese font support IMAGE_LINGUAS = "en-us zh-cn" // packagegroup-qt5-toolchain-target.bb 文件,增加 Qt5 SDK qtwebengine 支持 --- a/layers/meta-qt5/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bb +++ b/layers/meta-qt5/recipes-qt/packagegroups/packagegroup-qt5-toolchain-target.bb @@ -93,6 +93,9 @@ qtwebchannel-dev \ qtwebchannel-mkspecs \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtwebchannel-qmlplugins', '', d)} \ + qtwebengine-dev \ + qtwebengine-mkspecs \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtwebengine-qmlplugins', '', d)} \ qtxmlpatterns-dev \ qtxmlpatterns-mkspecs \ qttranslations-qtxmlpatterns \ ------------------------------- ./ 编译 image 和 SDK ------------------------------- # compile Reference-Multimedia image $ bitbake bitbake tdx-reference-multimedia-image # compile SDK bitbake tdx-reference-multimedia-image -c populate_sdk ------------------------------- b). Ycoto Linux image 部署 参考 这里 通过 Toradex Easy installer 将上面编译好的 image 更新部署到模块,版本为目前最新的 Ycoto Linux V5.1 c). 显示配置 ./ HDMI 默认即可正常显示,如果有显示器 EDID 读取问题不能成功显示,可以通过下面方法通过软件 firmware 方式手动加载 EDID ,更多关于显示的配置请参考 这里 ------------------------------- # cp EDID binary file to rootfs $ mkdir /lib/firmware/edid $ cp 1920x1080.bin /lib/firmware/edid # set uboot kernel command line # setenv defargs ‘pci=nomsi drm.edid_firmware=HDMI-A-1:edid/1920x1080.bin’ # saveenv && reset ------------------------------- d). Qt5 SDK 安装配置 请参考 这里 的说明安装上面编译好的 SDK ,以及配置 Qtcreator 交叉编译环境 4). Chromium 浏览器应用测试 a). 通过下面命令启动 chromium 应用,添加 ”--in-process-gpu” 参数使应用可以在 wayland 环境下正常运行 ------------------------------- root@apalis-imx8:~# chromium --no-sandbox --in-process-gpu ------------------------------- b). 运行效果如下图,可见中文也可以正常显示 c). 当 chromium 运行时查看了下 CPU 占用率,大概是在 40% - 180% 这个区间动态变化, iMX8 包含 6 个 Cortex-A CPU 核心,因此最多可以到 600% 的使用率。 5). QT Webengine 示例浏览器 quicknanobrowser 测试 Quick Nano Brower 示例程序是 Qt5 自带的 Webengine 示例程序,这是一个基于 Qt Quick 和 Webengine 开发的精简浏览器示例,本文使用版本为和 Qt library 匹配的 5.14.2 版本。 a). 使用上面配置好交叉编译环境进行编译,将编译生成的可执行文件 quicknanobrower 复制到 Apalis iMX8 模块 “/home/root” 目录下 b). 配置简单测试启动脚本 ./ test.sh ,程序启动脚本文件 --------------------------------------------------- !/bin/sh export QT_QPA_PLATFORM=wayland-egl /home/root/quicknanobrowser --no-sandbox & --------------------------------------------------- c). 运行 quicknanobrowser 应用 --------------------------------------------------- $ /home/root/test.sh --------------------------------------------------- d). 运行效果如下图,中文也可以正常显示 c). 当 chromium 运行时查看了下 CPU 占用率,大概是在 50% - 200% 这个区间动态变化。 6). 总结 本文基于 NXP iMX8 嵌入式平台在嵌入式 linux 系统下测试网络浏览器部署。
  • 热度 6
    2020-11-17 10:46
    223 次阅读|
    0 个评论
    By Toradex 胡珊逢 在使用嵌入式 Linux 系统的时,会出现由于设备意外断电引起文件系统损坏而最终使该设备无法启动的现象。为了应对这种情况,通常会从硬件设计如采用备用电源,无论是锂电池还是超级电容等,或者从系统软件设上加以规避。本文接下来将介绍如何使用 squashfs 只读文件系统制作 Linux 系统文件,并采用 overlayfs 为用户目录增加可写权限。演示采用 Colibri iMX6 计算机模块,该方法同样也适用于 Toradex 其他产品,如 iMX8 计算机模块。 Squashfs 是一种只读压缩文件系统,通常被用于数据备份或者系统资源受限的计算机系统上使用,如 Linux 发行版的 LiveCD , OpenWRT 系统也采用 squashfs 。 OverlayFS 一个结合其他文件系统的联合挂载,将多个挂载点叠加为一个目录。常见的应用是在一个只读的分区上叠加可读写的另一个分区。嵌入式 Linux 设备通常的功能都是被设计好的,极少需要在后期安装其他软件或更改 Linux 系统软件,更多的是更新设备应用程序和相关数据。因此基于 squashfs 的只读文件系统,结合 overlayfs 为用户应用和数据提供读写操作,能够提高嵌入式 Linux 文件系统可靠性。 在 Colibri iMX6 的 eMMC 上我们将使用以下分区规划。 BootFS 为 FAT32 格式,该分区上包含 Linux 内核文件, device tree 等启动文件,如果是 iMX8 ,则还包含一些其他固件文件。该分区通常只在文件系统烧写阶段被写入。 RootFS 分区是 Linux 运行的文件系统, usr, bin, lib, etc, home 等目录都在上面。一般该分区是 EXT3 , EXT4 格式,支持文件的写入和删除。而文件系统的损坏也常发生于此,最终导致设备启动失败。因此我们这里会采用只读格式的 squashfs 。 UserData 是能够读写的 EXT4 分区。该分区通过 overlayfs 会被挂载到原本位于只读 squashfs 中的 /home/root 目录。用户应用可以毫无察觉得使用该目录,在上面写入和删除文件,但不破坏只读 squashfs 文件系统,所有的操作都会被转移到 UserData 分区上。用户的应用也会存在 UserData 分区上,启动的时候从这里加载应用程序。该分区是可写的,所有这上面的文件是可以被更新。 ​ 下面我们会具体说明如何在 Yocto 环境生成符合上面规划的 BSP ,并通过 Toradex Easy Installer 工具实现这些分区和写入文件。 首先需要在 Yocto 环境中生成 squashfs 格式的系统文件 rootfs 。修改 build/conf/local.conf ,结尾添加以下内容。 ------------------------------------ IMAGE_FSTYPES_append = " squashfs" ------------------------------------ 默认 Linux 内核配置下 squahfs 是通过加载内核驱动模块实现对其支持,而模块驱动文件位于 rootfs 中,为了保证 Linux 内核在启动时能够正确处理该格式,需要将 squahfs 内核驱动模块配置为静态驱动,直接编译进内核中。为内核配置的文件系统支持添加 squahfs 和 overlay 格式。 ------------------------------------ $ MACHINE=colibri-imx6 bitbake -c menuconfig virtual/kernel → File systems Overlay filesystem support → File systems → Miscellaneous filesystems SquashFS 4.0 - Squashed file system support ------------------------------------ EXT4 格式的 UserData 分区会通过 overlay 机制挂载到只读的 rootfs 上的 /home/root ,但这之前需要通过 fstab 将该分区挂载到系统中, /home/root 。在 Yocto 中, layers/meta-toradex-demos/recipes-core/base-files/base-files/fstab 会被编译到 Colibri IMX6 BSP 中,在该文件中添加: ------------------------------------ /dev/mmcblk0p3 /media/data auto defaults,sync,noauto 0 0 ------------------------------------ 然后再添加一个开机自启动脚本,将 /media/data 使用 overlay 挂载到 /home/root 。 在 layers/meta-toradex-bsp-common/recipes-core 目录中添加 mount-overlayfs 文件夹,里面包含编译需要的 bb 文件和 systemd service 。 mount-overlayfs.bb 中 install -d ${D}/media/data 会在 /media 目录中创建 data 文件夹, FILES_${PN} = "/media/data" 将该空文件夹添加到 BSP 中。 mount-overlayfs.service 通过 RequiresMountsFor 保证 /media/data 目录通过 fstab 挂载后才运行。 Overlay 的目录结构如下, lowerdir 为 /home/root upperdir 为 /media/data/home/root/upper , workdir 为 /media/data/home/root/work 。这样应用可以在 /home/root 下直接读写文件, overlayfs 对应用和用户都是透明的。 ------------------------------------ Type=simple ExecStart=/bin/sh -c 'mount -t overlay -o lowerdir=/home/root,upperdir=/media/data/home/root/upper,workdir=/media/data/home/root/work overlay /home/root' ------------------------------------ 在 build/conf/local.conf 中将 mount-overlayfs 添加到 BSP 中。 ------------------------------------ IMAGE_INSTALL_append = " mount-overlayfs" ------------------------------------ 由于 rootfs 是只读格式,无法像之前一样直接在开发板上运行 systemctl 命令添加开机自启动脚本。我们需要像上面一样,在 Yocto 中增加一个 test-app 来开机自动运行位于 UserData 分区(该分区通过 overlay 会被最终挂载到 /home/root 目录)上的测试程序 test 。在 layers/meta-toradex-bsp-common/recipes-core 目录中添加 test-app 文件夹,里面包含编译需要的 bb 文件和 systemd service 。 在 build/conf/local.conf 中将 test-app 添加到 BSP 中。 ------------------------------------ IMAGE_INSTALL_append = " mount-overlayfs test-app" ------------------------------------ 至此我们已经通过修改 Yocto 能够生成所需结构的 BSP ,执行下面命令完成编译任务。 ------------------------------------ $ MACHINE=colibri-imx6 bitbake tdx-reference-minimal-image ------------------------------------ 在 build/deploy/images/colibri-imx6 有相关文件生成,我们需要下面两个文件,文件名字中的时间戳对应具体编译的日期。 Colibri-iMX6_Reference-Minimal-Image-Tezi_5.1.0-devel-20201112022057+build.0.tar Colibri-iMX6_Reference-Minimal-Image.rootfs.squashfs 解压 Colibri-iMX6_Reference-Minimal-Image-Tezi_5.1.0-devel-20201112022057+build.0.tar 。因为 rootfs 是 squahfs 格式,需要使用定制的 boot.src 来启动。 ------------------------------------ $ cd ~/ $ tar vxf Colibri-iMX6_Reference-Minimal-Image-Tezi_5.1.0-devel-20201112022057+build.0.tar $ cd Colibri-iMX6_Reference-Minimal-Image-Tezi_5.1.0-devel-20201112022057+build.0 $ tar vxf Reference-Minimal-Image-colibri-imx6.bootfs.tar.xz ------------------------------------ 修改其中的 emmcargs_set 参数。 ------------------------------------ env set emmcargs_set 'env set rootfsargs root=/dev/mmcblk0p2 rootfstype=squashfs ro rootwait' ------------------------------------ 可以使用该 boot.cmd 直接生成对应的 boot.src, 替换解压目录中同名文件 , 重新打包 Reference-Minimal-Image-colibri-imx6.bootfs.tar.xz ------------------------------------ $ cd Reference-Minimal-Image-colibri-imx6.bootfs $ rm boot.src $ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Distro boot script" -d boot.cmd boot.scr $ cd .. $ tar cJf Reference-Minimal-Image-colibri-imx6.bootfs.tar.xz -C Reference-Minimal-Image-colibri-imx6.bootfs . ------------------------------------ 将 squashfs 的 rootfs 文件系统复制到 Colibri-iMX6_Reference-Minimal-Image-Tezi_5.1.0-devel-20201112022057+build.0 目录中。 ------------------------------------ $ cp Colibri-iMX6_Reference-Minimal-Image.rootfs.squashfs Colibri-iMX6_Reference-Minimal-Image-Tezi_5.1.0-devel-20201112022057+build.0 ------------------------------------ 接下来创建需要复制到 UserData 分区中的文件。如上面提到的 overlay 挂载需要有对应目录结构,依次创建以下目录,并将测试程序 test 复制到 upper 目录中。这里的测试程序 test 是一个非常简单的 C 应用,它会输出“ Hello Toradex! ”到系统日志中。 ------------------------------------ $ cd ~/Colibri-iMX6_Reference-Minimal-Image-Tezi_5.1.0-devel-20201112022057+build.0 $ mkdir rootfs $ cd rootfs $ mkdir -p home/root/upper $ mkdir -p home/root/work $ cp ~/test home/root/upper $ tree ------------------------------------ 打包为 rootfs.tar.xz 。 ------------------------------------ $ cd .. $ sudo tar cJf rootfs.tar.xz -C rootfs . ------------------------------------ 修改 image.json 文件,在 blockdevs 中增加 RAW 格式分区用于直接写入 squashfs 系统文件,以及 EXT4 格式的 DATA 分区用于写入上面生成的 rootfs.tar.xz 。 Colibri-iMX6_Reference-Minimal-Image-Tezi_5.1.0-devel-20201112022057+build.0 目录下最终包含以下文件。 将上面的 BSP 通过 Toradex Easy Installer 重新安装到 Colibri iMX6 上,安装的时候注意需要点击 Erase 擦除 eMMC 上的内容。 烧写后重启模块。可以通过 mount 命令查看挂载分区的情况。 ------------------------------------ root@colibri-imx6:~# mount /dev/mmcblk0p2 on / type squashfs (ro,noatime) …… /dev/mmcblk0p3 on /media/data type ext4 (rw,relatime,sync) overlay on /home/root type overlay (rw,relatime,lowerdir=/home/root,upperdir=/media/data/home/root/upper,workdir=/media/data/home/root/work) ------------------------------------ mmcblk0p2 为写入 squashfs 只读文件系统的分区,例如在 /etc 目录无法创建文件。 ------------------------------------ root@colibri-imx6:/etc# mkdir test-folder mkdir: can't create directory 'test-folder': Read-only file system ------------------------------------ EXT4 格式的 /dev/mmcblk0p3 分区上是用户文件,被挂载到 /media/data 。而 /home/root 会通过 overlay 具有可读写权限。 ------------------------------------ root@colibri-imx6:~# cd ~/ root@colibri-imx6:~# pwd /home/root root@colibri-imx6:~# mkdir test-folder root@colibri-imx6:~# ls test test-folder root@colibri-imx6:~# ls -lh -rwxrwxr-x 1 1000 1000 11.3K Nov 11 2020 test drwxr-xr-x 2 root root 4.0K Feb 7 16:25 test-folder ------------------------------------ 位于 UserData 上的测试程序 test 也在开机的时候自动运行。 ------------------------------------ root@colibri-imx6:~# journalctl -u test-app -- Logs begin at Fri 2020-02-07 15:50:53 UTC, end at Fri 2020-02-07 16:11:49 UTC. -- Feb 07 15:50:57 colibri-imx6 systemd : Started start a demo on overlay mount folder. Feb 07 15:50:57 colibri-imx6 test : Hello Toradex! Feb 07 15:50:57 colibri-imx6 systemd : test-app.service: Succeeded. ------------------------------------ 总结 上面我们演示结合使用 squashfs 和 overlay ,将系统文件放在一个只读分区,把读写操作在单独的分区上进行。降低系统文件因意外断电受损从而导致无法启动的风险。在使用只读 squashfs 只读文件系统时需要保证 rootfs 尽量精简,建议在 Reference-Minimal-Image 基础上构建用户自己的 BSP ,甚至对其进行裁剪。
  • 热度 10
    2020-9-30 15:13
    1822 次阅读|
    1 个评论
    By Toradex 胡珊逢 1). 简介 通常当编译 Linux 、 U-Boot 相关源代码时,由于编译工具或者文件系统限制,这些任务需要在 Linux 发行版中完成,如常见的 Ubuntu 、 Fedora 、 Linux Mint 、 Arch Linux 等。在电脑安装双系统,或者虚拟机,是使用 Linux 发行版的主要方式。 Windows 推出的 WSL ( Windows Subsystem for Linux )则提供了另外一种方式来使用 Linux 系统。本文接下来将介绍如何在 Windows 10 电脑上使用 WSL 来编译使用 NXP iMX8 ARM 平台的 Linux 、 U-Boot 和 Device tree overlays 。 本文所演示的 ARM 平台来自于 Toradex 基于 NXP iMX8QM ARM 处理器的 Apalis iMX8QM ARM 嵌入式平台。 2). 编译流程 WSL 有两个版本,这里我们将使用 WSL 2 。在开始安装 WSL 之前,推荐先安装 Windows Terminal 。这是微软新推出的终端工具,可以很好的兼容 WSL 。并且还直接集成了一些 Linux 的命令工具,如 ssh 、 scp 。 WSL 具体的安装方法请参考微软官方的适用于 Linux 的 Windows 子系统安装指南 (Windows 10) 。安装完毕后我们将使用 Ubuntu-20.04 为例进行编译演示。 打开 Windows Terminal 点击标签页旁边的 + ,可以看到刚才安装的 Ubuntu-20.04 WSL 已经自动出现在其中。点击后即可启动 Ubuntu 。目前的 WSL 还不支持图形,所以接下来的操作会在 Windows Terminal 以命令行的形式完成。 进入 Ubuntu-20.04 WSL 后,命令操作的形式和通常的 Ubuntu 没有区别。首先安装一些编译所需的软件。 sudo apt update sudo apt install make bison flex sudo apt install build-essential sudo apt install libncurses-dev sudo apt install libssl-dev 交叉编译工具 gcc 的安装可以通过两种形式。在 Ubuntu-20.04 WSL 中通过 wget 等命令直接下载。另外还可以在 Windows 电脑上通过浏览器下载,然后使用 Windows 的文件浏览器直接访问 Ubuntu-20.04 WSL 的文件系统,将编译工具复制进去。交叉编译工具的选择可以参考 这里 。 在文件浏览器中输入 \\wsl$\ ,其会显示电脑上可以用的 WSL 实例文件系统。例如将适用于 Apalis iMX8QM Linux BSP 5.0 的 gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz 复制到 Ubuntu-20.04/home/ben 目录下。 重新回到 Windows Terminal 命令行终端,解压该工具,并设置环境变量。 tar vxf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz export ARCH=arm64 export DTC_FLAGS="-@" export PATH=/home/ben/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/:$PATH export CROSS_COMPILE=aarch64-none-linux-gnu- 使用 git 工具下载 Linux 、 U-Boot 源码。 git config --global user.name "XXX" git config --global user.email your_email git clone -b toradex_imx_v2020.04_5.4.24_2.1.0 git://git.toradex.cn/u-boot-toradex.git git clone -b toradex_5.4-2.1.x-imx git://git.toradex.cn/linux-toradex.git git clone -b toradex_5.4-2.1.x-imx git://git.toradex.cn/device-tree-overlays.git 详细的编译步骤和说明可以参考我们开发者中心的相关 网页说明 。 例如编译 U-boot make apalis-imx8_defconfig &1 | tee build.log 例如编译 Linux 和 device tree make defconfig &1 | tee build.log make DTC_FLAGS="-@" freescale/fsl-imx8qm-apalis-ixora-v1.1.dtb 编译 Device tree overlays cpp -nostdinc -I ../../linux-toradex/arch/arm64/boot/dts/freescale -I ../../linux-toradex/include -undef -x assembler-with-cpp apalis-imx8_atmel-mxt_overlay.dts apalis-imx8_atmel-mxt_overlay.dts.preprocessed dtc -@ -Hepapr -I dts -O dtb -i ../../linux-toradex/arch/arm64/boot/dts/freescale -o apalis-imx8_atmel-mxt_overlay.dtbo apalis-imx8_atmel-mxt_overlay.dts.preprocessed 当这些都编译好以后,生成的文件都可以通过文件浏览器将其复制出来。 在完成编译工作后, Windows Terminal 命令行终端输入 exit 命令即可退出 WSL ,但其仍在后台运行。通过以下命令来查看仍在运行的 WSL 实例,并将其关闭。 wsl --list --running 适用于 Linux 的 Windows 子系统分发版 : Ubuntu-20.04 ( 默认 ) wsl --terminate Ubuntu-20.04 3). 总结 借助 WSL 运行 Linux 发行版,为 Linux 开发人员提供一种简便的方式,免去双系统的切换,或者安装庞大的虚拟机系统。 WSL 是直接运行在 CPU 上,避免了虚拟化技术的开销。目前该技术也有限制,如 WSL 还无法使用图形界面,从而使得一些需要借助图形化界面 IDE 如 Eclipse 完成的 C/C++ 应用开发还不是很适合。当然网络上也有关于如何在 WSL 安装 X11 并通过远程桌面的方式来开启图形界面的说明,但这会影响到 WSL 的性能。 WSL 的方式比较适合不需要借助图形界面的编译任务,如 make 、 cmake 编译,甚至是 Yocto 编译等。 ​
  • 热度 8
    2020-8-6 16:47
    979 次阅读|
    3 个评论
    半导体供应链纷繁复杂,一起穿过迷雾看本质,找寻发展的钥匙。 工业和科技界也有所谓的“贵族”,今天我们就带着“贵族贵在哪里”这个问题来阅读和思考,同时也可以轻舒一口气,暂不用长篇累牍了,我们可借机回头浏览一下美、日、韩半导体发展简史的关键节点和事件。 欧洲作为工业革命的摇篮,会在信息时代落伍吗? 答案是 不仅不会,而且始终 将 是无法忽略的存在。从 2G 时代的诺基亚、西门子、飞利浦、爱立信手机,到 当今 NXP 、 ST 和英飞凌半导体三巨头,欧洲未曾缺席过。 如今欧洲半导体企业将发展重心聚焦在工业、汽车和物联网技术 上 ,表面 来看 似乎被边缘和波澜不惊,实际上低调的背后暗流涌动, 或许 潜藏着深谋远虑的智慧。 意法半导体( ST , STMicroelectronics )于 1987 年由意大利 SGS 微电子和法国 Thomson 半导体公司合并而成,在电信、汽车、工业和个人电子产品等市场有深厚积累,在 MCU 、 MEMS 、模拟器件和功率器件等领域具有一定优势。 2016 年 ST 收购奥地利微电子公司 (AMS)NFC 和 RFID reader 的资产,以增强安全微控制器解决方案的实力。 创办于 1847 年的 德国 西门子( SIEMENS )是全球电子电气工程领域的领先企业, 1999 年其 半导体部门分拆成立新公司英飞凌,为汽车和工业功率器件、芯片卡和安全应用、传感器、模拟和混合信号、射频等提供半导体和技术方案,其分离器件及模块、电源管理、安全芯片等产品处于领先地位, 2015 年收购 美企 IR (国际整流器, International Rectifier ), 2020 年收购拥有包括微控制器、软件和连接组件等产品组合的 美企 赛普拉斯( Cypress )。 NXP 的源头可以追溯到创办于 1891 年的 荷兰皇家 飞利浦( ROYAL Philips ),该公司经营照明、家电和医疗等多元化产品,半导体业务大约始于 1952 年,是欧洲半导体产业先驱,优势在汽车电子和识别业务, 2006 年 NXP 正式从飞利浦剥离出来, 2015 年收购飞思卡尔( Freescale ),成为车用半导体解决方案与通用微型控制器( MCU )的龙头, 2019 年收购 美企美满( Marvell ,也译迈威) 的 WiFi 和蓝牙业务。 在 欧洲半导体传统 三巨头之外,汽车零部件霸主、成立于 1886 年的博世( Robert Bosch )最新研发的新型碳化硅( SiC )微芯片, 将助力电动车实现质的飞跃,博世是汽车、消费电子、家电 MEMS 产品的领头羊。欧洲半导体产业 紧紧 围绕其长期累积的工业和汽车产业的雄厚基础,各领域有严格的安全 和技术 规范,进入门槛较高,短期内 恐难 复制。 欧洲大陆之外的 英国公司,以杰出的设计能力为欧洲半导体产业增色。 成立于 1990 年的 ARM 公司,是全球领先的半导体知识产权 (IP , Intellectual Property) 供应 商,在数字电子产品的开发中处于核心地位。 ARM 收入靠转让专利和设计方案,这点很像高通,不同的是 ARM 不仅不制造,而且不向用户出售芯片, 这 真的是脑洞大开。 如今 全世界 大约 超过 95% 的智能手机和平板电脑都采用 ARM 架构。 2016 年日本软银收购 ARM ,但总部仍然留在英国剑桥。2020 最新消息, ARM 被英伟达收购的事件正在发酵。另外 还有 2014 年被高通收购的 CSR 公司 ( Cambridge Silicon Radio ,剑桥硅晶无线电), 1998 年成立于剑桥,首创蓝牙接口的单片设计,曾为全球超过 50% 的蓝牙芯片提供设计。而英国 IP 设计厂商 Imagination ,也 曾为苹果供应图像处理器( GPU )。 当然,近几年业界最耀眼的明星是光刻机( Mask Aligner System , 或 Lithography Machine) 巨头 ASML ( Advanced Semiconductor Material Lithography , ASML Holding N.V ,阿斯麦尔 ) ,它 1984 年从飞利浦独立出来,从生存困难到超越传统光刻机霸主尼康( Nikon )与佳能( Canon ),成为当红炸子鸡,期间历经数十年持续的研发、及业务与供应链资源整合,如今 ASML 的 EUV (极紫外光刻, Extreme ultraviolet lithography )光刻机几乎垄断整个市场。关于 ASML更多信息将在后续半导体设备部分进行分享。 欧洲作为现代文明的发源地,经受过文艺复兴和工业革命的洗礼、以及完整的盛衰周期,对科技和经济发展的态度更为 包容和 达观,其半导体产业发展稳健且不乏远见。 参考资料: 1、除了几家巨头,欧洲半导体还有什么实力? 2018-05-21 ,与非网 2、细看美欧日之间的半导体的收购 , 2020-05-06 ,与非网,赵元闯 3、百度百科等相关资讯
  • 热度 6
    2020-4-13 11:57
    758 次阅读|
    0 个评论
    更加精确评估ARM IP的模型工具——ARM Cycle Models
    Arm公司的 Cycel Model是100%周期精确的Arm IP模型,用于性能分析和精确的评估Arm IP。 ARM· Cycle Models Cycle Models是由Arm RTL直接编译而来,保留了完整的功能以及精准的周期,借助Cycle Models,您可以放心的选择和配置Arm IP,还可以自信地做出体系结构决策、优化系统性能,并在芯片可用之前做裸机固件开发。 CycleModels特点 1.精准的IP性能参考 Cortex处理器和系统IP,包括NIC,CCI,CCN,以及CMN连接的精确周期模型。在使用硬件之前先证明你的假设,分析复杂的内部互连问题。快速探索设计方案,以及发现软件硬件上的瓶颈。 2.加速系统层级的调试 Cycle Model能实现对Arm IP的快速、详细的调试和分析。集成Arm调试器,以及Cach内存可视化功能。 3.统一软件硬件分析 软件团队可以查看代码、设置断点、检查寄存器和内存。硬件团队可以检查信号、转储波形并跟踪整个系统的执行情况。所有用户都可以获取到内部寄存器的瞬时状态。 4.降低设计风险 加速系统调试以及硬件实现和软件的更改,通过验证运行实际系统软件的硬件实现,可以降低风险,消除软件开发的瓶颈:Cycle Model 拥有模拟实际硬件的能力。 5.灵活性和扩展性 Cycle Model能全天候提供来自Arm IP Exchange网站已验证的IP配置选项。它们可被用于Soc设计器,SystemC,Synopsis Platform Architect MCO以便于重新配置,构建或扩展你的虚拟样机。 6.高效易用的GUI 内建的规则检查确保了从广泛的模型和格式到第一轮SOC成功所需要的准确性、性能和灵活性。包含了SystemC,由Cycle Model Studio编译的精准周期模型,Verilog和VHDL的联合仿真通过使用主流的RTL仿真装置。 CPU Cycle Models CPU系列 处理器架构 Cortex-A Cortex-A75,Cortex-A65,Cortex-A65AE,Cortex-A76AE,Cortex-A55,Cortex-A53,Cortex-A35,Cortex-A3 Cortex-R Cortex-R52,Cortex-R8,Cortex-R5 Cortex-M Cortex-M33,Cortex-M23,Cortex-M7,Cortex-M3,Cortex-M0+ 系统IP Cycle Models 系统IP 产品 互联总线 NIC-400,CMN-600,CCI-550 中断控制器 GIC-600,GIC-500 系统内存管理 MMU-600 内存 BP-140, DMC-400 官网参考: https://www.arm.com/products/development-tools/simulation/cycle-models
相关资源
广告