Atmel Cortex-A5跑Nuttx是如此酸爽

2023-11-22 11:51
文章标签 cortex a5 nuttx 酸爽 atmel

本文主要是介绍Atmel Cortex-A5跑Nuttx是如此酸爽,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开源RTOS Nuttx已经支持Atmel SAMA5系列MPU,而且看到Nuttx还支持Graphic API,决定尝试在Ateml SAMA5D3 Xplained上跑下Nuttx。Nuttx是一款开源RTOS,具备非常优秀的实时特性,支持TCP/IP,IPv4, IPv6等网络协议栈,能够支持USB Host/Device协议栈,支持多种文件系统,支持像Linux一样的shell命令行操作。开源PX4无人机飞控平台就是采用的这款RTOS. Nuttx具备以下优秀特性:

  • Standards Compliant
  • Core Task Management
  • Modular design
  • Fully preemptible
  • Naturally scalable
  • Highly configurable
  • Easily extensible to new processor architectures, SoC architecture, or board architectures
  • FIFO, round-robin, and “sporadic” scheduling
  • Realtime, deterministic, with support for priority inheritance
  • Tickless operation
  • POSIX/ANSI-like task controls, named message queues, counting semaphores, clocks/timers, signals, pthreads, robust mutexes, cancellation points, environment variables, filesystem
  • VxWorks-like task management and watchdog timers
  • BSD socket interface
  • Optional tasks with address environments (Processes)
  • Symmetric Multi-Processing (SMP)
  • Loadable kernel modules; lightweight, embedded shared libraries
  • Memory Configurations: (1) Flat embedded build, (2) Protected build with MPU, and (3) Kernel build with MMU
  • Memory Allocators: (1) standard heap memory allocation, (2) granule allocator, (3) shared memory, and (4) dynamically sized, per-process heaps
  • Thread Local Storage (TLS)
  • Inheritable “controlling terminals” and I/O redirection. Pseudo-terminals
  • On-demand paging
  • System logging
  • May be built either as an open, flat embedded RTOS or as a separtely built, secure kernel with a system call gate interface
  • Built-in, per-thread CPU load measurements
  • Custom NuttX C library
  • Application interface well documented in the NuttX User Guide

支持的ARM平台

  • ARM7TDMI (TI TMS320 C5471, Calypso, MoxART, NXP LPC214x, LPC2378, STMicro STR71x)
  • ARM920T (Freescale i.MX1)`
  • ARM926EJS (TI DM320, NXP LPC31xx)
  • ARM Cortex-A5 (Atmel SAMA5D2, SAMA5D3, SAMA5D4)
  • ARM Cortex-A8 (Allwinner A10)
  • ARM Cortex-A9 (NXP/Freescale i.MX6)
  • ARM Cortex-R4/R4F (TI TMS570)
  • ARM Cortex-M0 (nuvoTon NUC120, NXP/Freescale KL25Z, KL26Z, Atmel SAMD20/21, SAML21, ST Micro STM32 F0)
  • ARM Cortex-M3 (ST Micro STM32 F1/L4/F2, TI/Stellaris LM3S, NXP LPC17xx, Atmel SAM3U/3X, SiliconLabs EFM32)
  • ARM Cortex-M4 (with/without floating point unit: ST Micro STM32 F3/F4/L4, TI/Stellaris LM4F/TM4C, NXP LPC43xx, Freescale Kinetis K20/K40/60/64/66, Atmel SAM4C/4E/4S/4L, Infineon XMC4xxx)
  • ARM Cortex-M7 (Atmel SAMV71/SAME70, ST Micro STM32 F7)

支持的文件系统

  • Tiny in-memory, root pseudo-file-system
  • ARM920T (Freescale i.MX1)`
  • Generic system logging (SYSLOG) support
  • FAT12/16/32 filesystem support
  • NFS Client. Client side support for a Network File System (NFS, version 3, UDP)
  • NXFFS. The tiny NuttX wear-leveling FLASH file system
  • SMART. FLASH file system from Ken Pettit
  • ROMFS file system support
  • BINFS pseudo-file system support
  • HOSTFS file system support (simulation only)
  • Union file system. Supports combining and overlaying file systems
  • procfs/ pseudo-file system
  • Generic driver for SPI-based MMC/SD/SDH cards
  • A Binary Loader with support for the following formats:
    Separately linked ELF modules.
    Separately linked NXFLATmodules. NXFLAT is a binary format that can be XIP from a file system.
  • PATH variable support
  • File transfers via TFTP and FTP (get and put), HTML (wget), and Zmodem (sz and rz)
  • Intel HEX conversions

