NuttX

소프트웨어 스크린 샷:
NuttX
소프트웨어 정보:
버전: 7.9 업데이트
업로드 날짜: 10 May 15
개발자: Gregory Nutt
라이센스: 무료
인기: 115

Rating: 4.0/5 (Total Votes: 1)

NuttX는 임베디드, 자원이 제한된 환경에서 사용할 수있을 오프셋에서 디자인 된 오픈 소스, 결정하고 무료 실시간 임베디드 운영 체제 (RTOS)가있다. 그것은 마이크로 컨트롤러 환경에서 사용할 수있는 작은 공간을 가지고 있으며, 그것은 했음은 (32 비트) 시스템을 포함 알맞도록 작은 (8 비트)에서 완벽하게 확장이야.
또한, 표준을 완벽하게 준수로 완벽하게 실시간으로, 완전히 개방하는 것을 목표로하고있다. NuttX은 준수 고도의 확장 성 및 구성뿐만 아니라 표준이며, 풍부한 기능의 OS 세트, 모듈 형 디자인을하고 있습니다. 그것은 비 제한 BSD 라이선스로 배포됩니다. 그것은 종종 그 개발자 불리는 "작은 리눅스."특징 glanceKey 기능으로는 프로세스 별 핵심 작업 관리, BSD 소켓 인터페이스, 메모리 할당 자 (공유 메모리, 표준 힙 메모리 할당, MPU와 보호 빌드, 평면 포함 된 빌드를 포함 힙, 과립 할당 동적 크기), 메모리 구성, 포팅 가이드, 완전히 선점, 틱 동작, 온 디맨드 페이징 시스템 로깅.
또한,이 프로젝트는 쓰레드 단위의 선제 공격, 내장 된 CPU 부하 측정, 포괄적 인 문서, 주소 환경, ANSI 같은 및 POSIX 같은 작업 제어, 시계,의 pthreads를 포함 옵션 작업 환경을 관리 할 수​​있는 확장 기능과 함께 제공 변수, 신호라는 메시지 큐, 타이머, 파일 시스템 및 계산 세마포어.
다른 기능으로는, 우리가 말할 수있는 라운드 로빈 스케줄링, FIFO, 우선 순위 상속,의 SoC 아키텍처에 대한 지원, 보드 아키텍처에 대한 지원, 새로운 프로세서 아키텍처에 대한 지원, 워치 독 타이머, VxWorks와 같은 작업 관리, I / O 리디렉션에 대한 지원과 전송 & ldquo; 단말기를 제어 & rdquo;. platformsNuttX 지원은 우리가 ARM 코어 텍스 -M3, ARM926EJS, ARM7TDMI, ARM 코어 텍스 M4, ARM 코어 텍스 M0, ARM920T와 ARM 등 다양한 ARM 프로세서를 언급 할 수있는 중 하드웨어 플랫폼의 다양한 지원 코어 텍스 A5뿐만 아니라 아트멜 8 비트 AV​​R, 프리 스케일 M68HCS12, AVR32 Atmel의 AVR 플랫폼.
86, 자일 로그 Z80, 자일 로그 Z16F, 자일 로그 Z8Encore 포함 자일 로그 플랫폼, 또한, 그것은 또한 마이크로 칩 PIC32MX (MIPS), 80C52과 80 번 등 다양한 인텔 플랫폼을 지원합니다! 와 자일 로그 eZ80 갈채!와 르네사스 / 히타치 모든 SuperH와 르네사스 M16C / 26 플랫폼

이 릴리스의 새로운 기능 : 있습니다.

