Nordic IoT 开发:起点 Nordic Semiconductor 是一家总部位于挪威的无厂半导体公司,其专注于为物联网领域提供无线通信技术。截止到本文的编写日,Nordic 的物联网产品已经十分丰富,以下是一张从官网中截取的产品介绍图: Nordic 提供了 nRF Connect SDK 以方便开发者在 Nordic 的 nRF 系列芯片上进行应用开发。 nRF Connect SDK 也托管在 GitHub 上: 2022-07-25 IoT #nRF Connect SDK #Nordic Semiconductor
Devicetree Specification Release v0.3-40-g7e1cc1730 November 2021 1. 引言1.1 目的和范围各种软件组件互相配合以初始化和引导计算机系统。在将控制权传递给 OS(Operating System,操作系统) 、Bootloader(引导加载程序) 或 Hypervisor(管理程序) 等软件之前, Firmware(固件) 可能会对系统硬件执行低级初始化。Bootload 2022-07-13 Translation #Embedded #Devicetree
i.MX RT1060 Manufacturing User's Guide Document identifier: IMXRT1060MFUUGRev. 3, 29 June 2020 1 引言该文档描述了 i.MX RT 设备的可引导映像的生成。还说明了 i.MX RT BootROM 和 MCUBOOT-based Flashloader 的交互过程,以及将可引导映像编程到外部闪存中的过程,外部闪存可以是: QuadSPI NOR / Octal 2022-05-25 Translation #Embedded #i.MX RT1060 #NXP
VSCode 嵌入式项目设置 现今,每家嵌入式芯片厂商基本上都推出了自家的 Eclipse-based IDE 以方便开发者进行快速开发,如 ST 的 STM32CubeIDE、NXP 的 MCUXpresso IDE。 然而,Eclipse 的编辑功能个人认为并不好用,并且这些 Eclipse-based IDE 运行得并不流畅。因此,我决定自己搭建一个开发环境来替代这些 Eclipse-based IDE。本文以 ST 方 2022-03-17 VSCode #VSCode #Embedded #STM32CubeMX
Windows via C/C++, 5th Edition - Fibers Microsoft 为 Windows 添加了一种由应用程序手动调度的执行单元 —— 纤程(Fiber)。 Windows 内核中实现了线程,线程是操作系统可见的执行单元,系统将根据 Microsoft 定义的算法调度它们。纤程是在用户模式代码中实现的,因此它们对于系统来说是不可见的,并且应用程序必须定义自己的算法来调度它们。 单个线程可以包含一个或多个纤程。就内核而言,线程是抢占调度的,并且它正 2022-03-03 My Notes #Windows #Windows via C/C++
Windows via C/C++, 5th Edition - The Windows Thread Pool 每个人对如何管理线程的创建和销毁都有自己不同的看法。Windows 提供了一个 线程池 机制(围绕 IOCP 构建),使得开发者可以更容易地管理线程的创建和销毁。这个新的通用线程池不一定适用于所有情况,但它通常表现得足够好,并且可以为您节省大量的开发时间。 新的线程池函数允许您: 异步地调用函数 定时地调用函数 当单个内核对象已示意时调用函数 当异步 I/O 请求完成时调用函数 注 2022-03-03 My Notes #Windows #Windows via C/C++
Windows via C/C++, 5th Edition - Synchronous and Asynchronous Device I/O 在 Microsoft Windows 应用程序中,线程是用于分割工作的最佳工具。每个线程被分配给一个处理器,这允许多处理器计算机同时执行多个操作,从而提高吞吐量。当线程发出同步设备 I/O 请求时,该线程将暂时挂起,直到设备完成 I/O 请求。这种挂起会降低线程的性能,因为线程无法执行有用的工作(如启动另一个客户端的处理请求)。简而言之,您希望始终保持线程执行有用的工作,并避 2022-02-28 My Notes #Windows #Windows via C/C++
Windows via C/C++, 5th Edition - Thread Synchronization with Kernel Objects 用户模式同步的优点在于它非常的快,如果需要强调线程的性能,那么应该首先考虑使用用户模式线程同步机制。尽管用户模式线程同步机制提供了出色的性能,但它们都有一些局限性(如互锁的函数族仅对单个值进行操作)。实际上,内核对象机制比用户模式机制更通用,唯一的不足是性能不如用户模式机制。使用内核对象机制时,调用线程必须从用户模式切换到内核模式,这种切换开销很大(在 x86 平台上,一个空系统调用大约需要 20 2022-02-23 My Notes #Windows #Windows via C/C++
Windows via C/C++, 5th Edition - Thread Synchronization in User Mode 线程需要如下两种情况下进行同步: 当有多个线程访问共享资源而不使资源被破坏时。 当一个线程需要通知一个或多个其他线程特定任务已完成时。 原子访问线程同步的很大一部分与原子访问(Atomic Access)相关,即线程访问一个资源并保证没有其他线程同时访问同一资源的能力。 Windows 提供了互锁(Interlocked)函数族,这些函数允许以原子操作方式对一个值进行操作,如 Interloc 2022-02-18 My Notes #Windows #Windows via C/C++
Windows via C/C++, 5th Edition - Thread Scheduling, Priorities, and Affinities 抢占式操作系统必须使用某种算法来确定线程应该何时调度以及运行多长时间。每个线程都有一个在线程内核对象中维护的上下文结构。此上下文结构反映线程上次执行时线程的 CPU 寄存器的状态。每隔 20 ms 左右,Windows 会查看当前存在的所有线程内核对象,选择一个可调度的线程内核对象,并使用上次保存在线程上下文中的值加载 CPU 的寄存器。此操作称为 上下文切换(Context Switch) 。 2022-02-17 My Notes #Windows #Windows via C/C++