leterminal - Numworks 계산기를 위한 약간의 UNIX에서 영감을 받은 터미널 응용 프로그램입니다.

(A little UNIX-inspired terminal application for the Numworks Calculator.)

Created at: 2021-01-26 02:03:56
Language: C++

심벌 마크

LE 터미널 ( 수 있도록 짧은에 대한) 약간은 Numworks 계산기에 대한 터미널 UNIX 영감이다.

스크린샷

특징

베어본 멀티유저 시스템

각 사용자는 사용자 이름, UID(범용 ID) 및 실행 수준( 낮음 에서 root )을 가집니다.

Let 은 각각 특정 실행 수준에 할당된 4개의 기본 사용자 계정을 소개합니다.

  • 루트 는 분명히 루트 사용자입니다. 실행 수준이 가장 높습니다(이름이 root ).
  • 가장 낮은 실행 수준을 취하는 보트 ( 낮음 )
  • 정상적인 실행 수준을 취하는 cacahuete ( normal )
  • 코코넛높은 (루트 바로 아래) 실행 수준 을 취합니다 .

useradd
명령을 사용하여 사용자를 동적으로 추가할 수도 있습니다 .

파일 시스템

현재 구현된 표준 UNIX 파일 시스템 명령은 가상 파일 시스템(VFS)과 인터페이스합니다. Numworks의 Ion Storage는 기본적으로

/ram/

kilo 라는 텍스트 편집기가 실제로 개발 중입니다 ( nano 에서 영감을 받음 ).

명령

다음은 구현된 명령입니다.

  • uname
    : UNIX와 동일한 명령 : Epsilon의 버전 등의 커널 정보를 표시합니다.

  • echo
    : 전달된 인수를 화면에 출력

  • clear
    : 터미널 지우기

  • history
    : 명령 기록을 표시합니다.

  • whoami
    : 현재 사용자 이름을 표시합니다.

  • ion
    : Ion(Numworks 저수준 라이브러리)과의 인터페이스

    인수:

    • -s
      : 계산기를 절전 모드로 전환(예: 전원 버튼)
    • -D
      : DFU 모드 진입( 루트 권한 필요 )
    • -S
      : 계산기 종료
    • -r
      : 계산기 재부팅 (현재 작동하지 않음)
    • -b
      : 배터리 잔량을 멋진 막대로 보여줍니다.
    • -u
      : USB 정보를 보여줍니다.
  • rm
    ,
    touch
    ,
    cp
    ,
    cat
    : UNIX와 동일

  • ls
    : Numworks의 저장소에 있는 모든 파일을 나열합니다(Ion 내 제한으로 인해
    ls
    파일을 나열하려면 파일 확장자가 필요합니다. 기본값은 으로 설정됨
    py
    )

  • pyscr
    : Epsilon 에서 기본 샘플 Python 스크립트를 생성합니다 (예
    squares.py
    : 등...).

  • args
    : 명령을 포함하여 화면에 모든 인수를 표시합니다.

  • chars
    : 0-255 범위의 모든 문자를 표시합니다(디버그용)

  • poincare
    : 인터랙티브한 푸앵카레 쉘(계산용) ( 경고 : 입력에 글자를 던지면 충돌합니다 )

  • su
    : 여기에서 switch user , 인수가 전달되지 않은 경우 root 로 전환 하거나 인수(사용자 이름)에 전달된 사용자를 의미합니다.

  • useradd
    : 사용자 저장소에 사용자 추가

  • users
    : 사용 가능한 사용자 나열,
    -d
    자세한 출력을 위한 인수로 사용

  • chmod
    : 파일의 접근 플래그 수정, 지금은 실행 플래그(+x/-x)만 지원

  • daemon
    : 현재 실행 중인 데몬 나열

조립 설명서

참고: let은 시뮬레이터를 지원하지 않습니다.

" 서브펌웨어 "로

당신이 사용하려는 경우 하자 에 "subfirmware"(펌웨어에서 펌웨어의 종류)이 단계를 수행하십시오 :

  • 사용하려는 펌웨어의 소스(예: Epsilon )를 복제합니다 ( Omega의 경우 추가 아래 Omega용 Sidenote 참조 ).
# Example
$ git clone https://github.com/numworks/epsilon
$ cd epsilon
  • apps/terminal
    펌웨어 소스 의 폴더 에서 이 저장소를 복제합니다 (물론
    terminal
    폴더를 생성해야 함).
$ git clone https://github.com/CacahueteSansSel/leterminal apps/terminal
#                                                          ^~~~~~~~~~~~~
#                                                          Important!
  • 맨 위에 있는 makefile
    apps/Makefile
    에 다음 줄을 추가합니다 .
include apps/terminal/Makefile
  • main.cpp
    파일로 이동하여 맨 위에 다음 줄을 추가합니다.
#include "terminal/startup.h"
  • 같은 파일에서 바로 아래에 있는 터미널의 main 함수를 호출합니다
    Poincare::Init();
    .
void ion_main(int argc, const char * const argv[]) {
  // Initialize Poincare::TreePool::sharedPool
  Poincare::Init();

  terminal_startup_check(argc, argv);

그리고 완료! HOME 키를 누르면 시작 시 터미널을 시작할 수 있습니다 !

Omega에 LE 터미널 포함에 대한 참고 사항

cannot move location counter backwards
(문제 #3) 과 같은 오류를 방지하려면 Omega에 대해 추가 단계를 수행해야 합니다.

  • (에 파이썬 힙 크기를 감소
    apps/code/app.h
    위해하는) 몇 가지 방 제공하는 하자를 .
    80000
    권장 값이지만 더 높게 설정할 수 있습니다.

이 줄에서 :

static constexpr int k_pythonHeapSize = 100000;

100000
더 낮은 값으로 바꿉니다 . 예:

static constexpr int k_pythonHeapSize = 80000;