특징 : 추가 새로운 기능과 확장 된 기능 :
핵심 OS :
워치 독 타이머 할당 : 우리가 미리 할당 감시 시간이 부족할 경우 (1), 논리는 이제 힙에서 추가 타이머를 할당합니다. 항상 인터럽트 핸들러에 사용할 타이머가 될 수 있도록 사전 할당 된 워치 독 타이머의 예약이 유지됩니다. 정적으로 할당 워치 독 타이머 (2) 추가 지원
환경 지원 주소 : (2) 새로운 운영체제 API를 모든 플랫폼 별 컨텍스트 스위칭 로직 (up_block_task (), up_unblock_task (), _exit (), 등)에 통합.
커널 빌드 지원 (1) MPU 기반 & quot; 커널 빌드 & quot; 보호 된 빌드 (CONFIG_BUILD_PROTECTED)로 이름이 변경; 에 대한 지원을 추가 한 새로운 MMU 기반 & quot; 커널 빌드 & quot; (CONFIG_BUILD_KERNEL가), (2) 시스템 호출 라이브러리 이제 CONFIG_NUTTX_KERNEL로 구축 될 수있다. 새로운 선택 * : CONFIG_LIB_SYSCALL.
시스템 시작 : (메모리의 주소 대) 파일 시스템에 프로그램에서 시스템을 시작하기 위해 구성 옵션을 추가합니다.
시작 매개 변수 전달 :이 구성에 따라 새로운 작업에 매개 변수를 전달하는 방법은 두 가지가 될하는 데 사용 : 하나 (1)는 argv [] strdup'ed 각각의 문자열 배열로 만든있다. 새 작업이 시작되기 전에 또는 (2)는 argv [] 배열과 문자열은 스택에 만들어졌습니다. 이제, 방법, 하나의 방법이있다 (2). (1) 방법은 약간 더 컴팩트 수도 있지만이 같은 일을하는 두 가지 방법의 복잡성을 수행 할 가치가 없다.
보드 초기화 : 별도의 작업자 스레드의 초기 보드 초기화를 수행하는 기능을 추가합니다. 초기화 로직은 시동 / IDLE 스레드에서 실행할 수없는 경우가 대부분이기 때문이 필요하다. 차단 또는 대기 유휴 스레드에서 허용되지 않습니다 때문입니다.
메모리 관리 :
과립 할당 자 : (1) 과립 힙 않은 할당 가능한 영역을 확보 할 수있는 새로운 기능을 추가합니다. (2) 미 초기화 과립 할당을 지원하는 인터페이스를 추가합니다.
페이지 할당 자 : 기존 NuttX 과립 할당을 기반으로 간단한 물리 페이지 할당을 추가합니다. 과립 할당은 장거리 사용에 충분히 결정하는 경우 나 특정 아니지만, 매우 빨리 테스트하기 위해 자리에 페이지 할당을받을 가져옵니다.
CONFIG_MM_MULTIHEAP를 제거하지 : 비 multiheap 작업이 더 이상 지원되지 않습니다.
이 있으며 sbrk () : 있으며 sbrk ()는 동적으로 크기, 프로세스 별 힙을 허용하도록 커널 빌드에서 지원됩니다.
프로세스 별 힙 : 프로세스 데이터 공간의 시작 부분에 공간이 이제 사용자 힙 관리 구조를 위해 예약되어 있습니다. 커널 구현 모드에서, 이러한 구조는 힙 사용자 특정 데이터를 할당하기 위해 커널 사용 코드들 사이에서 공유된다.
사용자 힙 관리 : 권한 스레드가 종료, 우리는 사용 가능한 메모리에 커널 할당을 사용해야 할 때, 권한이없는 스레드가 종료, 우리는 아무것도 할 필요가 없습니다 때 주소 환경이 철거 될 때 ... 힙 메모리가 정리됩니다.
프로세스 간 공유 메모리 지원 : (1) shmget 시스템에 대한 구현 및 문서를 추가 (), 설명 shmctl (),시 shmat () 및 shmdt는 (). (2) 시스템 시스템을 추가 공유 메모리 인터페이스에 사용자 콜 게이트를 지원하도록 요구한다. (3) 메모리 공유 기능을 지원하는 데 필요한 플랫폼 특정 인터페이스 정의를 추가한다.
가상 페이지 할당 자 : 프로세스 당 가상 페이지 할당에 대한 지원을 추가합니다. 이 task_group_s 구조의 새로운 구성원입니다. 새로운 사용자 프로세스가 시작될 때 할당이 초기화되어야하며 초기화 취소는 프로세스 그룹 최종적 파괴 될 때. 그것은 공유 실제 메모리를 매핑하는 상에 가상 주소를 선택하는시 shmat ()와 shmdt는 ()에 의해 사용된다.
파일 시스템 / 벽돌 드라이버 / MTD :
스마트 FS : 스마트 FS 및 켄 페티트에서 스마트 FS procfs의 업데이트.
MTD : MTD 미리 읽기 / 기록 버퍼 층이 나타날 해주기 기능적이다.
바이너리 포맷 :
프로세스 별 힙 : 각 사용자 프로세스가 시작될 때 프로세스 별 사용자 힙을 초기화하는 로직을 추가합니다.
그래픽 :
NxTerm은 : NxTerm에 NxConsole의 모든 항목을 변경합니다.
네트워킹 :
PHY 인터럽트 (1) PHY 인터럽트 첨부 인터페이스를 표준화한다. (2) PHY 인터럽트에 의해 시그널링 네트워크 상태에 변화가있을 때, 애플리케이션에게 통지하는 데 사용될 수 IOCTL에 대한 지원을 추가.
향상된 전송 로직은 : 과거에 첫 번째 패킷이 실패하는 새로운 네트워크 피어에 보내고; 이 피어에 대한 ARP 테이블에 항목 없을 것 때문에 ARP 요청은 첫 번째 패킷을 대체 할 수있다. CONFIG_NET_ARP_SEND = Y 인 경우에는 지금 옵션으로, 모두되지 않으면 논리 (1) (2)의 매핑을 얻기 위하여 주기적 ARP 요청을 전송하고 (3) 기다려, 피어 MAC 어드레스를 ARP 테이블에 있는지 확인한다 보내 ARP 응답. 이어서 (4) ARP 응답을 수신 한 후, 실제 송신 로직은 개시 될 때. 따라서,이 새로운 피어에 송신 된 패킷과 제 지연 될 수도 있지만, 패킷이 손실되지 않아야
시뮬레이션 호스트 :
SPI 플래시 드라이버 : 켄 페티트에서 시뮬레이션 대상에 대해 SPI 플래시 드라이버를 에뮬레이트.
인텔 x86 :
기본 호스트 : 기본 호스트는 지금 x86_64의과 시뮬레이션 구축을위한 -m32 옵션이 자동으로 선택됩니다.
인텔 8051 가족 :
8051 제거 : NuttX 소스 트리에서 8051 가족 구조에 대한 모든 지원이 제거되었습니다. 제거 패치와 함께 폐기 코드는 지금 기타 / 폐기 된 /에서 찾을 수 있습니다. 이 코드는 일부 기능이 입증되었지만 (1), I는 어느 8051 NuttX 중 실제로 성공적 포트 인식하지이기 때문에 제거하고, (2) 8051, 하드웨어 스택과, 다른 아키텍처에 제한 합병증 강제시켰다 과 NuttX의 성장과 발전은 더 복잡합니다.
자일 로그 ZNeo 보드 :
CONFIGS / 16Z이 보드에 대한 지원은 NuttX 소스 트리에서 제거 된 (여전히 기타 / 폐기 된 디렉토리에서 찾을 수 있습니다). 이 포트는 사용을위한 준비가 아니라 미래의 어떤 시점에서 NuttX 나무로 복귀 할 수있다.
아트멜 SAM3 / 4 보드 :
SAM4E-EK : (1) 완전한 기능 ILI9341 기반의 LCD 드라이버 (2) 완전한 기능 NxWM 구성을 추가합니다.
하는 ARMv7-A :
주소 환경은 : 코어 텍스 MMU를 사용하여 응용 프로그램의 주소 환경에 대한 지원을 추가합니다. NuttX 주소 환경 지원의 표준화 된 플랫폼 고유의 인터페이스를 구현합니다.
캐시 작업 : 표준화, 플랫폼 별 캐시 작업을 구현합니다. 이들은 D-캐시를 플러시 및 ELF 모듈은 메모리에로드 된 후 I-캐시를 무효화하기 위해 ELF 로더에서 호출된다. 이 변경, ELF 모듈은 SAMA5 / 코어 텍스 플랫폼에서 제대로 작동합니다.
커널 빌드 : (1) 시스템 콜 게이트의 구현을 추가합니다. (2) 별도로 작성된 사용자 프로그램을 링크 할 수 있습니다 CRT0 시작 파일을 추가합니다. (3) 커널 빌드에서 사용 모드 신호 전달에 대한 지원을 추가합니다. (4) 각 사용자 프로세스가 시작될 때 프로세스 별 사용자 힙을 초기화하는 로직을 추가합니다. (5)하는 ARMv7은-예외 처리는 우리가 사용자 모드 프로세스를 지원하는 경우 약간 다르게 작동 할 필요가있다. R13 및 R14는 사용자 및 SVC 모드 사이에서 페이징 다르게되기 때문이다.
공유 메모리 지원 : (1) 컨텍스트 스위치에 공유 메모리의 매핑 처리하는 데 필요한 논리를 추가합니다. (2) 공유 메모리에 주소를 포함하는 가상 / 물리 주소 변환을 확장 할 수 있습니다. (3) 플랫폼 고유의 공유 메모리 지원의 구현을 추가합니다.
아트멜 SAMA5D 드라이버 :
네트워크 IOCTL을 : 설정 PHY 이벤트 알림에 새 IOCTL을 포함한 모든 네트워크의 ioctl을 구현합니다.
주소 변환 : 커널 주소 환경 구축에서, 그 반대의 경우도 마찬가지 물리적 주소로 사용자의 가상 주소를 매핑하고 논리가 필요합니다.
아트멜 SAMA5D 보드 :
SAMA5D3 Xplained, SAMA5D3-EK 및 SAMA5D4-EK는 : 새로 정의 된 표준 인터페이스를 사용하는 기존의 보드 특정 PHY 인터럽트 인터페이스를 변환합니다.
SAMA5D4-EK는 : 커널 빌드 구성을 테스트 구성을 추가합니다. ROMFS 파일 시스템 SD 카드 나로부터의 메모리 중 하나를 부팅 구성이 있습니다.
SAMA5D4-EK : 레브 E. 보드에 대한 문서 / 지원을 추가합니다.
ST 마이크로 STM32 드라이버 :
이더넷은 : 네트워크 IOCTL 서명의 변화에​​ 변화를 지원하도록 수정. 또한 설치 PHY 이벤트 알림에 새 IOCTL에 대한 지원을 추가합니다.
ST 마이크로, STM32 보드 :
STM32F4DIS-BB와 STM32F4Discovery은 : 설치 STM32F4DIS-BB베이스 보드 STM32F4Discovery 보드의 네트워크를 사용할 수 NSH 구성을 추가합니다. STM32F4DIS-BB베이스 보드의 microSD 카드 슬롯을 지원합니다.
TI TIVA 드라이버 :
TI의 CC3200 : TI의 CC3200에 대한 지원을 추가합니다. 짐 유잉에서.
TI TIVA 보드 :
TI의 CC3200 런치 패드 : TI의 CC3200 런치 패드에 대한 지원을 추가합니다. 짐 유잉에서.
C 라이브러리 :
설문 조사 () : sem_timedwait를 사용하여 다시 구현 설문 조사 () 지연 ().
구성 / 시스템을 구축 :
수출 대상 : 빌드 커널에서 또는 보호, (1) 사용자 만의 라이브러리를 수출해야한다, (2) 내부 헤더 파일을 복사하지 않거나이 커널 또는 보호 빌드, 그리고 (3)를 함께 제공 할 필요가있는 경우 빌드 스크립트를 사용자 C 시작 파일 (crt0)가 아닌 커널 머리 커널 개체 보호 빌드.
프로그램 CFLAGS는 : 커널 코드와 다른 CFLAGS와 사용자 라이브러리를 구축하는 우리를 허용합니다 로직을 추가합니다. SHN_COMMON 재배치를 방지하기 위해 ELF 코드를 만들 때 우리는 -fno-일반적인 옵션이 필요하기 때문에이 필요하다.
응용 프로그램 :
NSH : NSH 네트워크 초기화 논리를 확장 할 수 있습니다. 링크의 상태를 모니터링하는 네트워크 모니터 스레드를 생성합니다 옵션이 추가되었습니다. 링크가 다운 될 때, 코드는 정상적으로 눌러져 이더넷 드라이버를 넣어 시도 할 것이다; 링크가 회복되면, 코드는 백업 네트워크를 가지고 시도합니다.
ELF 예 : ELF 테스트 / 예 (가능한 경우) 개별 ELF 테스트 프로그램이 시스템 콜 라이브러리에 링크 할 수 있도록 확장되었다 또는 C 라이브러리에 대한 제거 또는 기호 테이블에 대한 필요성을 최소화 할 수 있습니다.
NxTerm은 : NxTerm to NxConsole의 모든 항목을 변경합니다.
MTDRWB 예 : MTD R / W 버퍼링을 테스트하는 예를 추가합니다.
OS 테스트 예 : sem_timedwait의 사소한 테스트를 추가합니다 ().
응용 프로그램 구성 / 시스템을 구축 :
가져 오기 대상 : (1) (nuttx / 소스 트리 대) NuttX 수출 패키지에 대 한 건물 응용 프로그램을 허용 논리를 추가합니다. (2) 패키지를 내보낼의 .config 파일을 추가합니다. (3) 응용 프로그램 / 가져 오기를 만듭니다. 만들기 앱 / 가져 오기 / CFLAGS를 정의 같은 일을 Make.defs; ELF 빌드는 CFLAGS에 -fno-일반적인 필요합니다. nuttx / 도구 / Config.mk 앱 / 가져 오기 / Make.defs에서 몇 가지 기본 논리를 복사합니다. ELF 가져 오기 빌드 (4) 응용 프로그램 / 가져 오기 / 스크립트 / GNU-elf.ld GCC의 링커 스크립트를 추가합니다.
모든 메이크은 (1) 모든 메이크에 설치 대상을 추가합니다. 가져 오기 빌드를 들어, 최상위 메이크는 이제 두 개의 패스를 수행합니다 (1) (2) 응용 프로그램 / 빈에 프로그램을 설치 한 후, libapp.a을 구축합니다. (2) 주 ()을 구축 모든 메이크에 CONFIG_BUILD_KERNEL를위한 프로그램 설치를 추가합니다. (3) 커널 빌드 들어 주를 포함하는 오브젝트 파일 () 때문에 이름 충돌의 라이브러리로 갈 수 없다. 오브젝트 파일은 모든 메이크의 특별한 경우로 처리해야합니다.
모든 내장 프로그램 : 커널 빌드와 (CONFIG_BUILD_KERNEL)가 모든 작업을 진입 점은 주 ()이다 아닌 일부 xyz_main ().
DD, DF, losetup을, mkfatfs, mkdr 및 PS : NSH : 그들은 커널 밖에 사용할 수없는 인터페이스에 의존하기 때문에 몇 가지 명령은 커널 빌드에서 비활성화해야합니다.
앱 / 도구 / (1) NuttX 수입 패키지를 폭발 앱 / 가져 오기에 설치 mkimport.sh를 추가합니다. (2) 부트 ROMFS 파일 시스템 이미지를 만들 mkromfsimg.sh 스크립트를 추가합니다.
ELF와 NxFLAT 예제 : 주소 환경이있는 경우 task_create ()를 사용하여 테스트 케이스를 작성하지 마십시오.
도구 :
refresh.sh : 당신이 그 많은 작업을 수행 할 때 쉽게 구성을 상쾌하게하는 도구를 추가합니다.
mksyscall.c : 헤더 파일이 필요하지 않습니다 콜을 구축 할 수 있습니다.
mkexport.sh : 패키지를 내보낼의 .config 파일을 추가합니다.
응용 프로그램 / 도구 : 새로운 애플 리케이션 / 도구 스크립트 위 내용을 참조하십시오.
진행에 노력. 다음은 부분적으로 구현하지만이 릴리스에 존재하는 기능입니다. 그들은 곧 완료 될 가능성이 없습니다.
프로세스 :이 릴리스의 작업의 대부분은 NuttX에서 유닉스 스타일의 사용자 프로세스의 실현에 초점을 맞추고 있습니다. 할 수 더하지만,있다. http://www.nuttx.org/doku.php?id=wiki:nxinternal:memconfigs#the_roadmap_toward_processes : 전체 로드맵과 상태에서 사용할 수 있습니다
XMEGA : XMEGA 포트 장소의 일부 조각이 있습니다. 즉, 포트는 정말 그러나, 시작되지 않았습니다.
갈릴레오 : 마찬가지로, 인텔 갈릴레오 포트 장소에 조각이있다. 포트 중 하나를 본격적으로 시작되지.
버그 수정. 만 가장 중요한 버그 수정이 (버그 수정의 전체 목록을 보려면 추가,보다 자세한 버그 수정 내용은 변경 로그 참조) 다음과 같습니다 :
핵심 OS :
커널 수정을 구축 : (1) IDLE TCB 설정이 유휴 스레드가 특권, 커널 스레드임을 표시해야합니다. 주소 환경이있는 경우 (2)) 인터페이스를 task_create () 또는 task_spawn을 (빌드하지 마십시오. (3)의 posix_spawn () 커널 프록시 스레드는 커널 스레드가 아닌 사용자 작업이 될 것이다.
여러 pthread와 인터페이스 : 매개 변수를 phthread하는 const를 저장 클래스를 추가합니다. 프레디 쇼팽에서.
SCHED / 시계 : g_tickbias의 흔적을 제거; 필요로하는 대신, 정확한 시스템 시간을 제공하기 위해 g_basetime하는 시간 바이어스를인가한다.
시스템 호출 (1) 여러 오타가 수정; exevc의 수정 통합 (), execvl ()의 posix_spawn () 및 posix_spawnp () 시스템 호출. (2) 우리는 시스템 콜을 처리 한 후 우리는 신호를 전달하기 위해 다시 사용자 스택 전환해야하는 동안 커널 스택을 사용하도록 구성하는 경우.
파일 시스템 / 벽돌 드라이버 / MTD :
procfs의 : 일부 비 reorganizable 데이터 구조를 재구성하여 소개 일부 procf 파손을 수정합니다. 켄 페티트에서.
AT45는 : 1 개 이상의 페이지를 작성할 때 at45db_bwrite ()에서 버퍼는 증가하지 않는다. 소스 포지 버그 # 34.
바이너리 포맷 :
ELF 재배치 : 일부 재배치 종류에는 관련된라는 기호가 없다. 설계는이 경우를 고려하지 않았다.
ELF 로더 : 긴급 버그 수정 .. BSS가 삭제되지 않았습니다.
메모리 관리 :
과립 할당 자 : 과립 할당 초기화 커널 메모리를 따로 설정을 잘못 할당을 사용합니다.
권한 그룹 : 그룹 구조에 플래그를 추가 : 그룹이 커널 스레드에 의해 생성되는 경우, 그룹의 모든 자원은 권한이 있어야합니다.
Cryptogrphic 지원 :
암호화 / cryptodev.c : 반전 경로 세그먼트는 파일 경로를 포함한다. 브레넌 애쉬튼에 의해 지적했다.
일반 드라이버 :
일반적인 CAN 상단 절반 : can_txdone에서, 세마포어에 웨이터는 can_xmit의 반환 값에 관계없이 통보하여야한다. 새로운 패킷이 존재하지 않는 경우는 우선 그 -EIO을 반환하고, 제 웨이터의 정보가 마지막 전송 된 패킷에 관한 것이다. 다니엘 라즐로 Sitzer에서.
ARM :
시스템 호출 : 스택에서 매개 변수를 가져 오는 경우 시스템 호출에 오타 수정 : REGS는 [REG_PC] 4는 주소,하지 REGS [REG_PC + 4]입니다.
ST 마이크로 STM32 드라이버 :
STM32 F401 UART :이 칩에 USART6에 대한 올바른 지원. 프레디 쇼팽에서.
STM32 플래시가 해결 인터페이스는보다 일반적인 만드는 대신 uint16_t의이 size_t를 사용합니다. 프레디 쇼팽에서.
STM32 UART는 : 아톤에서 사용 STM32 시계 UART7과 UART8에 대한 수정.
수 인터럽트 핸들러가 호출 될 때 모든 패킷이 전송 된 경우, 인터럽트 핸들러의 끝에서, 인터럽트는 비활성화되고 있었다. 인터럽트 핸들러 보낼 새로운 패킷을 대기열에 수 상반부의 can_txdone ()를 호출하기 때문에, 문제가있다. can_txdone ()가 () 보낼 수있는 새로운 패킷이없는 경우 인터럽트를 불가능하게 can_xmit를 ​​호출하기 때문에, 블록 모두 제거되었습니다. 다니엘 라즐로 Sitzer에서.
CAN : 최대 Holtzberg 제안 추가 STM32 캔 보정.
ST 마이크로 ST32 보드 :
CONFIGS / MIKROE-stm32f4 : 몇 MIKROE-stm32f4 구성 소스에 버그와 약간의 수정을 컴파일 수정. 켄 페티트에서.
ARM9 /하는 ARMv7-A :
시스템 호출 : ARM7 / 9 및 Cortex-콜 수정 : SVC 모드에서 스레드를 들어, SVC 명령어는 R14를 내리 쳤을 때. 이는 인라인 어셈블리에 계정을주의해야한다.
작업 설정 : 그들은 시작 트램 폴린 과거를 얻을 때까지 모든 작업, 심지어 사용자 모드 작업, 관리자 모드에서 시작해야합니다.
하는 ARMv7-A : CONFIG_BUILD_KERNEL에 대한 up_fullcontextrestore ()를 수정합니다. 그것은 커널에있는 동안 CPSR을 변경했습니다. 커널 공간에서 실행하는 동안 새로운 CPSR은 사용자 모드 인 경우, 즉 충돌합니다. SYS_context_restore 시스템 호출을 추가하여 수정. 할 수 있었다 up_fullcontextrestore ()에 대한 대안, 간단한 수정이 있습니다 : 그것은 대신 CPRSR의 SPSR을 사용하는 것이 가능하고 다음 up_fullcontextrestore에서 예외 반환 할 수도 (). 즉,보다 효율적인 것입니다,하지만 난 그것을 시도하지 마십시오.
아트멜 SAM3 / 4 보드 :
SAM3X / 아두 이노 인해 : sam3x_periphclks.h에 오타 수정; 헤더 파일을 board.h to SCLK 정의를 추가합니다. 파비앙 콩트에서.
SAM3 RTT은 : 만 SAM4 제품군은 MR 레지스터 RTTDIS 비트를 가지고있다. 파비앙 콩트에서 소스 포지 버그 # 33.
C 라이브러리 :
sscanf를 () : NuttX libc의 다음 버퍼로 추출, 분석하는 방법을 많은 문자 추측하려고 그 버퍼에 () strtol을 달렸다. 그 추측은 종종 잘못이었다. 더 좋은 접근법은 파싱 후 이동하는 방법을 결정하기 위해 많은 문자 endptr 반환 값을 사용하여, 입력 데이터 상에 직접) strcol은을 (통화하는 것이다. Kosma Moczek에서.
수학 라이브러리 : 데니스 Arnst에서 ATAN2 구현을 수정.
부동 소수점 출력 : lib_dtoa로 변경 () 후행 제로에서 정밀 오류를 수정한다. 밥 Doiron에서.
응용 프로그램 :
NSH PS 명령 수정 : 인수가없는 경우는 인수 목록 쓰레기를 인쇄 할 수 있습니다.
구성 / 시스템을 구축 :
널 예 :이 또는 커널 빌드가 아닌 경우 config.h의 그 순서가 알고 포함해야합니다. 이 문제가 계속) (주 정의 할 필요가있다 여러 가지 다른 파일에 존재합니다.

어떤 버전 7.8의 새로운 기능 :

특징 : 추가 새로운 기능과 확장 된 기능 :
핵심 OS :
워치 독 타이머 할당 : 우리가 미리 할당 감시 시간이 부족할 경우 (1), 논리는 이제 힙에서 추가 타이머를 할당합니다. 항상 인터럽트 핸들러에 사용할 타이머가 될 수 있도록 사전 할당 된 워치 독 타이머의 예약이 유지됩니다. 정적으로 할당 워치 독 타이머 (2) 추가 지원
환경 지원 주소 : (2) 새로운 운영체제 API를 모든 플랫폼 별 컨텍스트 스위칭 로직 (up_block_task (), up_unblock_task (), _exit (), 등)에 통합.
커널 빌드 지원 (1) MPU 기반 & quot; 커널 빌드 & quot; 보호 된 빌드 (CONFIG_BUILD_PROTECTED)로 이름이 변경; 에 대한 지원을 추가 한 새로운 MMU 기반 & quot; 커널 빌드 & quot; (CONFIG_BUILD_KERNEL가), (2) 시스템 호출 라이브러리 이제 CONFIG_NUTTX_KERNEL로 구축 될 수있다. 새로운 선택 * : CONFIG_LIB_SYSCALL.
시스템 시작 : (메모리의 주소 대) 파일 시스템에 프로그램에서 시스템을 시작하기 위해 구성 옵션을 추가합니다.
시작 매개 변수 전달 :이 구성에 따라 새로운 작업에 매개 변수를 전달하는 방법은 두 가지가 될하는 데 사용 : 하나 (1)는 argv [] strdup'ed 각각의 문자열 배열로 만든있다. 새 작업이 시작되기 전에 또는 (2)는 argv [] 배열과 문자열은 스택에 만들어졌습니다. 이제, 방법, 하나의 방법이있다 (2). (1) 방법은 약간 더 컴팩트 수도 있지만이 같은 일을하는 두 가지 방법의 복잡성을 수행 할 가치가 없다.
보드 초기화 : 별도의 작업자 스레드의 초기 보드 초기화를 수행하는 기능을 추가합니다. 초기화 로직은 시동 / IDLE 스레드에서 실행할 수없는 경우가 대부분이기 때문이 필요하다. 차단 또는 대기 유휴 스레드에서 허용되지 않습니다 때문입니다.
메모리 관리 :
과립 할당 자 : (1) 과립 힙 않은 할당 가능한 영역을 확보 할 수있는 새로운 기능을 추가합니다. (2) 미 초기화 과립 할당을 지원하는 인터페이스를 추가합니다.
페이지 할당 자 : 기존 NuttX 과립 할당을 기반으로 간단한 물리 페이지 할당을 추가합니다. 과립 할당은 장거리 사용에 충분히 결정하는 경우 나 특정 아니지만, 매우 빨리 테스트하기 위해 자리에 페이지 할당을받을 가져옵니다.
CONFIG_MM_MULTIHEAP를 제거하지 : 비 multiheap 작업이 더 이상 지원되지 않습니다.
이 있으며 sbrk () : 있으며 sbrk ()는 동적으로 크기, 프로세스 별 힙을 허용하도록 커널 빌드에서 지원됩니다.
프로세스 별 힙 : 프로세스 데이터 공간의 시작 부분에 공간이 이제 사용자 힙 관리 구조를 위해 예약되어 있습니다. 커널 구현 모드에서, 이러한 구조는 힙 사용자 특정 데이터를 할당하기 위해 커널 사용 코드들 사이에서 공유된다.
사용자 힙 관리 : 권한 스레드가 종료, 우리는 사용 가능한 메모리에 커널 할당을 사용해야 할 때, 권한이없는 스레드가 종료, 우리는 아무것도 할 필요가 없습니다 때 주소 환경이 철거 될 때 ... 힙 메모리가 정리됩니다.
프로세스 간 공유 메모리 지원 : (1) shmget 시스템에 대한 구현 및 문서를 추가 (), 설명 shmctl (),시 shmat () 및 shmdt는 (). (2) 시스템 시스템을 추가 공유 메모리 인터페이스에 사용자 콜 게이트를 지원하도록 요구한다. (3) 메모리 공유 기능을 지원하는 데 필요한 플랫폼 특정 인터페이스 정의를 추가한다.
가상 페이지 할당 자 : 프로세스 당 가상 페이지 할당에 대한 지원을 추가합니다. 이 task_group_s 구조의 새로운 구성원입니다. 새로운 사용자 프로세스가 시작될 때 할당이 초기화되어야하며 초기화 취소는 프로세스 그룹 최종적 파괴 될 때. 그것은 공유 실제 메모리를 매핑하는 상에 가상 주소를 선택하는시 shmat ()와 shmdt는 ()에 의해 사용된다.
파일 시스템 / 벽돌 드라이버 / MTD :
스마트 FS : 스마트 FS 및 켄 페티트에서 스마트 FS procfs의 업데이트.
MTD : MTD 미리 읽기 / 기록 버퍼 층이 나타날 해주기 기능적이다.
바이너리 포맷 :
프로세스 별 힙 : 각 사용자 프로세스가 시작될 때 프로세스 별 사용자 힙을 초기화하는 로직을 추가합니다.
그래픽 :
NxTerm은 : NxTerm에 NxConsole의 모든 항목을 변경합니다.
네트워킹 :
PHY 인터럽트 (1) PHY 인터럽트 첨부 인터페이스를 표준화한다. (2) PHY 인터럽트에 의해 시그널링 네트워크 상태에 변화가있을 때, 애플리케이션에게 통지하는 데 사용될 수 IOCTL에 대한 지원을 추가.
향상된 전송 로직은 : 과거에 첫 번째 패킷이 실패하는 새로운 네트워크 피어에 보내고; 이 피어에 대한 ARP 테이블에 항목 없을 것 때문에 ARP 요청은 첫 번째 패킷을 대체 할 수있다. CONFIG_NET_ARP_SEND = Y 인 경우에는 지금 옵션으로, 모두되지 않으면 논리 (1) (2)의 매핑을 얻기 위하여 주기적 ARP 요청을 전송하고 (3) 기다려, 피어 MAC 어드레스를 ARP 테이블에 있는지 확인한다 보내 ARP 응답. 이어서 (4) ARP 응답을 수신 한 후, 실제 송신 로직은 개시 될 때. 따라서,이 새로운 피어에 송신 된 패킷과 제 지연 될 수도 있지만, 패킷이 손실되지 않아야
시뮬레이션 호스트 :
SPI 플래시 드라이버 : 켄 페티트에서 시뮬레이션 대상에 대해 SPI 플래시 드라이버를 에뮬레이트.
인텔 x86 :
기본 호스트 : 기본 호스트는 지금 x86_64의과 시뮬레이션 구축을위한 -m32 옵션이 자동으로 선택됩니다.
인텔 8051 가족 :
8051 제거 : NuttX 소스 트리에서 8051 가족 구조에 대한 모든 지원이 제거되었습니다. 제거 패치와 함께 폐기 코드는 지금 기타 / 폐기 된 /에서 찾을 수 있습니다. 이 코드는 일부 기능이 입증되었지만 (1), I는 어느 8051 NuttX 중 실제로 성공적 포트 인식하지이기 때문에 제거하고, (2) 8051, 하드웨어 스택과, 다른 아키텍처에 제한 합병증 강제시켰다 과 NuttX의 성장과 발전은 더 복잡합니다.
자일 로그 ZNeo 보드 :
CONFIGS / 16Z이 보드에 대한 지원은 NuttX 소스 트리에서 제거 된 (여전히 기타 / 폐기 된 디렉토리에서 찾을 수 있습니다). 이 포트는 사용을위한 준비가 아니라 미래의 어떤 시점에서 NuttX 나무로 복귀 할 수있다.
아트멜 SAM3 / 4 보드 :
SAM4E-EK : (1) 완전한 기능 ILI9341 기반의 LCD 드라이버 (2) 완전한 기능 NxWM 구성을 추가합니다.
하는 ARMv7-A :
주소 환경은 : 코어 텍스 MMU를 사용하여 응용 프로그램의 주소 환경에 대한 지원을 추가합니다. NuttX 주소 환경 지원의 표준화 된 플랫폼 고유의 인터페이스를 구현합니다.
캐시 작업 : 표준화, 플랫폼 별 캐시 작업을 구현합니다. 이들은 D-캐시를 플러시 및 ELF 모듈은 메모리에로드 된 후 I-캐시를 무효화하기 위해 ELF 로더에서 호출된다. 이 변경, ELF 모듈은 SAMA5 / 코어 텍스 플랫폼에서 제대로 작동합니다.
커널 빌드 : (1) 시스템 콜 게이트의 구현을 추가합니다. (2) 별도로 작성된 사용자 프로그램을 링크 할 수 있습니다 CRT0 시작 파일을 추가합니다. (3) 커널 빌드에서 사용 모드 신호 전달에 대한 지원을 추가합니다. (4) 각 사용자 프로세스가 시작될 때 프로세스 별 사용자 힙을 초기화하는 로직을 추가합니다. (5)하는 ARMv7은-예외 처리는 우리가 사용자 모드 프로세스를 지원하는 경우 약간 다르게 작동 할 필요가있다. R13 및 R14는 사용자 및 SVC 모드 사이에서 페이징 다르게되기 때문이다.
공유 메모리 지원 : (1) 컨텍스트 스위치에 공유 메모리의 매핑 처리하는 데 필요한 논리를 추가합니다. (2) 공유 메모리에 주소를 포함하는 가상 / 물리 주소 변환을 확장 할 수 있습니다. (3) 플랫폼 고유의 공유 메모리 지원의 구현을 추가합니다.
아트멜 SAMA5D 드라이버 :
네트워크 IOCTL을 : 설정 PHY 이벤트 알림에 새 IOCTL을 포함한 모든 네트워크의 ioctl을 구현합니다.
주소 변환 : 커널 주소 환경 구축에서, 그 반대의 경우도 마찬가지 물리적 주소로 사용자의 가상 주소를 매핑하고 논리가 필요합니다.
아트멜 SAMA5D 보드 :
SAMA5D3 Xplained, SAMA5D3-EK 및 SAMA5D4-EK는 : 새로 정의 된 표준 인터페이스를 사용하는 기존의 보드 특정 PHY 인터럽트 인터페이스를 변환합니다.
SAMA5D4-EK는 : 커널 빌드 구성을 테스트 구성을 추가합니다. ROMFS 파일 시스템 SD 카드 나로부터의 메모리 중 하나를 부팅 구성이 있습니다.
SAMA5D4-EK : 레브 E. 보드에 대한 문서 / 지원을 추가합니다.
ST 마이크로 STM32 드라이버 :
이더넷은 : 네트워크 IOCTL 서명의 변화에​​ 변화를 지원하도록 수정. 또한 설치 PHY 이벤트 알림 새로운 IOCTL에 대한 지원을 추가합니다.
ST 마이크로, STM32 보드 :
STM32F4DIS-BB와 STM32F4Discovery은 : 설치 STM32F4DIS-BB베이스 보드 STM32F4Discovery 보드의 네트워크를 사용할 수 NSH 구성을 추가합니다. STM32F4DIS-BB베이스 보드의 microSD 카드 슬롯을 지원합니다.
TI TIVA 드라이버 :
TI의 CC3200 : TI의 CC3200에 대한 지원을 추가합니다. 짐 유잉에서.
TI TIVA 보드 :
TI의 CC3200 런치 패드 : TI의 CC3200 런치 패드에 대한 지원을 추가합니다. 짐 유잉에서.
C 라이브러리 :
설문 조사 () : sem_timedwait를 사용하여 다시 구현 설문 조사 () 지연 ().
구성 / 시스템을 구축 :
수출 대상 : 빌드 커널에서 또는 보호, (1) 사용자 만의 라이브러리를 수출해야한다, (2) 내부 헤더 파일을 복사하지 않거나이 커널 또는 보호 빌드, 그리고 (3)를 함께 제공 할 필요가있는 경우 빌드 스크립트를 사용자 C 시작 파일 (crt0)가 아닌 커널 머리 커널 개체 보호 빌드.
프로그램 CFLAGS는 : 커널 코드와 다른 CFLAGS와 사용자 라이브러리를 구축하는 우리를 허용합니다 로직을 추가합니다. SHN_COMMON 재배치를 방지하기 위해 ELF 코드를 만들 때 우리는 -fno-일반적인 옵션이 필요하기 때문에이 필요하다.
응용 프로그램 :
NSH : NSH 네트워크 초기화 논리를 확장 할 수 있습니다. 링크의 상태를 모니터링하는 네트워크 모니터 스레드를 생성합니다 옵션이 추가되었습니다. 링크가 다운 될 때, 코드는 정상적으로 눌러져 이더넷 드라이버를 넣어 시도 할 것이다; 링크가 회복되면, 코드는 백업 네트워크를 가지고 시도합니다.
ELF 예 : ELF 테스트 / 예 (가능한 경우) 개별 ELF 테스트 프로그램이 시스템 콜 라이브러리에 링크 할 수 있도록 확장되었다 또는 C 라이브러리에 대한 제거 또는 기호 테이블에 대한 필요성을 최소화 할 수 있습니다.
NxTerm은 : NxTerm에 NxConsole의 모든 항목을 변경합니다.
MTDRWB 예 : MTD R / W 버퍼링을 테스트하는 예를 추가합니다.
OS 테스트 예 : sem_timedwait의 사소한 테스트를 추가합니다 ().
응용 프로그램 구성 / 시스템을 구축 :
가져 오기 대상 : (1) (nuttx / 소스 트리 대) NuttX 수출 패키지에 대 한 건물 응용 프로그램을 허용 논리를 추가합니다. (2) 패키지를 내보낼의 .config 파일을 추가합니다. (3) 응용 프로그램 / 가져 오기를 만듭니다. 만들기 앱 / 가져 오기 / CFLAGS를 정의 같은 일을 Make.defs; ELF 빌드는 CFLAGS에 -fno-일반적인 필요합니다. nuttx / 도구 / Config.mk 앱 / 가져 오기 / Make.defs에서 몇 가지 기본 논리를 복사합니다. ELF 가져 오기 빌드 (4) 응용 프로그램 / 가져 오기 / 스크립트 / GNU-elf.ld GCC의 링커 스크립트를 추가합니다.
모든 메이크은 (1) 모든 메이크에 설치 대상을 추가합니다. 가져 오기 빌드를 들어, 최상위 메이크는 이제 두 개의 패스를 수행합니다 (1) (2) 응용 프로그램 / 빈에 프로그램을 설치 한 후, libapp.a을 구축합니다. (2) 주 ()을 구축 모든 메이크에 CONFIG_BUILD_KERNEL를위한 프로그램 설치를 추가합니다. (3) 커널 빌드 들어 주를 포함하는 오브젝트 파일 () 때문에 이름 충돌의 라이브러리로 갈 수 없다. 오브젝트 파일은 모든 메이크의 특별한 경우로 처리해야합니다.
모든 내장 프로그램 : 커널 빌드와 (CONFIG_BUILD_KERNEL)가 모든 작업을 진입 점은 주 ()이다 아닌 일부 xyz_main ().
DD, DF, losetup을, mkfatfs, mkdr 및 PS : NSH : 그들은 커널 밖에 사용할 수없는 인터페이스에 의존하기 때문에 몇 가지 명령은 커널 빌드에서 비활성화해야합니다.
앱 / 도구 / (1) NuttX 수입 패키지를 폭발 앱 / 가져 오기에 설치 mkimport.sh를 추가합니다. (2) 부트 ROMFS 파일 시스템 이미지를 만들 mkromfsimg.sh 스크립트를 추가합니다.
ELF와 NxFLAT 예제 : 주소 환경이있는 경우 task_create ()를 사용하여 테스트 케이스를 작성하지 마십시오.
도구 :
refresh.sh : 당신이 그 많은 작업을 수행 할 때 쉽게 구성을 상쾌하게하는 도구를 추가합니다.
mksyscall.c : 헤더 파일이 필요하지 않습니다 콜을 구축 할 수 있습니다.
mkexport.sh : 패키지를 내보낼의 .config 파일을 추가합니다.
응용 프로그램 / 도구 : 새로운 애플 리케이션 / 도구 스크립트 위 내용을 참조하십시오.
진행에 노력.








































도구 :




도구 :
























































































도구 :


























버그 수정 :






































































































유사한 소프트웨어

MidnightBSD
MidnightBSD

12 Feb 17

NAS4Free
NAS4Free

2 Oct 17

SailfishOS SDK
SailfishOS SDK

17 Feb 15

BareMetal OS
BareMetal OS

11 May 15

코멘트 NuttX

댓글을 찾을 수 없습니다
코멘트를 추가
이미지를 켜십시오!