支持的图像Graphic特性

  • Framebuffer drivers
  • Graphic LCD drivers for both parallel and SPI LCDs and OLEDs
  • Segment LCD drivers
  • VNC Server
  • NX Graphics Subsystem: A graphics library, windowing system and font support that works with either framebuffer or LCD drivers
  • NuttX Widgets: A graphical user interface written in conservative C++ that integrates with NX Graphics
  • SMART. FLASH file system from Ken Pettit
  • NuttX Window Manager: A tiny window manager based on the NX Graphics Subsystem and NuttX Widgets

Nuttx在Atmel SAMA5D3 MPU的移植

Nuttx源码已经支持Atmel Cortex-A5系列MPU平台,开发人员只需要参照Nuttx源码目录下configs/sama5d3-xplained/README.txt帮助文件,就可以完成Nuttx的编译工作。需要注意的是Nuttx OS是放在外部的DDR2里面运行的,需要一个bootloader将代码从Nand Flash搬移到外部DDR2。这个bootloader我所采用的也是来自于Atmel官网的bootstrap,一款小巧方便的轻量级bootloader,可以直接用来加载Nuttx或者Linux kernel,移植方面需要做简单的配置即可。 —— [ Atmel SAMA5D3 Xplained官网链接 ]

Nuttx在SAMA5D3 Xplained上运行的效果如下,支持linux一样的命令行操作,每个用户代码都可以单独编译成一个可执行文件,非常的便利,让我又不禁感叹Nuttx的强大,让我很快从uCos/FreeRTOS粉迅速转变为Nuttx粉:
这里写图片描述

Nuttx Graphic运行的效果如下(支持多窗口叠层操作,内置多种字体):
这里写图片描述

后续希望在实际项目中用到这款身材小巧而内心强大的RTOS,Nuttx最早在2007年发布出来,作者是 - [Gregory Nutt]

Greg本身也是牛人一个,有兴趣的可以看下他个人的简历,在Yahoo Group上有个Nuttx开发者群,所有相关的问题都可以在上面提出,Greg会很快给你回复。笔者当时调试时遇到问题,周六半夜2点(北京时间)将问题提交上去,5分钟不到就收到Greg本人亲自给出的回复,一个很nice的人 - [Gregory Nutt Resume]

Nuttx提供了简单的设备驱动模型,方便开发者将自己的应用代码移植到不同的MCU/MPU平台。另外发现Nuttx对Atmel Cortex-M7芯片(一颗非常强大的MCU,DMIP强于ARM Cortex-A8,主频可以到300MHz的单片机) SAMV71 Xplained和SAME70 Xplained也有支持,目前也在上面简单跑过一些例程,非常的好用。Nuttx也支持GDB调试,对于单片机/ARM MCU开发人员来说是个巨大的福利。

对Nuttx的简单介绍就到这里,如果有兴趣的朋友可以发邮件给我 atmel_mpu_support@163.com。

这篇关于Atmel Cortex-A5跑Nuttx是如此酸爽的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409944

相关文章

Cortex-A7:ARM官方推荐的嵌套中断实现机制

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版 1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A7中断向量表中仅为外部中断设置了一个中断向量可以看出。本文介绍ARM官方推荐使用的嵌套中断实现机

Java8中的Stream,让集合操作酸爽起来

简介 java8也出来好久了,接口默认方法,lambda表达式,函数式接口,Date API等特性还是有必要去了解一下。比如在项目中经常用到集合,遍历集合可以试下lambda表达式,经常还要对集合进行过滤和排序,Stream就派上用场了。用习惯了,不得不说真的很好用。 Stream作为java8的新特性,基于lambda表达式,是对集合对象功能的增强,它专注于对集合对象进行各种高效、便利的聚合

基于IMX6ULL的Cortex-A中断原理讲解,以及编写其中断向量表

首先借助STM32我们需要了解中断系统是如何构成的         会有一个中断源,也就是能够向CPU发出中断请求的设备或事件。中断源不分硬件和软件,也就是产生中断信号,就会执行中断服务函数         但是CPU是如何知道中断源产生后就找到对应的中断服务函数呢,这个时候就要引入中断向量表,它的主要功能是描述中断对应的中断服务函数,每个中断源都有一个唯一的中断号(也称向量号),

Cortex-M3架构学习

本学习参照 “Cortex-M3权威指南”学习,需要详细学习,建议自行观看。 Cortex-M3基础  CM3介绍 Cortex-M3 处理器内核其实就是单片机的中央处理单元( CPU )。 完整的基于 CM3 的 MCU 还需要很多其它组件,如下, Cortex-M3 是一个 32 位处理器内核; 内部的数据路径是 32 位的,寄存器是 3

cortex-m4系列绝对地址函数跳转问题

一、环境:         cortex-m4,IAR,J-LINK。 二、问题:         1)、首先, 我将另一个程序中的函数扣出来,通过j-flash-lite下载到MCU的一个固定地址Flash中。         2)、然后, 声明一个变量为函数指针,同时将这个常量经过强转后赋值给该变量。         3)、接着, 用该变量做函数跳转。         形如:

Cortex-M --- 中断向量表

昨天在浏览STM32数据手册的时候在中断这一章看到了Vector table中断向量表,本文介绍一下对于向量表的理解,包括中断向量表何时执行,如何执行,存放的是什么,存放的大小。 话不多说先放图 图1 中断向量表         可以看到在M4内核的中断向量表中共包含了91+4,默认情况下95个中断优先级,而且需要注意的是中断优先级可以是负数,例如在这里REST中断的优先

【Arm Cortex-X925】 -【第二章】-Cortex-X925 core简介

2. Cortex-X925 核心 Cortex-X925 核心是一款高性能、低功耗的产品,采用了 Armv9.2-A 架构。Armv9.2-A 架构在 Armv8‑A 架构的基础上进行了扩展,涵盖了 Armv8.7‑A。 Cortex-X925 核心集成在 DSU-120 DynamIQ™ 集群内。它连接到 DynamIQ™ Shared Unit-120,该单元作为一个完整的互连系统,包含

【Arm Cortex-X925】 -【第九章】-L2 内存系统

9. L2 内存系统 Cortex®-X925 核心的 L2 内存系统通过 CPU 桥接器将核心与 DynamIQ™ Shared Unit-120 连接。它包括私有的 L2 缓存。 L2 缓存是统一的,并且对集群中的每个 Cortex®-X925 核心都是私有的。 以下表格显示了 L2 内存系统的特点。 9.1 L2 缓存 集成的 L2 缓存处理来自指令和数据侧的指令和数据请求,以及

【Arm Cortex-X925】 -【第七章】-L1 指令内存系统

7. L1 指令内存系统 Cortex-X925 核心的 L1 指令内存系统负责提取指令和预测分支。它包括 L1 指令缓存和 L1 指令转换后备缓冲区 (TLB)。L1 指令内存系统向解码器提供指令流。为了提高整体性能和降低功耗,L1 指令内存系统采用了动态分支预测和指令缓存技术。 下表显示了 L1 指令内存系统的特点。 注意 L1 指令 TLB 也位于 L1 指令内存系统中。然而,它是

《ARM Cortex-R 学习指南》-【第十七章】-调试

快速链接: . 👉👉👉 ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 付费专栏-付费课程 【购买须知】 个人博客笔记导读目录(全部) 第十七章 调试 调试是软件开发中的关键部分,通常被认为是最耗时(因此也最昂贵)的一部分。错误可能难以检测、重现和修复,并且很难预测解决缺陷所需的时间。当产品交付给客户时,解决问题的成本显著增加。在许多情况下,当产品的